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 3B65846586 for ; Tue, 23 May 2023 02:28:02 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B973168C0B7; Tue, 23 May 2023 05:27:59 +0300 (EEST) Received: from out203-205-221-242.mail.qq.com (out203-205-221-242.mail.qq.com [203.205.221.242]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3C77568C08B for ; Tue, 23 May 2023 05:27:52 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1684808868; bh=wtnFFes3s9DhwxVfA0nDK8P4wJbJ2Tu8HbXYWgIpV3w=; h=From:To:Cc:Subject:Date; b=EMEh1hT2vdPIgA3STrTpXdnaOYKXpqHI+8WEm4pgXqgmo6LJZvnvRUQHAjoJVpSqo Z0qKMhf7LS2QuB7YXT5izhI4koP9MSjebsB8KPwlkpuqKw7iZmNWBukWg5Kz3IaWBh kd4o6FR8OTqbmTF+GOGyPbL74ah7wmUtfRNrNLW4= Received: from localhost.localdomain ([113.65.131.36]) by newxmesmtplogicsvrszb1-0.qq.com (NewEsmtp) with SMTP id 6EF0BC65; Tue, 23 May 2023 10:27:47 +0800 X-QQ-mid: xmsmtpt1684808867taw7smgze Message-ID: X-QQ-XMAILINFO: OZZSS56D9fAjDsm6KiT+na3T/fZzocRl4/tyMHJ4V2VGBC3zTlQ7sRghzsJ0r6 tbbRkF+DOeUOMGjSBtwondNSTI5mwaHq/0/ZfHxN0mugGEVmu8dgF6k3kmXJ2nHPt8eVg2T86A9R ZbreWKVCrKKQozgSDXJLU6E+d5bt29srrCMu7kZ2dQpU7X/UsH41xhE/HBmVLtKnKt9ZVTnno/Wv ETBhX9rJfy61bkm6kpKnW1eqaU29J9N1gMILn4sdSI36Z9SewdaoCInjdMF9xNd96dwocJ1FOo6O sM73VTSJV2bF/fcLzgsiMCtfbsI3exQ757fcys0BI+2Fge8+Esq8ScLMo/foh7S6jhTQGciXx56a 7Y1prDkWIn9VLXSuiUSSsasdIkago20HnpGIEgWGJA2WTo6Au+s4SJDiucPzQx5UxCJcgz1lXw0s 1Mml2mL14mz/HClCD/g+Cm1SxE7y7FPtiOHRmu5ugL5N6C8SBAPFD9iPTkY6TjuR2b1smPojZRJ7 R2wjUJiQDlj/EYffnZ4Ig6ehZNz8qO0eWvXRutJ+m1DkQ4DZzfqqPwMsIl1YVR9USFl75kbcK8L+ byO33+b2qCMUjCZxc1j0ESAk6rYEFgBukKM7lAmkwQIjDEk4+EyR7psmb8yVY7U3sNxmIU17ylOg WZBWFPI0MUy8LtP8ynHb3QGl8rUmAYp62ElRQPFiPExKIeUF+YtATfbXio4gUauSJ0IpDBZGMucw UF3G5WpicbTNqXqiAZsFcksIc8kbW9o1EdNJqqZ6vybcjMn6T/Rbm13e3Qf3FqxwEc4mtu1jfoyI L67oFCWgGeuVV0JdReM0+4grTY+lzzD+asfVY8bSs99f2T7jAUP7idREvDaaWIZQL8iVlKCZa6nd Y9gwL36HJ8FlEl6uWrNakvSAxeJvAkVY1uVF5Qg+eNvkvOW4A/KvxikivH3kn8zXaJVo3hKIM1VU +Aypc3g4tZO5Y/9GTlmwLaYbNZrtf9cHMoFnlTOmgO5NdpCmQ3yA== From: xufuji456 <839789740@qq.com> To: ffmpeg-devel@ffmpeg.org Date: Tue, 23 May 2023 10:27:45 +0800 X-OQ-MSGID: <20230523022745.65060-1-839789740@qq.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add CBP/CHP 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: xufuji456 <839789740@qq.com> 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: The Constrained_Baseline and Constrained_High profile of H264 has available in iOS 15.0 Signed-off-by: xufuji456 <839789740@qq.com> --- libavcodec/videotoolboxenc.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index b017c90c36..028095cd04 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -108,6 +108,8 @@ static struct{ CFStringRef kVTProfileLevel_H264_High_AutoLevel; CFStringRef kVTProfileLevel_H264_Extended_5_0; CFStringRef kVTProfileLevel_H264_Extended_AutoLevel; + CFStringRef kVTProfileLevel_H264_ConstrainedBaseline_AutoLevel; + CFStringRef kVTProfileLevel_H264_ConstrainedHigh_AutoLevel; CFStringRef kVTProfileLevel_HEVC_Main_AutoLevel; CFStringRef kVTProfileLevel_HEVC_Main10_AutoLevel; @@ -171,6 +173,8 @@ static void loadVTEncSymbols(void){ GET_SYM(kVTProfileLevel_H264_High_AutoLevel, "H264_High_AutoLevel"); GET_SYM(kVTProfileLevel_H264_Extended_5_0, "H264_Extended_5_0"); GET_SYM(kVTProfileLevel_H264_Extended_AutoLevel, "H264_Extended_AutoLevel"); + GET_SYM(kVTProfileLevel_H264_ConstrainedBaseline_AutoLevel, "H264_ConstrainedBaseline_AutoLevel"); + GET_SYM(kVTProfileLevel_H264_ConstrainedHigh_AutoLevel, "H264_ConstrainedHigh_AutoLevel"); GET_SYM(kVTProfileLevel_HEVC_Main_AutoLevel, "HEVC_Main_AutoLevel"); GET_SYM(kVTProfileLevel_HEVC_Main10_AutoLevel, "HEVC_Main10_AutoLevel"); @@ -193,8 +197,10 @@ static void loadVTEncSymbols(void){ typedef enum VT_H264Profile { H264_PROF_AUTO, H264_PROF_BASELINE, + H264_PROF_CONSTRAINED_BASELINE, H264_PROF_MAIN, H264_PROF_HIGH, + H264_PROF_CONSTRAINED_HIGH, H264_PROF_EXTENDED, H264_PROF_COUNT } VT_H264Profile; @@ -763,6 +769,10 @@ static bool get_vt_h264_profile_level(AVCodecContext *avctx, } break; + case H264_PROF_CONSTRAINED_BASELINE: + *profile_level_val = compat_keys.kVTProfileLevel_H264_ConstrainedBaseline_AutoLevel; + break; + case H264_PROF_MAIN: switch (vtctx->level) { case 0: *profile_level_val = @@ -805,6 +815,11 @@ static bool get_vt_h264_profile_level(AVCodecContext *avctx, compat_keys.kVTProfileLevel_H264_High_5_2; break; } break; + + case H264_PROF_CONSTRAINED_HIGH: + *profile_level_val = compat_keys.kVTProfileLevel_H264_ConstrainedHigh_AutoLevel; + break; + case H264_PROF_EXTENDED: switch (vtctx->level) { case 0: *profile_level_val = @@ -2757,10 +2772,12 @@ static const enum AVPixelFormat prores_pix_fmts[] = { #define OFFSET(x) offsetof(VTEncContext, x) static const AVOption h264_options[] = { { "profile", "Profile", OFFSET(profile), AV_OPT_TYPE_INT64, { .i64 = H264_PROF_AUTO }, H264_PROF_AUTO, H264_PROF_COUNT, VE, "profile" }, - { "baseline", "Baseline Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_BASELINE }, INT_MIN, INT_MAX, VE, "profile" }, - { "main", "Main Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_MAIN }, INT_MIN, INT_MAX, VE, "profile" }, - { "high", "High Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_HIGH }, INT_MIN, INT_MAX, VE, "profile" }, - { "extended", "Extend Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_EXTENDED }, INT_MIN, INT_MAX, VE, "profile" }, + { "baseline", "Baseline Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_BASELINE }, INT_MIN, INT_MAX, VE, "profile" }, + { "constrained_baseline", "Constrained_Baseline Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_CONSTRAINED_BASELINE }, INT_MIN, INT_MAX, VE, "profile" }, + { "main", "Main Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_MAIN }, INT_MIN, INT_MAX, VE, "profile" }, + { "high", "High Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_HIGH }, INT_MIN, INT_MAX, VE, "profile" }, + { "constrained_high", "Constrained_High Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_CONSTRAINED_HIGH }, INT_MIN, INT_MAX, VE, "profile" }, + { "extended", "Extend Profile", 0, AV_OPT_TYPE_CONST, { .i64 = H264_PROF_EXTENDED }, INT_MIN, INT_MAX, VE, "profile" }, { "level", "Level", OFFSET(level), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 52, VE, "level" }, { "1.3", "Level 1.3, only available with Baseline Profile", 0, AV_OPT_TYPE_CONST, { .i64 = 13 }, INT_MIN, INT_MAX, VE, "level" }, -- 2.32.0 (Apple Git-132) _______________________________________________ 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".