mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/vaapi_vc1: slice_vertical_position starts from zero for the second field
Contrary to VC-1 spec, VAAPI expects the row address of the first macroblock row in the first slice to start from zero for the second field in a field interlaced picture. Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
This commit is contained in:
parent
bd47cca6a7
commit
3d028b7b72
@ -467,6 +467,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
|
||||
const MpegEncContext *s = &v->s;
|
||||
VAAPIDecodePicture *pic = s->current_picture_ptr->hwaccel_picture_private;
|
||||
VASliceParameterBufferVC1 slice_param;
|
||||
int mb_height;
|
||||
int err;
|
||||
|
||||
/* Current bit buffer is beyond any marker for VC-1, so skip it */
|
||||
@ -475,12 +476,17 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer,
|
||||
size -= 4;
|
||||
}
|
||||
|
||||
if (v->fcm == ILACE_FIELD)
|
||||
mb_height = avctx->coded_height + 31 >> 5;
|
||||
else
|
||||
mb_height = avctx->coded_height + 15 >> 4;
|
||||
|
||||
slice_param = (VASliceParameterBufferVC1) {
|
||||
.slice_data_size = size,
|
||||
.slice_data_offset = 0,
|
||||
.slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
|
||||
.macroblock_offset = get_bits_count(&s->gb),
|
||||
.slice_vertical_position = s->mb_y,
|
||||
.slice_vertical_position = s->mb_y % mb_height,
|
||||
};
|
||||
|
||||
err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
|
||||
|
Loading…
Reference in New Issue
Block a user