Module: libav Branch: master Commit: 58e1032d8fddab10fc2cae845aa84c5772d4cdca
Author: Gwenole Beauchesne <[email protected]> Committer: Martin Storsjö <[email protected]> Date: Sun Mar 18 09:30:05 2012 +0100 vaapi: mpeg2: fix slice_vertical_position calculation. VASliceParameterBufferMPEG2.slice_vertical_position shall express the slice vertical position from the original bitstream. The HW decoder will correctly decode to the right line computed from the appropriate top_field_first and is_first_field flags. This patch aligns with DXVA's definition, which is what most HW and drivers expect. In particular, Intel PowerVR (Cedarview et al.) and NVIDIA (through VA-to-VDPAU layer). Since it looks more complex to fix binary drivers, I aligned the Intel Gen driver (Sandy Bridge et al.) to this behaviour, while maintaining compatibility with codec layers not providing this patch yet. Signed-off-by: Gwenole Beauchesne <[email protected]> Signed-off-by: Martin Storsjö <[email protected]> --- libavcodec/vaapi_mpeg2.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index 95107c8..ee7b536 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -132,7 +132,7 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer return -1; slice_param->macroblock_offset = macroblock_offset; slice_param->slice_horizontal_position = s->mb_x; - slice_param->slice_vertical_position = s->mb_y; + slice_param->slice_vertical_position = s->mb_y >> (s->picture_structure != PICT_FRAME); slice_param->quantiser_scale_code = quantiser_scale_code; slice_param->intra_slice_flag = intra_slice_flag; return 0; _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
