mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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>
This commit is contained in:
parent
9cb150c9ab
commit
58e1032d8f
@ -132,7 +132,7 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer
|
|||||||
return -1;
|
return -1;
|
||||||
slice_param->macroblock_offset = macroblock_offset;
|
slice_param->macroblock_offset = macroblock_offset;
|
||||||
slice_param->slice_horizontal_position = s->mb_x;
|
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->quantiser_scale_code = quantiser_scale_code;
|
||||||
slice_param->intra_slice_flag = intra_slice_flag;
|
slice_param->intra_slice_flag = intra_slice_flag;
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user