return process_list_data.flow_ret;
}
+#ifdef TIZEN_FEATURE_DTLS_MODIFICATION
+static void
+find_data_src_pad_linked (GstPad * pad, void * user_data)
+{
+ gboolean *linked = (gboolean *)user_data;
+
+ if (!g_strrstr(GST_PAD_NAME(pad), "data_src") || GST_PAD_IS_LINKED(pad))
+ return;
+
+ if (linked)
+ *linked = FALSE;
+
+ GST_WARNING("'%s' pad is not linked", GST_PAD_NAME(pad));
+}
+
+static gboolean check_if_pad_linked (GstElement * self)
+{
+ GstElement *parent = GST_ELEMENT_PARENT(self);
+ GstElement *grand_parent;
+ gboolean linked = TRUE;
+
+ /* Check whether if this element comes from 'dtlssrtpdec -
+ * transportreceivebin', otherwise just return true. */
+ if (!parent || !g_strrstr(GST_ELEMENT_NAME(parent), "dtlssrtpdec"))
+ return TRUE;
+
+ grand_parent = GST_ELEMENT_PARENT(parent);
+ if (!grand_parent || !g_strrstr(GST_ELEMENT_NAME(grand_parent),
+ "transportreceivebin"))
+ return TRUE;
+
+ g_list_foreach (GST_ELEMENT_PADS(grand_parent),
+ (GFunc) find_data_src_pad_linked, &linked);
+
+ return linked;
+}
+#endif
static GstFlowReturn
sink_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
{
if (other_pad) {
gboolean was_eos = (ret == GST_FLOW_EOS);
+#ifdef TIZEN_FEATURE_DTLS_MODIFICATION
+ if (gst_buffer_get_size (buffer) > 0 &&
+ check_if_pad_linked(GST_ELEMENT(self))) {
+#else
if (gst_buffer_get_size (buffer) > 0) {
+#endif
GST_LOG_OBJECT (self, "pushing buffer");
ret = gst_pad_push (other_pad, buffer);
} else {
cdata.set('TIZEN_FEATURE_WEBRTC_MODIFICATION', true)
cdata.set('TIZEN_FEATURE_WEBRTC_IMPORT_NETSIM', true)
cdata.set('TIZEN_FEATURE_WEBRTC_SSRC_TIMEOUT_NOTIFICATION', true)
+cdata.set('TIZEN_FEATURE_DTLS_MODIFICATION', true)
cdata.set('TIZEN_FEATURE_PITCH_AUDIO_META', true)
cdata.set('TIZEN_FEATURE_SRT_LATENCY', true)
cdata.set('TIZEN_FEATURE_BUG_FIX', true)