summaryrefslogtreecommitdiff
path: root/libavcodec/vaapi_mpeg2.c
diff options
context:
space:
mode:
authorGwenole Beauchesne <gb.devel@gmail.com>2012-03-18 09:30:05 +0100
committerMartin Storsjö <martin@martin.st>2012-04-08 13:10:20 +0300
commit58e1032d8fddab10fc2cae845aa84c5772d4cdca (patch)
treeafe97350158ae2dc0be60cf1f62ce0710df0be9c /libavcodec/vaapi_mpeg2.c
parent9cb150c9ab520eba5636bbcf925db6a70e67f3e5 (diff)
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 <gwenole.beauchesne@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavcodec/vaapi_mpeg2.c')
-rw-r--r--libavcodec/vaapi_mpeg2.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c
index 95107c8a37..ee7b536928 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;