From patchwork Thu Mar 21 15:10:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Araz X-Patchwork-Id: 47291 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a4a:b0:1a3:31a3:7958 with SMTP id zu10csp613966pzb; Thu, 21 Mar 2024 08:11:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW743k5OyuUWepGabkUE+qT1Sxr1O5TvBS0JSbtkpfoAy0x+1snPgQEFWXtv+QhURp0jfoSiOGNRy2L15JJE+Qvd0xBtDi1Kh2mKg== X-Google-Smtp-Source: AGHT+IE75LPmHPb6ouhev3QBm+5d9u59JSd9Y1ux1cnh10CdqvPQNTR1gZrmHXvi8UC5ereJU87B X-Received: by 2002:a05:6402:1f8c:b0:568:9b15:112e with SMTP id c12-20020a0564021f8c00b005689b15112emr14662082edc.19.1711033870034; Thu, 21 Mar 2024 08:11:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711033870; cv=none; d=google.com; s=arc-20160816; b=ppvdSi+bsW9MtrpebrOWkZmQEB+6qEBHQ0pVRBpYZQDgdPtwzHC4Oc553HwzQXwf/m lbYjteQMwpNw/MeZ3KVTAUoSVUHiZRSWLisrcHmMYcAQdUVwyWCLSvNPAoxRrX9BLpWw oKJWl0mcmstlYBQFgs9x8qdl0ITZGjJq+jVyryQvqRHVxm5Y38rYeXdRP6uXQwUhf4sJ vw+YPExp9gG0GdN/x/cgK7LHH8HknlqKnnbBZXn2n/a2Rg38VtD+pBZY5TLW0f3FSUv2 GWYoSBqBq9uPEUJzoSux0jwvyqYssj1+AVxOO8Nu1MLGhmp6tF85xGAwgAcegiu4FKdq Elbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=ZKSamEzExkjTb1bgKg8mH6LbJIvXKRydG16FDBtt8rs=; fh=OWLPUf18s9dlUQuxhl6xLimy4NybloePU6lVbhxT1Ck=; b=nzZnwvrHnP46wEQq84myKW/tXBw6VsixdilDr3dukLEMvgwuqSlFDqc0UXG47L8FKp X6rtEsVFDcNVIBjXUJ1ldl2+MIUYyoIk7ZV8y2WvubtPs44Kl/hK+akNtw3DdukZ50Zl Wx8KqZyrHr8tJsMgu2UN6W4eJoP9AnDBEQy72iOywx01Ip6f3+N4/2+IcWAHt+y8zD1L RjpCrx6NGDwonHzzvfrZSedhhFwCPmgKBhFN73bN4HX8xNxl+Ujm+8gyN+G3BLcAwWry 1u6EHJSy3+FjQ1AfI7/17ZtavMNN2zHHv/7yLd5mDsxX2AWaiVq1yTm3M+LPxbr/wLjy Pd/A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=M5MB6A3C; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dk3-20020a0564021d8300b0056b7dd897ffsi3799837edb.437.2024.03.21.08.11.09; Thu, 21 Mar 2024 08:11:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=M5MB6A3C; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB85E68D55B; Thu, 21 Mar 2024 17:11:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5535168D398 for ; Thu, 21 Mar 2024 17:11:00 +0200 (EET) Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-56bb22ff7baso1220005a12.3 for ; Thu, 21 Mar 2024 08:11:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711033859; x=1711638659; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=XKiHX4bneKsSfGYaKcI7/XL45aBBtGdA9hB4uvh/Lbw=; b=M5MB6A3CldVmZT4+BYqWzutZ9adInEnsjVRXqlkyMMb3jQg10phtsSchv+zp+ogl2e N8shhWXv7G9l9eD7AuU8qW48YZ+986NHu8lLeBI623taICFvgs9cQnUn1JhrnnUXxM8X oi/oZkGBpVx/ScKhe4o0Rw1CaQQks8G621cuB0CiOcwgwZztpA9JLn4tzm5YivbK5TGa nuEZvZUXCTerz3dWAbZh0Nsbhwb2IsLEGHKflryk2lnwPcvjoLyT12CYxHgbGrzIjh1Y 4CwHpg4WeYGZEj70kwp3KyKkujxJ36eEDQNIiQfq4RYMgzQu2Y+2MK07JYgv8c3RSwwp Ft4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711033859; x=1711638659; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XKiHX4bneKsSfGYaKcI7/XL45aBBtGdA9hB4uvh/Lbw=; b=DhRYE30qVPCViASP6L91ZEGIcV/+UCwkjrT6nsqyMOev2BTC5SFlebigH3zoHhkfsY Njg7c0VjqPRIUsbN6hPoKea+C8H3RMBJJ/IO2nOUS0xbPU6nUdauak42lXXi2S/PkyX3 Jw6GfvbiJVmNyx/vGQHYlQXvpl2WQanQuwk7Ysw9Ka7RX5e4H9Z0yERzSNLKl80VB/cg KAqltigA0gG2eur1TcEip8iUlY32Wkssfpt45v/TPh/V/MwE5LqWU7RA9zBaZ5/vgVRt ylZUgOMHKjy9jfXD0T/HZcGjrhd6AAQQSu8QnjHluAwO8Hs6T7EX4Oa9k5qEnNMrceDM FJiw== X-Gm-Message-State: AOJu0YwbDbO2PW88xFHGjXX1H1CGetgvfcpEsQN6fLPzq34zH6Qk7lDA d/ZycvtdjHaiUCpe85Q7bnHe41xBFUMW/KlwmosvQS+sk4tMMAJhsHQUhLjMkWD38A== X-Received: by 2002:a05:6402:1cc4:b0:568:3470:43db with SMTP id ds4-20020a0564021cc400b00568347043dbmr16444443edb.27.1711033859194; Thu, 21 Mar 2024 08:10:59 -0700 (PDT) Received: from aiusubov.amd.com ([87.116.135.17]) by smtp.gmail.com with ESMTPSA id l24-20020aa7cad8000000b005697d77570dsm4722190edt.66.2024.03.21.08.10.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 08:10:58 -0700 (PDT) From: Araz Iusubov X-Google-Original-From: Araz Iusubov To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Mar 2024 16:10:54 +0100 Message-ID: <20240321151054.1241-1-Primeadvice@gmail.com> X-Mailer: git-send-email 2.43.0.windows.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] [FFmpeg-devel, v2] avcodec/vaapi_encode: add customized surface alignment X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Araz Iusubov Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: n1bW4AnTyC1h This commit fixes issues with AMD HEVC encoding. By default AMD hevc encoder asks for the alignment 64x16, while FFMPEG VAAPI has 16x16. Adding support for customized surface size from VASurfaceAttribAlignmentSize in VAAPI version 1.21.0 Signed-off-by: Araz Iusubov --- libavcodec/vaapi_encode.c | 11 +++++++++++ libavutil/hwcontext.h | 7 +++++++ libavutil/hwcontext_vaapi.c | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 940f0678a5..2a74db23b1 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -2711,6 +2711,17 @@ static av_cold int vaapi_encode_create_recon_frames(AVCodecContext *avctx) av_log(avctx, AV_LOG_DEBUG, "Using %s as format of " "reconstructed frames.\n", av_get_pix_fmt_name(recon_format)); + if (constraints->log2_alignment) { + ctx->surface_width = FFALIGN(avctx->width, + 1 << (constraints->log2_alignment & 0xf)); + ctx->surface_height = FFALIGN(avctx->height, + 1 << ((constraints->log2_alignment & 0xf0) >> 4)); + av_log(avctx, AV_LOG_VERBOSE, "Using customized alignment size " + "[%dx%d].\n", + (1 << (constraints->log2_alignment & 0xf)), + (1 << ((constraints->log2_alignment & 0xf0) >> 4))); + } + if (ctx->surface_width < constraints->min_width || ctx->surface_height < constraints->min_height || ctx->surface_width > constraints->max_width || diff --git a/libavutil/hwcontext.h b/libavutil/hwcontext.h index bac30debae..1eb56aff78 100644 --- a/libavutil/hwcontext.h +++ b/libavutil/hwcontext.h @@ -465,6 +465,13 @@ typedef struct AVHWFramesConstraints { */ int max_width; int max_height; + + /** + * The frame width/height log2 alignment when available + * the lower 4 bits, width; another 4 bits, height + * (Zero is not applied, use the default value) + */ + int log2_alignment; } AVHWFramesConstraints; /** diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 56d03aa4cd..6cda0fd811 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -294,6 +294,11 @@ static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev, case VASurfaceAttribMaxHeight: constraints->max_height = attr_list[i].value.value.i; break; +#if VA_CHECK_VERSION(1, 21, 0) + case VASurfaceAttribAlignmentSize: + constraints->log2_alignment = attr_list[i].value.value.i; + break; +#endif } } if (pix_fmt_count == 0) {