mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-11 19:06:33 +00:00
dvdspu: Handle vobsub packets smaller than 4 bytes
In particular, handle the case of an empty packet with size 0 bytes. Partially fixes: #712643
This commit is contained in:
parent
b58ca88fb9
commit
c336f7642c
1 changed files with 5 additions and 1 deletions
|
@ -950,7 +950,7 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
|
|
||||||
switch (dvdspu->spu_input_type) {
|
switch (dvdspu->spu_input_type) {
|
||||||
case SPU_INPUT_TYPE_VOBSUB:
|
case SPU_INPUT_TYPE_VOBSUB:
|
||||||
if (size > 4) {
|
if (size >= 2) {
|
||||||
guint8 header[2];
|
guint8 header[2];
|
||||||
guint16 packet_size;
|
guint16 packet_size;
|
||||||
|
|
||||||
|
@ -959,6 +959,10 @@ gst_dvd_spu_subpic_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
|
||||||
if (packet_size == size) {
|
if (packet_size == size) {
|
||||||
submit_new_spu_packet (dvdspu, dvdspu->partial_spu);
|
submit_new_spu_packet (dvdspu, dvdspu->partial_spu);
|
||||||
dvdspu->partial_spu = NULL;
|
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) {
|
} else if (packet_size < size) {
|
||||||
/* Somehow we collected too much - something is wrong. Drop the
|
/* Somehow we collected too much - something is wrong. Drop the
|
||||||
* packet entirely and wait for a new one */
|
* packet entirely and wait for a new one */
|
||||||
|
|
Loading…
Reference in a new issue