#define DEFAULT_NAME_VIDEO_QUEUE "videoQueue"
#define DEFAULT_NAME_AUDIO_CAPSFILTER "audioCapsfilter"
#define DEFAULT_NAME_VIDEO_CAPSFILTER "videoCapsfilter"
-#define DEFAULT_NAME_AUDIO_PAYLOAD "audioPayload"
-#define DEFAULT_NAME_VIDEO_PAYLOAD "videoPayload"
+#define DEFAULT_NAME_AUDIO_PAYLOADER "audioPayloader"
+#define DEFAULT_NAME_VIDEO_PAYLOADER "videoPayloader"
#define DEFAULT_NAME_VIDEOCROP "videoCrop"
#define DEFAULT_NAME_SCREENSRC "waylandSrc"
#define DEFAULT_NAME_AUDIO_FAKESINK "audioFakeSink"
typedef struct {
const char *appsrc_name;
const char *queue_name;
- const char *payload_name;
+ const char *payloader_name;
const char *capsfilter_name;
const char *fakesink_name;
const char *network_simulator_name;
{
DEFAULT_NAME_AUDIO_APPSRC,
DEFAULT_NAME_AUDIO_QUEUE,
- DEFAULT_NAME_AUDIO_PAYLOAD,
+ DEFAULT_NAME_AUDIO_PAYLOADER,
DEFAULT_NAME_AUDIO_CAPSFILTER,
DEFAULT_NAME_AUDIO_FAKESINK,
DEFAULT_NAME_AUDIO_NETWORK_SIMULATOR
{
DEFAULT_NAME_VIDEO_APPSRC,
DEFAULT_NAME_VIDEO_QUEUE,
- DEFAULT_NAME_VIDEO_PAYLOAD,
+ DEFAULT_NAME_VIDEO_PAYLOADER,
DEFAULT_NAME_VIDEO_CAPSFILTER,
DEFAULT_NAME_VIDEO_FAKESINK,
DEFAULT_NAME_VIDEO_NETWORK_SIMULATOR
{
GstBin *bin;
GstElement *queue;
- GstElement *payload;
+ GstElement *payloader;
GstElement *capsfilter;
GstElement *fakesink;
GstElement *netsim;
+ GList *element_list = NULL;
int av_idx = GET_AV_IDX(is_audio);
RET_IF(source == NULL, "pad is NULL");
bin = GST_BIN(source->filesrc_pipeline);
- queue = gst_bin_get_by_name(bin, _av_tbl[av_idx].queue_name);
- RET_IF(queue == NULL, "queue is NULL");
-
- payload = gst_bin_get_by_name(bin, _av_tbl[av_idx].payload_name);
- RET_IF(payload == NULL, "payload is NULL");
+ if ((queue = gst_bin_get_by_name(bin, _av_tbl[av_idx].queue_name)))
+ APPEND_ELEMENT(element_list, queue);
+ else
+ LOG_ERROR("queue is NULL");
- capsfilter = gst_bin_get_by_name(bin, _av_tbl[av_idx].capsfilter_name);
- RET_IF(capsfilter == NULL, "capsfilter is NULL");
+ if ((payloader = gst_bin_get_by_name(bin, _av_tbl[av_idx].payloader_name)))
+ APPEND_ELEMENT(element_list, payloader);
+ else
+ LOG_ERROR("payloader is NULL");
- fakesink = gst_bin_get_by_name(bin, _av_tbl[av_idx].fakesink_name);
- RET_IF(fakesink == NULL, "fakesink is NULL");
+ if ((capsfilter = gst_bin_get_by_name(bin, _av_tbl[av_idx].capsfilter_name)))
+ APPEND_ELEMENT(element_list, capsfilter);
+ else
+ LOG_ERROR("capsfilter is NULL");
- gst_bin_remove_many(bin, queue, payload, capsfilter, fakesink, NULL);
+ if ((fakesink = gst_bin_get_by_name(bin, _av_tbl[av_idx].fakesink_name)))
+ APPEND_ELEMENT(element_list, fakesink);
+ else
+ LOG_ERROR("fakesink is NULL");
if (source->webrtc->ini.general.network_simulator) {
- netsim = gst_bin_get_by_name(bin, _av_tbl[av_idx].network_simulator_name);
- RET_IF(netsim == NULL, "netsim is NULL");
- gst_bin_remove(bin, netsim);
+ if ((netsim = gst_bin_get_by_name(bin, _av_tbl[av_idx].network_simulator_name)))
+ APPEND_ELEMENT(element_list, netsim);
+ else
+ LOG_ERROR("netsim is NULL");
}
+
+ __remove_elements_from_bin(bin, element_list);
+
+ SAFE_G_LIST_FREE(element_list);
}
static void __filesrc_pipeline_audio_stream_handoff_cb(GstElement *object, GstBuffer *buffer, GstPad *pad, gpointer data)
return GST_PAD_PROBE_REMOVE;
}
-static GstElement * __create_payload_for_filesrc_pipeline(GstPad *pad, bool is_audio)
+static GstElement * __create_payloader_for_filesrc_pipeline(GstPad *pad, bool is_audio)
{
element_info_s elem_info;
- GstElement *payload = NULL;
+ GstElement *payloader = NULL;
RET_VAL_IF(pad == NULL, NULL, "pad is NULL");
CREATE_ELEMENT_FROM_REGISTRY(elem_info, GST_KLASS_NAME_PAYLOADER_RTP,
gst_pad_get_current_caps(pad),
NULL,
- payload);
+ payloader);
- RET_VAL_IF(payload == NULL, NULL, "payload is NULL");
+ RET_VAL_IF(payloader == NULL, NULL, "payloader is NULL");
- gst_element_set_name(payload, _av_tbl[GET_AV_IDX(is_audio)].payload_name);
+ gst_element_set_name(payloader, _av_tbl[GET_AV_IDX(is_audio)].payloader_name);
- return payload;
+ return payloader;
}
static GstElement * __prepare_capsfilter_for_filesrc_pipeline(webrtc_gst_slot_s *source, bool is_audio)
{
GstBin *bin;
GstElement *queue;
- GstElement *payload;
+ GstElement *payloader;
GstElement *netsim;
GstElement *capsfilter;
GstElement *fakesink;
return WEBRTC_ERROR_INVALID_OPERATION;
APPEND_ELEMENT(element_list, queue);
- if (!(payload = __create_payload_for_filesrc_pipeline(pad, is_audio)))
+ if (!(payloader = __create_payloader_for_filesrc_pipeline(pad, is_audio)))
goto exit;
- APPEND_ELEMENT(element_list, payload);
+ APPEND_ELEMENT(element_list, payloader);
if (source->webrtc->ini.general.network_simulator) {
if (!(netsim = _create_element(DEFAULT_ELEMENT_NETWORK_SIMULATOR, _av_tbl[GET_AV_IDX(is_audio)].network_simulator_name)))
gst_element_foreach_src_pad(GST_ELEMENT(source->bin), __foreach_src_pad_cb, source);
for (av_idx = 0; av_idx < AV_IDX_MAX; av_idx++) {
+ GList *element_list = NULL;
+
if (source->av[av_idx].src_pad_probe_id == 0)
continue;
__remove_rest_of_elements_for_filesrc_pipeline(source, (av_idx == AV_IDX_AUDIO));
- appsrc = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].appsrc_name);
- if (!appsrc)
+ if ((appsrc = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].appsrc_name)))
+ APPEND_ELEMENT(element_list, appsrc);
+ else
LOG_ERROR("appsrc is NULL");
- queue = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].queue_name);
- if (!queue)
+ if ((queue = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].queue_name)))
+ APPEND_ELEMENT(element_list, queue);
+ else
LOG_ERROR("queue is NULL");
- capsfilter = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].capsfilter_name);
- if (!capsfilter)
+ if ((capsfilter = gst_bin_get_by_name(source->bin, _av_tbl[av_idx].capsfilter_name)))
+ APPEND_ELEMENT(element_list, capsfilter);
+ else
LOG_ERROR("capsfilter is NULL");
- gst_bin_remove_many(source->bin, appsrc, queue, capsfilter, NULL);
+ __remove_elements_from_bin(source->bin, element_list);
+
+ SAFE_G_LIST_FREE(element_list);
}
if (source->display)