gboolean source_info;
GstBuffer *input_buffer;
+
+ GstFlowReturn process_flow_ret;
};
/* Filter signals and args */
GstRTPBuffer * rtp_buffer);
GstBuffer *(*process_func) (GstRTPBaseDepayload * base, GstBuffer * in);
GstRTPBaseDepayloadPrivate *priv;
- GstFlowReturn ret = GST_FLOW_OK;
GstBuffer *out_buf;
guint32 ssrc;
guint16 seqnum;
GstRTPBuffer rtp = { NULL };
priv = filter->priv;
+ priv->process_flow_ret = GST_FLOW_OK;
process_func = bclass->process;
process_rtp_packet_func = bclass->process_rtp_packet;
/* let's send it out to processing */
if (out_buf) {
- ret = gst_rtp_base_depayload_push (filter, out_buf);
+ if (priv->process_flow_ret == GST_FLOW_OK)
+ priv->process_flow_ret = gst_rtp_base_depayload_push (filter, out_buf);
+ else
+ gst_buffer_unref (out_buf);
}
gst_buffer_unref (in);
priv->input_buffer = NULL;
- return ret;
+ return priv->process_flow_ret;
/* ERRORS */
not_negotiated:
else
gst_buffer_unref (out_buf);
+ if (res != GST_FLOW_OK)
+ filter->priv->process_flow_ret = res;
+
return res;
}
else
gst_buffer_list_unref (out_list);
+ if (res != GST_FLOW_OK)
+ filter->priv->process_flow_ret = res;
+
return res;
}