From patchwork Tue May 2 12:22:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Raposo Vieira Mira X-Patchwork-Id: 41447 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dca6:b0:f3:34fa:f187 with SMTP id ky38csp3943315pzb; Tue, 2 May 2023 05:22:46 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5yN3fcijCLwC7WlbDWGvP3PL77ip7wVsiaRuFFQNUVFE4IhZ7+PbwqVBp36s1CBcvo6+oU X-Received: by 2002:a17:907:2cf1:b0:94e:e0b7:96d6 with SMTP id hz17-20020a1709072cf100b0094ee0b796d6mr18664154ejc.14.1683030166455; Tue, 02 May 2023 05:22:46 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gy19-20020a170906f25300b0094f53d2456esi21111209ejb.2.2023.05.02.05.22.45; Tue, 02 May 2023 05:22:46 -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=@qt.io header.s=selector2 header.b=e2sd8mld; arc=fail (body hash mismatch); 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=qt.io Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AC2D468C129; Tue, 2 May 2023 15:22:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2121.outbound.protection.outlook.com [40.107.104.121]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FE7868BE3E for ; Tue, 2 May 2023 15:22:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VfOxGfJtiYf50ocZzQ6jpfL7YDaJSxz4tAbULSP2D1bdrTAFfXT8BZiKLpfETFpCmxCGJwzOvBwQqSO43P9ugdyYkgC9g4BrO6SkjP9+inkmrJJS2EM9+WQzQJWS5UM78WETZxz1+JIovp9h9zyM1McJQxlLEvv8Gkr7WWNcjgitrZUA9m/kES2fo/q3JweuRbnpnkzyLlH8ABZUY6xu5B/MwlcY7or25RVJmNMbLFSrcvjNmYjyuRZGC7lQisLMPLxzZW88pKrZxcbNhQ0DHF2GHkoF6KxYwSOlH/sf2VEkL5YcSRbydDTpCTGlmqzLSjHnINBENfmgOsQU+I3aRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aVkFq/caiFN6BoSDxEqQgp9vlUYo5XIX0gsefNxTUlI=; b=R0rPQyNtsRGg+ccP23x++8Vy9RTHLn8zcf6GhgVt+74bmhes4e2cEfU7Jfat6/7PS1JCqZRw0onaNtl7JCOpcxV4XhPOpAYWME28t6xxAFIezP1J91bb/zjrF+oFrTRKee57D5Il739RrQmPZWt/Y11lORYfvWe1EnKcN1zs9WtabkCY/q/vEPGxZoVsyxgIyh5dNfvvSL/7t+JF0Q/P3XeZFPdf8PVX2hhUpE6GdqFzrWcUD5AU4eEnZlVPLP3q7H1lzuNEn6nVavrchmvVrxhNbeXuujmT5XXCLxoJi/KtjQxIKlwaZsNUZacQqd80vtXBWsCuYcVgMmuogxqeOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=qt.io; dmarc=pass action=none header.from=qt.io; dkim=pass header.d=qt.io; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qt.io; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aVkFq/caiFN6BoSDxEqQgp9vlUYo5XIX0gsefNxTUlI=; b=e2sd8mldKeYC1Y1KGFtBXUvi0Q3paGxB63Kuql/o6j3Nsx4raBni7DVvVJatEFx2Czu/AnY/oR7D7X6b3hklpkDAmXPWemN2mtNl84+e1z6aieb4e11xFbUYB6GBL67kPHSuzumkPUCOwrLqEuyWJG9UEpuKOC+vIaGOwoECfrU= Received: from DBAPR02MB6165.eurprd02.prod.outlook.com (2603:10a6:10:18e::8) by AS2PR02MB9608.eurprd02.prod.outlook.com (2603:10a6:20b:594::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.31; Tue, 2 May 2023 12:22:32 +0000 Received: from DBAPR02MB6165.eurprd02.prod.outlook.com ([fe80::fcdd:550f:463b:bd2d]) by DBAPR02MB6165.eurprd02.prod.outlook.com ([fe80::fcdd:550f:463b:bd2d%6]) with mapi id 15.20.6340.031; Tue, 2 May 2023 12:22:32 +0000 From: Samuel Raposo Vieira Mira To: FFmpeg development discussions and patches Thread-Topic: [PATCH v2] avcodec/mediacodec: Add AV1 encoder Thread-Index: AQHZfPBex/fBJZOYoUWXWFZjUEoIUQ== Date: Tue, 2 May 2023 12:22:32 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=qt.io; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBAPR02MB6165:EE_|AS2PR02MB9608:EE_ x-ms-office365-filtering-correlation-id: 85634de5-05d4-4111-af3b-08db4b07e75a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0ugUPiGcb4dGPHHPPFl3/IrghU2/h+S09EhfqKXAYhD/hww9qF2W6aivxcFyboxCPpA1HFNC10yNIFexXe0aDg5iVKU0ap0ff4c38VgG7t1ZXqx7eYgTmG6KGGm5dZtWnRA7zaKwOz3L7hgzNLavMh01Jtr4+THEg8RI5DNTm17HOX1WUq9NXHcji6tBo/1ZHPpfakk1ZrwsZ8IfJS1aTy1aG0BxFFnhJvTyBq9g4jGzb2pOAs0okSP+8d5XZkaPF7a5nwCi9HHXl6EgEcInWTc9GVRn1RumsIrey3J/4U05uYHfVs5SMS8kt6upoB+bG/mgj7pQ7fhcuktzqER0HrowNrYc2ANnmsJi9bPUtSo4+Iq4Oi5PO0TLleLfE+fnp7KHu2HO99aq6V9SNuaGECOAOiAJOExhOFi+9hCiFZlj9hLp9RgiJKbnzh2yyraoVTxIhiyQZ//ZcwzjvZLviFkW2VWTjTkGocMwJOGoQxkb+znXMhTGzhlInu2SBEtM3d8avPcOIZHZkLqwurnO+b1C+MRJE3WQkK5VFuOw1sTEHtKg+GveHc6C9v9NwkV/IsM6y1s39DMgCgtiTsJiGoCsIBfWn3AX9L14MHm7xZX8vAZ4yrVnAku0EwSIA51F x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR02MB6165.eurprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(366004)(376002)(346002)(39850400004)(136003)(396003)(451199021)(83380400001)(7696005)(71200400001)(38070700005)(122000001)(26005)(9686003)(6506007)(186003)(66946007)(66556008)(76116006)(66476007)(64756008)(6916009)(86362001)(41300700001)(66446008)(478600001)(5660300002)(91956017)(316002)(55016003)(2906002)(38100700002)(52536014)(8676002)(19627235002)(33656002)(8936002)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: wG9KRF+szXWXsqoI5VUHTVvcExMZKNFAtxdk3pUtjjA1u5jlJCy6JK48Y6MTEm2amqknp4GzeHKIJyrCW8O7+2yndMBGu0ckwoJDFACxCfvswIFu5vJ+wQl0gh/Vk8LIx7XJvzR+zumyMw/AXdpI4DipQYo3yM8NGTtDlftFmvDHrGhx0LEaR6JY+usZJbE5f6pz2mzR7k1SASEYIl1FT+vda99fzPtmTtRwlyIllFJXM4fjdVa2DBaL2Z68D8wKc14bywCARbZvdz2H2ql+OK9idd6IWyzoFvuANpxeh8xNgK+/onFGe9i+9Z1OYizCh05zMas6eX1ZpHFsH0MXPXiWNkXKk4t6eMflnNiYy5ZWN4O41JE1ebw07MB2oW3qIvu+XniZZxCJTTASEvbKlMsu7B3RkOXkggcZm+gHk5tmPhn9SeV8HrJfb70ww6SDLosc59ToyNxQQ+QbF2en3H8RwlHB2Ogd3wFj08PG+kZx0aduHSNF12YHY/RX4NAQEQ2BxoU3lHlsY9+KgsP1VD8+Icwb8Srwlla4wFqJaBE4efBqzFwgrdyTbAJylnCPSwMAae8W0JoBBcKNv2s6Kay6fT8AjxkFapFWihn+99GqnrqPNSHjXDzA7kvJyH5F86ZjaM+jIVo8esShRRIvgrSkiyg1i5/kLY6wvwFugezFB7U4egtZvMqOO3vxxrpIiQaaRhSNRFmS+vHyMAg2GV59+Gh3q8WAPPUpZQCL7n3yI0Jli3+UprRRFxjWr8QrblAH/quJfxZxKADJNic+IqH1Q1/iNB6jI11VnwBQsoLOiADI6cz1ziipzu5kN1nQbkwusQ45kPjse1EC9yez4otUDxl2FNR3JEG2Om+fBeu5FHz24FttUYq2LKV+PYVlN7fPzYJIEXLIAGPk/P+P3ULX1sFqU46tVW+ztQ2HrtJms6Yi75FNHOpgbdt7gWdjYHHWoWrEgygJEPEEVP1PevIzH/wkYUl5KRTm3UBIrgosIk0CM0iyl/OfX4FW2MTjE6C9C2L7MTCcS71qvSx23/FhAHWLa9+U8qTFU70oFOwT3z6t6Qd92hUdspPw/dUQcY3YcWyzu0i0MocmyqEERS/E6PKGcATm4zD2MSEMGHnfENqvQ9nIq+yOc8fT7Gun0wiEdmTfY47jYrENyK3+EuM5taQZw2HyKJEk43gyZ8B8QZs5Jm0hnPE0CyqoV2n2g8gClsGhlvlwcF9FHjhlnDh4+P879t0I/4lJjY+oDau1+H4s4/b+LHMJzvhwiAxKtCY4RF9oql+Y7Kp7di807bg5a3N4TEt2A3oVR6K+vh+Zk5NPu24GdZOdzj2aPBEB41VqPmwpupSkjP4wQZ4mToXmIRot5E5SRiNKE523E+xJ3Q/RHlO4GEOWdSYKiGYitsBBFu913ciJs4kYPGUmvCMU4tKMZcmUg/FTszQQP1omgSx6xHVAaOTdgPaPwHsfXC+jon3b8uKobt2wFwE2iOEIGlozxRy68KFczjVmexr/o3oeWhZzxpaLZ9k4qLTrfqoKwjc7XULHx5fPv1nUS6Qw3ZvavrXMCRJxo1YwozbDjc7+h8lPuK8bTDgGaPkokwD47AGrlTi+akTPn4/qJQ== MIME-Version: 1.0 X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBAPR02MB6165.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85634de5-05d4-4111-af3b-08db4b07e75a X-MS-Exchange-CrossTenant-originalarrivaltime: 02 May 2023 12:22:32.1372 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 20d0b167-794d-448a-9d01-aaeccc1124ac X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HPmf03KRd8g5PX+a3ZwzjJadip8SaNgorZYoGmDiBfRVo2fGze8qROSXRGCC42DhelJ2DzS4ARVjEF4m6HgHmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR02MB9608 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH v2] avcodec/mediacodec: Add AV1 encoder 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: RF2ELSZPuFv1 Connected FFmpeg to Mediacodec AV1 encoder Minor version bump. Minor whitespaces fix. Signed-off-by: Samuel Mira samuel.mira@qt.io --- configure | 1 + libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + libavcodec/mediacodec_wrapper.c | 12 ++++ libavcodec/mediacodecenc.c | 115 ++++++++++++++++++++++++++++---- libavcodec/version.h | 2 +- 6 files changed, 119 insertions(+), 13 deletions(-) diff --git a/configure b/configure index bb7be67676..0a60deac65 100755 --- a/configure +++ b/configure @@ -3162,6 +3162,7 @@ aac_mf_encoder_deps="mediafoundation" ac3_mf_encoder_deps="mediafoundation" av1_cuvid_decoder_deps="cuvid CUVIDAV1PICPARAMS" av1_mediacodec_decoder_deps="mediacodec" +av1_mediacodec_encoder_deps="mediacodec" av1_nvenc_encoder_deps="nvenc NV_ENC_PIC_PARAMS_AV1" av1_nvenc_encoder_select="atsc_a53" h263_v4l2m2m_decoder_deps="v4l2_m2m h263_v4l2_m2m" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index b0971ce833..166f77f12a 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -253,6 +253,7 @@ OBJS-$(CONFIG_AURA2_DECODER) += aura.o OBJS-$(CONFIG_AV1_DECODER) += av1dec.o OBJS-$(CONFIG_AV1_CUVID_DECODER) += cuviddec.o OBJS-$(CONFIG_AV1_MEDIACODEC_DECODER) += mediacodecdec.o +OBJS-$(CONFIG_AV1_MEDIACODEC_ENCODER) += mediacodecenc.o OBJS-$(CONFIG_AV1_NVENC_ENCODER) += nvenc_av1.o nvenc.o OBJS-$(CONFIG_AV1_QSV_ENCODER) += qsvenc_av1.o OBJS-$(CONFIG_AVRN_DECODER) += avrndec.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 8eeed34e57..f583aad860 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -836,6 +836,7 @@ extern const FFCodec ff_libaom_av1_decoder; extern const FFCodec ff_av1_decoder; extern const FFCodec ff_av1_cuvid_decoder; extern const FFCodec ff_av1_mediacodec_decoder; +extern const FFCodec ff_av1_mediacodec_encoder; extern const FFCodec ff_av1_nvenc_encoder; extern const FFCodec ff_av1_qsv_decoder; extern const FFCodec ff_av1_qsv_encoder; diff --git a/libavcodec/mediacodec_wrapper.c b/libavcodec/mediacodec_wrapper.c index 1c29bb7406..015f275a0f 100644 --- a/libavcodec/mediacodec_wrapper.c +++ b/libavcodec/mediacodec_wrapper.c @@ -35,6 +35,8 @@ #include "ffjni.h" #include "mediacodec_wrapper.h" +#include "libavutil/pixdesc.h" + struct JNIAMediaCodecListFields { jclass mediacodec_list_class; @@ -345,6 +347,11 @@ int ff_AMediaCodecProfile_getProfileFromAVCodecContext(AVCodecContext *avctx) static const int MPEG4ProfileAdvancedScalable = 0x4000; static const int MPEG4ProfileAdvancedSimple = 0x8000; + static const int AV1ProfileMain8 = 0x1; + static const int AV1ProfileMain10 = 0x2; + static const int AV1ProfileMain10HDR10 = 0x1000; + static const int AV1ProfileMain10HDR10Plus = 0x2000; + // Unused yet. (void)AVCProfileConstrainedHigh; (void)HEVCProfileMain10HDR10; @@ -353,6 +360,8 @@ int ff_AMediaCodecProfile_getProfileFromAVCodecContext(AVCodecContext *avctx) (void)VP9Profile3HDR; (void)VP9Profile2HDR10Plus; (void)VP9Profile3HDR10Plus; + (void)AV1ProfileMain10HDR10; + (void)AV1ProfileMain10HDR10Plus; if (avctx->codec_id == AV_CODEC_ID_H264) { switch(avctx->profile) { @@ -436,6 +445,9 @@ int ff_AMediaCodecProfile_getProfileFromAVCodecContext(AVCodecContext *avctx) default: break; } + } else if(avctx->codec_id == AV_CODEC_ID_AV1) { + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); + return desc != NULL && desc->comp[0].depth == 8? AV1ProfileMain8 : AV1ProfileMain10; } return -1; diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index e4b583a542..10da43c3e7 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -170,6 +170,9 @@ static av_cold int mediacodec_init(AVCodecContext *avctx) case AV_CODEC_ID_MPEG4: codec_mime = "video/mp4v-es"; break; + case AV_CODEC_ID_AV1: + codec_mime = "video/av01"; + break; default: av_assert0(0); } @@ -779,16 +782,16 @@ DECLARE_MEDIACODEC_ENCODER(hevc, "H.265", AV_CODEC_ID_HEVC) enum MediaCodecVP9Level { VP9Level1 = 0x1, - VP9Level11 = 0x2, + VP9Level11 = 0x2, VP9Level2 = 0x4, - VP9Level21 = 0x8, - VP9Level3 = 0x10, + VP9Level21 = 0x8, + VP9Level3 = 0x10, VP9Level31 = 0x20, VP9Level4 = 0x40, - VP9Level41 = 0x80, - VP9Level5 = 0x100, + VP9Level41 = 0x80, + VP9Level5 = 0x100, VP9Level51 = 0x200, - VP9Level52 = 0x400, + VP9Level52 = 0x400, VP9Level6 = 0x800, VP9Level61 = 0x1000, VP9Level62 = 0x2000, @@ -837,15 +840,15 @@ DECLARE_MEDIACODEC_ENCODER(vp9, "VP9", AV_CODEC_ID_VP9) enum MediaCodecMpeg4Level { MPEG4Level0 = 0x01, - MPEG4Level0b = 0x02, - MPEG4Level1 = 0x04, + MPEG4Level0b = 0x02, + MPEG4Level1 = 0x04, MPEG4Level2 = 0x08, - MPEG4Level3 = 0x10, + MPEG4Level3 = 0x10, MPEG4Level3b = 0x18, - MPEG4Level4 = 0x20, - MPEG4Level4a = 0x40, + MPEG4Level4 = 0x20, + MPEG4Level4a = 0x40, MPEG4Level5 = 0x80, - MPEG4Level6 = 0x100, + MPEG4Level6 = 0x100, }; static const AVOption mpeg4_options[] = { @@ -878,3 +881,91 @@ static const AVOption mpeg4_options[] = { DECLARE_MEDIACODEC_ENCODER(mpeg4, "MPEG-4", AV_CODEC_ID_MPEG4) #endif // CONFIG_MPEG4_MEDIACODEC_ENCODER + +#if CONFIG_AV1_MEDIACODEC_ENCODER + +enum MediaCodecAV1Level { + AV1Level2 = 0x1, + AV1Level21 = 0x2, + AV1Level22 = 0x4, + AV1Level23 = 0x8, + AV1Level3 = 0x10, + AV1Level31 = 0x20, + AV1Level32 = 0x40, + AV1Level33 = 0x80, + AV1Level4 = 0x100, + AV1Level41 = 0x200, + AV1Level42 = 0x400, + AV1Level43 = 0x800, + AV1Level5 = 0x1000, + AV1Level51 = 0x2000, + AV1Level52 = 0x4000, + AV1Level53 = 0x8000, + AV1Level6 = 0x10000, + AV1Level61 = 0x20000, + AV1Level62 = 0x40000, + AV1Level63 = 0x80000, + AV1Level7 = 0x100000, + AV1Level71 = 0x200000, + AV1Level72 = 0x400000, + AV1Level73 = 0x800000, +}; + +static const AVOption av1_options[] = { + COMMON_OPTION + { "level", "Specify tier and level", + OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, "level" }, + { "2", "Level 2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level2 }, 0, 0, VE, "level" }, + { "2.1", "Level 2.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level21 }, 0, 0, VE, "level" }, + { "2.2", "Level 2.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level22 }, 0, 0, VE, "level" }, + { "2.3", "Level 2.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level23 }, 0, 0, VE, "level" }, + { "3", "Level 3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level3 }, 0, 0, VE, "level" }, + { "3.1", "Level 3.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level31 }, 0, 0, VE, "level" }, + { "3.2", "Level 3.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level32 }, 0, 0, VE, "level" }, + { "3.3", "Level 3.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level33 }, 0, 0, VE, "level" }, + { "4", "Level 4", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level4 }, 0, 0, VE, "level" }, + { "4.1", "Level 4.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level41 }, 0, 0, VE, "level" }, + { "4.2", "Level 4.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level42 }, 0, 0, VE, "level" }, + { "4.3", "Level 4.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level43 }, 0, 0, VE, "level" }, + { "5", "Level 5", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level5 }, 0, 0, VE, "level" }, + { "5.1", "Level 5.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level51 }, 0, 0, VE, "level" }, + { "5.2", "Level 5.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level52 }, 0, 0, VE, "level" }, + { "5.3", "Level 5.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level53 }, 0, 0, VE, "level" }, + { "6", "Level 6", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level6 }, 0, 0, VE, "level" }, + { "6.1", "Level 6.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level61 }, 0, 0, VE, "level" }, + { "6.2", "Level 6.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level62 }, 0, 0, VE, "level" }, + { "6.3", "Level 6.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level63 }, 0, 0, VE, "level" }, + { "7", "Level 7", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level7 }, 0, 0, VE, "level" }, + { "7.1", "Level 7.1", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level71 }, 0, 0, VE, "level" }, + { "7.2", "Level 7.2", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level72 }, 0, 0, VE, "level" }, + { "7.3", "Level 7.3", + 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level73 }, 0, 0, VE, "level" }, + { NULL, } +}; + +DECLARE_MEDIACODEC_ENCODER(av1, "AV1", AV_CODEC_ID_AV1) + +#endif // CONFIG_AV1_MEDIACODEC_ENCODER diff --git a/libavcodec/version.h b/libavcodec/version.h index 80e2ae630d..8b53586be1 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 10 +#define LIBAVCODEC_VERSION_MINOR 12 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ -- 2.35.2