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);
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);