Modified to support evas sink 80/49380/1
authorTaewan, Kim <taewan79.kim@samsung.com>
Thu, 17 Sep 2015 07:26:12 +0000 (16:26 +0900)
committerSangkyu Park <sk1122.park@samsung.com>
Mon, 12 Oct 2015 07:17:15 +0000 (16:17 +0900)
Change-Id: Ib6fb22fdf9bd19e0bee0ba8701315f9b19023e02
Signed-off-by: Taewan, Kim <taewan79.kim@samsung.com>
common/include/mm_wfd_sink_ini.h
common/mm_wfd_attrs.c
common/mm_wfd_sink_ini.c
config/mmfw_wfd_sink.ini
packaging/libmm-wfd.spec
sink/mm_wfd_sink_priv.c

index 405d214..67369e0 100755 (executable)
@@ -90,7 +90,8 @@ typedef struct __mm_wfd_sink_ini {
        gchar name_of_video_decoder[WFD_SINK_INI_MAX_STRLEN];
        gchar name_of_video_converter[WFD_SINK_INI_MAX_STRLEN];
        gchar name_of_video_filter[WFD_SINK_INI_MAX_STRLEN];
-       gchar name_of_video_sink[WFD_SINK_INI_MAX_STRLEN];
+       gchar name_of_video_xv_sink[WFD_SINK_INI_MAX_STRLEN];
+       gchar name_of_video_evas_sink[WFD_SINK_INI_MAX_STRLEN];
 
        /* audio parameter for reponse of M3 request */
        guint audio_codec;
@@ -157,7 +158,8 @@ typedef struct __mm_wfd_sink_ini {
 #define DEFAULT_NAME_OF_VIDEO_DECODER ""
 #define DEFAULT_NAME_OF_VIDEO_CONVERTER ""
 #define DEFAULT_NAME_OF_VIDEO_FILTER ""
-#define DEFAULT_NAME_OF_VIDEO_SINK ""
+#define DEFAULT_NAME_OF_XV_VIDEO_SINK ""
+#define DEFAULT_NAME_OF_EVAS_VIDEO_SINK ""
 
 /* Audio */
 #define DEFAULT_AUDIO_CODEC WFD_AUDIO_LPCM | WFD_AUDIO_AAC
index 5d43efb..50ffbfb 100755 (executable)
@@ -254,7 +254,7 @@ _mmwfd_construct_attribute(MMHandleType handle)
                        (char *)"display_surface_type",
                        MM_ATTRS_TYPE_INT,
                        MM_ATTRS_FLAG_RW,
-                       (void *) MM_DISPLAY_SURFACE_NULL,
+                       (void *) MM_DISPLAY_SURFACE_X,
                        MM_ATTRS_VALID_TYPE_INT_RANGE,
                        MM_DISPLAY_SURFACE_X,
                        MM_DISPLAY_SURFACE_X_EXT
index d89b6c3..d0c2368 100755 (executable)
@@ -156,7 +156,8 @@ mm_wfd_sink_ini_load(mm_wfd_sink_ini_t *ini)
                MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_decoder, "pipeline:video decoder element", DEFAULT_NAME_OF_VIDEO_DECODER);
                MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_converter, "pipeline:video converter element", DEFAULT_NAME_OF_VIDEO_CONVERTER);
                MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_filter, "pipeline:video filter element", DEFAULT_NAME_OF_VIDEO_FILTER);
-               MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_sink, "pipeline:video sink element", DEFAULT_NAME_OF_VIDEO_SINK);
+               MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_xv_sink, "pipeline:video xv sink element", DEFAULT_NAME_OF_XV_VIDEO_SINK);
+               MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_evas_sink, "pipeline:video evas sink element", DEFAULT_NAME_OF_EVAS_VIDEO_SINK);
 
                /* audio parameter*/
                ini->audio_codec = iniparser_getint(dict, "audio param:audio codec", DEFAULT_AUDIO_CODEC);
@@ -223,7 +224,8 @@ mm_wfd_sink_ini_load(mm_wfd_sink_ini_t *ini)
                strncpy(ini->name_of_video_decoder, DEFAULT_NAME_OF_VIDEO_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
                strncpy(ini->name_of_video_converter, DEFAULT_NAME_OF_VIDEO_CONVERTER, WFD_SINK_INI_MAX_STRLEN - 1);
                strncpy(ini->name_of_video_filter, DEFAULT_NAME_OF_VIDEO_FILTER, WFD_SINK_INI_MAX_STRLEN - 1);
-               strncpy(ini->name_of_video_sink, DEFAULT_NAME_OF_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
+               strncpy(ini->name_of_video_xv_sink, DEFAULT_NAME_OF_XV_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
+               strncpy(ini->name_of_video_evas_sink, DEFAULT_NAME_OF_EVAS_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
 
                /* audio parameter*/
                ini->audio_codec = DEFAULT_AUDIO_CODEC;
@@ -302,7 +304,8 @@ mm_wfd_sink_ini_load(mm_wfd_sink_ini_t *ini)
        wfd_sink_debug("name_of_video_decoder : %s\n", ini->name_of_video_decoder);
        wfd_sink_debug("name_of_video_converter : %s\n", ini->name_of_video_converter);
        wfd_sink_debug("name_of_video_filter : %s\n", ini->name_of_video_filter);
-       wfd_sink_debug("name_of_video_sink : %s\n", ini->name_of_video_sink);
+       wfd_sink_debug("name_of_video_xv_sink : %s\n", ini->name_of_video_xv_sink);
+       wfd_sink_debug("name_of_video_evas_sink : %s\n", ini->name_of_video_evas_sink);
 
        /* audio parameter*/
        wfd_sink_debug("audio_codec : %x\n", ini->audio_codec);
index 2526523..957c0f3 100755 (executable)
@@ -84,8 +84,9 @@ video converter element =
 
 video filter element =
 
-video sink element = xvimagesink
+video xv sink element = xvimagesink
 
+video evas sink element = evaspixmapsink
 
 
 [audio param]
index 2f1989e..27e35b5 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-wfd
 Summary:    Multimedia Framework Wifi-Display Library
-Version:    0.2.188
+Version:    0.2.189
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 82711a5..8f0a3dc 100755 (executable)
@@ -2912,7 +2912,7 @@ static int __mm_wfd_sink_prepare_videosink(mm_wfd_sink_t *wfd_sink, GstElement *
        wfd_sink_return_val_if_fail(wfd_sink && wfd_sink->attrs, MM_ERROR_WFD_NOT_INITIALIZED);
 
        /* update display surface */
-       /*      mm_attrs_get_int_by_name(wfd_sink->attrs, "display_surface_type", &surface_type); */
+       mm_attrs_get_int_by_name(wfd_sink->attrs, "display_surface_type", &surface_type);
        wfd_sink_debug("check display surface type attribute: %d", surface_type);
        mm_attrs_get_int_by_name(wfd_sink->attrs, "display_visible", &visible);
        wfd_sink_debug("check display visible attribute: %d", visible);
@@ -3259,6 +3259,7 @@ static int __mm_wfd_sink_create_video_sinkbin(mm_wfd_sink_t *wfd_sink)
        GstPad *pad = NULL;
        GstPad *ghostpad = NULL;
        gint i = 0;
+       gint surface_type = MM_DISPLAY_SURFACE_X;
 
        wfd_sink_debug_fenter();
 
@@ -3301,7 +3302,17 @@ static int __mm_wfd_sink_create_video_sinkbin(mm_wfd_sink_t *wfd_sink)
        }
        
        /* create sink */
-       MMWFDSINK_CREATE_ELEMENT(v_sinkbin, WFD_SINK_V_S_SINK, wfd_sink->ini.name_of_video_sink, "video_sink", TRUE);
+       mm_attrs_get_int_by_name(wfd_sink->attrs, "display_surface_type", &surface_type);
+
+       if(surface_type == MM_DISPLAY_SURFACE_X) {
+               MMWFDSINK_CREATE_ELEMENT(v_sinkbin, WFD_SINK_V_S_SINK, wfd_sink->ini.name_of_video_xv_sink, "video_sink", TRUE);
+       } else if(surface_type == MM_DISPLAY_SURFACE_EVAS) {
+               MMWFDSINK_CREATE_ELEMENT(v_sinkbin, WFD_SINK_V_S_SINK, wfd_sink->ini.name_of_video_evas_sink, "video_sink", TRUE);
+       } else {
+               wfd_sink_error("failed to set video sink....");
+               goto CREATE_ERROR;
+       }
+
        MMWFDSINK_PAD_PROBE(wfd_sink, NULL, v_sinkbin[WFD_SINK_V_S_SINK].gst,  "sink");
        if (v_sinkbin[WFD_SINK_V_S_SINK].gst) {
                if (MM_ERROR_NONE != __mm_wfd_sink_prepare_videosink(wfd_sink, v_sinkbin[WFD_SINK_V_S_SINK].gst)) {