return;
media_type = gst_structure_get_name(gst_caps_get_structure(gst_pad_get_current_caps(new_pad), 0));
+
+ if(!_is_supported_media_type(media_type))
+ return;
+
LOG_INFO("decodebin[%p, name:%s] new_pad[%s] media_type[%s]", decodebin, GST_ELEMENT_NAME(decodebin), GST_PAD_NAME(new_pad), media_type);
sink = __find_sink_slot(webrtc, GST_ELEMENT_NAME(decodebin));
RET_IF(sink == NULL, "could not find an item by [%s] in sink slots", GST_ELEMENT_NAME(decodebin));
- if (g_strrstr(media_type, "video")) {
- sink->media_types |= MEDIA_TYPE_VIDEO;
- __invoke_track_added_cb(webrtc, GST_ELEMENT_NAME(decodebin), true, true);
- ret = __build_videosink(webrtc, decodebin, new_pad);
-
- } else if (g_strrstr(media_type, "audio")) {
+ if (_is_audio_media_type(media_type)) {
sink->media_types |= MEDIA_TYPE_AUDIO;
__invoke_track_added_cb(webrtc, GST_ELEMENT_NAME(decodebin), false, true);
ret = __build_audiosink(webrtc, decodebin, new_pad);
-
} else {
- LOG_ERROR("not supported media type[%s]", media_type);
- return;
+ sink->media_types |= MEDIA_TYPE_VIDEO;
+ __invoke_track_added_cb(webrtc, GST_ELEMENT_NAME(decodebin), true, true);
+ ret = __build_videosink(webrtc, decodebin, new_pad);
}
if (ret != WEBRTC_ERROR_NONE) {
webrtc_gst_slot_s *source = u_data;
GstCaps *new_cap = NULL;
GstElement *appsrc = NULL;
- gchar *media = NULL;
+ const gchar *media_type = NULL;
int av_idx;
- gst_structure_get(gst_caps_get_structure(gst_pad_get_current_caps(pad), 0), "media", G_TYPE_STRING, &media, NULL);
+ gst_structure_get(gst_caps_get_structure(gst_pad_get_current_caps(pad), 0), "media", G_TYPE_STRING, &media_type, NULL);
- if (!g_strrstr(media, "audio") && !g_strrstr(media, "video")) {
- LOG_ERROR("not supported media type [%s]", media);
+ if(!_is_supported_media_type(media_type))
return GST_PAD_PROBE_OK;
- }
- av_idx = GET_AV_IDX(g_strrstr(media, "audio"));
+ av_idx = GET_AV_IDX(_is_audio_media_type(media_type));
appsrc = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].appsrc_name);
- RET_VAL_IF(appsrc == NULL, GST_PAD_PROBE_OK, "There is no appsrc for [%s]", media);
+ RET_VAL_IF(appsrc == NULL, GST_PAD_PROBE_OK, "There is no appsrc for [%s]", media_type);
new_cap = gst_caps_copy(gst_pad_get_current_caps(pad));
g_object_set(G_OBJECT(appsrc), "caps", new_cap, NULL);
- LOG_INFO("setting caps for [%s appsrc] successfully", media);
+ LOG_INFO("setting caps for [%s appsrc] successfully", media_type);
PRINT_CAPS(new_cap, "appsrc");
source->filesrc_av[av_idx].sink_pad = pad;
int ret = WEBRTC_ERROR_NONE;
webrtc_gst_slot_s *source = data;
const gchar *media_type = NULL;
- gboolean is_audio;
+ bool is_audio;
int av_idx;
GstElement *queue = NULL;
media_type = gst_structure_get_name(gst_caps_get_structure(gst_pad_get_current_caps(pad), 0));
RET_IF(media_type == NULL, "media_type is NULL");
- LOG_INFO("[%s] new_pad[%s] media_type[%s]", GST_ELEMENT_NAME(element), GST_PAD_NAME(pad), media_type);
-
- if (!g_strrstr(media_type, "audio") && !g_strrstr(media_type, "video")) {
- LOG_ERROR("not supported media type [%s]", media_type);
+ if(!_is_supported_media_type(media_type))
return;
- }
- is_audio = (g_strrstr(media_type, "audio")) ? TRUE : FALSE;
+ LOG_INFO("[%s] new_pad[%s] media_type[%s]", GST_ELEMENT_NAME(element), GST_PAD_NAME(pad), media_type);
+
+ is_audio = _is_audio_media_type(media_type);
av_idx = GET_AV_IDX(is_audio);
if (source->av[av_idx].src_pad_probe_id > 0) {
media_type = gst_structure_get_name(gst_caps_get_structure(gst_pad_get_current_caps(new_pad), 0));
LOG_INFO("source_id[%u], media_type[%s], new_pad[%s]", source->id, media_type, GST_PAD_NAME(new_pad));
- if (g_strrstr(media_type, "audio")) {
+ if(!_is_supported_media_type(media_type))
+ return;
+
+ if (_is_audio_media_type(media_type)) {
ret = __build_loopback_audiosink(source, decodebin);
if (ret != WEBRTC_ERROR_NONE)
SAFE_GST_OBJECT_UNREF(source->av[AV_IDX_AUDIO].render.pipeline);
GENERATE_DOT(source->webrtc, source->av[AV_IDX_AUDIO].render.pipeline, "%s.%s-%s",
GST_ELEMENT_NAME(source->av[AV_IDX_AUDIO].render.pipeline), GST_ELEMENT_NAME(decodebin), GST_PAD_NAME(new_pad));
- } else if (g_strrstr(media_type, "video")) {
+ } else {
ret = __build_loopback_videosink(source, decodebin);
if (ret != WEBRTC_ERROR_NONE)
SAFE_GST_OBJECT_UNREF(source->av[AV_IDX_VIDEO].render.pipeline);
GENERATE_DOT(source->webrtc, source->av[AV_IDX_VIDEO].render.pipeline, "%s.%s-%s",
GST_ELEMENT_NAME(source->av[AV_IDX_VIDEO].render.pipeline), GST_ELEMENT_NAME(decodebin), GST_PAD_NAME(new_pad));
- } else {
- LOG_ERROR("not supported media type[%s]", media_type);
- return;
}
if (ret != WEBRTC_ERROR_NONE) {