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
[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",
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;
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) {
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;
}
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);
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;
}
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();
{ "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 },
{ "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 },
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");
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");
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)
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;
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,