decoder: h264: fix RefPicList0/1 without frame in DPB.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 18 Jun 2014 11:11:48 +0000 (13:11 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 18 Aug 2014 13:51:57 +0000 (15:51 +0200)
Some bitstreams (e.g. truncated, or non conformant), or bugs in codec
layers, would incorrectly make decoders to fill in the RefPicList0/1
lists with surfaces that have not received any content yet.

There is no reason for the driver to crash in such cases.

https://bugs.freedesktop.org/show_bug.cgi?id=82466

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
src/i965_decoder_utils.c

index 546285e..7ea39dd 100644 (file)
@@ -526,6 +526,8 @@ intel_update_avc_frame_store_index(
             continue;
 
         GenAvcSurface * const avc_surface = obj_surface->private_data;
+        if (!avc_surface)
+            continue;
         if (avc_surface->frame_store_id >= 0) {
             GenFrameStore * const fs =
                 &frame_store[avc_surface->frame_store_id];
@@ -559,6 +561,8 @@ intel_update_avc_frame_store_index(
             continue;
 
         GenAvcSurface * const avc_surface = obj_surface->private_data;
+        if (!avc_surface)
+            continue;
         if (n < num_free_refs) {
             GenFrameStore * const fs = free_refs[n++];
             fs->surface_id = obj_surface->base.id;