diff options
author | carpalis <jerome.borsboom@carpalis.nl> | 2017-10-27 13:04:33 +0200 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2018-01-05 14:57:31 +0800 |
commit | 9cba61ce395f943b4399e6646fa368dea958688f (patch) | |
tree | d49f2ec74d5047b633150b81e2fe9a8e6ceb3f47 /src | |
parent | 16871854bf5fadb33a59d4958546983f2a06011a (diff) | |
download | libva-intel-driver-9cba61ce395f943b4399e6646fa368dea958688f.tar.gz |
genX_mfd: fix calculation of motion vector mode
As stated in the PRM, the FastUVMCFlag field should be equal to the LSB
of the Motion Vector Mode field. This also conforms to VC-1 spec, as
FASTUVMC controls whether color difference motion vectors are
reconstructed with quarter of half pixel resolution.
Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
Diffstat (limited to 'src')
-rw-r--r-- | src/gen75_mfd.c | 8 | ||||
-rw-r--r-- | src/gen7_mfd.c | 8 | ||||
-rw-r--r-- | src/gen8_mfd.c | 8 |
3 files changed, 6 insertions, 18 deletions
diff --git a/src/gen75_mfd.c b/src/gen75_mfd.c index 13ee8b05..9906f604 100644 --- a/src/gen75_mfd.c +++ b/src/gen75_mfd.c @@ -1882,13 +1882,9 @@ gen75_mfd_vc1_pic_state(VADriverContextP ctx, if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear || (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear)) - interpolation_mode = 9; /* Half-pel bilinear */ - else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel || - (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && - pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel)) - interpolation_mode = 1; /* Half-pel bicubic */ + interpolation_mode = 8 | pic_param->fast_uvmc_flag; else - interpolation_mode = 0; /* Quarter-pel bicubic */ + interpolation_mode = 0 | pic_param->fast_uvmc_flag; BEGIN_BCS_BATCH(batch, 6); OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2)); diff --git a/src/gen7_mfd.c b/src/gen7_mfd.c index 51cd91a1..4902c8ee 100644 --- a/src/gen7_mfd.c +++ b/src/gen7_mfd.c @@ -1616,13 +1616,9 @@ gen7_mfd_vc1_pic_state(VADriverContextP ctx, if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear || (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear)) - interpolation_mode = 9; /* Half-pel bilinear */ - else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel || - (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && - pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel)) - interpolation_mode = 1; /* Half-pel bicubic */ + interpolation_mode = 8 | pic_param->fast_uvmc_flag; else - interpolation_mode = 0; /* Quarter-pel bicubic */ + interpolation_mode = 0 | pic_param->fast_uvmc_flag; BEGIN_BCS_BATCH(batch, 6); OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2)); diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c index 59d0e709..0eeb9a70 100644 --- a/src/gen8_mfd.c +++ b/src/gen8_mfd.c @@ -1661,13 +1661,9 @@ gen8_mfd_vc1_pic_state(VADriverContextP ctx, if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear || (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear)) - interpolation_mode = 9; /* Half-pel bilinear */ - else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel || - (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation && - pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel)) - interpolation_mode = 1; /* Half-pel bicubic */ + interpolation_mode = 8 | pic_param->fast_uvmc_flag; else - interpolation_mode = 0; /* Quarter-pel bicubic */ + interpolation_mode = 0 | pic_param->fast_uvmc_flag; BEGIN_BCS_BATCH(batch, 6); OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2)); |