GstElement *appsrc;
GstElement *capsfilter;
GList *element_list = NULL;
+ GList *element_list2 = NULL;
GstCaps *sink_caps;
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
return WEBRTC_ERROR_INVALID_OPERATION;
}
- PREPEND_ELEMENT(element_list, appsrc);
- if (!__link_elements(element_list)) {
+ element_list2 = g_list_copy(element_list);
+ PREPEND_ELEMENT(element_list2, appsrc); /* element_list2 has appsrc */
+ if (!__link_elements(element_list2)) {
ret = WEBRTC_ERROR_INVALID_OPERATION;
goto exit_with_remove_from_bin;
}
if (!(capsfilter = gst_bin_get_by_name(source->bin, ELEMENT_NAME_RTP_CAPSFILTER))) {
- element_list = g_list_nth(element_list, 1); /* skip removing appsrc from bin */
ret = WEBRTC_ERROR_INVALID_OPERATION;
goto exit_with_remove_from_bin;
}
SAFE_G_LIST_FREE(element_list);
+ SAFE_G_LIST_FREE(element_list2);
return _set_ghost_pad_target(*src_pad, capsfilter, true);
exit_with_remove_from_bin:
__remove_elements_from_bin(source->bin, element_list);
SAFE_G_LIST_FREE(element_list);
+ SAFE_G_LIST_FREE(element_list2);
return ret;
exit:
SAFE_G_LIST_FREE_FULL(element_list, gst_object_unref);