From 1dd71cc63f01e48610e85fd72d28e4f089183d0c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 23 Dec 2010 16:26:07 +0100 Subject: [PATCH] mp4gdepay: flush state on flush-stop --- gst/rtp/gstrtpmp4gdepay.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gst/rtp/gstrtpmp4gdepay.c b/gst/rtp/gstrtpmp4gdepay.c index 67d5217ec6..02ac8d681a 100644 --- a/gst/rtp/gstrtpmp4gdepay.c +++ b/gst/rtp/gstrtpmp4gdepay.c @@ -135,6 +135,8 @@ static gboolean gst_rtp_mp4g_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps); static GstBuffer *gst_rtp_mp4g_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf); +static gboolean gst_rtp_mp4g_depay_handle_event (GstBaseRTPDepayload * filter, + GstEvent * event); static GstStateChangeReturn gst_rtp_mp4g_depay_change_state (GstElement * element, GstStateChange transition); @@ -173,6 +175,7 @@ gst_rtp_mp4g_depay_class_init (GstRtpMP4GDepayClass * klass) gstbasertpdepayload_class->process = gst_rtp_mp4g_depay_process; gstbasertpdepayload_class->set_caps = gst_rtp_mp4g_depay_setcaps; + gstbasertpdepayload_class->handle_event = gst_rtp_mp4g_depay_handle_event; GST_DEBUG_CATEGORY_INIT (rtpmp4gdepay_debug, "rtpmp4gdepay", 0, "MP4-generic RTP Depayloader"); @@ -711,6 +714,28 @@ short_payload: } } +static gboolean +gst_rtp_mp4g_depay_handle_event (GstBaseRTPDepayload * filter, GstEvent * event) +{ + gboolean ret; + GstRtpMP4GDepay *rtpmp4gdepay; + + rtpmp4gdepay = GST_RTP_MP4G_DEPAY (filter); + + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_FLUSH_STOP: + gst_rtp_mp4g_depay_reset (rtpmp4gdepay); + break; + default: + break; + } + + ret = + GST_BASE_RTP_DEPAYLOAD_CLASS (parent_class)->handle_event (filter, event); + + return ret; +} + static GstStateChangeReturn gst_rtp_mp4g_depay_change_state (GstElement * element, GstStateChange transition)