From patchwork Thu Oct 12 12:49:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44231 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4b15:b0:15d:8365:d4b8 with SMTP id fp21csp308321pzb; Thu, 12 Oct 2023 05:50:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFczMFiANlTPkaL5NbBjw4JtVY6ko6zMxcIx5ZjUteEUoOPxss1ZVwOvw8zh55nW6Dp2NY8 X-Received: by 2002:a17:906:300f:b0:9ae:6a8b:f8aa with SMTP id 15-20020a170906300f00b009ae6a8bf8aamr20768835ejz.26.1697115001090; Thu, 12 Oct 2023 05:50:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697115001; cv=none; d=google.com; s=arc-20160816; b=tsa147nt/Qa6CtizrRWed+XhTr6ispqCGQU2DN1e/egCv2zdgtJmRd8zRa9EvGlW7L D9zlVbHegSWEMJfVQJL1KKDg3HX9Omi9Tzltb/vIko6MXLmnf3AaQxcNTZHPLXcM+c+n s+dL7CdfOZzq00RN/Gt+1Kdyqot0D94T+2qZwZD7IylZYjT5TqKLrz6kmw2UgQa4iCZb aq6TH/uFq3+A0/xUzu6pIbJA5cfd8ccYlQP/3jQCTstef6K4GwfM0Bd3Slpwmby1xgil ibiOxTGYaEi2cTMpgjeLzc/0TmX1B0a/9fhJT65At3KsgRJE7Z/BMIpAssT9v9xLhnV/ YPbg== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=qUXErFY+0iRCQvbzxO9fia9JJQ8pPo6Q/b2FFvv3cpg=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=gAgjyXtIanmLjM9u7fxGrbHYvgGPn7c4VrAbiqw/68lnAIF9exUBBj2oBKsuYVUc/1 D65WZst0LOm2sdAfERWSIbEj4ZCiazA05SVDHlkH4aHZgGpFyTe8E1FPn+k0DWBePewx 3xXHCkLF2cgbxcNyWDF8boJLUiVi0dRzD6iL8cFbBm7jEDnWf7id33TmjXTWgeiTl8V6 XhcWKCiJhOne2EU8HC7uLyphaSTrKO1h4yKR3dlxobZcc0nJbFBvYZasc6e/4pDCpFqK kJHAojHgPRw0AcNOiHvT2NLZXd9/qOuWtV+k+X5wAzt0P3UDLccJegJPvCzessCqO5cW raUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b="Uh/e+Cse"; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id oz4-20020a170906cd0400b0099331401bdcsi7638255ejb.694.2023.10.12.05.50.00; Thu, 12 Oct 2023 05:50:01 -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=@foxmail.com header.s=s201512 header.b="Uh/e+Cse"; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5D5E768C9B6; Thu, 12 Oct 2023 15:49:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9CF7B68C901 for ; Thu, 12 Oct 2023 15:49:47 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1697114977; bh=3Ko8fJjVPKnwNTe7kAw1X9EzwOvGzvDboLlb5wbzHbw=; h=From:To:Cc:Subject:Date; b=Uh/e+CseyWwGKD/oxS/d02tdQS6woE1CIQgnwYA6saaFaU7LHXzLyczpPCPlo4r8i zIho1y8yZ6QDOzriANcGcfbiZheAaliQeSVI8mzM1jDxI0itbGjHN3q5m1WvMwIA8X HQV0VthI1S/bQxQQDW9YNLBA/HALJP77X1Kj7U1s= Received: from ZHILIZHAO-MB1.tencent.com ([119.147.10.203]) by newxmesmtplogicsvrsza12-0.qq.com (NewEsmtp) with SMTP id C63ACE9D; Thu, 12 Oct 2023 20:49:35 +0800 X-QQ-mid: xmsmtpt1697114975tlha6wzg1 Message-ID: X-QQ-XMAILINFO: N5sfBKY/oC4kx1Ju889OG8YMoRB2zSjFvHvkQmoYorcgs3WAivzwMt8iTh7qQj N2+mlWpi8W4e13qtvJYriQXs8zIFRk+wfRJKpBY5NScogZaGucYorfJwgjWCMB8+tM25IO9yu9nX HEq4G+zAuDEvKnWOVLkKeYI/IhoEWYQmo0yvTgUJhF7OthzdTbEwTE9zpc0W+KdFP/ELlY6nsJoK tOIEOGBGOJ1Y51crbji/zMcs87UQ2sVG8r1oiVd/nUsm3He7Uieo5/b8vl8u9OunKhJMcGY9WuCU wS4nEQfYehMsyw5+4jZir0ev/R6HaEmyrYGgX/HgXM855VWVcpJbj95trvDOkzXVDMWcQERK+abQ OKH0uZxNu+O4eV+/67Ggbty8cM4oGkwMbc672qsqxWlIT+HAwO3aMvGP1DJsaJQgt0AO11d/nLNe 9FoS3U/RWlgVY6HjANdPTW0vMvYZ/ueMxhpVtaTHUzL4iCwhDUfFgQfyOdswwvmPLQb0DTX+7Do8 CliLW08VgwBpMBensx1NULdS+SEDeDHf3kBqFiAf2KfZSn2ndK4Noq8iWZlrtEbbIeJ4DM+2xVE8 ftD1AgolN2C90pz68RyNce9K/fQ+dyU+fWveKfh6c/bZCzqMbFHwnr6miGY/OkdFftdpQ5e3Z7vV RaIvz8DuOGC3b46AzGbCMr6R1vCG2/Yg+31/alysltnpguIVnn2lQgdzh+ORLb9kRgK3Fhoy6K18 VMlUrXkT9NxCKpoHfKTyr6gyfS7WBf0y+WpUxrsBaGL1WATgmqvwwZMjTHd8BcFoozfdHoUuRi6a TI/fat6c9KSGYq+stcBUENwgzA8pZk23vD3ACyYpVb2rKS+AsFEZdSdQ7HK09ZTDF5ktJhkfkOB1 Q7EbayLd/mFERRhV8AZm0qbBxmiDkh0pEmQrQeDk2tTfd15Rn/hCVg7yHmIPZl5Y6j++M/uf/InG BtFLXmHNqJN5BhokSphpktqEfAwHtiJ1DYX2u4kfs= X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Oct 2023 20:49:33 +0800 X-OQ-MSGID: <20231012124934.27842-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/videotoolboxenc: add hw_configs 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /MBBuKhvzs2u From: Zhao Zhili Will be used in the following patches. --- libavcodec/videotoolboxenc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index 1d1595329a..b685bf4cc4 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -37,6 +37,7 @@ #include "encode.h" #include "h264.h" #include "h264_sei.h" +#include "hwconfig.h" #include #if !HAVE_KCMVIDEOCODECTYPE_HEVC @@ -2830,6 +2831,11 @@ static const enum AVPixelFormat prores_pix_fmts[] = { "Sets the maximum number of reference frames. This only has an effect when the value is less than the maximum allowed by the profile/level.", \ OFFSET(max_ref_frames), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, +static const AVCodecHWConfigInternal *const vt_encode_hw_configs[] = { + HW_CONFIG_ENCODER_FRAMES(VIDEOTOOLBOX, VIDEOTOOLBOX), + NULL, +}; + #define OFFSET(x) offsetof(VTEncContext, x) static const AVOption h264_options[] = { { "profile", "Profile", OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = AV_PROFILE_UNKNOWN }, AV_PROFILE_UNKNOWN, INT_MAX, VE, "profile" }, @@ -2886,6 +2892,7 @@ const FFCodec ff_h264_videotoolbox_encoder = { .close = vtenc_close, .p.priv_class = &h264_videotoolbox_class, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .hw_configs = vt_encode_hw_configs, }; static const AVOption hevc_options[] = { @@ -2923,6 +2930,7 @@ const FFCodec ff_hevc_videotoolbox_encoder = { .p.priv_class = &hevc_videotoolbox_class, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.wrapper_name = "videotoolbox", + .hw_configs = vt_encode_hw_configs, }; static const AVOption prores_options[] = { @@ -2961,4 +2969,5 @@ const FFCodec ff_prores_videotoolbox_encoder = { .p.priv_class = &prores_videotoolbox_class, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.wrapper_name = "videotoolbox", + .hw_configs = vt_encode_hw_configs, }; From patchwork Thu Oct 12 12:49:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44232 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4b15:b0:15d:8365:d4b8 with SMTP id fp21csp308406pzb; Thu, 12 Oct 2023 05:50:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjiYDolxUX6wfTk8Q7+I54VM12GaZjonw0bzg/rchdyVfmYp+PG+w6WVrIa8wCzAgU+biq X-Received: by 2002:a05:6402:17c9:b0:53d:d879:34f4 with SMTP id s9-20020a05640217c900b0053dd87934f4mr3795266edy.15.1697115011640; Thu, 12 Oct 2023 05:50:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697115011; cv=none; d=google.com; s=arc-20160816; b=P7uTZoCmzO32cbZCeRsFcvAP74vqwBFmsVIsNIZ3W63mFVkq1Dqsk2qB+Mh2sFwzbk qHIk3TtN5Pj6Er00pmJyi9xne9QmqR5shMGeLzzrUSgMRPq5I6vL1UMDju1DQP6h1HBE DXFtXoD3Fy0r9sQnDjpdtBlruvhJU6btMF5gafT2HKa2u+MCcl2aSrrvfbVEz4nKjtjh ZeguDqgediLbSloFEqpXy7yMhBg0ybYhzxUX4OboltxaHAhlummq42yCOmafaQb4lf0G K2pAVN0o+H5ukEhxVTws6/MsnQRpMSOC7IWjZpGXzhoSqr8csaauNmS9ujZFkzWkmor8 eDJA== 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:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=K17PXfpvyJE70ADg6jTO6SyyLE37Nir3MroGrnvP14A=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=u1T4rTr2dFGv5WKRMMw2APG5lT5pVslAI9lHvxLDFz+9WwIgzn4LZNFpFx7wEv05To 00BiSL/gLve2/CPCqTpEGNg7Go8XiuqshQiMWVMHYdsFP80L31qPxRfeet2k0VxxX9NZ sR3IDY/2mtEqNkjmZ9r0UH9euEW/NAkt/iiTLqQ0N3JTLvsKGsS+suExjrl3EjKZmD78 CM3vNiFERnQn0WypKHBgHbWOagA/898RnUk3C4Phy/MlxajL8IL9FHZicsXyfRWCa1JF dGhhrV2UcnEuPRRptwyOlogxIAEloq3QVZwg5ZiXmuCEI6/UCR4WpDqg6UKA1LDKBZc7 YvbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b="MFyt/4sY"; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l24-20020a056402125800b0053d9bf4e284si2765973edw.279.2023.10.12.05.50.10; Thu, 12 Oct 2023 05:50:11 -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=@foxmail.com header.s=s201512 header.b="MFyt/4sY"; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5387268C9C4; Thu, 12 Oct 2023 15:49:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-235.mail.qq.com (out203-205-221-235.mail.qq.com [203.205.221.235]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E01BF68C901 for ; Thu, 12 Oct 2023 15:49:48 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1697114977; bh=bodWwb9Mu63Y79+aaeEthUsNhi/uu4jwzzx4K3RFATQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=MFyt/4sYy5VnSlE2CzifLipHJbRQKnlxAW/+kRFlH1LkfzVRjBIWYKmsu7TZeopqx 439R+W7JrEP2hIuI8Ldhf+CRN9MiKOpjXauPusOaffC3YR12lDsX/h4FulUabzpO1O B7A8bWCOkpZTKCw+O8bEJLX3c01xfqKORtJSoWaE= Received: from ZHILIZHAO-MB1.tencent.com ([119.147.10.203]) by newxmesmtplogicsvrsza12-0.qq.com (NewEsmtp) with SMTP id C63ACE9D; Thu, 12 Oct 2023 20:49:35 +0800 X-QQ-mid: xmsmtpt1697114976t5p5mbe83 Message-ID: X-QQ-XMAILINFO: NDgMZBR9sMmap5x83GE3KucRC+p6ek8CW/1i3Sbd5SHmue7Ngu+yzb+X0vJ/WO weWOWgYpKfqePFlkVvL36OYDlfXIyt7jnA159I/jkQ0d6mLZqJ0OORP80br6n9obD3V9JbT+Lz9q zALDvFuYOa7eEeVNQO25UCCyuDYsC0ppGicpc8mrRSkssfRlz1U3gUNXfbIsfmxNPLaM/+p6CvnA FgBB4OMTiYW+RuptJAmsoZBS45ijtK85BzM9S2K+8h96ApFHUSovE4D9/gCH2mvPXG2FNx7a0j4S eqCOcT+q8qEr0jRogLztnraMHnam1TZhu0GVc4RlzJaDnNzwiL+6cxVm989TXlyz2kaNUaXZdgrQ GyhVuWglk5a6H0rIt4GlGWl3YvpoqhgVMURDXhEi4okNGQkmy0ivZQc9QVEwmcl4n6XDj7XZw1AJ CMt5rImKHGT7xj+raOvbV2NihCuYaHoDFIt+uJtcvXvxfoaTaYKMo6/XF5Vk03P5HA7mknKBazMZ kezLGFZEk2K/ieIYHxyJUQ6N8yBdbc5IEHwkNF7I5OZ4hPYKOeB0eB6aa9u2CgebMUm2xp84oHoN 0S5UZH9/jFCaWCCWzH4+J268BMtSEfIRgIFbh0ywOtfFvAXkvufMwU5Bjy8rFL/pON1OBfD13PQr 8fjfsTeeqKhV/lxpQ+pdL30qxNfKOSiAUgZiFHQpC5HNSUgZGBo0LSjuZl65J55WNmWtFUcaMpMO VdVaLAwg+cSlQqGcZIdHKpg5V2KdKCAnA/RIRNSu05lCKmGFa4Aqcb5ucdpEfVdj723GUlsYV0oy JnfW6c5dExQMC7M2tF73tQDsN98Gqd90GQRpEKqKlXXAKVTa8K4Phh6IRsHEkkSxDTqhnqUmeUpd Q5PX0vzuyppSzUy/pdnHkI3YYXAARa/VQSG6IqNlt8Wyhw1pphkRkjfmQXXhshvP1nySju98cUwz ZClJ/Bf087pcC+mdVORsmWafbmY3MJMwAjn5WzV0DjZFn8MbLlOw== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Oct 2023 20:49:34 +0800 X-OQ-MSGID: <20231012124934.27842-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231012124934.27842-1-quinkblack@foxmail.com> References: <20231012124934.27842-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/videotoolboxenc: Check and set hevc profile 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qE0KqRfxS/b2 From: Zhao Zhili 1. If user don't specify the profile, set it to main10 when pixel format is 10 bits. Before the patch, videotoolbox output main profile bitstream with 10 bit input, which can be confusing. 2. Warning when user set profile to main explicitly with 10 bit input. It works, but not the best choice. 3. Reject main 10 profile with 8 bit input, it doesn't work. --- libavcodec/videotoolboxenc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index b685bf4cc4..b0e827d14a 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -894,17 +894,35 @@ static bool get_vt_hevc_profile_level(AVCodecContext *avctx, { VTEncContext *vtctx = avctx->priv_data; int profile = vtctx->profile; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get( + avctx->pix_fmt == AV_PIX_FMT_VIDEOTOOLBOX ? avctx->sw_pix_fmt + : avctx->pix_fmt); + int bit_depth = desc ? desc->comp[0].depth : 0; *profile_level_val = NULL; switch (profile) { case AV_PROFILE_UNKNOWN: + // Set profile automatically if user don't specify + if (bit_depth == 10) { + *profile_level_val = + compat_keys.kVTProfileLevel_HEVC_Main10_AutoLevel; + break; + } return true; case AV_PROFILE_HEVC_MAIN: + if (bit_depth > 0 && bit_depth != 8) + av_log(avctx, AV_LOG_WARNING, + "main profile with %d bit input\n", bit_depth); *profile_level_val = compat_keys.kVTProfileLevel_HEVC_Main_AutoLevel; break; case AV_PROFILE_HEVC_MAIN_10: + if (bit_depth > 0 && bit_depth != 10) { + av_log(avctx, AV_LOG_ERROR, + "Invalid main10 profile with %d bit input\n", bit_depth); + return false; + } *profile_level_val = compat_keys.kVTProfileLevel_HEVC_Main10_AutoLevel; break;