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 8DE5845202 for ; Thu, 12 Jan 2023 06:21:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0736A68BC7D; Thu, 12 Jan 2023 08:20:58 +0200 (EET) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C973068BBD5 for ; Thu, 12 Jan 2023 08:20:50 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673504456; x=1705040456; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=JwiDCrx7/rEIbHrVpbh64XetGv4uA/pf6XCkKlwOPQo=; b=X9Exb7TRwbawKLMxK2U49jnMvhwcAv8rJ09NMfxEA3HHkyHiUi2L8VRQ o1512gla8TDTgdaxwkmcJGdT4tl4MyOhjnbPX9VarDSVhpqmyGgMftMfC BdbW+jyUM423ycGWJED6wyjA4YGiXwlm3KDcGfPKVgkf3+j/zlB+YLLRO Wvf1JDIu8Hhw4fmgBMtbPzi00A3g9pjDCvsEoB3M9RSHxOrSB8DWv9LCi thiLZwhnFKKsUbukk02qKp6VUHRyMMh2GZZW2h0kJEBYIJYylaYWSDfD3 yi4fLoZNAL8wF69lDkmVEqbUq5vNxnqjlwTbNIXjguq5u9RYuEJkPYwtz A==; X-IronPort-AV: E=McAfee;i="6500,9779,10586"; a="385937906" X-IronPort-AV: E=Sophos;i="5.96,319,1665471600"; d="scan'208";a="385937906" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2023 22:20:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10586"; a="690009899" X-IronPort-AV: E=Sophos;i="5.96,319,1665471600"; d="scan'208";a="690009899" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 11 Jan 2023 22:20:47 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Wed, 11 Jan 2023 22:20:47 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Wed, 11 Jan 2023 22:20:47 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Wed, 11 Jan 2023 22:20:47 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.177) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Wed, 11 Jan 2023 22:20:46 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IHvrghWPt88+0gb1bB30mHlTdpHGo2Ucx65nnbYNPP93yYVujBAAmf6ER0LgaPWA0QgEhqkyNOI5gmjb2M/+sGdZI5rRGCFHcSjHYhLW4qH/qMDAVMEVa/ZVUleakxkzMJ4gJrWwAyTxUT+rJvHWFAUdvXPEuC49/XNlE/6DUZ58OKAa8QDhodqqbCdybRIkgq+KeK4WWZzla7AxXXYhEKKISlVz0iPyj+skLBhaYrnzKgyuemn6ew5wigUPDp3gj84qgGoR37rEgN2tMdQad/pkTmp7cuhQVRB1mG4bFc+sC7eZE4qJSqhI5FShLASawiJ/dgZkFLWUhMKts1/nBA== 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=JwiDCrx7/rEIbHrVpbh64XetGv4uA/pf6XCkKlwOPQo=; b=mpN1yk88tiaM71+1jHRSmziSlOy4PS5iyAtQw4vtsTX70j2c7TyggzWd+Ve0XUOB0jvWIrLxZVs9cFgDH6rU2OLBzeiS6fESKYl4EHU4mRbxPjwu7zd4ZHEt2+iYKDqi2I240bbA5fH1dwyv1arwiY+spJs7Hh7GU7u4o9sQgeU3HnUwmfe8dxWJIygmH8MOZnQSGgrKGOLtLf2tZmGT0Hg8137o/vbvEllzBJHFKqsNXKqkYRUYd6TEZmWc4fPxnR9GRM3ERTPltqXpwN2BriaNNI6yTYazd4IrIUv1mGle3gMEYHUTsNSXBOitG/PTUCMLfHc7iyrTwu7W5Pykaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by PH0PR11MB5830.namprd11.prod.outlook.com (2603:10b6:510:129::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Thu, 12 Jan 2023 06:20:45 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::e3ef:177c:4008:7ee9]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::e3ef:177c:4008:7ee9%5]) with mapi id 15.20.5986.019; Thu, 12 Jan 2023 06:20:45 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 2/8] lavfi/vf_vpp_qsv: handle NULL pointer when evaluating an expression Thread-Index: AQHZJjqRt4i9GcIaFEiARF3MP+pWvq6aT4qA Date: Thu, 12 Jan 2023 06:20:44 +0000 Message-ID: <34b9ffc17012a752a69c9874dc31c68b86d30aac.camel@intel.com> References: <20230109071210.1829699-1-haihao.xiang@intel.com> <20230109071210.1829699-2-haihao.xiang@intel.com> In-Reply-To: Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5515:EE_|PH0PR11MB5830:EE_ x-ms-office365-filtering-correlation-id: 5ac49fde-7aee-4ab5-acf7-08daf465236f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oBmPGmqnxPCqlcInWEs85HkT0ImB0YSPrxQFd0Ylrh4WmfRYrDQ83GkpUvx4tVVAsUZ6oe7MGMX8El+bKi+fThcRSE0ul6NET77g5vsGfd+4VyGqKsdHVHD3TRXomX5UNQIvMqkP5oHNhu+cA3CZ7LBtzk82cKdEdkQtxxOLDvueOviHGyvici6qKwyoq3Qumbkp4vrztl0Bz5sK4N8cnk/GmHLHp1SA/CA82WjBe5gLS+4m4oqD4qP1fMTnYAd7MZVnKD06H7KyuvisHObSWUazK9b/YFKcLNQnCIop6LnRC/l0LFCWWVBXQ3SmlD2iXU8mToZ9i5rBKCWAVV+VSf6IwncsKjhprhimHxqahKM6vfPAgfCN8k2/X6QZhoHYEX25Ujvj/UTjcFSuUqe/hviheL7EsFXldWtlMA9A+ZKgi6XH1wBr/3BTM79ampZoIQEaeBVo9rXKHgOvGVHqycUAqM2zixYqeYhzR2T7E90V4QUTyowNqyJgjM+nvcZIzvcCwWaAVZRhFHmTrLemdc1b1ITndrs0wJD8A0zKySZPBD+pJzMaDnZAeMNMpIJ6MEVCeHCdZh4rG9Bq8J/fFEI6dACwTagfmy0nxRB6yC6uSof2RjZ7MDD1n483/XVvMFJPLCPJjfSMPLavT80Wsuway303TFUuXi8JENOHDcA5t/9XRwbI7I/MnFTFGiXtYpgsu2Oyrw9mTFup0F2j8O8mMFgocoK9nUuZmj7KZ9o= 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:(13230022)(346002)(376002)(39860400002)(366004)(396003)(136003)(451199015)(66899015)(36756003)(38070700005)(83380400001)(86362001)(76116006)(91956017)(66556008)(66446008)(66946007)(8676002)(41300700001)(66476007)(38100700002)(122000001)(82960400001)(6916009)(6486002)(6506007)(186003)(26005)(64756008)(71200400001)(966005)(5660300002)(8936002)(316002)(2906002)(478600001)(2616005)(6512007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cmNsVmJ5aUYrWFpKUEhWaWM2ekcrMyt1cEFnVUFkS1pQVXZNOTlSVktnSjdQ?= =?utf-8?B?NGFCbkVIYWdLRUxVRFFGMTBoRmRXVXh3UzJsMkYrNUxNWjIrNzJCa0RlV0Fn?= =?utf-8?B?aGJoSzB0aHo0M1pyOXU3ak5LdFp4T0hqN2RCZmswWHBNZFFWeG1vZXd0bDAx?= =?utf-8?B?clM0R2lkNHRGSXZlTjhlUmJ4K2VVWFptR2V3Mk91VnNCdzBtL092Y3FjbFFy?= =?utf-8?B?MHlrWnJPaGxSc3JBdVdFdC9GcFpnRFNDVDNodjZMeTJ6NEt0akpXNnNKMERB?= =?utf-8?B?blplKzR6N0pQdXgwdE9sMlRhRUdqdXJrTVZ1cGJHYy9nSDBTRWVzajlPa1lr?= =?utf-8?B?elZ5bXZHVEM1WElVNDFodnlLbVQxSFlPTGw0SmN5Y1lWaTdLeEFZOHJnSHRk?= =?utf-8?B?eTBkT3Z3ZVV5MklMTXdmS3lvNUtmbmY3ZnR1eFk2QVpnOUxMNVcwd3FaaEtp?= =?utf-8?B?SEQvejd3SjFEeExqeEIzK3RUVHhFTStwMk9ram0xK2tLc2prdmg1enVtMlhV?= =?utf-8?B?MUR1dS9pUU9VODNNNDJKUW9pVWR3STBsclcyZUxoZEVTVk5yWWRoTlp3RWxW?= =?utf-8?B?MGtwU2NtMWRNMVBPTnpnbU9WYzYrWk9BNGlZMFQ5MzFtakFaZUxaeFJweXFy?= =?utf-8?B?Rkg2bG5NRDU2TTI0MG51cmZ6cnNFRnFSVXZpQUM3dDdtdkNoMDRvTk55Uk9B?= =?utf-8?B?ZUFVWU5oSGlSNEdHdUtCZWZwYmFLTCtDNEJHZmdlem4yVkNPazU4UGM0U3U2?= =?utf-8?B?dyt5OUM1UWxocC9jeHUxZ0Z0cXhxVTJqVDM0N0kwa21KanRKUkM5YkNlUkh3?= =?utf-8?B?eVV5UWQ3WkxrRDFNZk82N1VpVlVvdTlLemV6NzcrM1g1OVdWc3k4TEdNT2xo?= =?utf-8?B?MEF3emx2ekkyZG1scGRDQUhacEtDczBHNyt0eURKNzhVZUJEMEgxVThzRUlI?= =?utf-8?B?TzBKTElDdjFzcytLaUVXOHdndzFESHFBazFySWxNejZ0dEkvVmZaYnJkQ25L?= =?utf-8?B?RkhtRkIvS2Q4M2JBU0dXVkgyYndFWHpXVmhjTzlvS3NzRVNzKzNjZ2RHdE1v?= =?utf-8?B?SjF4amNnc1FOaUNYK2Q5T3o3Zlc3T2JVN2E4aTAyaWdENjlHNUhjN1M1ck04?= =?utf-8?B?dkV1WVpXUFIvZzUzeUVtd28xOFV0a0YyTWJJN25VU0dQZENSbnNEeElKQTFX?= =?utf-8?B?d25McGV6aUFGbVBqcEZRZ2lRWDNZaE1LTllhVEVlbml5OXp6c0pvMTNvSmlM?= =?utf-8?B?SlU5QXdhM2MvYkMwUERPUU11Z0NUM0x2QU9WY3lKbURxUFcrUUlzTjhnOWtM?= =?utf-8?B?cFczWGpsOEZoQUJ6MXlXYUFFK2QwdEYwaHBvMWJ2Y0lnQW1nUUd4UXR2ZjV1?= =?utf-8?B?ZGM4Znh4SWY4aDBOdFJDeGlLN29jU1R5c3ExSmZDVHZMbWNjVUcyWnlra1ZB?= =?utf-8?B?SVczTmlNajFqZ21zVTMrL3FQc09BU0RCaE5XdEVOVFNRc2JOS01pdzI3USt5?= =?utf-8?B?YUd6eEgzWDlmaGlmZkxSZUVDdmxyd1UwWERZK1VGT1NxUXdsTkZzdG9mMEVH?= =?utf-8?B?R29lMEwwSitueDdxVzQ5dXMvaXRmUHI4cE8xdHBWMkE2OUFHcDNDV2ZOOUxn?= =?utf-8?B?U2hVZlBGd2ZCQklvckwwNzZ4aE1LM0VuUk9RY0oxbmJsNzNuam96Y1pDdkRS?= =?utf-8?B?MFp5RHNGRlVPRVV5dERuZWJvTUsyZUpXWTFscVpXOW5xUzY5RTh6cmd1ejZu?= =?utf-8?B?WFAybGZ0UG4rc2IyQWRxTWxBM2UwOXJBRFVkVzZxdGkwYkNNV1VuZFpGOGlW?= =?utf-8?B?QTR2bEYxV2lLNzQ1OXNlRmtWL2VWSDZPVElya2VtcFRuc2tORW44WXZUWFJj?= =?utf-8?B?MEQ3QVJrMlJXQUtKMEtLQi9Cd0hiVFVGNnJZQjNSUkcrNmdUcUlKRFFGVVVT?= =?utf-8?B?VVVPdUVlNnozVzJaZkZxVU9yd00xVHBMZlN3dG1zSDVOdytLcVJmS1NDM29N?= =?utf-8?B?RytjRVJPR1NKZjBVZmltUFU1cGJmTTNjdWlBSDByR05mTkFQaURhc1RLQzcw?= =?utf-8?B?QnFQcUdHUHhjbGhsdXNaclROa0tLZmp0SHJtYXQxOHN4UGdhU2srQ3hZMWs1?= =?utf-8?B?eVord1h3TWhsblRhTDQvYjhLWG9STzVZK01ibXJRNjJKTHQreCtJb3RrWnBR?= =?utf-8?B?bUE9PQ==?= 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: 5ac49fde-7aee-4ab5-acf7-08daf465236f X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2023 06:20:44.9275 (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: EY+tT97/7KdWtz/bDzIXb0k1FRg8Rw4w6HzskhMRDwFwCPKb3Iu4mnmoQBwp2vbMkquCQ0rEZ41oabbgBvQbYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5830 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 2/8] lavfi/vf_vpp_qsv: handle NULL pointer when evaluating an expression 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 Do, 2023-01-12 at 05:01 +0100, Andreas Rheinhardt wrote: > Xiang, Haihao: > > From: Haihao Xiang > > > > This patch provides default value if the expression is NULL. > > > > This is in preparation for reusing the code for other QSV filters. > > > > Signed-off-by: Haihao Xiang > > --- > > libavfilter/vf_vpp_qsv.c | 36 ++++++++++++++++++++---------------- > > 1 file changed, 20 insertions(+), 16 deletions(-) > > > > diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c > > index 8d4227f841..3a0a395732 100644 > > --- a/libavfilter/vf_vpp_qsv.c > > +++ b/libavfilter/vf_vpp_qsv.c > > @@ -172,14 +172,19 @@ enum var_name { > > static int eval_expr(AVFilterContext *ctx) > > { > > #define PASS_EXPR(e, s) {\ > > - ret = av_expr_parse(&e, s, var_names, NULL, NULL, NULL, NULL, 0, ctx); > > \ > > - if (ret < 0) {\ > > - av_log(ctx, AV_LOG_ERROR, "Error when passing '%s'.\n", s);\ > > - goto release;\ > > + if (s) {\ > > + ret = av_expr_parse(&e, s, var_names, NULL, NULL, NULL, NULL, 0, > > ctx); \ > > + if (ret < 0) { \ > > + av_log(ctx, AV_LOG_ERROR, "Error when passing '%s'.\n", s); \ > > + goto release; \ > > + } \ > > }\ > > } > > -#define CALC_EXPR(e, v, i) {\ > > - i = v = av_expr_eval(e, var_values, NULL); \ > > +#define CALC_EXPR(e, v, i, d) {\ > > + if (e)\ > > + i = v = av_expr_eval(e, var_values, NULL); \ > > + else\ > > + i = v = d;\ > > } > > VPPContext *vpp = ctx->priv; > > double var_values[VAR_VARS_NB] = { NAN }; > > @@ -209,30 +214,29 @@ static int eval_expr(AVFilterContext *ctx) > > var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; > > > > /* crop params */ > > - CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > > - CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h); > > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w, > > var_values[VAR_IW]); > > + CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h, > > var_values[VAR_IH]); > > > > /* calc again in case cw is relative to ch */ > > - CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w, > > var_values[VAR_IW]); > > > > CALC_EXPR(w_expr, > > var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > > - vpp->out_width); > > + vpp->out_width, var_values[VAR_CW]); > > CALC_EXPR(h_expr, > > var_values[VAR_OUT_H] = var_values[VAR_OH] = var_values[VAR_H], > > - vpp->out_height); > > + vpp->out_height, var_values[VAR_CH]); > > > > /* calc again in case ow is relative to oh */ > > CALC_EXPR(w_expr, > > var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > > - vpp->out_width); > > + vpp->out_width, var_values[VAR_CW]); > > > > - > > - CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > > - CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y); > > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x, (var_values[VAR_IW] > > - var_values[VAR_OW]) / 2); > > + CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y, (var_values[VAR_IH] > > - var_values[VAR_OH]) / 2); > > > > /* calc again in case cx is relative to cy */ > > - CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x, (var_values[VAR_IW] > > - var_values[VAR_OW]) / 2); > > > > if ((vpp->crop_w != var_values[VAR_IW]) || (vpp->crop_h != > > var_values[VAR_IH])) > > vpp->use_crop = 1; > > Does this add runtime checks to cases where there are not necessary? No. It is irrelated to runtime check. It is used to make sure each variable have a right default value even if the corresponding expression is NULL. E.g. vpp->cw is NULL when we re-use functions and data structures in vf_vpp_qsv.c and qsvvpp.c for deinterlace_qsv filter. Thanks Haihao > > - Andreas > > _______________________________________________ > 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". _______________________________________________ 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".