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 47D6B45274 for ; Thu, 16 Feb 2023 01:23:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2F5A068BE0A; Thu, 16 Feb 2023 03:23:52 +0200 (EET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AF8DC6808E8 for ; Thu, 16 Feb 2023 03:23:44 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676510629; x=1708046629; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=DWwD3X6fO2KW/qneWc+g6Gzq8ZkV4M3RIw1QmEABO9U=; b=gQhuSfJaXo+DAFYEZtdNnMKbnxSyBIfYHU6GB9u2k9bCAG2evZY4jsT6 lQO9VqvwX2auf9jcwFYIWJYAmTyJ5/By+B6u/DKD1dWwHD+WPK7ABl0XP jCiEejMeV8ychoINzj53EUIAYX2zDvhs3LZ1AU2BCROuGnfUOM5WG1fJG kkzY1MDSf3rM3z13pdLd7t2iqcrAVu7yRXvoag7TTrBsz8J2Cv6zogf/G kRQRTZCosoP8rYC1llfl3Z6LWshGEKWResesdLwWg5b8NOY8+hBVyCMq7 OfcE9vHz35jHpjskIsUVE/mWkwGSCUJgskcKzN9IjNo7d/Obb+XddkKRC Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="333749824" X-IronPort-AV: E=Sophos;i="5.97,301,1669104000"; d="scan'208";a="333749824" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2023 17:23:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="998837210" X-IronPort-AV: E=Sophos;i="5.97,301,1669104000"; d="scan'208";a="998837210" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga005.fm.intel.com with ESMTP; 15 Feb 2023 17:23:41 -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, 15 Feb 2023 17:23:40 -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, 15 Feb 2023 17:23:40 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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, 15 Feb 2023 17:23:40 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.108) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Wed, 15 Feb 2023 17:23:40 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AzuVnLqRVHNYBOFoXP4h513Z3Cxv7qc/u7eD1qez73gXhb7Ne51mvfhYpWPy1w9O08qEGDbRwONUTTax7hnqPM9XtygLV/Wc306QoTikwaHrAGnFNGUALEEoHHIxmfIhj9kZdZ8ai2KawEqGebrbJwVHajFVGVhfhkwQfk929oOoqSbukkjSKTRsqmQ235oHPc0nRSU9lyOTKOpWSMoCOq8eC0EbDJFPfEfmSSTUTAz4dRsKGFUrSjE9aqatFFMRLp8652RELSddvgVOLazP2gyhjv8SalRt93/wIRZsn+9pdD5TsHl/eaM3GOLzoFspVW5ld9P/bgX1ltyjaRIlIA== 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=DWwD3X6fO2KW/qneWc+g6Gzq8ZkV4M3RIw1QmEABO9U=; b=W6oh6IgPuQpT4xUt4+prxIpPBTuJDu6fOKp9gXrleucjgIPKcYGTIyGjFBvZaQHwd88np5AL/8R07pa8ncTLjOaAdzkbKR4NFvNqM/2wsWiihxa4C6n/9W791P4ElbXPa4sp7PSOCP94L7Zcv7AQTVROc05alKnzESjb5vcZ7o7vZ07FX1CpDX6PTu18dDjAn7JU8oJ147xJH+TOzYsNHTwa5/dOTWCDu5seMz0HeOIsPlxvDah5fAmRdjHNpN0huZnqTtkx/Xry+41XaSKP2Ug5mrj3NFjo0rqjgNIOX0Jozh7i/vMmpJJ0C9UfjzKY6sSWpgUw4xywsQHalSoCpQ== 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 SN7PR11MB7637.namprd11.prod.outlook.com (2603:10b6:806:340::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.26; Thu, 16 Feb 2023 01:23:38 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::36ba:13c8:6a29:c7af]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::36ba:13c8:6a29:c7af%9]) with mapi id 15.20.6086.024; Thu, 16 Feb 2023 01:23:38 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: Flush cached frames before reset encoder Thread-Index: AQHZP4okPydpmyiNzUiGFxv69njsrK7Qy4AA Date: Thu, 16 Feb 2023 01:23:37 +0000 Message-ID: <816cd7648ef86823f279074ea7e6b80abdb53959.camel@intel.com> References: <20230213090317.557782-1-wenbin.chen@intel.com> In-Reply-To: <20230213090317.557782-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: 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_|SN7PR11MB7637:EE_ x-ms-office365-filtering-correlation-id: d0f62295-0357-44c2-5fe5-08db0fbc6e2b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: y2UVbEIZbxlNTA/F8GA8BSN7VMIcwHnlPbrr3IqEQlTC8dNms0W3MJaClvBoib0cE+4/6C6+bv5XCD7gwLvLu5teGf0g8WYuybL4YCzhYs9UzccWuZpEmHd6CWcY9Sep+PZCwBQTZksbxVaQmSncQLj5scHhlV6MDaFwIW2X4Lb3ei0dig9QrrNgFHB40y1oFspim8N0JIxSVZBm9HP4CAyitcfSSTKguBIKsDHIFxNz/SbiVTEVo1LujxSJfdbF/Ic09P2lkrZS+Sy6YIYZoh8Rqd6SaKZ+5O36xDI2PPhAabGxLR18y23HhhD5x5zrtF9BcUKlsEo8LkgPZ/CIdb7MGCoocxnWc7OVtbb59A/RTufhtLbnBYOQ1ttujx0t4MJa5cJ71vaYq+/Mx8OcK0VZponJEdloFsATlT1SGoFJmoRrS3MNk6/DeryxhLJVUdsw3hhDD00rPkoC1mnzX8R/3LpvYDQtPlRNX2MwymxVNp7y93tcHgqLmcjK+HrtKv6vQUbSqmgajP4fmeTu58L8nLhSrrD3LChCwiJ+yjrcfFWvJoRkNE0kN6MC9aVxqKV1Azuq+oeG4J+8ZBbD26uejgXEd0DOoMcc1MqlYpk7ZEA6zRUX7AxW1hJaC6F98kgMYdA2AuUPVI1pDs7t2iB2HQQiaeL112BdV6utnRDHr8To7cuSQ9gfC+gUO4xs 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:(13230025)(366004)(39860400002)(396003)(346002)(376002)(136003)(451199018)(2906002)(86362001)(64756008)(316002)(66476007)(8676002)(83380400001)(66946007)(76116006)(38070700005)(6916009)(91956017)(66556008)(66446008)(38100700002)(71200400001)(41300700001)(36756003)(478600001)(6486002)(966005)(122000001)(2616005)(82960400001)(26005)(186003)(8936002)(6512007)(5660300002)(6506007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bjNtN21UcVRTWEVCTE5JRWdCcE50RXBMd3R4Si9CeGh5M2FJd1ZrZ01HRTYw?= =?utf-8?B?NGZNd1pycU43YzhRaE9KQ1VpQU5ET0hJampKL0hCK21wSHFqVFJBOHVBSVpF?= =?utf-8?B?QkUxOEhqUlhyNGFleHdCUjBRUytFZ1RFN1dHZG5QWHJ4OHBNUXVJemRZVEdz?= =?utf-8?B?Q3BSQm5rMGhuN0k3Zm11T0ttK1VOK3VuUjVYTFVORVBvdjBaL0kyRG14WXp2?= =?utf-8?B?R2hXOVNKWVh5cTJ4ZFE1b3BzemtvT3lsb0dmdkFlQ2lJbWo0ZTVONjUwTk15?= =?utf-8?B?cm8ycStRaFJBT01tY1lGZktMSWZHYUFkU3JveW5DdUJsY1NVa1QwOE9OTG9C?= =?utf-8?B?NFpacnVIT0YwbS83MXc2U3RTaWk1SzRqRE9BZkxMS2FJTnQ5NXJBTngzYlVh?= =?utf-8?B?cnN4cE5RSUNOb09SNkJRNncvWW5PaUp2SDV1UytvOWF0ZEdUMTBMRGpEYUg4?= =?utf-8?B?TjR6cGl6eWNXTG9KZEpGdUpBM1R6TVQ1bDM1NnFXQlNNMWxhdmJaYnRuTnl6?= =?utf-8?B?Z3Y5UURCV1J1bGRHUVVPWGdNdlZqS0RqWTFtR1JBVkQ1WWZUWDUvT0tvYWRK?= =?utf-8?B?azkxZXJkZ2N4ekxlK0huT1JVcFFQL0N6eHZtMFpuazFnT2lBNXZnMUZaTG84?= =?utf-8?B?cGdSNmhVNmZCUGQ2OGpObk0rWHdvMkFySU5lczhLTkhLN1hlTTZJRzh1NnRz?= =?utf-8?B?Njh2dEV5SDNhUTB2ZU0rVCtsMVY5RmYrbGdtS1I5QnNGcnRweis0Vzh3Vkpq?= =?utf-8?B?cmVPYTlHOEFSMjIvNXUzVWFUdmlNQzJ0QWpxMFVjcDZmTUhMUFg3cTdGSXpR?= =?utf-8?B?bURPWUhzVEw4TTFCKzZKNDZMQ3BkejkzbTN1U1ptNDc5U2lUZjBGVnFsL0Rt?= =?utf-8?B?WElXYTdkTmtxNndsOGtvVEg2TURDejY4RTB0ZDF0ZGY2QXhhQk10TEI4Qyt2?= =?utf-8?B?dFZNZm9rQkFDbnRuNXhON3RMVWNBY1NoWk9PK2hVdWhWSkcwUEhrejZiYnBN?= =?utf-8?B?RmlJUTZtdHliTlZOem9MQ1VEMjliRVZhQWczVWZUVEw4Z2xxOXVmRWxIeWtH?= =?utf-8?B?ODV1WkdqOUxncVZ5eVJCUVZ1bFpJbC9QQzU4bFdnNklYaGc3cytvRjBuVUNX?= =?utf-8?B?MURqbzROSjZBTXpTWTgwdEh6UUt3WFF1SnA3NmNaVHREVGJZcGdCazhBV2dQ?= =?utf-8?B?czU2SXJsRHYvQnZ1UFdvR3RidHRmTUQrTXRWZFhDaHZJSmVpMHhkakVYME5i?= =?utf-8?B?YityZWw3YWpXZ1Vva0w5b2lGRkVuaVlLZW5KTzNLWVB1WE9VRUxXSTFnVHA0?= =?utf-8?B?Z21BWGo5cytjWHRhZENVYlY2YXg4cjdqNStSTFJTRnk1Z1V2SUNya2FXVUhF?= =?utf-8?B?VkRzYTZSMlFwakpyeUQ1cDZUSncrY2pLb2NBTkd1bEc2NnhGTmNRQkJSejU0?= =?utf-8?B?aFpVMmNNSktyd01VQ2wwb3V1Rnlab1prVmtkU2dKWU5HWjBnUUNtMHphZE1D?= =?utf-8?B?TVlzYW0zd3FOK2NQWnZrTWhjQUp0U1l6QWdCMlNGZExoRE5lalBsdXd4bkdM?= =?utf-8?B?clVHdG5Oby82SW5HYjRUbUpXbW9lVStpYkZncVh2Zm4vMWUrZjZ5b21uVk0z?= =?utf-8?B?YVE2cmNVV0VDSXh1c08wMXZDaXVyb2RXMGlYckNNbHh6M0RCc2gvdTZ2WXdk?= =?utf-8?B?VzNyYUpyOUMrcEdzV3diMnV2L1BkQkE2S3lDME02cS9OdElFdnJZNExJS1Rj?= =?utf-8?B?OU9EY2FWSXpvTHhGRURqNVFyZUJVNWVSYjhSNjltNEtmSnBUYUhRY0g1bVZj?= =?utf-8?B?aE5GT2hFa3B0VFNVWlFWSW1qK0NJUUV0cEV1TlBIUExaZ2FLVHZYaWN2WXZn?= =?utf-8?B?U0JrblN0b2xJVGtuWHVnTWxGenJrMCtOWUtyV0MvWTkvWTB2Qy9sc0NCbUNC?= =?utf-8?B?NWE4bFIzR1lwL3AzM0gwWU9ydHVXUW1iT0F0d3U3VFEyUERITUs5RklNSjVQ?= =?utf-8?B?RGZFbk5QUXBxQVdIOW9yeTNZKytvK2NERElkMU42SWxEVHdFQ0RlRmR6MmFt?= =?utf-8?B?ckV4K3lnbUVKMXIzTlBKRHY1VDJhSmwxLzNzWTJZRTJRTW03YTNPQ0JSdWhy?= =?utf-8?B?TFcrczFyVmR6aWZ0RGRLcVIvZllmVy94R0xPNkZscHhWZkx2Nk5FZlVEK2Vi?= =?utf-8?B?Tnc9PQ==?= 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: d0f62295-0357-44c2-5fe5-08db0fbc6e2b X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2023 01:23:37.9505 (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: 25m1CdhwLsHI99+CheqnUvlW6LrY0CyCyc9PPqja2QH1XCcLJkhIJxCiCcQvEfGquaUDmPZKnOIaF6Di4iVt2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7637 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v2] libavcodec/qsvenc: Flush cached frames before reset 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 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 Ma, 2023-02-13 at 17:03 +0800, wenbin.chen-at-intel.com@ffmpeg.org wrote: > From: Wenbin Chen > > According to > https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#configuration-change > . > Before calling MFXVideoENCODE_Reset, The application needs to retrieve > any cached frames in the SDK encoder. > A loop is added before MFXVideoENCODE_Reset to retrieve cached frames > and add them to async_fifo, so that dynamic configuration works when > async_depth > 1. > > Signed-off-by: Wenbin Chen > --- > libavcodec/qsvenc.c | 122 ++++++++++++++++++++++++-------------------- > 1 file changed, 66 insertions(+), 56 deletions(-) > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > index 2f0e94a914..3951f40e7b 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -1600,7 +1600,7 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext > *q) > > q->param.AsyncDepth = q->async_depth; > > - q->async_fifo = av_fifo_alloc2(q->async_depth, sizeof(QSVPacket), 0); > + q->async_fifo = av_fifo_alloc2(q->async_depth, sizeof(QSVPacket), > AV_FIFO_FLAG_AUTO_GROW); > if (!q->async_fifo) > return AVERROR(ENOMEM); > > @@ -2296,58 +2296,6 @@ static int update_pic_timing_sei(AVCodecContext *avctx, > QSVEncContext *q) > return updated; > } > > -static int update_parameters(AVCodecContext *avctx, QSVEncContext *q, > - const AVFrame *frame) > -{ > - int needReset = 0, ret = 0; > - > - if (!frame || avctx->codec_id == AV_CODEC_ID_MJPEG) > - return 0; > - > - needReset = update_qp(avctx, q); > - needReset |= update_max_frame_size(avctx, q); > - needReset |= update_gop_size(avctx, q); > - needReset |= update_rir(avctx, q); > - needReset |= update_low_delay_brc(avctx, q); > - needReset |= update_frame_rate(avctx, q); > - needReset |= update_bitrate(avctx, q); > - needReset |= update_pic_timing_sei(avctx, q); > - ret = update_min_max_qp(avctx, q); > - if (ret < 0) > - return ret; > - needReset |= ret; > - 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) > { > @@ -2438,7 +2386,7 @@ static int encode_frame(AVCodecContext *avctx, > QSVEncContext *q, > > if (ret < 0) { > ret = (ret == MFX_ERR_MORE_DATA) ? > - 0 : ff_qsv_print_error(avctx, ret, "Error during encoding"); > + AVERROR(EAGAIN) : ff_qsv_print_error(avctx, ret, "Error during > encoding"); > goto free; > } > > @@ -2448,7 +2396,9 @@ static int encode_frame(AVCodecContext *avctx, > QSVEncContext *q, > ret = 0; > > if (*pkt.sync) { > - av_fifo_write(q->async_fifo, &pkt, 1); > + ret = av_fifo_write(q->async_fifo, &pkt, 1); > + if (ret < 0) > + goto free; > } else { > free: > av_freep(&pkt.sync); > @@ -2466,6 +2416,66 @@ nomem: > goto free; > } > > +static int update_parameters(AVCodecContext *avctx, QSVEncContext *q, > + const AVFrame *frame) > +{ > + int needReset = 0, ret = 0; > + > + if (!frame || avctx->codec_id == AV_CODEC_ID_MJPEG) > + return 0; > + > + needReset = update_qp(avctx, q); > + needReset |= update_max_frame_size(avctx, q); > + needReset |= update_gop_size(avctx, q); > + needReset |= update_rir(avctx, q); > + needReset |= update_low_delay_brc(avctx, q); > + needReset |= update_frame_rate(avctx, q); > + needReset |= update_bitrate(avctx, q); > + needReset |= update_pic_timing_sei(avctx, q); > + ret = update_min_max_qp(avctx, q); > + if (ret < 0) > + return ret; > + needReset |= ret; > + 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; > + } > + > + // Flush codec before reset configuration. > + while (ret != AVERROR(EAGAIN)) { > + ret = encode_frame(avctx, q, NULL); > + if (ret < 0 && ret != AVERROR(EAGAIN)) > + return ret; > + } > + > + 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; > +} > + > int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext *q, > AVPacket *pkt, const AVFrame *frame, int *got_packet) > { > @@ -2476,7 +2486,7 @@ int ff_qsv_encode(AVCodecContext *avctx, QSVEncContext > *q, > return ret; > > ret = encode_frame(avctx, q, frame); > - if (ret < 0) > + if (ret < 0 && ret != AVERROR(EAGAIN)) > return ret; > > if ((av_fifo_can_read(q->async_fifo) >= q->async_depth) || LGTM, will apply. Thanks 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".