From 8db72147c7737eecfe3cdc57940840b45fd3261f Mon Sep 17 00:00:00 2001 From: Gwenole Beauchesne Date: Thu, 19 Jun 2014 17:08:47 +0200 Subject: [PATCH] decoder: h264: fix DPB clear when no decoding actually started. 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c index 68c2b8192a..03dd51b3b0 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c @@ -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); }