diff options
author | Jan Schmidt <jan@centricular.com> | 2013-11-20 12:46:23 +1100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2013-11-26 12:32:13 +0100 |
commit | 17080e174135548e071fa626cfe49d4002dbe0d0 (patch) | |
tree | 296dbbfbcac4cc953afb9b17514336bbd955118b | |
parent | 75a7cff360601e2fa7b6e336c857da7c56b53eff (diff) | |
download | gstreamer-plugins-bad-17080e174135548e071fa626cfe49d4002dbe0d0.tar.gz |
dvdspu: Handle vobsub packets smaller than 4 bytes
In particular, handle the case of an empty packet with size 0 bytes.
Partially fixes: #712643
-rw-r--r-- | gst/dvdspu/gstdvdspu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c index f36d942ef..69276f4c9 100644 --- a/gst/dvdspu/gstdvdspu.c +++ b/gst/dvdspu/gstdvdspu.c @@ -950,7 +950,7 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) switch (dvdspu->spu_input_type) { case SPU_INPUT_TYPE_VOBSUB: - if (size > 4) { + if (size >= 2) { guint8 header[2]; guint16 packet_size; @@ -959,6 +959,10 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) if (packet_size == size) { submit_new_spu_packet (dvdspu, dvdspu->partial_spu); dvdspu->partial_spu = NULL; + } else if (packet_size == 0) { + GST_LOG_OBJECT (dvdspu, "Discarding empty SPU buffer"); + gst_buffer_unref (dvdspu->partial_spu); + dvdspu->partial_spu = NULL; } else if (packet_size < size) { /* Somehow we collected too much - something is wrong. Drop the * packet entirely and wait for a new one */ |