From: Sangchul Lee Date: Mon, 25 Jul 2022 06:40:58 +0000 (+0900) Subject: webrtc_test: Add test cases for WEBRTC_MEDIA_SOURCE_TYPE_NULL and transceiver codec X-Git-Tag: submit/tizen_6.5/20220729.123324~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db5dd65e0aabf27283c4f7ecb4e7a871d37fc582;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_test: Add test cases for WEBRTC_MEDIA_SOURCE_TYPE_NULL and transceiver codec [Version] 0.2.175 [Issue Type] Add Change-Id: I687be28990fbef0b5317c7b3517f2d0d28ef8149 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index 19f216b4..32238908 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.2.174 +Version: 0.2.175 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/test/webrtc_test.c b/test/webrtc_test.c index 4dd03fa7..49743760 100644 --- a/test/webrtc_test.c +++ b/test/webrtc_test.c @@ -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);