mpeg2: propagate reference surfaces to other slots.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Thu, 29 Mar 2012 12:13:47 +0000 (14:13 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 30 Mar 2012 07:44:36 +0000 (09:44 +0200)
Fill in remaining reference surfaces as recommanded in HW specs.

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

index 047fa62..8450d23 100644 (file)
@@ -108,6 +108,8 @@ mpeg2_set_reference_surfaces(
     is_second_field = pic_structure != MPEG_FRAME &&
         !pic_param->picture_coding_extension.bits.is_first_field;
 
+    ref_frames[0].surface_id = VA_INVALID_ID;
+
     /* Reference frames are indexed by frame store ID  (0:top, 1:bottom) */
     switch (pic_param->picture_coding_type) {
     case MPEG_P_PICTURE:
@@ -128,11 +130,13 @@ mpeg2_set_reference_surfaces(
     }
 
     while (n != 2)
-        ref_frames[n++].surface_id = VA_INVALID_ID;
+        ref_frames[n++].surface_id = ref_frames[0].surface_id;
 
     if (pic_param->picture_coding_extension.bits.progressive_frame)
         return;
 
+    ref_frames[2].surface_id = VA_INVALID_ID;
+
     /* Bottom field pictures used as reference */
     switch (pic_param->picture_coding_type) {
     case MPEG_P_PICTURE:
@@ -153,7 +157,7 @@ mpeg2_set_reference_surfaces(
     }
 
     while (n != 4)
-        ref_frames[n++].surface_id = VA_INVALID_ID;
+        ref_frames[n++].surface_id = ref_frames[2].surface_id;
 }
 
 /* Generate flat scaling matrices for H.264 decoding */