AC_SUBST(MM_RESOURCE_MANAGER_CFLAGS)
AC_SUBST(MM_RESOURCE_MANAGER_LIBS)
+PKG_CHECK_MODULES(MM_DISPLAY_INTERFACE, mm-display-interface)
+AC_SUBST(MM_DISPLAY_INTERFACE_CFLAGS)
+AC_SUBST(MM_DISPLAY_INTERFACE_LIBS)
+
AC_ARG_ENABLE(tests, AC_HELP_STRING([--enable-tests], [unittest build]),
[
case "${enableval}" in
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(mm-resource-manager)
+BuildRequires: pkgconfig(mm-display-interface)
%if 0%{?gtests:1}
BuildRequires: pkgconfig(gmock)
%endif
$(GST_VIDEO_CFLAGS) \
$(TZPLATFORM_CONFIG_CFLAGS) \
$(CAPI_SYSTEM_INFO_CFLAGS) \
- $(MM_RESOURCE_MANAGER_CFLAGS)
+ $(MM_RESOURCE_MANAGER_CFLAGS) \
+ $(MM_DISPLAY_INTERFACE_CFLAGS)
libmmfwfdsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
$(TZPLATFORM_CONFIG_LIBS) \
$(CAPI_SYSTEM_INFO_LIBS) \
$(GST_VIDEO_LIBS) \
- $(MM_RESOURCE_MANAGER_LIBS)
+ $(MM_RESOURCE_MANAGER_LIBS) \
+ $(MM_DISPLAY_INTERFACE_LIBS)
libmmfwfdsink_la_CFLAGS += $(MMLOG_CFLAGS) -DMMF_LOG_OWNER=0x02000000 -DMMF_DEBUG_PREFIX=\"MMF-WFD-SINK\"
libmmfwfdsink_la_LIBADD += $(MMLOG_LIBS)
#include <mm_error.h>
#include <mm_types.h>
#include <mm_resource_manager.h>
-
+#include <mm_display_interface.h>
#include "mm_wfd_sink_ini.h"
#include "mm_wfd_sink_attrs.h"
#include "mm_wfd_sink.h"
int __mm_wfd_sink_destroy_video_sinkbin(mm_wfd_sink_t *wfd_sink);
int __mm_wfd_sink_destroy_pipeline(mm_wfd_sink_t *wfd_sink);
-int _mm_wfd_sink_set_display_overlay(mm_wfd_sink_t *wfd_sink, void *display_object);
+int _mm_wfd_sink_set_display_overlay(mm_wfd_sink_t *wfd_sink, void *display_object, gint display_type);
/* state */
int __mm_wfd_sink_set_state(mm_wfd_sink_t *wfd_sink, MMWFDSinkStateType state);
NULL,
},
{
+ (char *)"display_type",
+ MM_ATTRS_TYPE_INT,
+ MM_ATTRS_FLAG_RW,
+ (void *) MM_DISPLAY_TYPE_OVERLAY,
+ MM_ATTRS_VALID_TYPE_INT_RANGE,
+ MM_DISPLAY_TYPE_OVERLAY,
+ MM_DISPLAY_TYPE_OVERLAY_SYNC_UI,
+ NULL,
+ },
+ {
(char *)"display_width", /* dest width of fimcconvert ouput */
MM_ATTRS_TYPE_INT,
MM_ATTRS_FLAG_RW,
static bool _mmwfd_set_display_info(MMHandleType handle, int attr_idx, const MMAttrsValue *value)
{
- gint surface_type = MM_DISPLAY_SURFACE_OVERLAY;
+ gint display_type = MM_DISPLAY_TYPE_OVERLAY;
mm_wfd_sink_t *wfd_sink = MMWFDSINK_CAST(handle);
wfd_sink_debug_fenter();
/* update display surface */
- mm_attrs_get_int_by_name(MMWFDSINK_GET_ATTRS(wfd_sink), "display_surface_type", &surface_type);
- wfd_sink_info("check display surface type attribute: %d", surface_type);
+ mm_attrs_get_int_by_name(MMWFDSINK_GET_ATTRS(wfd_sink), "display_type", &display_type);
+ wfd_sink_info("check display type attribute: %d", display_type);
/* configuring display */
- switch (surface_type) {
- case MM_DISPLAY_SURFACE_EVAS:
+ switch (display_type) {
+ case MM_DISPLAY_TYPE_EVAS:
/* nothing to do */
break;
- case MM_DISPLAY_SURFACE_OVERLAY:
- if (MM_ERROR_NONE != _mm_wfd_sink_set_display_overlay(wfd_sink, value->value.p_val)) {
+ case MM_DISPLAY_TYPE_OVERLAY:
+ case MM_DISPLAY_TYPE_OVERLAY_EXT:
+ wfd_sink_info("DISPLAY TYPE : %d", display_type);
+ if (MM_ERROR_NONE != _mm_wfd_sink_set_display_overlay(wfd_sink, value->value.p_val, display_type)) {
wfd_sink_error("Setting overlay display is failed.");
return false;
}
break;
- case MM_DISPLAY_SURFACE_NULL:
default:
- wfd_sink_error("Not Supported Surface. surface_type: [%d]", surface_type);
+ wfd_sink_error("Not Supported Surface. display_type: [%d]", display_type);
return false;
}
return MM_ERROR_NONE;
}
-int _mm_wfd_sink_set_display_overlay(mm_wfd_sink_t *wfd_sink, void *display_object)
+int _mm_wfd_sink_set_display_overlay(mm_wfd_sink_t *wfd_sink, void *display_object, gint display_type)
{
int wl_surface_id = 0;
static void *display_overlay = NULL;
wfd_sink_debug("display object is NULL!");
return MM_ERROR_WFD_INTERNAL;
}
- obj = (Evas_Object *)object;
- object_type = evas_object_type_get(obj);
- wfd_sink_debug("window object type : %s", object_type);
- if (strcmp(object_type, "elm_win")) {
- wfd_sink_error("Window type is not elm_win");
- return MM_ERROR_WFD_INTERNAL;
- }
+ if (display_type == MM_DISPLAY_TYPE_OVERLAY) {
+ obj = (Evas_Object *)object;
+ object_type = evas_object_type_get(obj);
+ wfd_sink_debug("window object type : %s", object_type);
- /* wayland overlay surface */
- wfd_sink_info("Wayland overlay surface type");
- evas_object_geometry_get(obj, &wl_window_x, &wl_window_y, &wl_window_width, &wl_window_height);
-
- wfd_sink_debug("x[%d] y[%d] width[%d] height[%d]", wl_window_x, wl_window_y,
- wl_window_width, wl_window_height);
+ if (strcmp(object_type, "elm_win")) {
+ wfd_sink_error("Window type is not elm_win");
+ return MM_ERROR_WFD_INTERNAL;
+ }
- wl2_window = ecore_evas_wayland2_window_get(ecore_evas_ecore_evas_get(evas_object_evas_get(obj)));
+ /* wayland overlay surface */
+ evas_object_geometry_get(obj, &wl_window_x, &wl_window_y, &wl_window_width, &wl_window_height);
+ wfd_sink_debug("x[%d] y[%d] width[%d] height[%d]", wl_window_x, wl_window_y,
+ wl_window_width, wl_window_height);
+ wl2_window = ecore_evas_wayland2_window_get(ecore_evas_ecore_evas_get(evas_object_evas_get(obj)));
+ } else if (display_type == MM_DISPLAY_TYPE_OVERLAY_EXT) {
+ wl2_window = (Ecore_Wl2_Window *)object;
+ }
ecore_wl2_window_video_has(wl2_window, EINA_TRUE);
wl_surface = ecore_wl2_window_surface_get(wl2_window);
-
/* get wl_display */
wl2_display = ecore_wl2_connected_display_get(NULL);
wl_display = ecore_wl2_display_get(wl2_display);