jpegdec: Only parse for SOI when we didn't see it before

This commit is contained in:
Edward Hervey 2012-05-17 09:33:18 +02:00 committed by Sebastian Dröge
parent c6c4906770
commit d811797186

View file

@ -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;
} }