decoder: h264: fix DPB clear when no decoding actually started.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 19 Jun 2014 15:08:47 +0000 (17:08 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 19 Jun 2014 15:08:47 +0000 (17:08 +0200)
Fix dpb_clear() to clear previous frame buffers only if they actually
exist to begin with. If the decoder bailed out early, e.g. when it
does not support a specific profile, that array of previous frames
might not be allocated beforehand.

gst-libs/gst/vaapi/gstvaapidecoder_h264.c

index 68c2b81..03dd51b 100644 (file)
@@ -855,8 +855,9 @@ dpb_clear(GstVaapiDecoderH264 *decoder, GstVaapiPictureH264 *picture)
 
     /* Clear previous frame buffers only if this is a "flush-all" operation,
        or if the picture is the first one in the access unit */
-    if (!picture || GST_VAAPI_PICTURE_FLAG_IS_SET(picture,
-            GST_VAAPI_PICTURE_FLAG_AU_START)) {
+    if (priv->prev_frames && (!picture ||
+            GST_VAAPI_PICTURE_FLAG_IS_SET(picture,
+                GST_VAAPI_PICTURE_FLAG_AU_START))) {
         for (i = 0; i < priv->max_views; i++)
             gst_vaapi_picture_replace(&priv->prev_frames[i], NULL);
     }