From 489c5db0791f39518775b12eef6d48276c17f96f Mon Sep 17 00:00:00 2001 From: Linjie Fu Date: Mon, 11 May 2020 14:32:42 +0800 Subject: [PATCH] lavc/vaapi_encode: add EQUAL_MULTI_ROWS support for slice structure VA_ENC_SLICE_STRUCTURE_EQUAL_MULTI_ROWS is added to in the latest libva (1.8.0) which matches the hardware behaviour: /** \brief Driver supports any number of rows per slice but they must * be the same for all slices except for the last one, which must be * equal or smaller to the previous slices. */ And VA_ENC_SLICE_STRUCTURE_EQUAL_ROWS is kind of deprecated for iHD since it's somehow introduced in [1] which is misleading from what we actually handles. [1] Signed-off-by: Linjie Fu --- libavcodec/vaapi_encode.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index e39db20200..d6a986d5f0 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -1900,6 +1900,9 @@ static av_cold int vaapi_encode_init_slice_structure(AVCodecContext *avctx) req_slices = avctx->slices; } if (slice_structure & VA_ENC_SLICE_STRUCTURE_ARBITRARY_ROWS || +#if VA_CHECK_VERSION(1, 8, 0) + slice_structure & VA_ENC_SLICE_STRUCTURE_EQUAL_MULTI_ROWS || +#endif slice_structure & VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS) { ctx->nb_slices = req_slices; ctx->slice_size = ctx->slice_block_rows / ctx->nb_slices;