webrtc_test: Add test cases for WEBRTC_MEDIA_SOURCE_TYPE_NULL and transceiver codec 98/278698/5
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 25 Jul 2022 06:40:58 +0000 (15:40 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 29 Jul 2022 01:56:25 +0000 (10:56 +0900)
[Version] 0.2.175
[Issue Type] Add

Change-Id: I687be28990fbef0b5317c7b3517f2d0d28ef8149
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
test/webrtc_test.c

index 19f216b42c9e402a1a87eceffc3209d5b6dc64c1..3223890870a647be7f82188d0ca6e95ccfe9d3a8 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.2.174
+Version:    0.2.175
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 4dd03fa73eb09902f05bbdcc5e843ae5f7f978f1..497437606c2838a581b9d867db16ded72ab1df85 100644 (file)
@@ -67,6 +67,8 @@ enum {
        CURRENT_STATUS_REMOVE_MEDIA_SOURCE,
        CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_DIRECTION,
        CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_DIRECTION,
+       CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC,
+       CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC,
        CURRENT_STATUS_MEDIA_SOURCE_SET_PAUSE,
        CURRENT_STATUS_MEDIA_SOURCE_GET_PAUSE,
        CURRENT_STATUS_MEDIA_SOURCE_SET_VIDEO_RESOLUTION,
@@ -142,6 +144,15 @@ static const char* g_webrtc_transceiver_direction_str[] = {
        [WEBRTC_TRANSCEIVER_DIRECTION_SENDRECV] = "SENDRECV",
 };
 
+static const char *g_webrtc_transceiver_codec_str[] = {
+       [WEBRTC_TRANSCEIVER_CODEC_PCMU] = "PCMU",
+       [WEBRTC_TRANSCEIVER_CODEC_PCMA] = "PCMA",
+       [WEBRTC_TRANSCEIVER_CODEC_OPUS] = "OPUS",
+       [WEBRTC_TRANSCEIVER_CODEC_VP8] = "VP8",
+       [WEBRTC_TRANSCEIVER_CODEC_VP9] = "VP9",
+       [WEBRTC_TRANSCEIVER_CODEC_H264] = "H264",
+};
+
 /* for video display */
 static Evas_Object *g_win_id;
 static Evas_Object *g_eo_mine;
@@ -795,8 +806,7 @@ static void _webrtc_add_media_source(int index, int value, unsigned int *source_
        } else {
                webrtc_media_source_type_internal_e type = value - 1;
                switch (type) {
-               case WEBRTC_MEDIA_SOURCE_TYPE_CUSTOM_AUDIO:
-               case WEBRTC_MEDIA_SOURCE_TYPE_CUSTOM_VIDEO:
+               case WEBRTC_MEDIA_SOURCE_TYPE_CUSTOM_AUDIO ... WEBRTC_MEDIA_SOURCE_TYPE_NULL:
                        ret = webrtc_add_media_source_internal(g_conns[index].webrtc, type, &_source_id);
                        RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
                        break;
@@ -990,6 +1000,54 @@ static void _webrtc_media_source_set_transceiver_direction(int index, unsigned i
                source_id, g_webrtc_media_type_str[media_type], g_webrtc_transceiver_direction_str[direction]);
 }
 
+static void _webrtc_media_source_get_transceiver_codec(int index, unsigned int source_id, webrtc_media_type_e media_type)
+{
+       int ret = WEBRTC_ERROR_NONE;
+       webrtc_transceiver_codec_e codec;
+
+       ret = webrtc_media_source_get_transceiver_codec(g_conns[index].webrtc, source_id, media_type, &codec);
+       RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
+
+       g_print("webrtc_media_source_get_transceiver_codec() success, source_id[%u], media_type[%s], codec[%s]\n",
+               source_id, g_webrtc_media_type_str[media_type], g_webrtc_transceiver_codec_str[codec]);
+}
+
+static void _webrtc_media_source_set_transceiver_codec(int index, unsigned int source_id, webrtc_media_type_e media_type, int value)
+{
+       int ret;
+       webrtc_transceiver_codec_e codec;
+
+       switch (value) {
+       case 1:
+               codec = WEBRTC_TRANSCEIVER_CODEC_PCMU;
+               break;
+       case 2:
+               codec = WEBRTC_TRANSCEIVER_CODEC_PCMA;
+               break;
+       case 3:
+               codec = WEBRTC_TRANSCEIVER_CODEC_OPUS;
+               break;
+       case 4:
+               codec = WEBRTC_TRANSCEIVER_CODEC_VP8;
+               break;
+       case 5:
+               codec = WEBRTC_TRANSCEIVER_CODEC_VP9;
+               break;
+       case 6:
+               codec = WEBRTC_TRANSCEIVER_CODEC_H264;
+               break;
+       default:
+               g_printerr("invalid value[%d]\n", value);
+               return;
+       }
+
+       ret = webrtc_media_source_set_transceiver_codec(g_conns[index].webrtc, source_id, media_type, codec);
+       RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
+
+       g_print("webrtc_media_source_set_transceiver_codec() success, source_id[%u], media_type[%s], codec[%s]\n",
+               source_id, g_webrtc_media_type_str[media_type], g_webrtc_transceiver_codec_str[codec]);
+}
+
 static void _webrtc_set_display_type(int index, int type)
 {
        g_conns[index].render.display_type = type;
@@ -3819,6 +3877,12 @@ void _interpret_main_menu(char *cmd)
                } else if (strncmp(cmd, "gd", 2) == 0) {
                        g_menu_state = CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_DIRECTION;
 
+               } else if (strncmp(cmd, "tc", 2) == 0) {
+                       g_menu_state = CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC;
+
+               } else if (strncmp(cmd, "gc", 2) == 0) {
+                       g_menu_state = CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC;
+
                } else if (strncmp(cmd, "dt", 2) == 0) {
                        g_menu_state = CURRENT_STATUS_SET_DISPLAY_TYPE;
 
@@ -4121,6 +4185,8 @@ void display_sub_basic()
        g_print("l. Get video resolution\n");
        g_print("td. Set transceiver direction\t");
        g_print("gd. Get transceiver direction\n");
+       g_print("tc. *Set transceiver codec\t");
+       g_print("gc. *Get transceiver codec\n");
        g_print("scs. *Set crop screen source\t");
        g_print("ucs. *Unset crop screen source\n");
        g_print("pa. *Set media path to file source\n");
@@ -4205,7 +4271,7 @@ static void displaymenu()
                display_sub_basic();
 
        } else if (g_menu_state == CURRENT_STATUS_ADD_MEDIA_SOURCE) {
-               g_print("*** input media source type.(1:audiotest, 2:videotest, 3:mic, 4:camera, 5:screen, 6:file, 7:media packet, 8:custom audio, 9:custom video)\n");
+               g_print("*** input media source type.(1:audiotest, 2:videotest, 3:mic, 4:camera, 5:screen, 6:file, 7:media packet, 8:custom audio, 9:custom video, 10:null)\n");
 
        } else if (g_menu_state == CURRENT_STATUS_REMOVE_MEDIA_SOURCE) {
                g_print("*** input media source id to remove.\n");
@@ -4261,6 +4327,20 @@ static void displaymenu()
                else if (g_cnt == 1)
                        g_print("*** input media type.(1:audio 2:video)\n");
 
+       } else if (g_menu_state == CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC) {
+               if (g_cnt == 0)
+                       g_print("*** input source id.\n");
+               else if (g_cnt == 1)
+                       g_print("*** input media type.(1:audio 2:video)\n");
+               else if (g_cnt == 2)
+                       g_print("*** input transceiver codec.(1:PCMU 2:PCMA 3:OPUS 4:VP8 5:VP9 6:H264)\n");
+
+       } else if (g_menu_state == CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC) {
+               if (g_cnt == 0)
+                       g_print("*** input source id.\n");
+               else if (g_cnt == 1)
+                       g_print("*** input media type.(1:audio 2:video)\n");
+
        } else if (g_menu_state == CURRENT_STATUS_SET_DISPLAY_TYPE) {
                g_print("*** input display type.(1:overlay 2:evas)\n");
 
@@ -4536,7 +4616,7 @@ static void interpret(char *cmd)
        case CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_DIRECTION: {
                static unsigned int id;
                static unsigned int media_type;
-               static unsigned int direction;
+               unsigned int direction;
                value = atoi(cmd);
 
                switch (g_cnt) {
@@ -4551,7 +4631,7 @@ static void interpret(char *cmd)
                case 2:
                        direction =  value - 1;
                        _webrtc_media_source_set_transceiver_direction(0, id, media_type, direction);
-                       id = media_type = direction = 0;
+                       id = media_type = 0;
                        g_cnt = 0;
                        reset_menu_state();
                        break;
@@ -4578,6 +4658,49 @@ static void interpret(char *cmd)
                }
                break;
        }
+       case CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC: {
+               static unsigned int id;
+               static unsigned int media_type;
+               value = atoi(cmd);
+
+               switch (g_cnt) {
+               case 0:
+                       id = value;
+                       g_cnt++;
+                       break;
+               case 1:
+                       media_type = value - 1;
+                       g_cnt++;
+                       break;
+               case 2:
+                       _webrtc_media_source_set_transceiver_codec(0, id, media_type, value);
+                       id = media_type = 0;
+                       g_cnt = 0;
+                       reset_menu_state();
+                       break;
+               }
+               break;
+       }
+       case CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC: {
+               static unsigned int id;
+               static unsigned int media_type;
+               value = atoi(cmd);
+
+               switch (g_cnt) {
+               case 0:
+                       id = value;
+                       g_cnt++;
+                       break;
+               case 1:
+                       media_type = value - 1;
+                       _webrtc_media_source_get_transceiver_codec(0, id, media_type);
+                       id = media_type = 0;
+                       g_cnt = 0;
+                       reset_menu_state();
+                       break;
+               }
+               break;
+       }
        case CURRENT_STATUS_SET_DISPLAY_TYPE: {
                value = atoi(cmd);
                _webrtc_set_display_type(0, value - 1);