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 0995B426E1 for ; Sat, 25 Jun 2022 02:47:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 86F0B68B788; Sat, 25 Jun 2022 05:47:44 +0300 (EEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2EC6F68B766 for ; Sat, 25 Jun 2022 05:47:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656125262; x=1687661262; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=JFBXaf5Dsj4mB2A5AP90B8VOmVaahweQ4XAVTm/wC/Y=; b=QSBJBUkrLE4YelkcRnOfJIiUj1oxPLhuCEtA/0S2R27at9lP5AkzEoUs xT1O2nL1zigzxT8RjX7tp2t0y/5T048hKaC/yA/UBHox4qmmarEokgU3w RJU+ejqUbg4jQeJPIOf5v4iyYVNpwkRhzDUddRdR3rMjAgupOzptTTqGs w3xXvX50X0gushPrJDFj73WznSyw3/CjP3EiZeayEzCBnq68hr88Srxz0 YPYpxysiQ5RsQcPXcdkgkECZadFm3vxUsR+g5GBBZECTESmRaPpRGQuLw zXokJcAYtNGIaFN/5KBGhnDyaT2TiOVCyGQ6tlGtlArL3jMTW8UToGeCa Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10388"; a="345140713" X-IronPort-AV: E=Sophos;i="5.92,221,1650956400"; d="scan'208";a="345140713" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jun 2022 19:47:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,221,1650956400"; d="scan'208";a="586794995" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 24 Jun 2022 19:47:34 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) 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.27; Fri, 24 Jun 2022 19:47:33 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Fri, 24 Jun 2022 19:47:33 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.44) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Fri, 24 Jun 2022 19:47:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hW4Zi7J7szzzganO5CkOf4pMBBJortNBZg0PsYLvEtUu/Dj770ymHnKqCs6w/LrlwH45fO9ToZxfuQ6bGq5t96O2wOJL0G7HDHVPtlSGhGNrcAV6Q+yDFkjQbgpxH5mt0RBkOtQJxOMC5b0xzLhzBtCQwU2Wjf5lWJIjxmamvCfeS0DRITCTtO7WeWSjQ+WD2esAHkZM2z/VhfYMjVNTtZa3e9MEDhAEEMrwWVh/ub8nc5QvdbBTzjqHnUDXctkClp+4bp2BbWz8F2kt9tOMXgcPqIcc5gPtsgi9cXwp/6sXM4a7DMP2Dy9jsRCaLvfwt8x2F+GMbjvmBKRVKaOoYg== 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=JFBXaf5Dsj4mB2A5AP90B8VOmVaahweQ4XAVTm/wC/Y=; b=lhVFvP037+lr+Xx17Jtl1Mmzr348D4k93PXbunqw9xDrEyM4cRJdU4uBFXNszEJLaYOJEEBK28OaOLU7p/NU04/dEAzy1tS0RWpNqq3g6LbWEcWz6360Gwmjwtjj5ytefYk+I6wjxtTQxFMmXZQU+LT5xC/+3AbNJK/cb6yvbURIhbVs/MYPkpxJLZsVN0gOEZLmnhNdqDMP3wEHNXAlzfMc26c6LydtLsdc7ZA8E3fu8J4HOVIEGkzEW/V2TNvStrIFas1iRUxHQl2GyMKPjDVfG0b57Maamx8wO88mY2S51USNZm/xckpGzjEdBmqs6mZQqzh9GvoDzSUFbq5kTw== 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 BYAPR11MB3688.namprd11.prod.outlook.com (2603:10b6:a03:f8::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.20; Sat, 25 Jun 2022 02:47:32 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::f977:9a9f:bad7:d3ce]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::f977:9a9f:bad7:d3ce%5]) with mapi id 15.20.5373.017; Sat, 25 Jun 2022 02:47:31 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3] libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime Thread-Index: AQHYhsNfr2lES47DE0az75T1BtC4la1fbkwA Date: Sat, 25 Jun 2022 02:47:31 +0000 Message-ID: <71310f29a209244fef788ab64492f5efedd1c0d4.camel@intel.com> References: <20220623053242.360909-1-wenbin.chen@intel.com> In-Reply-To: <20220623053242.360909-1-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: c102ea83-40e3-4b11-9fe7-08da56550d1f x-ms-traffictypediagnostic: BYAPR11MB3688:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BwLbwL3RdLfEm6GZTU4I/l320it3u/ncRUXaEoVK27imhLmO74E0VGvDEb3VvOa2BDoJKiIO86ToRFFw2K4ugnHnHFnCBvEnXa/TpJ6yI3S6WKGZ09Kkib4CYJ9r63tIculfUf4TLzYY8bLTdodIb4hKoqg6MRK6cg4R9Fh83VG/XvH9LT3nCo2uwet6Cyl1ylrceqIQvbe82oXtaD0PbcBwdITXFnao4exjv6pKOibbaf1uTd+7zK2xXxbqc/vBo6aNYpNWwB2bYw6keh1f1ah10LbiASrr3YwaJy0XJwlsR1zGCK7ycnqhi2yRiV6XVnZZcRv1oAgiq+BZsTd4N8+bCnBadNAB9R0em2Tp81R5eX+4Z6AP43i22/lXmIVXvQLo+c4nYSzgusjJl83w20BZ/4o+/Mydf+2D7Y5JBCrm/HQCPGERbdWc4m56M8hAiC7vCQaLgAOdj+4C9Ltow4NQOph6CpIe6eYVYRSSB4v62XlUXbrkvsNlQj89f8M5ZX4zRYYoVY+P5jcpfcrSesu0hQviZG1fL3f/vcS2F8cjts3gj3b6por5VXUMsW6RPdgIbZg2tOhaCwOhpIBTt30rPKALseV1QH4sHcHVL5rICuf+MohHYrSwD+Yq/5/jAKFSOHmAv+ZXcT07uE0zcYEMIHBhwb2DFOxsL1ZcVQ5OMHvHUhWKL8hxvdAO7B1ZdYMIY1kbEDvz8ua07oX0np4OiAv8a3eArlMPp/bHpkiNlgJKRhYNdgMidj+CvRv/o/RwOnAXFLcAocKiOboDYU+CjDxVoHuMy1zUPDRrY5Yqv5jzhpQPadjy5bqv7/SP4pvW4in/4P+VfyGV089P4Q== 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:(13230016)(366004)(136003)(396003)(39860400002)(376002)(346002)(83380400001)(38070700005)(478600001)(6486002)(36756003)(5660300002)(122000001)(186003)(2906002)(76116006)(66946007)(66556008)(66476007)(91956017)(66446008)(64756008)(41300700001)(6916009)(316002)(2616005)(86362001)(8936002)(6506007)(71200400001)(8676002)(82960400001)(38100700002)(26005)(6512007)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c2pvZVFoWEE3dDhhT3RBS0VmUXU1REEvN0NuVUlNVkRoU2ZLdXZCbjJ3K3pz?= =?utf-8?B?c2ZiakU1a2pONkdsR094dUJlRFRyQjMyR090b1Q1V2laRk9xam1MMEpQTGtP?= =?utf-8?B?SzVGajVUU05RZTlsMHR1VGZWOXAzS1cwMGRNM2w3bjR5d0pCRDJ2SUlVRW85?= =?utf-8?B?bTVGSlUzS0JGdmdkd2lEUkY0QjhadDUzRXZFbld4QXFSRmxXeEJKSFN6OElH?= =?utf-8?B?anpNWWtsOGdsRjltcTRwQkl4VnFzTWh0UDZwSEdoUWFMM2xWZHZkWEdkSmRa?= =?utf-8?B?Z3hObGRiZjlyUlhueFNuTUsyNEdXSFJkaXhIWGlWUTB5cDQzdGRwZFFhakFx?= =?utf-8?B?NVJXdk9ZeEhBUUFlazJYeDNEY1pWMEo3SklUWEZsU2ZyMkd2RmdxbEFpRC9Q?= =?utf-8?B?SUh2NHN0MkFQdGdLcEZ3N2VMMjYvTWVNQy9DcytqM0p5S0k0R3FPYytoRHRH?= =?utf-8?B?N3hnLzF6THVGaGxQYmdFRkFSZUdGRDI1aDN1Z2dTMVYwQTFJUkR4RjVwOWxv?= =?utf-8?B?QWFzc3ZQMUMxdnpTeHI0dG9aUm82d2ZLNFNnMkFCdG85UGJFRjN1R3JtRUZK?= =?utf-8?B?TFFiQU9NVU5adThIMFhqMEVHMjhIM0o3Y05PdDN3bnZjUVUyS1VjamJDZ0t6?= =?utf-8?B?UTFPaU5VNFNoR2xsc1NvN2NvU0FZTGcwdkR6QmszbDFrbFkxY2t3ZkhGamFF?= =?utf-8?B?clczbnNZL01VcHYzalQ0dXRHZVVBYlYzWWRQMmp6eElUZ3I2MWJNamxKZHBN?= =?utf-8?B?YklJOEpFeDd4a3BYS2NjS3dNeWxBRmNNY3BFcFdVWnovcmFYckdYNHArWjRv?= =?utf-8?B?QTlJbUdONlVCMWEwTnViNzFrU240RG9HY0ZYR3NMTzcxK09scEl4N1RpY0lD?= =?utf-8?B?Y3NpNk80ZTRQK3BWNUlqQjBSNVRndkJwMW1LZUt2TjlOSXVTNFN6SWRvcGtU?= =?utf-8?B?V3hYcVlyNG9NQlVUcG51c3JIZzFSTXNVQnovSTFoT1lhZHI2YmluTVJWMHVx?= =?utf-8?B?L2N2UERKNFptb1c2c0p4Zk92dGFwQzUrUit6cHBoVEpwcUNjNUVJY0V5aGlS?= =?utf-8?B?WWtHVWIxQ3YwYmxSQ2c0b3VZcnNueHc1bkdiTlAwK1JuejQxSEhlUS9zR2lW?= =?utf-8?B?TXYyTVU5ZEprY3V6VlRLNm9VcDhMOWVxSkk5a2wxdXRnRUViYThIdmc0Q3p5?= =?utf-8?B?VUpGaWsvYytZOWFHNXY4TThCOGtzK1ZaQTZ0Zy9SWXhmcWZiQndCMFN4M28v?= =?utf-8?B?djZvNlhaUGF0T3h1UkVKUzN5dEprUENxVUZaMmZIa1VrZmVyVGdjZmV4NDdL?= =?utf-8?B?NlBtZE1VQW40ZE5XVnpKWVV0OGw0L0I1aXlvUGZZbG90TDJSWVIwQjVtWlA3?= =?utf-8?B?bGZPNzk2dm5waXhwQTJSd01lUzZKM0NRMEwwMDB4ZGl6c2JVelBnazQrMmxE?= =?utf-8?B?MGZoTkFNQmV3TzdqMHppbGNXQ3A5RWdyT0JJaUNCNkV3RWhwK3NQcTJ1bWJ3?= =?utf-8?B?ZzcwYS9JZWY4Zzl0NEJWNUQ1NUZ4YkNhajBnblpEZndQZzF5N3dGWTd5MWg1?= =?utf-8?B?Y2xvVzVrRmp6SnlzWkoxclNCdTNkdlNsanpkbURpRldGRlYrbW80TUNYLzM1?= =?utf-8?B?emtZbW5iRjdoR2xLd1dhdk5LVS9JMjRLbWROM2t4UE5iazNTTkxxZnRkSXZU?= =?utf-8?B?ckFtWjBWdkdjRGVRYzYwZ1p1Z3RrZkhBc3Y0LzF0bi84cTVNOUk4YVpPL1hM?= =?utf-8?B?Z3hzSHVyb1d4bmwyajZ0Y2lHYlZUaWp0Si85M3hwaDEwUGlRUkFWaUZhaUY4?= =?utf-8?B?QURRWEhuTnNHWTdRQzRpajB6YjRKTnpvUVFCQ0lWSHNLMHNXZGhqRU9ETFlW?= =?utf-8?B?OXU5SWo1S1lyTXM3dlpVTkNoVjliUE5kT0VNM3J0eVFleG9na1JpNExOZzJO?= =?utf-8?B?Uzg2eXYxdTZrZTZWWE1zRnhQU1FxbUpmeWZuVmk2ZS9lckdCK29VK2oxY0tK?= =?utf-8?B?Ky9zRnlTSi9IMTFycmQrSEpHRlR4b3R2R29oQUtZNU5LeVhkVU02RmMvQVdh?= =?utf-8?B?dGY4K1NzT2h6R1hLWkJibEpUSXRmcFdVTVcvZnVVekkxVTdSZmFTSTBBUHVh?= =?utf-8?B?YnJvNnBJT3BIZ0poTEFCNE9oNEVCZVJUcE9MTm52NXU3a0haT05yRS9LY3JM?= =?utf-8?B?YWc9PQ==?= Content-ID: <3391B8B3933C894AB00D8035EADFBD3A@namprd11.prod.outlook.com> 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: c102ea83-40e3-4b11-9fe7-08da56550d1f X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2022 02:47:31.8106 (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: kVNEWNB5oc2QMAeLzO1moSySIY7CLjZNUWDVfVGO2t053LaYDyVHNFhElkmKp/n04p94SsGFod04b9WwfOF6dQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3688 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3] libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime 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 Thu, 2022-06-23 at 13:32 +0800, Wenbin Chen wrote: > From: Yue Heng > > Enable dynamic QP configuration in runtime on qsv encoder. Through > AVFrame->metadata, we can set key "qsv_config_qp" to change QP > configuration when we encode video in CQP mode. > > Signed-off-by: Yue Heng > Signed-off-by: Wenbin Chen > --- > doc/encoders.texi | 10 +++++ > libavcodec/qsvenc.c | 89 +++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 99 insertions(+) > > diff --git a/doc/encoders.texi b/doc/encoders.texi > index 1850c99fe9..02a91ffe96 100644 > --- a/doc/encoders.texi > +++ b/doc/encoders.texi > @@ -3333,6 +3333,16 @@ Forcing I frames as IDR frames. > For encoders set this flag to ON to reduce power consumption and GPU usage. > @end table > > +@subsection Runtime Options > +Following options can be used durning qsv encoding. > + > +@table @option > +@item @var{qsv_config_qp} > +Supported in h264_qsv and hevc_qsv. > +This option can be set in per-frame metadata. QP parameter can be dynamically > +changed when encoding in CQP mode. > +@end table > + > @subsection H264 options > These options are used by h264_qsv > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > index 902bada55b..2382c2f5f7 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -146,6 +146,14 @@ static const struct { > { MFX_RATECONTROL_QVBR, "QVBR" }, > }; > > +#define UPDATE_PARAM(a, b) \ > +do { \ > + if ((a) != (b)) { \ > + a = b; \ > + updated = 1; \ > + } \ > +} while (0) \ > + > static const char *print_ratecontrol(mfxU16 rc_mode) > { > int i; > @@ -1613,6 +1621,83 @@ static int set_roi_encode_ctrl(AVCodecContext *avctx, > const AVFrame *frame, > return 0; > } > > +static int update_qp(AVCodecContext *avctx, QSVEncContext *q, > + const AVFrame *frame) > +{ > + int updated = 0, qp = 0, new_qp; > + char *tail; > + AVDictionaryEntry *entry = NULL; > + > + if (avctx->codec_id != AV_CODEC_ID_H264 && avctx->codec_id != > AV_CODEC_ID_HEVC) > + return 0; > + > + entry = av_dict_get(frame->metadata, "qsv_config_qp", NULL, 0); > + if (entry && q->param.mfx.RateControlMethod == MFX_RATECONTROL_CQP) { > + qp = strtol(entry->value, &tail, 10); > + if (*tail) { > + av_log(avctx, AV_LOG_WARNING, "Invalid qsv_config_qp string. > Ignore this metadata\n"); > + return 0; > + } > + if (qp < 0 || qp > 51) { > + av_log(avctx, AV_LOG_WARNING, "Invalid qp, clip to 0 ~ 51\n"); > + qp = av_clip(qp, 0, 51); > + } > + av_log(avctx, AV_LOG_DEBUG, "Configure qp: %d\n",qp); > + UPDATE_PARAM(q->param.mfx.QPP, qp); > + new_qp = av_clip(qp * fabs(avctx->i_quant_factor) + > + avctx->i_quant_offset, 0, 51); > + UPDATE_PARAM(q->param.mfx.QPI, new_qp); > + new_qp = av_clip(qp * fabs(avctx->b_quant_factor) + > + avctx->b_quant_offset, 0, 51); > + UPDATE_PARAM(q->param.mfx.QPB, new_qp); > + av_log(avctx, AV_LOG_DEBUG, > + "using fixed qp = %d/%d/%d for idr/p/b frames\n", > + q->param.mfx.QPI, q->param.mfx.QPP, q->param.mfx.QPB); > + } > + return updated; > +} > + > +static int update_parameters(AVCodecContext *avctx, QSVEncContext *q, > + const AVFrame *frame) > +{ > + int needReset = 0, ret = 0; > + > + if (!frame) > + return 0; > + > + needReset = update_qp(avctx, q, frame); > + if (!needReset) > + return 0; > + > + if (avctx->hwaccel_context) { > + AVQSVContext *qsv = avctx->hwaccel_context; > + int i, j; > + q->param.ExtParam = q->extparam; > + for (i = 0; i < qsv->nb_ext_buffers; i++) > + q->param.ExtParam[i] = qsv->ext_buffers[i]; > + q->param.NumExtParam = qsv->nb_ext_buffers; > + > + for (i = 0; i < q->nb_extparam_internal; i++) { > + for (j = 0; j < qsv->nb_ext_buffers; j++) { > + if (qsv->ext_buffers[j]->BufferId == q->extparam_internal[i]- > >BufferId) > + break; > + } > + if (j < qsv->nb_ext_buffers) > + continue; > + q->param.ExtParam[q->param.NumExtParam++] = q- > >extparam_internal[i]; > + } > + } else { > + q->param.ExtParam = q->extparam_internal; > + q->param.NumExtParam = q->nb_extparam_internal; > + } > + av_log(avctx, AV_LOG_DEBUG, "Parameter change, call msdk reset.\n"); > + ret = MFXVideoENCODE_Reset(q->session, &q->param); > + if (ret < 0) > + return ff_qsv_print_error(avctx, ret, "Error during resetting"); > + > + return 0; > +} > + > static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, > const AVFrame *frame) > { > @@ -1731,6 +1816,10 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext > *q, > { > int ret; > > + ret = update_parameters(avctx, q, frame); > + if (ret < 0) > + return ret; > + > ret = encode_frame(avctx, q, frame); > if (ret < 0) > return ret; LGTM, will apply. -Haihao _______________________________________________ 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".