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 8A30A40F3A for ; Fri, 11 Feb 2022 04:24:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0893168AF07; Fri, 11 Feb 2022 06:24:33 +0200 (EET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6D7AB68AA6A for ; Fri, 11 Feb 2022 06:24:25 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644553470; x=1676089470; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=gYlv2tBCWVH/uxv/77vkbrxvJNcAiqh3hgNdhaQkLzg=; b=lj+p/m7HJVeY1GOtanEHnnsr1ExchZdNVCmC14Fke8/vZZXcGfqgzjdR wGCzXbUwrPZaX8q4R2ktGZ0pzg+I4d+/MnAqjIPl/7QAKBIRbP6djFW94 pxz55LNgU7r094EYDDNCTiR0iaKAtXNHXeZf0yppm+yx63cZqBCgusLTj rsBnNzbQOahHvGDbOHHz1RKcJq5so5dHn8lUkbDwLE1yVbgCCkqU8IZ58 XQqLGuW8QJpUJ//nyQDTNeZYrTCugdqR/rYYFHJXOAQ2O614FgF9uiw8F 98w8XwtkQXbtbGW6O2UMW/eDRdAvGXQzZvuJ4H1UjV9yjsK+eglcUq2ST w==; X-IronPort-AV: E=McAfee;i="6200,9189,10254"; a="237060523" X-IronPort-AV: E=Sophos;i="5.88,359,1635231600"; d="scan'208";a="237060523" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Feb 2022 20:24:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,359,1635231600"; d="scan'208";a="771965690" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga006.fm.intel.com with ESMTP; 10 Feb 2022 20:24:23 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 10 Feb 2022 20:24:22 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Thu, 10 Feb 2022 20:24:22 -0800 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.43) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 10 Feb 2022 20:24:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AON5i9nz2sUQUH/3+NsoxQTbMaNS3d1eVeaLw8PAIH0CK4LpbQLn/OdTGh/xE4vfO9nDPpcVtyXCFh2hvxJlf+hMAle9Mwz02TMn31O88a604Qxviu+G1oMLztOGdLX45MK4gtmxTGHVyQMUcWCd/52cbgyihebOnbnsuGJEHYR62gPrxVc13M+DscOVPgigkN9tJStnWHmMfsPNmnfcecYXyK4Tcc03jF/c/KMwuCCeFFdfChfLSC9qeXESy3P6O4Q6hlWsQcZki4WubpGz+VVSxr+TfIosD1LGRLrW6PhdvjTta+omisaX3kDlg+XXDYZWJzMl0LQYVoHslHN4Nw== 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=gYlv2tBCWVH/uxv/77vkbrxvJNcAiqh3hgNdhaQkLzg=; b=d86Ho9zLtKFg/yR/JqrfVgEaxYqSPDI6wJBM6tPMPIdWXWZi2KT8rKw9GUjpik5tJN0ozrhdOVRVjvH1+gNoNZN+zXFsm7gF16ChaPZUiV084lhP+FW65JSMpX8w2jNZabbgkTpgKB29Iw8gIkCZjRotF8AxKCqh7NqaAFThAKlN2UYvdvWE5qAbzHmIxoyRWk2VszZrY1x3q7KeWm732jCZWvTuyeVFMtgXR8LNfdY7b8yFhiYERbH4URhno2FuzBeSjHYu2Tb4HA7pnFgtpjkRlV7yx1qvgkpV4YVw/lxlqAXukA805tcC2pcADRdpvpSByLsGxYJ69YM7ConHrQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by BN6PR1101MB2196.namprd11.prod.outlook.com (2603:10b6:405:52::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Fri, 11 Feb 2022 04:24:18 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::d436:c6ab:6e71:8843]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::d436:c6ab:6e71:8843%5]) with mapi id 15.20.4975.015; Fri, 11 Feb 2022 04:24:18 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH V3 2/3] libavcodec/vaapi_encode: Change the way to call async to increase performance Thread-Index: AQHYHJjdyFAqgS2FoEGbuVUvzmJkBayNxUKA Date: Fri, 11 Feb 2022 04:24:17 +0000 Message-ID: References: <20220208030549.340748-1-wenbin.chen@intel.com> <20220208030549.340748-2-wenbin.chen@intel.com> In-Reply-To: <20220208030549.340748-2-wenbin.chen@intel.com> Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8fbabbc2-4061-4b66-38a0-08d9ed165e8b x-ms-traffictypediagnostic: BN6PR1101MB2196:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2512; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jMMzSDOw9BieUK+DnOqZT/C+mFWVQgv0bErVtDaVKrDbctrs8zhiiQkYzlzHMsdyMervPjCo2ZK1Mso/xL39S0XabXa+Q0PfYIbl3gj9HihVlbFzTy/BVdhuvNBveO2nh0S3dSeNKnpinTkSaeNNtIOKUtErLJXArNzd5RvzJcmOZFFoI9SZ37FDyHj0DrTWKNm0G6Y1yxGVlvu5ADRL9so1OcqqC2SGVVCQC+o8w/R6y+LjtdSdbWqF8PDZMyigm9v1eE8pX3W5aIoUfgeeIYFwmIsJydTmPPMbKDJjovSOTFWluVHSlD1Y5UloSACAf7596KbDb9l/vwog7hjQNAUntfJZtX3amhSQrOoVroYZgY7egDbBa2R9dTQ22EIs8G8FvDjungMgMf+XbTHbeZEp09aSxY/2xwzpvfiDS/VT64H4ZApo5H0pKqxZg6l7Iom+ktbIF5+p7zUr/18FAlrvdx5/lUAWwB6Ucm6BXf/xNzgx4SA48w21PV401BDoh0k5t3Yjlq6ERbyN0qqR18L1iAmERAabkdS+F5X1n3mCyNaC7yJNaX9y9pUtS2ANvgEi+AuNf+woBoLbRn3/A12ehgJdWhJXakh+ysHV0FTaGv7vzZ6Af2qJ3GKqtzUmSdGdWwqicmeZHcyOn6iCPPYZcTZIkeRZqZiXE8BoHS4fNuPIzWvZKwsjYaf5ScQ0Ynfs8SxSYqOyOUmUcQUbwHEKbiktrKhzWeGsg+ihNN1Ox4SsXhloOEYnHEjJEncq x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(186003)(26005)(86362001)(122000001)(36756003)(71200400001)(508600001)(82960400001)(66476007)(83380400001)(64756008)(8936002)(8676002)(76116006)(66946007)(66556008)(2616005)(91956017)(38100700002)(66446008)(316002)(5660300002)(2906002)(6506007)(6916009)(6512007)(6486002)(38070700005)(99106002)(43043002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cWxEcWlQdHhUTjVoVzVCVVVvTEZrNzQ0RlZjQmwzbDU1R0RDMCt0Ritkd3U1?= =?utf-8?B?cVZ3SGJhYXJRdXppbkV1YjZuaTJFY3AwdjJDNGtsSzhsWjYxdnd2dDRPSWNH?= =?utf-8?B?KzVBVjJiMFdVb2dPK3VrR2xTeUErYUNBdnBFcmpXOGdlZEhRWkxCSE9BSGc0?= =?utf-8?B?MGZkdDY4TjZxYXYrbnJtZ015dkVQbnFidVAzbVNUaWxWdHk4WFFpZFZCS0hV?= =?utf-8?B?L3QvTHNuQW9mYzVRMDd6c2tNSzlTSWZNOUdjTnFXYWNkMGVFSjJGcVV5OUZG?= =?utf-8?B?N0E0cjFDWTYwbkQwVUttdGNURW9icUFZb2M4UkE5c080ZU4yOGxrQUlvbC82?= =?utf-8?B?RzVrRnRwcUtWaWJTWjZ0QXJpbk1PV093ajFqNEpTdzNCQ0VKOEQwcDJIM2hp?= =?utf-8?B?NTl3MkZRakpGQU9VLzNhU0ozMkVQVC9sTHNObWF2THRDUzNNS3pqbXpMOHZX?= =?utf-8?B?QVAxRTJPTE5ST1RjSzhEU0FRNzRueG5iVDRzRlFPTVZMTGM3SGplYUtUL3ND?= =?utf-8?B?NVcvRjhvTm8wa0EzT3F2Slg2RmhCVnZVVnRwZ3IyYUNVZUVPTElSQVhIclU4?= =?utf-8?B?aWFCN0ZUYnFDOUdWQ1FmdmQ0WldIMGIrV3pNUmt5YjVzQm4zOGJPV0dpUlp4?= =?utf-8?B?YzgzYmc5MWRxMmtKQzdOQmFjanloQXArMUZNd3ZZLzgzd0E1dE1nNFdhQS85?= =?utf-8?B?aEF3S0RlcklhbGtsQ0JSTGszQWJ1M0Z4akNQQmo4TXlwQ2hIQ09GektOYXRr?= =?utf-8?B?VmNyV21PUVg4L2ZFazZkbDFvR0hyUXBrWXFUWE9Oa1VSYnVPTStuZ0tnVERG?= =?utf-8?B?TmZBa2FqSW1WdUJqOGZ4c05va3RJTVNPREtXaWNNV3NXV1Qwb1RRR1dOWklO?= =?utf-8?B?cTFDcWJSSFkvTDhwelc4bUU0SDF3YlRvM1h6VEdqc2Jhdm9iY0wrclZjSjNw?= =?utf-8?B?cjRRb2JTcTdBc3JoYmJBc3BjNzZET1NsMGF0dFd5V1RVNXVBalVVblhKZjNp?= =?utf-8?B?OFY5MU1UdGIvdURHNmkvT1ZpZDdHZk5JMk03bHhyN0ZJQzV1OGRqQ1ZGSDNy?= =?utf-8?B?RTA2TDFySVRzZnVnMUZ2ZEEzWnhRMDY4OFV2RldtK3hMS1RVWWl2SHhJTXJQ?= =?utf-8?B?Um9BTjQwUzF6aDRNOFBWaU5rL2d1K2VUNHdDN0JkY3Z3eDEzK0srQ0ppQzVO?= =?utf-8?B?cmVzb0tYOG9EZER0RkkwSm9lOVJ3SUYzYjhhSklJVCtPR3g3QzBmN3NiMUdv?= =?utf-8?B?V1NpRDVsUDhOZmFsNENwSGxOcU1OSFBheVR4bTZJQThkOSs3U0Q2dnlNWFJ0?= =?utf-8?B?N0VxYUtqTWluczRFYitsT2VWVjdjV1NMUWlQQlQ1RWV2SDh2RGtVUkI0UzNS?= =?utf-8?B?QVIzY3lwQVgxdk9JSnhrbnB1TFI4ZWQza0xmdjlVakg4VnVxL21kUkkxa003?= =?utf-8?B?NExvVldsdHAyaVI2eVJmMitKMVlmUVFxM3JjWTFyckcybytXeC9qMStxUUN2?= =?utf-8?B?Y3BiMEcxSTZSK1B0cmN6KzVvOWNhZlNyMEYxcmZ5OGZIRHp1YThMYU5QcE1E?= =?utf-8?B?RUVuS3ZSd2RBL29ZZEpEMW5VWTB2YUlKWUdBNzJFQjlQa0xCWlFESzRVbFho?= =?utf-8?B?RmVxZUpUU011bjg5bytXTlhpdkYwbjA1Z29ZZ1BZMFVYdWFtV0VYZUdwVDJw?= =?utf-8?B?d1RxcUFYQVBpemxWbnZpOUFKT0FobVZieWd1ejgrblUxSUVvMWlZOFEvV2lH?= =?utf-8?B?MmhKVHhacy9BUDhwM1lwUVp0NnBJaUhTQWI3NldzZWxQakh5d2NmYStockFy?= =?utf-8?B?bUN5RVNmc3NFRmFnZkhZSnpSNHpaM3dENXdMKzhSMUcwQlZST2IzLzRBMFhU?= =?utf-8?B?cHVYMzNjYi9TTi94dS9aYm1XVDd6UGZlSGswR24rUUxueGczRE9hSkpTM0k2?= =?utf-8?B?TU5NbGU5MnFURVdRSkFPQ215YTlqbTNCdjljS2NHVmo5Rm9yeWVNM2pKRkxp?= =?utf-8?B?UTlKMjVobnFPcVB6UDFGcnk5OEUwcndLakZFMGx2VTB5RnlFbUk5REpoM3FD?= =?utf-8?B?RGRXSElCUGl4Rmg1WGpDaXlLWkY4YW4zTTh6clV5UjVRdWg4anAwcVNPcm1M?= =?utf-8?B?RFprcmRhVDc0VTBKY2F0OU9ISjFEVWEzNTRzdEhTaE9ISWd1Tnh0SUNUWk94?= =?utf-8?Q?SVtNGrg0IU8K6f8AZt+i9W0=3D?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fbabbc2-4061-4b66-38a0-08d9ed165e8b X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Feb 2022 04:24:17.9486 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +8Fp2hyfw1JOsaW2stRSeTH8a3V0/x2jfTJDbkjSEXygAdxdzgoe8rAwfmwPAFNAuJwggE2H/Nik2M+kwAuE2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1101MB2196 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH V3 2/3] libavcodec/vaapi_encode: Change the way to call async to increase performance 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 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: On Tue, 2022-02-08 at 11:05 +0800, Wenbin Chen wrote: > Fix: #7706. After commit 5fdcf85bbffe7451c2, vaapi encoder's performance > decrease. The reason is that vaRenderPicture() and vaSyncBuffer() are > called at the same time (vaRenderPicture() always followed by a > vaSyncBuffer()). When we encode stream with B frames, we need buffer to > reorder frames, so we can send serveral frames to HW at once to increase > performance. Now I changed them to be called in a asynchronous way, which > will make better use of hardware. 1080p transcoding increases about 17% > fps on my environment. > > This change fits vaSyncBuffer(), so if driver does not support > vaSyncBuffer, it will keep previous operation. > > Signed-off-by: Wenbin Chen > --- > libavcodec/vaapi_encode.c | 64 ++++++++++++++++++++++++++++++++------- > libavcodec/vaapi_encode.h | 5 +++ > 2 files changed, 58 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c > index b87b58a42b..15ddbbaa4a 100644 > --- a/libavcodec/vaapi_encode.c > +++ b/libavcodec/vaapi_encode.c > @@ -984,8 +984,10 @@ static int vaapi_encode_pick_next(AVCodecContext *avctx, > if (!pic && ctx->end_of_stream) { > --b_counter; > pic = ctx->pic_end; > - if (pic->encode_issued) > + if (pic->encode_complete) > return AVERROR_EOF; > + else if (pic->encode_issued) > + return AVERROR(EAGAIN); > } > > if (!pic) { > @@ -1210,18 +1212,44 @@ int ff_vaapi_encode_receive_packet(AVCodecContext > *avctx, AVPacket *pkt) > return AVERROR(EAGAIN); > } > > - pic = NULL; > - err = vaapi_encode_pick_next(avctx, &pic); > - if (err < 0) > - return err; > - av_assert0(pic); > +#if VA_CHECK_VERSION(1, 9, 0) Needn't check the version at compile time because vaSyncBuffer is not called directly in the code below. > + if (ctx->has_sync_buffer_func) { > + while (av_fifo_can_read(ctx->encode_fifo) <= MAX_PICTURE_REFERENCES) > { > + pic = NULL; > + err = vaapi_encode_pick_next(avctx, &pic); > + if (err < 0) > + break; > + > + av_assert0(pic); > + pic->encode_order = ctx->encode_order + > + av_fifo_can_read(ctx->encode_fifo); > + err = vaapi_encode_issue(avctx, pic); > + if (err < 0) { > + av_log(avctx, AV_LOG_ERROR, "Encode failed: %d.\n", err); > + return err; > + } > + av_fifo_write(ctx->encode_fifo, &pic, 1); > + } > + if (!av_fifo_can_read(ctx->encode_fifo)) > + return err; > + av_fifo_read(ctx->encode_fifo, &pic, 1); > + ctx->encode_order = pic->encode_order + 1; > + } else > +#endif > + { > + pic = NULL; > + err = vaapi_encode_pick_next(avctx, &pic); > + if (err < 0) > + return err; > + av_assert0(pic); > > - pic->encode_order = ctx->encode_order++; > + pic->encode_order = ctx->encode_order++; > > - err = vaapi_encode_issue(avctx, pic); > - if (err < 0) { > - av_log(avctx, AV_LOG_ERROR, "Encode failed: %d.\n", err); > - return err; > + err = vaapi_encode_issue(avctx, pic); > + if (err < 0) { > + av_log(avctx, AV_LOG_ERROR, "Encode failed: %d.\n", err); > + return err; > + } > } > > err = vaapi_encode_output(avctx, pic, pkt); > @@ -2555,6 +2583,19 @@ av_cold int ff_vaapi_encode_init(AVCodecContext *avctx) > } > } > > +#if VA_CHECK_VERSION(1, 9, 0) > + //check vaSyncBuffer function > + vas = vaSyncBuffer(ctx->hwctx->display, 0, 0); Buf id 0 (the 2nd parameter) might be valid, however we needn't synchronize with a real buf here, we may use VA_INVALID_ID instead > + if (vas != VA_STATUS_ERROR_UNIMPLEMENTED) { > + ctx->has_sync_buffer_func = 1; > + ctx->encode_fifo = av_fifo_alloc2(MAX_PICTURE_REFERENCES + 1, > + sizeof(VAAPIEncodePicture *), > + 0); > + if (!ctx->encode_fifo) > + return AVERROR(ENOMEM); > + } > +#endif > + > return 0; > > fail: > @@ -2592,6 +2633,7 @@ av_cold int ff_vaapi_encode_close(AVCodecContext *avctx) > > av_freep(&ctx->codec_sequence_params); > av_freep(&ctx->codec_picture_params); > + av_fifo_freep2(&ctx->encode_fifo); > > av_buffer_unref(&ctx->recon_frames_ref); > av_buffer_unref(&ctx->input_frames_ref); > diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h > index b41604a883..d33a486cb8 100644 > --- a/libavcodec/vaapi_encode.h > +++ b/libavcodec/vaapi_encode.h > @@ -29,6 +29,7 @@ > > #include "libavutil/hwcontext.h" > #include "libavutil/hwcontext_vaapi.h" > +#include "libavutil/fifo.h" > > #include "avcodec.h" > #include "hwconfig.h" > @@ -345,6 +346,10 @@ typedef struct VAAPIEncodeContext { > int roi_warned; > > AVFrame *frame; > + //Store buffered pic Better to keep the coding style unchanged, always put one space between // and your comment. > + AVFifo *encode_fifo; > + //Whether the driver support vaSyncBuffer > + int has_sync_buffer_func; How about to check whether the driver support vaSyncBuffer in the first patch ? Thanks Haihao > } VAAPIEncodeContext; > > enum { _______________________________________________ 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".