test: Add menu for adding/removing transceiver encoding 83/304683/2
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 9 Jan 2024 03:31:07 +0000 (12:31 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Thu, 1 Feb 2024 03:17:14 +0000 (12:17 +0900)
[Version] 0.4.39
[Issue Type] Test application

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

index 50292edda78d1a98efb51b88f4773b05264d4b06..4eb04cecab9272e092b9e33752844ef2c1297645 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.4.38
+Version:    0.4.39
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 7531fec5ddb515638238134ef00b618a2d95a2dd..ccb02a7fc3a81fa7dd21948f131d42de06b5117f 100644 (file)
@@ -1168,6 +1168,24 @@ static void _webrtc_media_source_set_payload_type(int index, unsigned int source
                source_id, g_webrtc_media_type_str[media_type], value);
 }
 
+static void _webrtc_media_source_add_transceiver_encoding(int index, unsigned int source_id, webrtc_media_type_e media_type, const char *rid, int target_bitrate, int w, int h)
+{
+       int ret = webrtc_media_source_add_transceiver_encoding(g_ad.conns[index].webrtc, source_id, media_type, rid, target_bitrate, w, h);
+       RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
+
+       g_print("webrtc_media_source_add_transceiver_encoding() success, source_id[%u], media_type[%s], rid[%s], target_bitrate[%d], [%dx%d]\n",
+               source_id, g_webrtc_media_type_str[media_type], rid, target_bitrate, w, h);
+}
+
+static void _webrtc_media_source_remove_transceiver_encoding(int index, unsigned int source_id, webrtc_media_type_e media_type, const char *rid)
+{
+       int ret = webrtc_media_source_remove_transceiver_encoding(g_ad.conns[index].webrtc, source_id, media_type, rid);
+       RET_IF(ret != WEBRTC_ERROR_NONE, "ret[0x%x]", ret);
+
+       g_print("webrtc_media_source_remove_transceiver_encoding() success, source_id[%u], media_type[%s], rid[%s]\n",
+               source_id, g_webrtc_media_type_str[media_type], rid);
+}
+
 static void __offer_created_cb(webrtc_h webrtc, const char *description, void *user_data)
 {
        connection_s *conn = (connection_s *)user_data;
@@ -3593,6 +3611,73 @@ static void test_webrtc_media_source(char *cmd)
                }
                break;
        }
+       case CURRENT_STATUS_MEDIA_SOURCE_ADD_TRANSCEIVER_ENCODING: {
+               static unsigned int id;
+               static unsigned int media_type;
+               static char *rid = NULL;
+               static int target_bitrate;
+               static int w;
+
+               switch (g_ad.input_count) {
+               case 0:
+                       id = value;
+                       g_ad.input_count++;
+                       return;
+               case 1:
+                       media_type = value - 1;
+                       g_ad.input_count++;
+                       return;
+               case 2:
+                       rid = strdup(cmd);
+                       g_ad.input_count++;
+                       return;
+               case 3:
+                       if (media_type == WEBRTC_MEDIA_TYPE_AUDIO) {
+                               _webrtc_media_source_add_transceiver_encoding(0, id, media_type, rid, value, 0, 0);
+                               id = media_type = 0;
+                               free(rid);
+                               rid = NULL;
+                               g_ad.input_count = 0;
+                               break;
+                       }
+                       target_bitrate = value;
+                       g_ad.input_count++;
+                       return;
+               case 4:
+                       w = value;
+                       g_ad.input_count++;
+                       return;
+               case 5:
+                       _webrtc_media_source_add_transceiver_encoding(0, id, media_type, rid, target_bitrate, w, value);
+                       id = media_type = target_bitrate = w = 0;
+                       free(rid);
+                       rid = NULL;
+                       g_ad.input_count = 0;
+                       break;
+               }
+               break;
+       }
+       case CURRENT_STATUS_MEDIA_SOURCE_REMOVE_TRANSCEIVER_ENCODING: {
+               static unsigned int id;
+               static unsigned int media_type;
+
+               switch (g_ad.input_count) {
+               case 0:
+                       id = value;
+                       g_ad.input_count++;
+                       return;
+               case 1:
+                       media_type = value - 1;
+                       g_ad.input_count++;
+                       return;
+               case 2:
+                       _webrtc_media_source_remove_transceiver_encoding(0, id, media_type, cmd);
+                       id = media_type = 0;
+                       g_ad.input_count = 0;
+                       break;
+               }
+               break;
+       }
        }
 
        reset_menu_state();
index 46d20f104cb5d164b6876a80460be649cf2c97b3..6812ff5dec60ac8a699c766daabe7f310fff9dd4 100644 (file)
@@ -78,6 +78,8 @@ menu_info_s g_menu_infos[] = {
        { "ucs", CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP, true },
        { "spt", CURRENT_STATUS_MEDIA_SOURCE_SET_PAYLOAD_TYPE, true },
        { "gpt", CURRENT_STATUS_MEDIA_SOURCE_GET_PAYLOAD_TYPE, true },
+       { "ae", CURRENT_STATUS_MEDIA_SOURCE_ADD_TRANSCEIVER_ENCODING, true },
+       { "re", CURRENT_STATUS_MEDIA_SOURCE_REMOVE_TRANSCEIVER_ENCODING, true },
        /* webrtc media render */
        { "dt", CURRENT_STATUS_SET_DISPLAY_TYPE, true },
        { "dm", CURRENT_STATUS_SET_DISPLAY_MODE, true },
@@ -248,6 +250,8 @@ void display_menu_main(void)
        g_print("tp. Stop pushing packet to media packet source\n");
        g_print("scs. *Set screen source crop\t");
        g_print("ucs. *Unset screen source crop\n");
+       g_print("ae. *Add transceiver encoding\t");
+       g_print("re. *Remove transceiver encoding\n");
        g_print("------------------------------------- Media Render --------------------------------------\n");
        g_print("dt. Set display type\t");
        g_print("dm. Set display mode\t");
@@ -510,6 +514,28 @@ void display_menu_webrtc_media_source(void)
                else if (get_appdata()->input_count == 1)
                        g_print("*** input media type.(1:audio 2:video)\n");
                break;
+       case CURRENT_STATUS_MEDIA_SOURCE_ADD_TRANSCEIVER_ENCODING:
+               if (get_appdata()->input_count == 0)
+                       g_print("*** input source id.\n");
+               else if (get_appdata()->input_count == 1)
+                       g_print("*** input media type.(1:audio 2:video)\n");
+               else if (get_appdata()->input_count == 2)
+                       g_print("*** input rid.\n");
+               else if (get_appdata()->input_count == 3)
+                       g_print("*** input target bitrate.(e.g., 64000 for OPUS, 256000 for VP8, and so on.\n");
+               else if (get_appdata()->input_count == 4)
+                       g_print("*** input width.\n");
+               else if (get_appdata()->input_count == 5)
+                       g_print("*** input height.\n");
+               break;
+       case CURRENT_STATUS_MEDIA_SOURCE_REMOVE_TRANSCEIVER_ENCODING:
+               if (get_appdata()->input_count == 0)
+                       g_print("*** input source id.\n");
+               else if (get_appdata()->input_count == 1)
+                       g_print("*** input media type.(1:audio 2:video)\n");
+               else if (get_appdata()->input_count == 2)
+                       g_print("*** input rid.\n");
+               break;
        }
        g_print(" >>> ");
 }
index 1dac28ab1d006693eb17b1a884746e9f0b89aefe..2b4ca71426fbc1100455e3649ef9e9289802afa4 100644 (file)
@@ -117,6 +117,8 @@ enum {
        CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x1D,
        CURRENT_STATUS_MEDIA_SOURCE_SET_PAYLOAD_TYPE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x1E,
        CURRENT_STATUS_MEDIA_SOURCE_GET_PAYLOAD_TYPE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x1F,
+       CURRENT_STATUS_MEDIA_SOURCE_ADD_TRANSCEIVER_ENCODING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x21,
+       CURRENT_STATUS_MEDIA_SOURCE_REMOVE_TRANSCEIVER_ENCODING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x22,
        /* webrtc media render */
        CURRENT_STATUS_SET_DISPLAY_TYPE = TEST_MENU_WEBRTC_MEDIA_RENDER | 0x01,
        CURRENT_STATUS_SET_DISPLAY_MODE = TEST_MENU_WEBRTC_MEDIA_RENDER | 0x02,