Allow multi supported resolution from application 00/51800/1
authorHyunjun Ko <zzoon.ko@samsung.com>
Mon, 16 Nov 2015 08:30:20 +0000 (17:30 +0900)
committerHyunjun Ko <zzoon.ko@samsung.com>
Mon, 16 Nov 2015 08:30:20 +0000 (17:30 +0900)
Change-Id: I3437b620750610fcbc8586743a546e0b74a8b413

miracast_server/miracast_server_impl.c
test/scmirroring_wifi_direct_test.c

index 23640dcf4e93a2ca91f0ecac6303f8d1478dc19e..70d06c2487d44bd1aac5a8bc5c5cd9855169824f 100755 (executable)
@@ -159,7 +159,7 @@ static void miracast_server_init(MiracastServer *obj)
        obj->server = NULL;
        obj->client = NULL;
        obj->factory = NULL;
-       obj->resolution = -1;
+       obj->resolution = 0;
 }
 
 static void miracast_server_class_init(MiracastServerClass *klass)
@@ -559,6 +559,8 @@ int __miracast_server_start(MiracastServer *server_obj)
        }
 
        guint id;
+       guint native_reso = 0;
+       guint supported_reso = 0;
        GstRTSPWFDServer *server = NULL;
        GstRTSPMediaFactoryWFD *factory = NULL;
        GstRTSPMountPoints *mounts = NULL;
@@ -596,30 +598,46 @@ int __miracast_server_start(MiracastServer *server_obj)
        gst_rtsp_wfd_server_set_audio_codec(server,
                        scmirroring_src_ini_get_structure()->audio_codec);
 
-       if (server_obj->resolution == SCMIRRORING_RESOLUTION_1920x1080_P30) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_CEA_1920x1080P30);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_1280x720_P30) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_CEA_1280x720P30);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_960x540_P30) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_HH_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_HH_960x540P30);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_864x480_P30) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_HH_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_HH_864x480P30);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_720x480_P60) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_CEA_720x480P60);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_640x480_P60) {
+       /* CEA Resolution */
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_1920x1080_P30) {
+               native_reso = GST_WFD_VIDEO_CEA_RESOLUTION;
+               supported_reso |= GST_WFD_CEA_1920x1080P30;
+       }
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_1280x720_P30) {
+               native_reso = GST_WFD_VIDEO_CEA_RESOLUTION;
+               supported_reso |= GST_WFD_CEA_1280x720P30;
+       }
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_720x480_P60) {
+               native_reso = GST_WFD_VIDEO_CEA_RESOLUTION;
+               supported_reso |= GST_WFD_CEA_720x480P60;
+       }
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_640x480_P60) {
+               native_reso = GST_WFD_VIDEO_CEA_RESOLUTION;
+               supported_reso |= GST_WFD_CEA_640x480P60;
+       }
+
+       /* HH Resolution */
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_960x540_P30) {
+               native_reso = GST_WFD_VIDEO_HH_RESOLUTION;
+               supported_reso |= GST_WFD_HH_960x540P30;
+       }
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_864x480_P30) {
+               native_reso = GST_WFD_VIDEO_HH_RESOLUTION;
+               supported_reso |= GST_WFD_HH_864x480P30;
+       }
+       if (server_obj->resolution & SCMIRRORING_RESOLUTION_640x360_P30) {
+               native_reso = GST_WFD_VIDEO_HH_RESOLUTION;
+               supported_reso |= GST_WFD_HH_640x360P30;
+       }
+
+       if (server_obj->resolution == 0) {
+               /* Use default */
                gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_CEA_640x480P60);
-       } else if (server_obj->resolution == SCMIRRORING_RESOLUTION_640x360_P30) {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_HH_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, GST_WFD_HH_640x360P30);
+               gst_rtsp_wfd_server_set_supported_reso(server,
+                                                      scmirroring_src_ini_get_structure()->video_reso_supported);
        } else {
-               gst_rtsp_wfd_server_set_video_native_reso(server, GST_WFD_VIDEO_CEA_RESOLUTION);
-               gst_rtsp_wfd_server_set_supported_reso(server, scmirroring_src_ini_get_structure()->video_reso_supported);
+               gst_rtsp_wfd_server_set_video_native_reso(server, native_reso);
+               gst_rtsp_wfd_server_set_supported_reso(server, supported_reso);
        }
 
        gst_rtsp_media_factory_wfd_set_dump_ts(factory, scmirroring_src_ini_get_structure()->dump_ts);
index b377a4ba6c967ccdbae4375a4fb3eb7228846185..5f62f7aba52ece2b31ce63a9ff03fd0dbb623c5d 100755 (executable)
@@ -64,7 +64,7 @@ static void __displaymenu(void)
        g_print("=====================================================================\n");
        g_print("a : a ip port(ex. a 192.168.49.1 2022)\n");
        g_print("b : set sink device mac address(ex. b f8:d0:bd:7f:e9:7c)\n");
-       g_print("c : set resolution(ex. c 0 (0 : 1920x1080_P30, 1 : 1280x720_P30, 2 : 960x540_P30, 3: 640x360_P30)\n");
+       g_print("c : set resolution(ex. c 1 (1 : 1920x1080_P30, 2 : 1280x720_P30, 3 : (1 +2), 4. 960x540_P30, 64: 640x360_P30, 67: 1+2+64, 71: 1+2+4+64)\n");
        g_print("f : set connection mode(ex. f 0 (0 : wifi_direct, 1 : Other)\n");
        g_print("C : Connect\n");
        g_print("I : dIsconnect\n");