[FFmpeg-cvslog] vaapi_h265: Reduce the amount of padding in the stream

Mark Thompson git at videolan.org
Sat Nov 11 05:52:04 EET 2017


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Sat Aug 12 21:32:29 2017 +0100| [a14a12ca137bf1526452b97bedfc9f7b301d4e04] | committer: Mark Thompson

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a14a12ca137bf1526452b97bedfc9f7b301d4e04
---

 libavcodec/vaapi_encode_h265.c | 7 +++++--
 1 file 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,



More information about the ffmpeg-cvslog mailing list