diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-03-29 14:13:47 +0200 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-03-30 09:44:36 +0200 |
commit | 1165dea0b5035328dd27fb12c300469b8d18b26b (patch) | |
tree | f8101f2e11f6090ae122a4920b8c52791b878ef0 | |
parent | 546fdcfa2f4dd162fdd19187255a57272d4f1745 (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.c | 8 |
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 */ |