From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 855E64779D for ; Thu, 21 Mar 2024 15:11:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8E78868D556; Thu, 21 Mar 2024 17:11:06 +0200 (EET) 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-Google-Smtp-Source: AGHT+IF+P1sS3gq6PtT+5n3Xa0GVUzpyIbdjGuAtDUP6bD8SeksZzXfW5lmv0lvAQiQOW9uNZ7c3ww== 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: 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) { -- 2.43.0.windows.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".