return WEBRTC_ERROR_INVALID_OPERATION;
}
- gst_bin_add_many(GST_BIN(sink->bin), videoconvert, videosink, NULL);
+ gst_bin_add_many(sink->bin, videoconvert, videosink, NULL);
if (!gst_element_sync_state_with_parent(videoconvert)) {
LOG_ERROR("failed to gst_element_sync_state_with_parent() for [%s]", GST_ELEMENT_NAME(videoconvert));
return WEBRTC_ERROR_INVALID_OPERATION;
}
- gst_bin_add_many(GST_BIN(sink->bin), audioconvert, audioresample, audiosink, NULL);
+ gst_bin_add_many(sink->bin, audioconvert, audioresample, audiosink, NULL);
if (!gst_element_sync_state_with_parent(audioconvert)) {
LOG_ERROR("failed to gst_element_sync_state_with_parent() for [%s]", GST_ELEMENT_NAME(audioconvert));
sink->signals = NULL;
}
- gst_bin_remove(GST_BIN(gst_element_get_parent(sink->bin)), sink->bin);
+ gst_bin_remove(GST_BIN(gst_element_get_parent(sink->bin)), GST_ELEMENT(sink->bin));
if (sink->media_format)
media_format_unref(sink->media_format);
if (!decodebin)
goto error_before_insert;
- gst_bin_add(GST_BIN(sink->bin), decodebin);
+ gst_bin_add(sink->bin, decodebin);
g_signal_connect(decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), webrtc);
g_signal_connect(decodebin, "autoplug-select", G_CALLBACK(__decodebin_autoplug_select_cb), webrtc);
if (ret != WEBRTC_ERROR_NONE)
goto error_before_insert;
- if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), sink->bin)) {
+ if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), GST_ELEMENT(sink->bin))) {
LOG_ERROR("failed to gst_bin_add(), [%s] -> [%s] pipeline", GST_ELEMENT_NAME(sink->bin), GST_ELEMENT_NAME(webrtc->gst.pipeline));
goto error_before_insert;
}
return WEBRTC_ERROR_INVALID_OPERATION;
}
- gst_element_sync_state_with_parent(sink->bin);
+ gst_element_sync_state_with_parent(GST_ELEMENT(sink->bin));
LOG_INFO("added a sink slot[%p, id:%u]", sink, sink->id);
gst_caps_unref(sink_caps);
}
- gst_bin_add_many(GST_BIN(sink->bin), depayloader, capsfilter, fakesink, NULL);
+ gst_bin_add_many(sink->bin, depayloader, capsfilter, fakesink, NULL);
ret = _add_no_target_ghostpad_to_slot(sink, false, &sink_pad);
if (ret != WEBRTC_ERROR_NONE)
goto error_before_insert;
}
- if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), sink->bin)) {
+ if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), GST_ELEMENT(sink->bin))) {
LOG_ERROR("failed to gst_bin_add(), [%s] -> [%s] pipeline", GST_ELEMENT_NAME(sink->bin), GST_ELEMENT_NAME(webrtc->gst.pipeline));
goto error_before_insert;
}
__invoke_track_added_cb(webrtc, track_name, is_video, false);
- gst_element_sync_state_with_parent(sink->bin);
+ gst_element_sync_state_with_parent(GST_ELEMENT(sink->bin));
LOG_INFO("added a sink slot[%p, id:%u]", sink, sink->id);
if ((ret = __create_rest_of_elements(webrtc, source, &capsfilter, &videoenc, &videopay, &queue, &capsfilter2)) != WEBRTC_ERROR_NONE)
return ret;
- gst_bin_add_many(GST_BIN(source->bin), camerasrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL);
+ gst_bin_add_many(source->bin, camerasrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL);
if (!gst_element_link_many(camerasrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
if ((ret = __create_rest_of_elements(webrtc, source, &capsfilter, &audioenc, &audiopay, &queue, &capsfilter2)) != WEBRTC_ERROR_NONE)
return ret;
- gst_bin_add_many(GST_BIN(source->bin), audiosrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL);
+ gst_bin_add_many(source->bin, audiosrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL);
if (!gst_element_link_many(audiosrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
if ((ret = __create_rest_of_elements(webrtc, source, &capsfilter, &videoenc, &videopay, &queue, &capsfilter2)) != WEBRTC_ERROR_NONE)
return ret;
- gst_bin_add_many(GST_BIN(source->bin), videotestsrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL);
+ gst_bin_add_many(source->bin, videotestsrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL);
if (!gst_element_link_many(videotestsrc, capsfilter, videoenc, videopay, queue, capsfilter2, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
if ((ret = __create_rest_of_elements(webrtc, source, &capsfilter, &audioenc, &audiopay, &queue, &capsfilter2)) != WEBRTC_ERROR_NONE)
return ret;
- gst_bin_add_many(GST_BIN(source->bin), audiotestsrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL);
+ gst_bin_add_many(source->bin, audiotestsrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL);
if (!gst_element_link_many(audiotestsrc, capsfilter, audioenc, audiopay, queue, capsfilter2, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
_connect_and_append_signal(&source->signals, G_OBJECT(appsrc), "need-data", G_CALLBACK(_appsrc_need_data_cb), source);
_connect_and_append_signal(&source->signals, G_OBJECT(appsrc), "enough-data", G_CALLBACK(_appsrc_enough_data_cb), source);
- gst_bin_add(GST_BIN(source->bin), appsrc);
+ gst_bin_add(source->bin, appsrc);
return WEBRTC_ERROR_NONE;
}
-static GstElement *__find_element_in_bin(GstElement *bin, const gchar *name)
+static GstElement *__find_element_in_bin(GstBin *bin, const gchar *name)
{
GValue value = G_VALUE_INIT;
GstElement *element;
RET_VAL_IF(bin == NULL, NULL, "bin is NULL");
RET_VAL_IF(name == NULL, NULL, "name is NULL");
- bin_iterator = gst_bin_iterate_sorted(GST_BIN(bin));
+ bin_iterator = gst_bin_iterate_sorted(bin);
while (GST_ITERATOR_OK == gst_iterator_next(bin_iterator, &value)) {
element = GST_ELEMENT(g_value_get_object(&value));
g_object_set(G_OBJECT(appsrc), "caps", sink_caps, NULL);
gst_caps_unref(sink_caps);
- gst_bin_add_many(GST_BIN(source->bin), encoder, payloader, queue, capsfilter, NULL);
+ gst_bin_add_many(source->bin, encoder, payloader, queue, capsfilter, NULL);
if (!gst_element_link_many(appsrc, encoder, payloader, queue, capsfilter, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
g_object_set(G_OBJECT(appsrc), "caps", sink_caps, NULL);
gst_caps_unref(sink_caps);
- gst_bin_add_many(GST_BIN(source->bin), payloader, queue, capsfilter, NULL);
+ gst_bin_add_many(source->bin, payloader, queue, capsfilter, NULL);
if (!gst_element_link_many(appsrc, payloader, queue, capsfilter, NULL)) {
LOG_ERROR("failed to gst_element_link_many()");
return WEBRTC_ERROR_INVALID_OPERATION;
LOG_DEBUG("[%s, id:%u, media_types:0x%x, mlines[AUDIO]:%d, mlines[VIDEO]:%d] is removed",
GST_ELEMENT_NAME(source->bin), source->id, source->media_types, source->mlines[MLINES_IDX_AUDIO], source->mlines[MLINES_IDX_VIDEO]);
- gst_element_foreach_src_pad(source->bin, __foreach_src_pad_cb, source);
+ gst_element_foreach_src_pad(GST_ELEMENT(source->bin), __foreach_src_pad_cb, source);
- gst_bin_remove(GST_BIN(gst_element_get_parent(source->bin)), source->bin);
+ gst_bin_remove(GST_BIN(gst_element_get_parent(source->bin)), GST_ELEMENT(source->bin));
if (source->media_format)
media_format_unref(source->media_format);
goto exit;
}
srcpad_name = g_strdup_printf("src_%u", source->id);
- if (!gst_element_link_pads(source->bin, srcpad_name, webrtcbin, sinkpad_name)) {
+ 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);
ret = WEBRTC_ERROR_INVALID_OPERATION;
goto error;
}
- if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), source->bin)) {
+ if (!gst_bin_add(GST_BIN(webrtc->gst.pipeline), GST_ELEMENT(source->bin))) {
LOG_ERROR("failed to gst_bin_add(), [%s] -> [%s] pipeline", GST_ELEMENT_NAME(source->bin), GST_ELEMENT_NAME(webrtc->gst.pipeline));
goto error;
}