From: Sangchul Lee Date: Thu, 9 Jun 2022 08:44:37 +0000 (+0900) Subject: webrtc_test: Add menu to set/get transceiver codec X-Git-Tag: submit/tizen/20220627.062515~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a197f437095f64edb6f11247fa37c30c6a0f7304;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_test: Add menu to set/get transceiver codec [Version] 0.3.131 [Issue Type] Add Change-Id: Iea9e1bd508dc003dabd447dd91020bd9d44385fc Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 5cf590b0..e4ffd396 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.3.130 +Version: 0.3.131 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/test/webrtc_test.c b/test/webrtc_test.c index c186fac1..cceff768 100644 --- a/test/webrtc_test.c +++ b/test/webrtc_test.c @@ -62,6 +62,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", +}; + static const char *g_webrtc_stats_type_str[] = { [WEBRTC_STATS_TYPE_CODEC] = "codec", [WEBRTC_STATS_TYPE_INBOUND_RTP] = "inbound-rtp", @@ -960,6 +969,54 @@ static void _webrtc_media_source_foreach_supported_transceiver_codec(int index, source_id, g_webrtc_media_type_str[media_type]); } +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_ad.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_ad.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_ad.conns[index].render.display_type = type; @@ -4552,7 +4609,7 @@ static void test_webrtc_media_source(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_ad.input_count) { @@ -4567,7 +4624,7 @@ static void test_webrtc_media_source(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_ad.input_count = 0; reset_menu_state(); break; @@ -4614,6 +4671,49 @@ static void test_webrtc_media_source(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_ad.input_count) { + case 0: + id = value; + g_ad.input_count++; + break; + case 1: + media_type = value - 1; + g_ad.input_count++; + break; + case 2: + _webrtc_media_source_set_transceiver_codec(0, id, media_type, value); + id = media_type = 0; + g_ad.input_count = 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_ad.input_count) { + case 0: + id = value; + g_ad.input_count++; + break; + case 1: + media_type = value - 1; + _webrtc_media_source_get_transceiver_codec(0, id, media_type); + id = media_type = 0; + g_ad.input_count = 0; + reset_menu_state(); + break; + } + break; + } case CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: { value = atoi(cmd); _start_pushing_packet(0, value); @@ -4626,7 +4726,7 @@ static void test_webrtc_media_source(char *cmd) reset_menu_state(); break; } - case CURRENT_STATUS_SET_CROP_SCREEN_SOURCE: { + case CURRENT_STATUS_SCREEN_SOURCE_SET_CROP: { static unsigned int id; static int x, y, w, h; static int is_vertical; @@ -4664,7 +4764,7 @@ static void test_webrtc_media_source(char *cmd) } break; } - case CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE: { + case CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP: { value = atoi(cmd); _webrtc_screen_source_unset_crop(0, value); reset_menu_state(); diff --git a/test/webrtc_test_menu.c b/test/webrtc_test_menu.c index c45dc3f8..0cca0b73 100644 --- a/test/webrtc_test_menu.c +++ b/test/webrtc_test_menu.c @@ -52,6 +52,8 @@ menu_info_s g_menu_infos[] = { { "td", CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_DIRECTION, true }, { "gd", CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_DIRECTION, true }, { "fc", CURRENT_STATUS_MEDIA_SOURCE_FOREACH_SUPPORTED_TRANSCEIVER_CODEC, true }, + { "tc", CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC, true }, + { "gc", CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC, true }, { "p", CURRENT_STATUS_MEDIA_SOURCE_SET_PAUSE, true }, { "o", CURRENT_STATUS_MEDIA_SOURCE_GET_PAUSE, true }, { "mu", CURRENT_STATUS_MEDIA_SOURCE_SET_MUTE, true }, @@ -68,8 +70,8 @@ menu_info_s g_menu_infos[] = { { "um", CURRENT_STATUS_MEDIA_PACKET_SOURCE_UNSET_BUFFER_STATE_CHANGED_CB, true }, { "sp", CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE, true }, { "tp", CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE, true }, - { "scs", CURRENT_STATUS_SET_CROP_SCREEN_SOURCE, true }, - { "ucs", CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE, true }, + { "scs", CURRENT_STATUS_SCREEN_SOURCE_SET_CROP, true }, + { "ucs", CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP, true }, /* webrtc media render */ { "dt", CURRENT_STATUS_SET_DISPLAY_TYPE, true }, { "dm", CURRENT_STATUS_SET_DISPLAY_MODE, true }, @@ -208,15 +210,17 @@ void display_menu_main(void) g_print("m. Get video framerate\n"); g_print("td. Set transceiver direction\t"); g_print("gd. Get transceiver direction\n"); - g_print("fc. Get supported transceiver codecs\n"); + g_print("fc. Get supported transceiver codecs\t"); + g_print("tc. Set transceiver codec\t"); + g_print("gc. Get transceiver codec\n"); g_print("pa. Set media path to file source\n"); g_print("sfl. Set file source looping\t"); - g_print("gfl. Set file source looping\n"); + g_print("gfl. Get file source looping\n"); g_print("sf. Set media format to media packet source\n"); g_print("sp. Start pushing packet to media packet source\t"); g_print("tp. Stop pushing packet to media packet source\n"); - g_print("scs. *Set crop screen source\t"); - g_print("ucs. *Unset crop screen source\n"); + g_print("scs. *Set screen source crop\t"); + g_print("ucs. *Unset screen source crop\n"); g_print("------------------------------------- Media Render --------------------------------------\n"); g_print("dt. Set display type\t"); g_print("dm. Set display mode\t"); @@ -375,6 +379,20 @@ 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_SET_TRANSCEIVER_CODEC: + 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 transceiver codec.(1:PCMU 2:PCMA 3:OPUS 4:VP8 5:VP9 6:H264)\n"); + break; + case CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC: + 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"); + break; case CURRENT_STATUS_FILE_SOURCE_SET_PATH: if (get_appdata()->input_count == 0) g_print("*** input source id.\n"); @@ -409,7 +427,7 @@ void display_menu_webrtc_media_source(void) case CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE: g_print("*** input media packet source id to stop pushing packet.\n"); break; - case CURRENT_STATUS_SET_CROP_SCREEN_SOURCE: + case CURRENT_STATUS_SCREEN_SOURCE_SET_CROP: if (get_appdata()->input_count == 0) g_print("*** input source id.\n"); else if (get_appdata()->input_count == 1) @@ -423,7 +441,7 @@ void display_menu_webrtc_media_source(void) else if (get_appdata()->input_count == 5) g_print("*** input whether screen rotates (0: horizontal, 1: vertical).\n"); break; - case CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE: + case CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP: if (get_appdata()->input_count == 0) g_print("*** input source id.\n"); break; diff --git a/test/webrtc_test_priv.h b/test/webrtc_test_priv.h index f0c0b1f6..d824b1f7 100644 --- a/test/webrtc_test_priv.h +++ b/test/webrtc_test_priv.h @@ -88,24 +88,26 @@ enum { CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_DIRECTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x03, CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_DIRECTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x04, CURRENT_STATUS_MEDIA_SOURCE_FOREACH_SUPPORTED_TRANSCEIVER_CODEC = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x05, - CURRENT_STATUS_MEDIA_SOURCE_SET_PAUSE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x06, - CURRENT_STATUS_MEDIA_SOURCE_GET_PAUSE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x07, - CURRENT_STATUS_MEDIA_SOURCE_SET_MUTE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x08, - CURRENT_STATUS_MEDIA_SOURCE_GET_MUTE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x09, - CURRENT_STATUS_MEDIA_SOURCE_SET_VIDEO_RESOLUTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0A, - CURRENT_STATUS_MEDIA_SOURCE_GET_VIDEO_RESOLUTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0B, - CURRENT_STATUS_MEDIA_SOURCE_SET_VIDEO_FRAMERATE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0C, - CURRENT_STATUS_MEDIA_SOURCE_GET_VIDEO_FRAMERATE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0D, - CURRENT_STATUS_FILE_SOURCE_SET_PATH = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0E, - CURRENT_STATUS_FILE_SOURCE_SET_LOOPING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0F, - CURRENT_STATUS_FILE_SOURCE_GET_LOOPING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x10, - CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_FORMAT = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x11, - CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_BUFFER_STATE_CHANGED_CB = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x12, - CURRENT_STATUS_MEDIA_PACKET_SOURCE_UNSET_BUFFER_STATE_CHANGED_CB = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x13, - CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x14, - CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x15, - CURRENT_STATUS_SET_CROP_SCREEN_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x16, - CURRENT_STATUS_UNSET_CROP_SCREEN_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x17, + CURRENT_STATUS_MEDIA_SOURCE_SET_TRANSCEIVER_CODEC = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x06, + CURRENT_STATUS_MEDIA_SOURCE_GET_TRANSCEIVER_CODEC = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x07, + CURRENT_STATUS_MEDIA_SOURCE_SET_PAUSE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x08, + CURRENT_STATUS_MEDIA_SOURCE_GET_PAUSE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x09, + CURRENT_STATUS_MEDIA_SOURCE_SET_MUTE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0A, + CURRENT_STATUS_MEDIA_SOURCE_GET_MUTE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0B, + CURRENT_STATUS_MEDIA_SOURCE_SET_VIDEO_RESOLUTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0C, + CURRENT_STATUS_MEDIA_SOURCE_GET_VIDEO_RESOLUTION = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0D, + CURRENT_STATUS_MEDIA_SOURCE_SET_VIDEO_FRAMERATE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0E, + CURRENT_STATUS_MEDIA_SOURCE_GET_VIDEO_FRAMERATE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x0F, + CURRENT_STATUS_FILE_SOURCE_SET_PATH = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x10, + CURRENT_STATUS_FILE_SOURCE_SET_LOOPING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x11, + CURRENT_STATUS_FILE_SOURCE_GET_LOOPING = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x12, + CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_FORMAT = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x13, + CURRENT_STATUS_MEDIA_PACKET_SOURCE_SET_BUFFER_STATE_CHANGED_CB = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x14, + CURRENT_STATUS_MEDIA_PACKET_SOURCE_UNSET_BUFFER_STATE_CHANGED_CB = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x15, + CURRENT_STATUS_START_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x16, + CURRENT_STATUS_STOP_PUSHING_PACKET_TO_MEDIA_PACKET_SOURCE = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x17, + CURRENT_STATUS_SCREEN_SOURCE_SET_CROP = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x18, + CURRENT_STATUS_SCREEN_SOURCE_UNSET_CROP = TEST_MENU_WEBRTC_MEDIA_SOURCE | 0x19, /* 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,