diff options
Diffstat (limited to 'gst-libs/gst')
-rw-r--r-- | gst-libs/gst/riff/riff-read.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c index 11740f2a..3cfe634a 100644 --- a/gst-libs/gst/riff/riff-read.c +++ b/gst-libs/gst/riff/riff-read.c @@ -179,7 +179,7 @@ gst_riff_peek_head (GstRiffRead * riff, /* Here, we might encounter EOS */ gst_bytestream_get_status (riff->bs, &remaining, &event); - if (GST_IS_EVENT (event)) { + if (event && GST_IS_EVENT (event)) { gboolean eos = (GST_EVENT_TYPE (event) == GST_EVENT_EOS); gst_pad_event_default (riff->sinkpad, event); @@ -220,7 +220,7 @@ gst_riff_read_element_data (GstRiffRead * riff, guint length, guint * got_bytes) guint32 remaining; gst_bytestream_get_status (riff->bs, &remaining, &event); - if (GST_IS_EVENT (event)) { + if (event && GST_IS_EVENT (event)) { gst_pad_event_default (riff->sinkpad, event); if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) { @@ -276,8 +276,8 @@ gst_riff_read_seek (GstRiffRead * riff, guint64 offset) gst_bytestream_get_status (riff->bs, &remaining, &event); if (event) { g_warning ("Unexpected event before seek"); - gst_event_unref (event); } + if (remaining) gst_bytestream_flush_fast (riff->bs, remaining); @@ -376,9 +376,13 @@ gst_riff_read_skip (GstRiffRead * riff) /* see if we have that much data available */ gst_bytestream_get_status (riff->bs, &remaining, &event); - if (event) { + if (event && GST_IS_EVENT (event)) { + gboolean eos = (GST_EVENT_TYPE (event) == GST_EVENT_EOS); + g_warning ("Unexpected event in skip"); - gst_event_unref (event); + gst_pad_event_default (riff->sinkpad, event); + if (eos) + return FALSE; } /* yes */ |