summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2019-05-01 10:00:51 +0300
committerTim-Philipp Müller <tim@centricular.com>2019-05-06 23:43:08 +0200
commit5f46d2618978e428a472f44b40892a48d5c76355 (patch)
tree602f6fc6c4e456a591ba257d24fbd8edde2207c4
parent2ac1a9c0f006ee97a5939181f36ae50df53e180b (diff)
downloadgstreamer-plugins-good-5f46d2618978e428a472f44b40892a48d5c76355.tar.gz
rtprawdepay: Don't get rid of the buffer pool on FLUSH_STOP
We expect there to be a pool as long as the caps are known and FLUSH_STOP is not resetting the caps. Getting rid of the pool would cause assertions. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/584
-rw-r--r--gst/rtp/gstrtpvrawdepay.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gst/rtp/gstrtpvrawdepay.c b/gst/rtp/gstrtpvrawdepay.c
index a02bb519c..d6906dcb3 100644
--- a/gst/rtp/gstrtpvrawdepay.c
+++ b/gst/rtp/gstrtpvrawdepay.c
@@ -108,7 +108,7 @@ gst_rtp_vraw_depay_init (GstRtpVRawDepay * rtpvrawdepay)
}
static void
-gst_rtp_vraw_depay_reset (GstRtpVRawDepay * rtpvrawdepay)
+gst_rtp_vraw_depay_reset (GstRtpVRawDepay * rtpvrawdepay, gboolean full)
{
if (rtpvrawdepay->outbuf) {
gst_video_frame_unmap (&rtpvrawdepay->frame);
@@ -116,7 +116,8 @@ gst_rtp_vraw_depay_reset (GstRtpVRawDepay * rtpvrawdepay)
rtpvrawdepay->outbuf = NULL;
}
rtpvrawdepay->timestamp = -1;
- if (rtpvrawdepay->pool) {
+
+ if (full && rtpvrawdepay->pool) {
gst_buffer_pool_set_active (rtpvrawdepay->pool, FALSE);
gst_object_unref (rtpvrawdepay->pool);
rtpvrawdepay->pool = NULL;
@@ -613,7 +614,7 @@ gst_rtp_vraw_depay_handle_event (GstRTPBaseDepayload * filter, GstEvent * event)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_FLUSH_STOP:
- gst_rtp_vraw_depay_reset (rtpvrawdepay);
+ gst_rtp_vraw_depay_reset (rtpvrawdepay, FALSE);
break;
default:
break;
@@ -638,7 +639,7 @@ gst_rtp_vraw_depay_change_state (GstElement * element,
case GST_STATE_CHANGE_NULL_TO_READY:
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
- gst_rtp_vraw_depay_reset (rtpvrawdepay);
+ gst_rtp_vraw_depay_reset (rtpvrawdepay, TRUE);
break;
default:
break;
@@ -648,7 +649,7 @@ gst_rtp_vraw_depay_change_state (GstElement * element,
switch (transition) {
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_rtp_vraw_depay_reset (rtpvrawdepay);
+ gst_rtp_vraw_depay_reset (rtpvrawdepay, TRUE);
break;
case GST_STATE_CHANGE_READY_TO_NULL:
break;