From f2741a88cc77cfbb3a0989a930fb69d3d497cbcb Mon Sep 17 00:00:00 2001 From: Sreerenj Balachandran Date: Fri, 24 Aug 2012 11:36:16 +0300 Subject: jpeg: fix end-of-image (EOI) handler. decode_current_picture() was converted to return a gboolean instead of a GstVaapiDecoderStatus, so we were not getting out of the decode loop as expected, or could cause an error instead. Signed-off-by: Gwenole Beauchesne --- gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'gst-libs/gst') diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c b/gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c index 5cfbe4d6..32003972 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c @@ -540,7 +540,12 @@ decode_buffer(GstVaapiDecoderJpeg *decoder, GstBuffer *buffer) status = GST_VAAPI_DECODER_STATUS_SUCCESS; break; case GST_JPEG_MARKER_EOI: - status = decode_current_picture(decoder); + if (decode_current_picture(decoder)) { + /* Get out of the loop, trailing data is not needed */ + status = GST_VAAPI_DECODER_STATUS_SUCCESS; + goto end; + } + status = GST_VAAPI_DECODER_STATUS_ERROR_UNKNOWN; break; case GST_JPEG_MARKER_DHT: status = decode_huffman_table(decoder, buf + seg.offset, seg.size); @@ -601,6 +606,7 @@ decode_buffer(GstVaapiDecoderJpeg *decoder, GstBuffer *buffer) if (status != GST_VAAPI_DECODER_STATUS_SUCCESS) break; } +end: return status; } -- cgit v1.2.3