summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-03-29 14:13:47 +0200
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-03-30 09:44:36 +0200
commit1165dea0b5035328dd27fb12c300469b8d18b26b (patch)
treef8101f2e11f6090ae122a4920b8c52791b878ef0
parent546fdcfa2f4dd162fdd19187255a57272d4f1745 (diff)
mpeg2: propagate reference surfaces to other slots.
Fill in remaining reference surfaces as recommanded in HW specs. Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
-rw-r--r--src/i965_decoder_utils.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/i965_decoder_utils.c b/src/i965_decoder_utils.c
index 047fa62..8450d23 100644
--- a/src/i965_decoder_utils.c
+++ b/src/i965_decoder_utils.c
@@ -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 */