On Wed, 2018-05-09 at 07:50 +0200, Jerome Borsboom wrote: > 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.borsb...@carpalis.nl> > --- > This patch set adds support for hardware decoding multi-slice field interlaced > pictures. With this patch set, the SA10180 test file decodes correctly with > VAAPI hardware acceleration. This was succesfully tested on Intel Haswell > platform. >
I still see lots of artifacts for a multi-slice field interfaced VC-1 video on Coffee Lake, maybe we should fix it in the driver Thanks Haihao > libavcodec/vaapi_vc1.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c > index bdb5e24cc5..921ca6391b 100644 > --- a/libavcodec/vaapi_vc1.c > +++ b/libavcodec/vaapi_vc1.c > @@ -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, _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel