jpeg: fix end-of-image (EOI) handler.
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Fri, 24 Aug 2012 08:36:16 +0000 (11:36 +0300)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 27 Aug 2012 09:03:16 +0000 (11:03 +0200)
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 <gwenole.beauchesne@intel.com>
gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c

index 5cfbe4d..3200397 100644 (file)
@@ -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;
 }