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 17FE44586D for ; Wed, 26 Apr 2023 14:00:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0C6E368BEB0; Wed, 26 Apr 2023 17:00:56 +0300 (EEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2115.outbound.protection.outlook.com [40.107.8.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 34E6668B630 for ; Wed, 26 Apr 2023 17:00:50 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nw3KN/8FsFKLkS/g7T6FhUD9Z172b5msvwMQ1MXYa2xNPDMcQtaonJuxE6vrj1ZOA2o/DMAommXZaYnbPY4qIZfj0jb3AO8mwJK24rxY2wL0291uqnwDrHjsDuEbk3lpIRbEQKfzY0EXkGL1IKkiUWhNK4GgjGJ14yxIf79i6Kj4vJbLnoJ6wAIoYD4vqeuoUYUGTWpA/nnZwfCgll4a3uBeoPuxcGcSwyaeH3Rl1GhgpnPhKEUxmk9a2LH1/0P+oGNFXwglK68ocKE+4USBK5bOYNdpsTFYOQ3fnhZ/UM9Qk33C6QsgOYHU3JVbwJrQnzAHzFr7KhI8iNBqapTNmw== 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=k+fpl1fWoIscOBT5Ztv7fMP+FUT95wysvnXKVZqr8Fc=; b=LHRMXMLNqVRQMzVoIhu8CCZtE8sItVAIqIk/FpK5vs4/A/ytoDIpH77J4qo3autEgSVVQu0kWBp6oq2oFirV4dI7PsqBG2I2KhOkXfQGIhDPBWW/bQaFhQvpN9yL4hRPcofd2vU8vser46mOL8tIlQV/Tnj8+3sAXq8l+NXBNsgpQED7/P5GfTwi+Yp4KqSr7An3IQ0TISYcIpTKVQG7IM0olFqGSrtZSZxplxqOjJu2r13ozNRFgUPMYfNG3CFkGUIRIwo8huFEr33tpheP5cL+00rsTkhTNtE9D+E8h0OiArLXXkonzEQFWNH2R7BNeSFap1UUDj5IaHp+9Upz+Q== 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=k+fpl1fWoIscOBT5Ztv7fMP+FUT95wysvnXKVZqr8Fc=; b=px4PGMv5rzzQC7UCW4BWO/oMOWAb/xmjX5w8xcKk6RHJlENG32OEBlAEa6XOlgD7QaOGfIkUNrdObLJC6CE+dxmvR8i1OAEcUNz/T9M/rzPMXw2oueUDJDT3x4hIsLOHVdNbJF7etTQdLXT1SgLr9eia5TfMtoT8YU4MNCXaRlk= Received: from PR3PR02MB6169.eurprd02.prod.outlook.com (2603:10a6:102:62::20) by DU0PR02MB9028.eurprd02.prod.outlook.com (2603:10a6:10:47b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 14:00:46 +0000 Received: from PR3PR02MB6169.eurprd02.prod.outlook.com ([fe80::a1f4:9808:62b4:161d]) by PR3PR02MB6169.eurprd02.prod.outlook.com ([fe80::a1f4:9808:62b4:161d%6]) with mapi id 15.20.6340.021; Wed, 26 Apr 2023 14:00:46 +0000 From: Samuel Raposo Vieira Mira To: FFmpeg development discussions and patches Thread-Topic: [PATCH] avcodec/mediacodec: Add VP8 encoder Thread-Index: AQHZeEdI+kz8tWulaUWie4DjBxLBJA== Date: Wed, 26 Apr 2023 14:00:46 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: yes 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: PR3PR02MB6169:EE_|DU0PR02MB9028:EE_ x-ms-office365-filtering-correlation-id: fa6b7f46-8678-45e1-a1e0-08db465ea236 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: S4bmQOo32LdHLAI3dCx7oMxMvou60NpUJggJGFRdBm4xV1v3JwbGEUrJyosrXk6P5oDbMJVRFZekVvBUykUlnQ1+y2DwgyxR7isF3qtNlf+UHwUTJ96AAE6ICuHywaiyIuXy40x3Uau7iInHsjbCGfxgJzn/hCY1eIzxJe6n7bpyM0wnWTfO4MOxchBBWZggZdRfQVc/zWCyNE74CzbBwZ/xbAud1hYVO5HhKgtqE3imeLoG+VepT9NsOY4ZAyxZDrLQgX6kESQazoG+rd+6BXZa+Pj4nQfvFnh2zwrwihDKsrKRnhy2d4qB3vzNY+AFMzn+O1f3dejvaoW77dZJVh24km9yHMP5/LpxAp+l0rYcKHmI9+aPADw7rEsk44tWl8o/E5lOcrGWYXd27z8pzhZJe4wfNDu6VbpkbA68cZHmJwsFfcyXI8Kmwih4uJGiKDFy7XHuCwH+Wx+pg/+L/sexTQ6DJuUp3hhxUApwABBBTyO96VXXoWj5jF2xyOb8UEEEA2+/CQkvy5x6NclVlKapfTvmboUZtsbg7gtZvmUd4V2K2nB84wJuuG1nbUzcnRfO4kQOBlb+p2RrmriIbjBljBbpfppZrPgXRHKohTyznFnPurzs5Fcl0K6CWzY9 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PR3PR02MB6169.eurprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(376002)(136003)(366004)(396003)(39850400004)(451199021)(5660300002)(38100700002)(2906002)(52536014)(33656002)(7696005)(186003)(55016003)(41300700001)(38070700005)(86362001)(478600001)(8936002)(122000001)(71200400001)(8676002)(316002)(99936003)(91956017)(66946007)(76116006)(66446008)(66476007)(6916009)(66556008)(64756008)(9686003)(26005)(6506007)(19627235002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?pUr2z6gsYhwn9XarXZWo+be6cI4+jOmghjrhn0KTfzVfQJrvI0hByDk1yM3z?= =?us-ascii?Q?lmr3utoo3CKyZ/Wf6KrVcKMyUfdkfhX6lPW+29dkaBB5DBkw93sW38KEKy7e?= =?us-ascii?Q?uIOOQA/4qBVlC7SARg715XSXwy5CvKjXC+6p0az41lKqr8ct9wfq34yWSWok?= =?us-ascii?Q?bWSuhFJSl5o4Yk9Rz0TdEbTZK7sVr5kxd45MJs/o2qoIuL5Hgwv/UfhJ4Apx?= =?us-ascii?Q?M+hDG8QbkKRAY6UlAogcKaNhUsGGCLigphCHZ30y11FszE9+/ExocjeflqOS?= =?us-ascii?Q?0pMi0vQtesp0FeFV51dgkyTsaAkaE6zCf7GyU1XRuLT32WDdNG4gyZjnjuQ5?= =?us-ascii?Q?Z3vbUMRmNM4hHMfsKNVrF08ibW22WgIFpaDVd6pskGEHz+s+4/cPQItTpSKE?= =?us-ascii?Q?U92CB706zxkGPHzydgd8PJOCs8KnbtAEOYvDzaeQPCLCth9FnMGCmKM5KJZb?= =?us-ascii?Q?//WVV4v53Tm92LW3d0zcbKwkQcBaugufFH/b/XW9EivrjXz+qsNyOYEACapk?= =?us-ascii?Q?UnYDd2ZA7vLH2jj1Ja2pTcsWcUljwapyoQpnU/dvqKLhDRwvbATzTplv9cz6?= =?us-ascii?Q?SL0+BCZu2M+kXfUSvaXbppksPe/hlfKphbLlHc2rvA4pOPnCXi52Z1zAalv4?= =?us-ascii?Q?YMZyLuobM4WM3pygd3CRplYQZVwYm4kJ+aCQAfIkEZtLem6eHNdQv5hCOwZF?= =?us-ascii?Q?UVvXmIaUjyfWpN4itAmx8CYnBwvVShvae1Z5u2azYdsp1DuyyiqaomK8Caz9?= =?us-ascii?Q?A2l0mls18YWc0R1zJPAd7u9MAAvuxVgi66YleOk/UlwFbKFsTeEJAeSYE8FJ?= =?us-ascii?Q?rwLEDL5vZzSOj8GCf1gQIhy/HoCOpmYjsnHiBDwaCjsERWsL7Ha19vg8eVxO?= =?us-ascii?Q?qgDEpVI8bWcHIR0ZECk/o1wUhOMiZApyrd6lDhSVzUrR9Ix4qArj6LWAqQoS?= =?us-ascii?Q?lP9X8UjKKQY+RUf+lkEg0aKZK8rHO93kFNpzIhKVykcVVPa0GWh7Qh7mc2JM?= =?us-ascii?Q?bLjMNfKEJRPthBok4GOb9QcIZDq/QfnQ+ntl20QrT0WUB6bj3/w4hzxUYP7o?= =?us-ascii?Q?A7pekC7rbcST0EEwPpvbTLJC0QyKCtm2S+6iQzQo76zpiseCg1Q/Cfj+96Zs?= =?us-ascii?Q?s/dy/XlLPH7ofJHIQ/ioHfX34T/oJ36FuH5Kx8FXVzY3r/A1CtHTrSQXiJDF?= =?us-ascii?Q?o5+nwViDFvlJ9nYihm1NGihxA3u6N7DAX2CNDpc+gM6H5MpiAXbN/BHRc4lh?= =?us-ascii?Q?7C5b1fVvGzqQtLEC0h8asf6wyo/AyNJCuwtZpvMXKant+yc4HXng9SITCwP9?= =?us-ascii?Q?7ePlAawbib2AApdMxKQGF+31RNeBKuqFQ1WUbEqq4ViKigLxAlLOLYWpMVWo?= =?us-ascii?Q?Vdzj7TbRIlewdiWCuy6c536I9yrOnTi4JYAylPtnvkeH60G1ASXMP/l3D65a?= =?us-ascii?Q?63WNqOFTI3ylsdUVOaB4hp7YSTG1pq4bnSwWySFTs79hjxnK2LzPetlkTYYl?= =?us-ascii?Q?XXc6BbnlBD82/fV4fr2fBWhugdWo4LOiaKDyZ++oebQOw8nUBBWQDcad0z9i?= =?us-ascii?Q?qfYs9LiQu32naZ4OvYcgrs4QBwBK6ZDQb06bD7Jt6tWuDDit8Qiymvk2SLF7?= =?us-ascii?Q?pQ=3D=3D?= Content-Type: multipart/mixed; boundary="_004_PR3PR02MB6169B792A37F7E802A3AD7A1ED659PR3PR02MB6169eurp_" MIME-Version: 1.0 X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PR3PR02MB6169.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa6b7f46-8678-45e1-a1e0-08db465ea236 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Apr 2023 14:00:46.5066 (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: HAnR1jcJPcz3cs21Zw2olN/my+czn47mev1CrcMy/4xqdJkBAA7MNJ41XtPHXOf8e8MKyCW7EoUCmR8TV93Klw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB9028 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec/mediacodec: Add VP8 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" Archived-At: List-Archive: List-Post: --_004_PR3PR02MB6169B792A37F7E802A3AD7A1ED659PR3PR02MB6169eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Connected FFmpeg to Mediacodec VP8 encoder --- configure | 1 + libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + libavcodec/mediacodec_wrapper.c | 4 ++++ libavcodec/mediacodecenc.c | 29 +++++++++++++++++++++++++++++ 5 files changed, 36 insertions(+) diff --git a/configure b/configure index 0a60deac65..a54398c57f 100755 --- a/configure +++ b/configure @@ -3240,6 +3240,7 @@ vc1_qsv_decoder_select=3D"qsvdec" vc1_v4l2m2m_decoder_deps=3D"v4l2_m2m vc1_v4l2_m2m" vp8_cuvid_decoder_deps=3D"cuvid" vp8_mediacodec_decoder_deps=3D"mediacodec" +vp8_mediacodec_encoder_deps=3D"mediacodec" vp8_qsv_decoder_select=3D"qsvdec" vp8_rkmpp_decoder_deps=3D"rkmpp" vp8_vaapi_encoder_deps=3D"VAEncPictureParameterBufferVP8" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 166f77f12a..aacea4f4b6 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -767,6 +767,7 @@ OBJS-$(CONFIG_VP7_DECODER) +=3D vp8.o vpx_r= ac.o OBJS-$(CONFIG_VP8_DECODER) +=3D vp8.o vpx_rac.o OBJS-$(CONFIG_VP8_CUVID_DECODER) +=3D cuviddec.o OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER) +=3D mediacodecdec.o +OBJS-$(CONFIG_VP8_MEDIACODEC_ENCODER) +=3D mediacodecenc.o OBJS-$(CONFIG_VP8_QSV_DECODER) +=3D qsvdec.o OBJS-$(CONFIG_VP8_RKMPP_DECODER) +=3D rkmppdec.o OBJS-$(CONFIG_VP8_VAAPI_ENCODER) +=3D vaapi_encode_vp8.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index f583aad860..184bb8521f 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -881,6 +881,7 @@ extern const FFCodec ff_prores_videotoolbox_encoder; extern const FFCodec ff_vc1_cuvid_decoder; extern const FFCodec ff_vp8_cuvid_decoder; extern const FFCodec ff_vp8_mediacodec_decoder; +extern const FFCodec ff_vp8_mediacodec_encoder; extern const FFCodec ff_vp8_qsv_decoder; extern const FFCodec ff_vp8_v4l2m2m_encoder; extern const FFCodec ff_vp8_vaapi_encoder; diff --git a/libavcodec/mediacodec_wrapper.c b/libavcodec/mediacodec_wrappe= r.c index 015f275a0f..b088cd2945 100644 --- a/libavcodec/mediacodec_wrapper.c +++ b/libavcodec/mediacodec_wrapper.c @@ -321,6 +321,8 @@ int ff_AMediaCodecProfile_getProfileFromAVCodecContext(= AVCodecContext *avctx) static const int HEVCProfileMain10HDR10 =3D 0x1000; static const int HEVCProfileMain10HDR10Plus =3D 0x2000; + static const int VP8ProfileMain =3D 0x01; + static const int VP9Profile0 =3D 0x01; static const int VP9Profile1 =3D 0x02; static const int VP9Profile2 =3D 0x04; @@ -396,6 +398,8 @@ int ff_AMediaCodecProfile_getProfileFromAVCodecContext(= AVCodecContext *avctx) case FF_PROFILE_HEVC_MAIN_10: return HEVCProfileMain10; } + } else if (avctx->codec_id =3D=3D AV_CODEC_ID_VP8) { + return VP8ProfileMain; } else if (avctx->codec_id =3D=3D AV_CODEC_ID_VP9) { switch (avctx->profile) { case FF_PROFILE_VP9_0: diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index 10da43c3e7..ff28d5f14a 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -164,6 +164,9 @@ static av_cold int mediacodec_init(AVCodecContext *avct= x) case AV_CODEC_ID_HEVC: codec_mime =3D "video/hevc"; break; + case AV_CODEC_ID_VP8: + codec_mime =3D "video/x-vnd.on2.vp8"; + break; case AV_CODEC_ID_VP9: codec_mime =3D "video/x-vnd.on2.vp9"; break; @@ -778,6 +781,32 @@ DECLARE_MEDIACODEC_ENCODER(hevc, "H.265", AV_CODEC_ID_= HEVC) #endif // CONFIG_HEVC_MEDIACODEC_ENCODER +#if CONFIG_VP8_MEDIACODEC_ENCODER + +enum MediaCodecVP8Level { + VP8Level_Version0 =3D 0x01, + VP8Level_Version1 =3D 0x02, + VP8Level_Version2 =3D 0x04, + VP8Level_Version3 =3D 0x08, +}; + +static const AVOption vp8_options[] =3D { + COMMON_OPTION + { "level", "Specify tier and level", + OFFSET(level), AV_OPT_TYPE_INT, {.i64 =3D 0}, 0, INT_MAX, = VE, "level" }, + { "V0", "Level Version 0", + 0, AV_OPT_TYPE_CONST, { .i64 =3D VP8Level_Version0 }, 0, = 0, VE, "level" }, + { "V1", "Level Version 1", + 0, AV_OPT_TYPE_CONST, { .i64 =3D VP8Level_Version1 }, 0, = 0, VE, "level" }, + { "V2", "Level Version 2", + 0, AV_OPT_TYPE_CONST, { .i64 =3D VP8Level_Version2 }, 0, = 0, VE, "level" }, + { "V3", "Level Version 3", + 0, AV_OPT_TYPE_CONST, { .i64 =3D VP8Level_Version3 }, 0, = 0, VE, "level" }, + { NULL, } +}; + +#endif // CONFIG_VP8_MEDIACODEC_ENCODER + #if CONFIG_VP9_MEDIACODEC_ENCODER enum MediaCodecVP9Level { -- --_004_PR3PR02MB6169B792A37F7E802A3AD7A1ED659PR3PR02MB6169eurp_ Content-Type: application/octet-stream; name="avcodec-mediacodec-add-vp8.patch.b64" Content-Description: avcodec-mediacodec-add-vp8.patch.b64 Content-Disposition: attachment; filename="avcodec-mediacodec-add-vp8.patch.b64"; size=6452; creation-date="Wed, 26 Apr 2023 14:00:33 GMT"; modification-date="Wed, 26 Apr 2023 14:00:33 GMT" Content-Transfer-Encoding: base64 Um5KdmJTQmlORGc0TTJJeU4yUTBaR1UzTnpFd01qSTROV0ptTm1aallqSmpNRGxrTTJJeU56ZGhZ bU13SUUxdgpiaUJUWlhBZ01UY2dNREE2TURBNk1EQWdNakF3TVFwR2NtOXRPaUJUWVcxMVpXd2dU V2x5WVNBOGMyRnRkV1ZzCkxtMXBjbUZBY1hRdWFXOCtDa1JoZEdVNklGZGxaQ3dnTWpZZ1FYQnlJ REl3TWpNZ01UTTZOREE2TURjZ0t6QXcKTURBS1UzVmlhbVZqZERvZ1cxQkJWRU5JWFNCaGRtTnZa R1ZqTDIxbFpHbGhZMjlrWldNNklFRmtaQ0JXVURnZwpaVzVqYjJSbGNnb0tRMjl1Ym1WamRHVmtJ RVpHYlhCbFp5QjBieUJOWldScFlXTnZaR1ZqSUZaUU9DQmxibU52ClpHVnlDaTB0TFFvZ1kyOXVa bWxuZFhKbElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I4SUNBeElDc0sKSUd4cFltRjJZ MjlrWldNdlRXRnJaV1pwYkdVZ0lDQWdJQ0FnSUNBZ0lDQWdmQ0FnTVNBckNpQnNhV0poZG1Odgpa R1ZqTDJGc2JHTnZaR1ZqY3k1aklDQWdJQ0FnSUNBZ0lId2dJREVnS3dvZ2JHbGlZWFpqYjJSbFl5 OXRaV1JwCllXTnZaR1ZqWDNkeVlYQndaWEl1WXlCOElDQTBJQ3NyS3lzS0lHeHBZbUYyWTI5a1pX TXZiV1ZrYVdGamIyUmwKWTJWdVl5NWpJQ0FnSUNBZ2ZDQXlPU0FyS3lzckt5c3JLeXNyS3lzckt5 c3JLeXNyS3lzckt5c3JLeXNyS3dvZwpOU0JtYVd4bGN5QmphR0Z1WjJWa0xDQXpOaUJwYm5ObGNu UnBiMjV6S0NzcENncGthV1ptSUMwdFoybDBJR0V2ClkyOXVabWxuZFhKbElHSXZZMjl1Wm1sbmRY SmxDbWx1WkdWNElEQmhOakJrWldGak5qVXVMbUUxTkRNNU9HTTEKTjJZZ01UQXdOelUxQ2kwdExT QmhMMk52Ym1acFozVnlaUW9yS3lzZ1lpOWpiMjVtYVdkMWNtVUtRRUFnTFRNeQpOREFzTmlBck16 STBNQ3czSUVCQUlIWmpNVjl4YzNaZlpHVmpiMlJsY2w5elpXeGxZM1E5SW5GemRtUmxZeUlLCklI WmpNVjkyTkd3eWJUSnRYMlJsWTI5a1pYSmZaR1Z3Y3owaWRqUnNNbDl0TW0wZ2RtTXhYM1kwYkRK ZmJUSnQKSWdvZ2RuQTRYMk4xZG1sa1gyUmxZMjlrWlhKZlpHVndjejBpWTNWMmFXUWlDaUIyY0Ro ZmJXVmthV0ZqYjJSbApZMTlrWldOdlpHVnlYMlJsY0hNOUltMWxaR2xoWTI5a1pXTWlDaXQyY0Ro ZmJXVmthV0ZqYjJSbFkxOWxibU52ClpHVnlYMlJsY0hNOUltMWxaR2xoWTI5a1pXTWlDaUIyY0Ro ZmNYTjJYMlJsWTI5a1pYSmZjMlZzWldOMFBTSngKYzNaa1pXTWlDaUIyY0RoZmNtdHRjSEJmWkdW amIyUmxjbDlrWlhCelBTSnlhMjF3Y0NJS0lIWndPRjkyWVdGdwphVjlsYm1OdlpHVnlYMlJsY0hN OUlsWkJSVzVqVUdsamRIVnlaVkJoY21GdFpYUmxja0oxWm1abGNsWlFPQ0lLClpHbG1aaUF0TFdk cGRDQmhMMnhwWW1GMlkyOWtaV012VFdGclpXWnBiR1VnWWk5c2FXSmhkbU52WkdWakwwMWgKYTJW bWFXeGxDbWx1WkdWNElERTJObVkzTjJZeE1tRXVMbUZoWTJWaE5HWTBZallnTVRBd05qUTBDaTB0 TFNCaApMMnhwWW1GMlkyOWtaV012VFdGclpXWnBiR1VLS3lzcklHSXZiR2xpWVhaamIyUmxZeTlO WVd0bFptbHNaUXBBClFDQXROelkzTERZZ0t6YzJOeXczSUVCQUlFOUNTbE10SkNoRFQwNUdTVWRm VmxBM1gwUkZRMDlFUlZJcElDQWcKSUNBZ0lDQWdJQ0FnSUNzOUlIWndPQzV2SUhad2VGOXlZV011 YndvZ1QwSktVeTBrS0VOUFRrWkpSMTlXVURoZgpSRVZEVDBSRlVpa2dJQ0FnSUNBZ0lDQWdJQ0Fn S3owZ2RuQTRMbThnZG5CNFgzSmhZeTV2Q2lCUFFrcFRMU1FvClEwOU9Sa2xIWDFaUU9GOURWVlpK UkY5RVJVTlBSRVZTS1NBZ0lDQWdJQ0FyUFNCamRYWnBaR1JsWXk1dkNpQlAKUWtwVExTUW9RMDlP UmtsSFgxWlFPRjlOUlVSSlFVTlBSRVZEWDBSRlEwOUVSVklwSUNBclBTQnRaV1JwWVdOdgpaR1Zq WkdWakxtOEtLMDlDU2xNdEpDaERUMDVHU1VkZlZsQTRYMDFGUkVsQlEwOUVSVU5mUlU1RFQwUkZV aWtnCklDczlJRzFsWkdsaFkyOWtaV05sYm1NdWJ3b2dUMEpLVXkwa0tFTlBUa1pKUjE5V1VEaGZV Vk5XWDBSRlEwOUUKUlZJcElDQWdJQ0FnSUNBZ0t6MGdjWE4yWkdWakxtOEtJRTlDU2xNdEpDaERU MDVHU1VkZlZsQTRYMUpMVFZCUQpYMFJGUTA5RVJWSXBJQ0FnSUNBZ0lDczlJSEpyYlhCd1pHVmpM bThLSUU5Q1NsTXRKQ2hEVDA1R1NVZGZWbEE0ClgxWkJRVkJKWDBWT1EwOUVSVklwSUNBZ0lDQWdJ Q3M5SUhaaFlYQnBYMlZ1WTI5a1pWOTJjRGd1Yndwa2FXWm0KSUMwdFoybDBJR0V2YkdsaVlYWmpi MlJsWXk5aGJHeGpiMlJsWTNNdVl5QmlMMnhwWW1GMlkyOWtaV012WVd4cwpZMjlrWldOekxtTUth VzVrWlhnZ1pqVTRNMkZoWkRnMk1DNHVNVGcwWW1JNE5USXhaaUF4TURBMk5EUUtMUzB0CklHRXZi R2xpWVhaamIyUmxZeTloYkd4amIyUmxZM011WXdvckt5c2dZaTlzYVdKaGRtTnZaR1ZqTDJGc2JH TnYKWkdWamN5NWpDa0JBSUMwNE9ERXNOaUFyT0RneExEY2dRRUFnWlhoMFpYSnVJR052Ym5OMElF WkdRMjlrWldNZwpabVpmY0hKdmNtVnpYM1pwWkdWdmRHOXZiR0p2ZUY5bGJtTnZaR1Z5T3dvZ1pY aDBaWEp1SUdOdmJuTjBJRVpHClEyOWtaV01nWm1aZmRtTXhYMk4xZG1sa1gyUmxZMjlrWlhJN0Np QmxlSFJsY200Z1kyOXVjM1FnUmtaRGIyUmwKWXlCbVpsOTJjRGhmWTNWMmFXUmZaR1ZqYjJSbGNq c0tJR1Y0ZEdWeWJpQmpiMjV6ZENCR1JrTnZaR1ZqSUdabQpYM1p3T0Y5dFpXUnBZV052WkdWalgy UmxZMjlrWlhJN0NpdGxlSFJsY200Z1kyOXVjM1FnUmtaRGIyUmxZeUJtClpsOTJjRGhmYldWa2FX RmpiMlJsWTE5bGJtTnZaR1Z5T3dvZ1pYaDBaWEp1SUdOdmJuTjBJRVpHUTI5a1pXTWcKWm1aZmRu QTRYM0Z6ZGw5a1pXTnZaR1Z5T3dvZ1pYaDBaWEp1SUdOdmJuTjBJRVpHUTI5a1pXTWdabVpmZG5B NApYM1kwYkRKdE1tMWZaVzVqYjJSbGNqc0tJR1Y0ZEdWeWJpQmpiMjV6ZENCR1JrTnZaR1ZqSUda bVgzWndPRjkyCllXRndhVjlsYm1OdlpHVnlPd3BrYVdabUlDMHRaMmwwSUdFdmJHbGlZWFpqYjJS bFl5OXRaV1JwWVdOdlpHVmoKWDNkeVlYQndaWEl1WXlCaUwyeHBZbUYyWTI5a1pXTXZiV1ZrYVdG amIyUmxZMTkzY21Gd2NHVnlMbU1LYVc1awpaWGdnTURFMVpqSTNOV0V3Wmk0dVlqQTRPR05rTWpr ME5TQXhNREEyTkRRS0xTMHRJR0V2YkdsaVlYWmpiMlJsCll5OXRaV1JwWVdOdlpHVmpYM2R5WVhC d1pYSXVZd29yS3lzZ1lpOXNhV0poZG1OdlpHVmpMMjFsWkdsaFkyOWsKWldOZmQzSmhjSEJsY2k1 akNrQkFJQzB6TWpFc05pQXJNekl4TERnZ1FFQWdhVzUwSUdabVgwRk5aV1JwWVVOdgpaR1ZqVUhK dlptbHNaVjluWlhSUWNtOW1hV3hsUm5KdmJVRldRMjlrWldORGIyNTBaWGgwS0VGV1EyOWtaV05E CmIyNTBaWGgwSUNwaGRtTjBlQ2tLSUNBZ0lDQnpkR0YwYVdNZ1kyOXVjM1FnYVc1MElFaEZWa05R Y205bWFXeGwKVFdGcGJqRXdTRVJTTVRBZ1BTQXdlREV3TURBN0NpQWdJQ0FnYzNSaGRHbGpJR052 Ym5OMElHbHVkQ0JJUlZaRApVSEp2Wm1sc1pVMWhhVzR4TUVoRVVqRXdVR3gxY3lBOUlEQjRNakF3 TURzS0lBb3JJQ0FnSUhOMFlYUnBZeUJqCmIyNXpkQ0JwYm5RZ1ZsQTRVSEp2Wm1sc1pVMWhhVzRn UFNBd2VEQXhPd29yQ2lBZ0lDQWdjM1JoZEdsaklHTnYKYm5OMElHbHVkQ0JXVURsUWNtOW1hV3hs TUNBOUlEQjRNREU3Q2lBZ0lDQWdjM1JoZEdsaklHTnZibk4wSUdsdQpkQ0JXVURsUWNtOW1hV3hs TVNBOUlEQjRNREk3Q2lBZ0lDQWdjM1JoZEdsaklHTnZibk4wSUdsdWRDQldVRGxRCmNtOW1hV3hs TWlBOUlEQjRNRFE3Q2tCQUlDMHpPVFlzTmlBck16azRMRGdnUUVBZ2FXNTBJR1ptWDBGTlpXUnAK WVVOdlpHVmpVSEp2Wm1sc1pWOW5aWFJRY205bWFXeGxSbkp2YlVGV1EyOWtaV05EYjI1MFpYaDBL RUZXUTI5awpaV05EYjI1MFpYaDBJQ3BoZG1OMGVDa0tJQ0FnSUNBZ0lDQWdZMkZ6WlNCR1JsOVFV azlHU1V4RlgwaEZWa05mClRVRkpUbDh4TURvS0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQklS VlpEVUhKdlptbHNaVTFoYVc0eE1Ec0sKSUNBZ0lDQWdJQ0FnZlFvcklDQWdJSDBnWld4elpTQnBa aUFvWVhaamRIZ3RQbU52WkdWalgybGtJRDA5SUVGVwpYME5QUkVWRFgwbEVYMVpRT0NrZ2V3b3JJ Q0FnSUNBZ0lDQnlaWFIxY200Z1ZsQTRVSEp2Wm1sc1pVMWhhVzQ3CkNpQWdJQ0FnZlNCbGJITmxJ R2xtSUNoaGRtTjBlQzArWTI5a1pXTmZhV1FnUFQwZ1FWWmZRMDlFUlVOZlNVUmYKVmxBNUtTQjdD aUFnSUNBZ0lDQWdJSE4zYVhSamFDQW9ZWFpqZEhndFBuQnliMlpwYkdVcElIc0tJQ0FnSUNBZwpJ Q0FnWTJGelpTQkdSbDlRVWs5R1NVeEZYMVpRT1Y4d09ncGthV1ptSUMwdFoybDBJR0V2YkdsaVlY WmpiMlJsCll5OXRaV1JwWVdOdlpHVmpaVzVqTG1NZ1lpOXNhV0poZG1OdlpHVmpMMjFsWkdsaFky OWtaV05sYm1NdVl3cHAKYm1SbGVDQXhNR1JoTkROak0yVTNMaTVtWmpJNFpEVm1NVFJoSURFd01E WTBOQW90TFMwZ1lTOXNhV0poZG1OdgpaR1ZqTDIxbFpHbGhZMjlrWldObGJtTXVZd29yS3lzZ1lp OXNhV0poZG1OdlpHVmpMMjFsWkdsaFkyOWtaV05sCmJtTXVZd3BBUUNBdE1UWTBMRFlnS3pFMk5D dzVJRUJBSUhOMFlYUnBZeUJoZGw5amIyeGtJR2x1ZENCdFpXUnAKWVdOdlpHVmpYMmx1YVhRb1FW WkRiMlJsWTBOdmJuUmxlSFFnS21GMlkzUjRLUW9nSUNBZ0lHTmhjMlVnUVZaZgpRMDlFUlVOZlNV UmZTRVZXUXpvS0lDQWdJQ0FnSUNBZ1kyOWtaV05mYldsdFpTQTlJQ0oyYVdSbGJ5OW9aWFpqCklq c0tJQ0FnSUNBZ0lDQWdZbkpsWVdzN0Npc2dJQ0FnWTJGelpTQkJWbDlEVDBSRlExOUpSRjlXVURn NkNpc2cKSUNBZ0lDQWdJR052WkdWalgyMXBiV1VnUFNBaWRtbGtaVzh2ZUMxMmJtUXViMjR5TG5a d09DSTdDaXNnSUNBZwpJQ0FnSUdKeVpXRnJPd29nSUNBZ0lHTmhjMlVnUVZaZlEwOUVSVU5mU1VS ZlZsQTVPZ29nSUNBZ0lDQWdJQ0JqCmIyUmxZMTl0YVcxbElEMGdJblpwWkdWdkwzZ3RkbTVrTG05 dU1pNTJjRGtpT3dvZ0lDQWdJQ0FnSUNCaWNtVmgKYXpzS1FFQWdMVGMzT0N3MklDczNPREVzTXpJ Z1FFQWdSRVZEVEVGU1JWOU5SVVJKUVVOUFJFVkRYMFZPUTA5RQpSVklvYUdWMll5d2dJa2d1TWpZ MUlpd2dRVlpmUTA5RVJVTmZTVVJmU0VWV1F5a0tJQW9nSTJWdVpHbG1JQ0F2Ckx5QkRUMDVHU1Vk ZlNFVldRMTlOUlVSSlFVTlBSRVZEWDBWT1EwOUVSVklLSUFvckkybG1JRU5QVGtaSlIxOVcKVURo ZlRVVkVTVUZEVDBSRlExOUZUa05QUkVWU0Npc0tLMlZ1ZFcwZ1RXVmthV0ZEYjJSbFkxWlFPRXhs ZG1WcwpJSHNLS3lBZ0lDQldVRGhNWlhabGJGOVdaWEp6YVc5dU1DQTlJREI0TURFc0Npc2dJQ0Fn VmxBNFRHVjJaV3hmClZtVnljMmx2YmpFZ1BTQXdlREF5TEFvcklDQWdJRlpRT0V4bGRtVnNYMVps Y25OcGIyNHlJRDBnTUhnd05Dd0sKS3lBZ0lDQldVRGhNWlhabGJGOVdaWEp6YVc5dU15QTlJREI0 TURnc0NpdDlPd29yQ2l0emRHRjBhV01nWTI5dQpjM1FnUVZaUGNIUnBiMjRnZG5BNFgyOXdkR2x2 Ym5OYlhTQTlJSHNLS3lBZ0lDQkRUMDFOVDA1ZlQxQlVTVTlPCkNpc2dJQ0FnZXlBaWJHVjJaV3dp TENBaVUzQmxZMmxtZVNCMGFXVnlJR0Z1WkNCc1pYWmxiQ0lzQ2lzZ0lDQWcKSUNBZ0lDQWdJQ0Fn SUNBZ1QwWkdVMFZVS0d4bGRtVnNLU3dnUVZaZlQxQlVYMVJaVUVWZlNVNVVMQ0I3TG1rMgpOQ0E5 SURCOUxDQXdMQ0JKVGxSZlRVRllMQ0JXUlN3Z0lteGxkbVZzSWlCOUxBb3JJQ0FnSUhzZ0lsWXdJ aXdnCklDQWdJa3hsZG1Wc0lGWmxjbk5wYjI0Z01DSXNDaXNnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdN Q3dnUVZaZlQxQlUKWDFSWlVFVmZRMDlPVTFRc0lIc2dMbWsyTkNBOUlGWlFPRXhsZG1Wc1gxWmxj bk5wYjI0d0lIMHNJQ0F3TENBdwpMQ0JXUlN3Z0lDSnNaWFpsYkNJZ2ZTd0tLeUFnSUNCN0lDSldN U0lzSUNBZ0lDSk1aWFpsYkNCV1pYSnphVzl1CklERWlMQW9ySUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ REFzSUVGV1gwOVFWRjlVV1ZCRlgwTlBUbE5VTENCN0lDNXAKTmpRZ1BTQldVRGhNWlhabGJGOVda WEp6YVc5dU1TQjlMQ0FnTUN3Z01Dd2dWa1VzSUNBaWJHVjJaV3dpSUgwcwpDaXNnSUNBZ2V5QWlW aklpTENBZ0lDQWlUR1YyWld3Z1ZtVnljMmx2YmlBeUlpd0tLeUFnSUNBZ0lDQWdJQ0FnCklDQWdJ Q0F3TENCQlZsOVBVRlJmVkZsUVJWOURUMDVUVkN3Z2V5QXVhVFkwSUQwZ1ZsQTRUR1YyWld4ZlZt VnkKYzJsdmJqSWdmU3dnSURBc0lEQXNJRlpGTENBZ0lteGxkbVZzSWlCOUxBb3JJQ0FnSUhzZ0ls WXpJaXdnSUNBZwpJa3hsZG1Wc0lGWmxjbk5wYjI0Z015SXNDaXNnSUNBZ0lDQWdJQ0FnSUNBZ0lD QWdNQ3dnUVZaZlQxQlVYMVJaClVFVmZRMDlPVTFRc0lIc2dMbWsyTkNBOUlGWlFPRXhsZG1Wc1gx Wmxjbk5wYjI0eklIMHNJQ0F3TENBd0xDQlcKUlN3Z0lDSnNaWFpsYkNJZ2ZTd0tLeUFnSUNCN0lF NVZURXdzSUgwS0szMDdDaXNLS3lObGJtUnBaaUFnTHk4ZwpRMDlPUmtsSFgxWlFPRjlOUlVSSlFV TlBSRVZEWDBWT1EwOUVSVklLS3dvZ0kybG1JRU5QVGtaSlIxOVdVRGxmClRVVkVTVUZEVDBSRlEx OUZUa05QUkVWU0NpQUtJR1Z1ZFcwZ1RXVmthV0ZEYjJSbFkxWlFPVXhsZG1Wc0lIc0sKTFMwZ0Nr ZHBkRXhoWWdvSwo= --_004_PR3PR02MB6169B792A37F7E802A3AD7A1ED659PR3PR02MB6169eurp_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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". --_004_PR3PR02MB6169B792A37F7E802A3AD7A1ED659PR3PR02MB6169eurp_--