-1 value will affect nothing.
Otherwise, the element name will be followed by the postfix number.
[Version] 0.4.28
[Issue Type] Improvement
Change-Id: I1529255b78b153deb61cd0f755f32cf7871fe9f9
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
LOG_DEBUG("%s is prepended", GST_ELEMENT_NAME(x_element)); \
} while (0)
-#define CREATE_ELEMENT_FROM_REGISTRY(x_elem_info, x_klass_name, x_sink_caps, x_src_caps, x_excluded_elements, x_element) \
+#define CREATE_ELEMENT_FROM_REGISTRY(x_elem_info, x_klass_name, x_sink_caps, x_src_caps, x_excluded_elements, x_element, x_i) \
do { \
x_elem_info.klass_name = x_klass_name; \
x_elem_info.sink_caps = x_sink_caps; \
x_elem_info.src_caps = x_src_caps; \
x_elem_info.excluded_elements = x_excluded_elements; \
- x_element = _create_element_from_registry(&x_elem_info); \
+ x_element = _create_element_from_registry(&x_elem_info, x_i); \
if (!x_element) \
LOG_ERROR("failed to create element of [%s]", x_klass_name); \
if (x_elem_info.sink_caps) \
int _gst_pipeline_set_state(webrtc_s *webrtc, GstState state);
GstElement *_create_element(const char *factory_name, const char *name);
-GstElement *_create_element_from_registry(element_info_s *elem_info);
+GstElement *_create_element_from_registry(element_info_s *elem_info, int i);
bool _sync_elements_state_with_parent(GList *element_list);
bool _add_elements_to_bin(GstBin *bin, GList *element_list);
bool _link_elements(GList *element_list);
Name: capi-media-webrtc
Summary: A WebRTC library in Tizen Native API
-Version: 0.4.27
+Version: 0.4.28
Release: 0
Group: Multimedia/API
License: Apache-2.0
return second_rank - first_rank;
}
-static const char *__get_element_name_if_encoder(const char *klass_name)
+static gchar *__append_num_to_string(const char *str, int i)
+{
+ if (i == -1)
+ return g_strdup(str);
+ return g_strdup_printf("%s%i", str, i);
+}
+
+static gchar *__get_element_name_if_encoder(const char *klass_name, int i)
{
RET_VAL_IF(klass_name == NULL, NULL, "klass_name is NULL");
if (g_strrstr(klass_name, GST_KLASS_NAME_ENCODER_AUDIO))
- return ELEMENT_NAME_AUDIO_ENCODER;
+ return __append_num_to_string(ELEMENT_NAME_AUDIO_ENCODER, i);
if (g_strrstr(klass_name, GST_KLASS_NAME_ENCODER_VIDEO))
- return ELEMENT_NAME_VIDEO_ENCODER;
+ return __append_num_to_string(ELEMENT_NAME_VIDEO_ENCODER, i);
return NULL;
}
-GstElement *_create_element_from_registry(element_info_s *elem_info)
+GstElement *_create_element_from_registry(element_info_s *elem_info, int i)
{
GstElement *element = NULL;
GList *factories = NULL;
GstElementFactory *factory = NULL;
+ g_autofree gchar *element_name = NULL;
RET_VAL_IF(elem_info == NULL, NULL, "elem_info is NULL");
if (factories) {
factory = GST_ELEMENT_FACTORY(factories->data);
LOG_INFO("sorted result element is [%s]", GST_OBJECT_NAME(factory));
- element = _create_element(GST_OBJECT_NAME(factory), __get_element_name_if_encoder(elem_info->klass_name));
+ element_name = __get_element_name_if_encoder(elem_info->klass_name, i);
+ element = _create_element(GST_OBJECT_NAME(factory), element_name);
} else {
LOG_DEBUG("could not find any compatible element for klass_name[%s]", elem_info->klass_name);
}
g_free(bin_name);
GET_CAPS_INFO_FROM_PAD(src_pad, src_caps);
- CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_DEPAYLOADER_RTP, src_caps, NULL, NULL, depayloader);
+ CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_DEPAYLOADER_RTP, src_caps, NULL, NULL, depayloader, -1);
if (!depayloader)
goto error_before_insert;
caps,
NULL,
NULL,
- payloader);
+ payloader,
+ -1);
RET_VAL_IF(payloader == NULL, NULL, "payloader is NULL");
gst_element_set_name(payloader, _get_element_name(GET_AV_IDX(is_audio), ELEMENT_PAYLOADER));
__make_encoded_caps_from_media_format(source, &media_type),
NULL,
NULL,
- payloader);
+ payloader,
+ -1);
if (!payloader)
goto error;
APPEND_ELEMENT(*element_list, payloader);
/*
- * Copyright (c) 202 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
__make_default_raw_caps(source, &webrtc->ini),
__make_default_encoded_caps(source, &webrtc->ini, NULL),
webrtc->ini.general.gst_excluded_elements,
- encoder);
+ encoder,
+ -1);
RET_VAL_IF(encoder == NULL, NULL, "encoder is NULL");
caps_for_encoder,
NULL,
NULL,
- payloader);
+ payloader,
+ -1);
if (payloader == NULL)
goto error;
APPEND_ELEMENT(*element_list, payloader);