}
}
-static int __create_rest_of_elements(webrtc_s *webrtc, webrtc_gst_slot_s *source, bool need_capsfilter, GList **element_list)
+static int __create_rest_of_elements(webrtc_s *webrtc, webrtc_gst_slot_s *source, bool need_capsfilter, GList **element_list, bool is_audio)
{
GstElement *capsfilter = NULL;
GstElement *encoder = NULL;
RET_VAL_IF(source == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL");
RET_VAL_IF(element_list == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "element_list is NULL");
- if (source->media_types == MEDIA_TYPE_VIDEO) {
- encoder_klass_name = GST_KLASS_NAME_ENCODER_VIDEO;
- } else if (source->media_types == MEDIA_TYPE_AUDIO) {
- encoder_klass_name = GST_KLASS_NAME_ENCODER_AUDIO;
- } else {
- LOG_ERROR("not ready for this media_types[0x%x]", source->media_types);
- return WEBRTC_ERROR_INVALID_OPERATION;
- }
- idx = GET_AV_IDX_BY_TYPE(source->media_types);
+ encoder_klass_name = is_audio ? GST_KLASS_NAME_ENCODER_AUDIO : GST_KLASS_NAME_ENCODER_VIDEO;
+
+ idx = GET_AV_IDX(is_audio);
if (need_capsfilter) {
if (!(capsfilter = _create_element(DEFAULT_ELEMENT_CAPSFILTER, ELEMENT_NAME_FIRST_CAPSFILTER)))
APPEND_ELEMENT(element_list, videoconvert);
}
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, false)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, switch_src_list))
if (g_object_class_find_property(G_OBJECT_GET_CLASS(G_OBJECT(camerasrc)), "empty-buffer-timeout"))
g_object_set(G_OBJECT(camerasrc), "empty-buffer-timeout", 0, NULL);
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, false)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, element_list))
goto exit;
APPEND_ELEMENT(element_list, volume);
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, true)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, element_list))
"pattern", 18, /* ball */
NULL);
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, false)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, element_list))
return WEBRTC_ERROR_INVALID_OPERATION;
APPEND_ELEMENT(element_list, custom_videosrc);
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, false)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, element_list))
goto exit;
APPEND_ELEMENT(element_list, volume);
- if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, true, &element_list, true)) != WEBRTC_ERROR_NONE)
goto exit;
if (!__add_elements_to_bin(source->bin, element_list))
source->zerocopy_enabled = __is_hw_encoder_used(webrtc, source->type, source->media_types);
- if ((ret = __create_rest_of_elements(webrtc, source, false, &element_list)) != WEBRTC_ERROR_NONE)
+ if ((ret = __create_rest_of_elements(webrtc, source, false, &element_list, (source->media_types == MEDIA_TYPE_AUDIO))) != WEBRTC_ERROR_NONE)
return ret;
if (!(sink_caps = __make_raw_caps_from_media_format(source))) {