summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2017-08-12 21:32:29 +0100
committerMark Thompson <sw@jkqxz.net>2017-08-13 17:55:02 +0100
commita14a12ca137bf1526452b97bedfc9f7b301d4e04 (patch)
tree458cdf79138e69d46fc4573f10ae1188092dc7d9 /libavcodec
parente3e8eab359238486dc233f7aa89b7bb3cb19ec38 (diff)
vaapi_h265: Reduce the amount of padding in the stream
It is not necessary to pad to the CTU size. The CB size of 8x8 should be sufficient, but due to constraints in the Intel driver (the one usable implementation of this) it has to be padded to 16x16 like in H.264.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/vaapi_encode_h265.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
index 477065e2ce..165b6ffde4 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -815,8 +815,11 @@ static av_cold int vaapi_encode_h265_configure(AVCodecContext *avctx)
if (err < 0)
return err;
- priv->ctu_width = FFALIGN(ctx->surface_width, 32) / 32;
- priv->ctu_height = FFALIGN(ctx->surface_height, 32) / 32;
+ // This is an Intel driver constraint. Despite MinCbSizeY being 8,
+ // we are still required to encode at 16-pixel alignment and then
+ // crop back (so 1080 lines is still encoded as 1088 + cropping).
+ priv->ctu_width = FFALIGN(ctx->surface_width, 16) / 16;
+ priv->ctu_height = FFALIGN(ctx->surface_height, 16) / 16;
av_log(avctx, AV_LOG_VERBOSE, "Input %ux%u -> Surface %ux%u -> CTU %ux%u.\n",
avctx->width, avctx->height, ctx->surface_width,