amrwbdec: avoid stalling on invalid frame
Skip 1 byte indicating invalid frame type index rather than stalling on it indefinitely until EOS. Fixes #639715.
This commit is contained in:
parent
7551d102f8
commit
dbdf976105
@ -63,7 +63,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_amrwbdec_debug);
|
|||||||
|
|
||||||
static const unsigned char block_size[16] =
|
static const unsigned char block_size[16] =
|
||||||
{ 18, 24, 33, 37, 41, 47, 51, 59, 61,
|
{ 18, 24, 33, 37, 41, 47, 51, 59, 61,
|
||||||
6, 6, 0, 0, 0, 1, 1
|
6, 0, 0, 0, 0, 1, 1
|
||||||
};
|
};
|
||||||
|
|
||||||
static gboolean gst_amrwbdec_event (GstPad * pad, GstEvent * event);
|
static gboolean gst_amrwbdec_event (GstPad * pad, GstEvent * event);
|
||||||
@ -285,7 +285,13 @@ gst_amrwbdec_chain (GstPad * pad, GstBuffer * buffer)
|
|||||||
|
|
||||||
GST_DEBUG_OBJECT (amrwbdec, "mode %d, block %d", mode, block);
|
GST_DEBUG_OBJECT (amrwbdec, "mode %d, block %d", mode, block);
|
||||||
|
|
||||||
if (!block || gst_adapter_available (amrwbdec->adapter) < block)
|
if (!block) {
|
||||||
|
GST_LOG_OBJECT (amrwbdec, "skipping byte");
|
||||||
|
gst_adapter_flush (amrwbdec->adapter, 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gst_adapter_available (amrwbdec->adapter) < block)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* the library seems to write into the source data, hence the copy. */
|
/* the library seems to write into the source data, hence the copy. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user