mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 14:36:24 +00:00
jpegdec: Only parse for SOI when we didn't see it before
This commit is contained in:
parent
c6c4906770
commit
d811797186
1 changed files with 15 additions and 11 deletions
|
@ -430,7 +430,7 @@ gst_jpeg_dec_parse (GstVideoDecoder * bdec, GstVideoCodecFrame * frame,
|
||||||
GstAdapter * adapter, gboolean at_eos)
|
GstAdapter * adapter, gboolean at_eos)
|
||||||
{
|
{
|
||||||
guint size;
|
guint size;
|
||||||
gint ret, toadd = 0;
|
gint toadd = 0;
|
||||||
gboolean resync;
|
gboolean resync;
|
||||||
gint offset = 0, noffset;
|
gint offset = 0, noffset;
|
||||||
GstJpegDec *dec = (GstJpegDec *) bdec;
|
GstJpegDec *dec = (GstJpegDec *) bdec;
|
||||||
|
@ -453,17 +453,21 @@ gst_jpeg_dec_parse (GstVideoDecoder * bdec, GstVideoCodecFrame * frame,
|
||||||
if (size < 8)
|
if (size < 8)
|
||||||
goto need_more_data;
|
goto need_more_data;
|
||||||
|
|
||||||
/* we expect at least 4 bytes, first of which start marker */
|
if (!dec->saw_header) {
|
||||||
ret =
|
gint ret;
|
||||||
gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0xffd80000, 0,
|
/* we expect at least 4 bytes, first of which start marker */
|
||||||
size - 4);
|
ret =
|
||||||
GST_DEBUG ("ret:%d", ret);
|
gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0xffd80000, 0,
|
||||||
if (ret < 0)
|
size - 4);
|
||||||
goto need_more_data;
|
|
||||||
|
|
||||||
if (ret) {
|
GST_DEBUG ("ret:%d", ret);
|
||||||
gst_adapter_flush (adapter, ret);
|
if (ret < 0)
|
||||||
size -= ret;
|
goto need_more_data;
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
gst_adapter_flush (adapter, ret);
|
||||||
|
size -= ret;
|
||||||
|
}
|
||||||
dec->saw_header = TRUE;
|
dec->saw_header = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue