#define INI_CATEGORY_SOURCE_VIDEOTEST "source videotest"
#define INI_CATEGORY_SOURCE_MEDIA_PACKET "source media packet"
#define INI_CATEGORY_SOURCE_SCREEN "source screen"
+#define INI_CATEGORY_SOURCE_FILE "source file"
#define INI_CATEGORY_RENDERING_SINK "rendering sink"
#define INI_CATEGORY_VPXENC_PARAMS "vpxenc params"
INI_ITEM_TYPE_STRINGS
} ini_item_type_e;
-typedef enum {
- MEDIA_SOURCE_TYPE_CAMERA,
- MEDIA_SOURCE_TYPE_MIC,
- MEDIA_SOURCE_TYPE_AUDIOTEST,
- MEDIA_SOURCE_TYPE_VIDEOTEST,
- MEDIA_SOURCE_TYPE_MEDIA_PACKET,
- MEDIA_SOURCE_TYPE_SCREEN,
- MEDIA_SOURCE_TYPE_MAX,
-} media_source_type_e;
-
-typedef struct {
- const char *name;
-} ini_category_name_s;
-
-static ini_category_name_s category_source_names[] = {
- [MEDIA_SOURCE_TYPE_CAMERA] = { INI_CATEGORY_SOURCE_CAMERA },
- [MEDIA_SOURCE_TYPE_MIC] = { INI_CATEGORY_SOURCE_MIC },
- [MEDIA_SOURCE_TYPE_AUDIOTEST] = { INI_CATEGORY_SOURCE_AUDIOTEST },
- [MEDIA_SOURCE_TYPE_VIDEOTEST] = { INI_CATEGORY_SOURCE_VIDEOTEST },
- [MEDIA_SOURCE_TYPE_MEDIA_PACKET] = { INI_CATEGORY_SOURCE_MEDIA_PACKET },
- [MEDIA_SOURCE_TYPE_SCREEN] = { INI_CATEGORY_SOURCE_SCREEN },
- [MEDIA_SOURCE_TYPE_MAX] = { NULL },
+static const char* category_source_names[] = {
+ [WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST] = INI_CATEGORY_SOURCE_AUDIOTEST,
+ [WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST] = INI_CATEGORY_SOURCE_VIDEOTEST,
+ [WEBRTC_MEDIA_SOURCE_TYPE_MIC] = INI_CATEGORY_SOURCE_MIC,
+ [WEBRTC_MEDIA_SOURCE_TYPE_CAMERA] = INI_CATEGORY_SOURCE_CAMERA,
+ [WEBRTC_MEDIA_SOURCE_TYPE_SCREEN] = INI_CATEGORY_SOURCE_SCREEN,
+ [WEBRTC_MEDIA_SOURCE_TYPE_FILE] = INI_CATEGORY_SOURCE_FILE,
+ [WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET] = INI_CATEGORY_SOURCE_MEDIA_PACKET,
+ [WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET + 1] = NULL,
};
static void __dump_item(const char *prefix_str, ini_item_type_e type, void *item)
static void __dump_ini(webrtc_ini_s *ini)
{
int i = 0;
- const char *category_name;
RET_IF(ini == NULL, "ini is NULL");
LOG_INFO("[%s]", INI_CATEGORY_MEDIA_SOURCE);
__dump_items_of_source(&ini->media_source);
- for (; (category_name = category_source_names[i].name) != NULL; i++) {
- ini_item_media_source_s *source = g_hash_table_lookup(ini->sources, category_name);
+ for (; category_source_names[i] != NULL; i++) {
+ ini_item_media_source_s *source = g_hash_table_lookup(ini->sources, category_source_names[i]);
if (source) {
- LOG_INFO("[%s]", category_name);
+ LOG_INFO("[%s]", category_source_names[i]);
__dump_items_of_source(source);
}
}
int _load_ini(webrtc_s *webrtc)
{
webrtc_ini_s *ini;
- const char *category_name;
int i = 0;
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
__apply_media_source_setting(ini, &ini->media_source, INI_CATEGORY_MEDIA_SOURCE);
/* it overrides the default values above */
- for (; (category_name = category_source_names[i].name) != NULL; i++) {
- if (iniparser_getsecnkeys(ini->dict, category_name) > 0) {
+ for (; category_source_names[i] != NULL; i++) {
+ if (iniparser_getsecnkeys(ini->dict, category_source_names[i]) > 0) {
ini_item_media_source_s *source = g_new0(ini_item_media_source_s, 1);
- __apply_media_source_setting(ini, source, category_name);
- if (!g_hash_table_insert(ini->sources, g_strdup(category_name), (gpointer)source)) {
- LOG_WARNING("[%s] already exist", category_name);
+ __apply_media_source_setting(ini, source, category_source_names[i]);
+ if (!g_hash_table_insert(ini->sources, g_strdup(category_source_names[i]), (gpointer)source)) {
+ LOG_WARNING("[%s] already exist", category_source_names[i]);
continue;
}
}
{
RET_VAL_IF(ini == NULL, NULL, "ini is NULL");
- return (ini_item_media_source_s*)g_hash_table_lookup(ini->sources, category_source_names[type].name);
+ return (ini_item_media_source_s*)g_hash_table_lookup(ini->sources, category_source_names[type]);
}
void _unload_ini(webrtc_s *webrtc)
ini_source = &ini->media_source;
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_SCREEN:
caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
"format", G_TYPE_STRING, ini_source->v_raw_format,
ini_source = &ini->media_source;
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_SCREEN:
caps = gst_caps_new_simple(MEDIA_TYPE_VIDEO_RAW,
"format", G_TYPE_STRING, ini_source->v_raw_format,
source->video_info.height = ini_source->v_height;
break;
- case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
caps = gst_caps_new_simple(MEDIA_TYPE_AUDIO_RAW,
"format", G_TYPE_STRING, ini_source->a_raw_format,
"channels", G_TYPE_INT, ini_source->a_channels,
ini_source = &ini->media_source;
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_SCREEN:
_media_type = __get_video_media_type(ini_source->v_codec);
RET_VAL_IF(_media_type == NULL, NULL, "_media_type is NULL");
source->video_info.height = ini_source->v_height;
break;
- case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
_media_type = __get_audio_media_type(ini_source->a_codec);
RET_VAL_IF(_media_type == NULL, NULL, "_media_type is NULL");
{
const char *element = NULL;
- if (type == WEBRTC_MEDIA_SOURCE_TYPE_CAMERA)
- element = DEFAULT_ELEMENT_CAMERASRC;
- else if (type == WEBRTC_MEDIA_SOURCE_TYPE_MIC)
- element = DEFAULT_ELEMENT_AUDIOSRC;
- else if (type == WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST)
+ if (type == WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST)
element = DEFAULT_ELEMENT_AUDIOTESTSRC;
else if (type == WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST)
element = DEFAULT_ELEMENT_VIDEOTESTSRC;
- else if (type == WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET)
- element = DEFAULT_ELEMENT_APPSRC;
+ else if (type == WEBRTC_MEDIA_SOURCE_TYPE_MIC)
+ element = DEFAULT_ELEMENT_AUDIOSRC;
+ else if (type == WEBRTC_MEDIA_SOURCE_TYPE_CAMERA)
+ element = DEFAULT_ELEMENT_CAMERASRC;
else if (type == WEBRTC_MEDIA_SOURCE_TYPE_SCREEN)
element = DEFAULT_ELEMENT_SCREENSRC;
+ else if (type == WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET)
+ element = DEFAULT_ELEMENT_APPSRC;
else
LOG_ERROR_IF_REACHED("type(%d)", type);
RET_VAL_IF(source->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL");
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
- return __build_camerasrc(webrtc, source);
-
- case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
- return __build_audiosrc(webrtc, source, true);
+ case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
+ return __build_audiosrc(webrtc, source, false);
case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
return __build_videotestsrc(webrtc, source);
- case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
- return __build_audiosrc(webrtc, source, false);
+ case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
+ return __build_audiosrc(webrtc, source, true);
- case WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET:
- return __build_mediapacketsrc(webrtc, source);
+ case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
+ return __build_camerasrc(webrtc, source);
case WEBRTC_MEDIA_SOURCE_TYPE_SCREEN:
return __build_screensrc(webrtc, source);
+ case WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET:
+ return __build_mediapacketsrc(webrtc, source);
+
default:
LOG_ERROR_IF_REACHED("type(%d)", source->type);
return WEBRTC_ERROR_INVALID_PARAMETER;
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(source_id == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is NULL");
- RET_VAL_IF(type > WEBRTC_MEDIA_SOURCE_TYPE_SCREEN, WEBRTC_ERROR_INVALID_PARAMETER, "invalid source type(%d)", type);
+ RET_VAL_IF(type > WEBRTC_MEDIA_SOURCE_TYPE_MEDIA_PACKET, WEBRTC_ERROR_INVALID_PARAMETER, "invalid source type(%d)", type);
RET_VAL_IF(webrtc->gst.source_slots == NULL, WEBRTC_ERROR_INVALID_OPERATION, "source_slots is NULL");
/* bin_name/source will be freed by function which is set to g_hash_table_new_full() */
LOG_DEBUG("source_id[%u] mute[%d]", source_id, mute);
switch (source->type) {
+ case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
+ ret = __mute_videotestsrc(source, mute);
+ break;
+
case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
ret = __mute_camerasrc(source, mute);
break;
ret = __mute_videosrc(source, mute);
break;
- case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
- ret = __mute_videotestsrc(source, mute);
- break;
-
default :
LOG_ERROR_IF_REACHED("type(%d)", source->type);
return WEBRTC_ERROR_INVALID_PARAMETER;
}
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
volume = gst_bin_get_by_name(source->bin, ELEMENT_NAME_VOLUME);
RET_VAL_IF(volume == NULL, WEBRTC_ERROR_INVALID_OPERATION, "volume is NULL");
}
switch (source->type) {
+ case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
case WEBRTC_MEDIA_SOURCE_TYPE_CAMERA:
case WEBRTC_MEDIA_SOURCE_TYPE_SCREEN:
- case WEBRTC_MEDIA_SOURCE_TYPE_VIDEOTEST:
*muted = source->video_muted;
break;
}
switch (source->type) {
- case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
case WEBRTC_MEDIA_SOURCE_TYPE_AUDIOTEST:
+ case WEBRTC_MEDIA_SOURCE_TYPE_MIC:
volume = gst_bin_get_by_name(source->bin, ELEMENT_NAME_VOLUME);
RET_VAL_IF(volume == NULL, WEBRTC_ERROR_INVALID_OPERATION, "volume is NULL");