The file source can have more than one src pad for the same source id 08/261208/6
authorbackto.kim <backto.kim@samsung.com>
Tue, 13 Jul 2021 08:35:37 +0000 (17:35 +0900)
committerbackto.kim <backto.kim@samsung.com>
Wed, 14 Jul 2021 07:11:21 +0000 (16:11 +0900)
[Version] 0.2.42
[Issue Type] Improvement

Change-Id: I47f00b5500496ee3dffd8afb3265d351532bb293

packaging/capi-media-webrtc.spec
src/webrtc_private.c
src/webrtc_source.c

index 044761abbadcef2a0df05bb3f501d65eb6e6b94d..b577321a693a49d93b88685891a22ca0d1e27a97 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.2.41
+Version:    0.2.42
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index e16fab526c9944e23c6f0e8ac6005d251559b363..446e1f41bd33eceac699951c50ec2a69bf452756 100644 (file)
@@ -880,7 +880,11 @@ int _add_no_target_ghostpad_to_slot(webrtc_gst_slot_s *slot, bool is_src, GstPad
        RET_VAL_IF(slot->bin == NULL, WEBRTC_ERROR_INVALID_OPERATION, "bin is NULL");
        RET_VAL_IF(new_pad == NULL, WEBRTC_ERROR_INVALID_OPERATION, "new_pad is NULL");
 
-       pad_name = g_strdup_printf("%s_%u", is_src ? "src" : "sink", slot->id);
+       if (slot->type == WEBRTC_MEDIA_SOURCE_TYPE_FILE)
+               pad_name = g_strdup_printf("%s_%s_%u", slot->media_types & MEDIA_TYPE_AUDIO ? "audio" : "video", is_src ? "src" : "sink", slot->id);
+       else
+               pad_name = g_strdup_printf("%s_%u", is_src ? "src" : "sink", slot->id);
+
        if (!(*new_pad = __add_no_target_ghostpad(slot->bin, pad_name, is_src))) {
                LOG_ERROR("failed to add new ghost pad[%s] for bin[%s]", pad_name, GST_ELEMENT_NAME(slot->bin));
                g_free(pad_name);
index 1a016d6d8c25d488f1d715969dfa233e1befa604..dca3ff72b8f3c446e5c35166fbdf9ed9a13ebe97 100644 (file)
@@ -1915,7 +1915,12 @@ static int __link_source_with_webrtcbin(webrtc_gst_slot_s *source, GstElement *w
                ret = WEBRTC_ERROR_INVALID_OPERATION;
                goto exit;
        }
-       srcpad_name = g_strdup_printf("src_%u", source->id);
+
+       if (source->type == WEBRTC_MEDIA_SOURCE_TYPE_FILE)
+               srcpad_name = g_strdup_printf("%s_src_%u", source->media_types & MEDIA_TYPE_AUDIO ? "audio" : "video", source->id);
+       else
+               srcpad_name = g_strdup_printf("src_%u", source->id);
+
        if (!gst_element_link_pads(GST_ELEMENT(source->bin), srcpad_name, webrtcbin, sinkpad_name)) {
                LOG_ERROR("failed to link pads, [%s:%s] - [%s:%s]",
                        GST_ELEMENT_NAME(source->bin), srcpad_name, GST_ELEMENT_NAME(webrtcbin), sinkpad_name);