diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2019-05-01 10:00:51 +0300 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2019-05-06 23:43:08 +0200 |
commit | 5f46d2618978e428a472f44b40892a48d5c76355 (patch) | |
tree | 602f6fc6c4e456a591ba257d24fbd8edde2207c4 | |
parent | 2ac1a9c0f006ee97a5939181f36ae50df53e180b (diff) | |
download | gstreamer-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.c | 11 |
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; |