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 8527842C84 for ; Thu, 2 Jun 2022 05:23:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DD93468B7E9; Thu, 2 Jun 2022 08:23:17 +0300 (EEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 174FE68B678 for ; Thu, 2 Jun 2022 08:23:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654147396; x=1685683396; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=2T9jzO4hRdkowElTdm5Ekg13MWkkvi54AS3qMx/MpOc=; b=J2lieNQYhJbTlndXvJgKKZvR0GT0DYCutiyb5leCu0Ddxu/QvpExrU3g n7mcmOHKWe0Tlr5BVOTlKrP8pG7GoqyrxLRXWuuxTjZMNlyks2uxqQTR/ ousAspAYt+ekljKZwV0RUlCunlzatfpuB7VhyCplwAPF8oqv2v9WzrgC/ 5rVrtPZeH1qe1AFeXc2FZBly+qe6ej86KyDzHDCZglPvwohkA8tu/Nl1z gIjMzci+7+ZfGY83Ywzqx/z+sGee2RTKXe25qSdPWCfyFXF8QjOS4gzJc Fv7z/oiocl3NmDtRAB9ywhE514JTFpU4EaEglzWCutH8v3E0mZPmkJ8J3 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="336483937" X-IronPort-AV: E=Sophos;i="5.91,270,1647327600"; d="scan'208";a="336483937" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2022 22:23:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,270,1647327600"; d="scan'208";a="645823618" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga004.fm.intel.com with ESMTP; 01 Jun 2022 22:23:06 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 1 Jun 2022 22:23:05 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 1 Jun 2022 22:23:05 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Wed, 1 Jun 2022 22:23:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QoiD5fEgaMdgd8s0McZl0AGqbpMKHfxZgZn/6AMOFmI11vigymdciTHHBe3MP7+3kcm6vcdIHFITfmzsNA3gg+LQhHCNT5LlQVmGxLuvgoqT050XSO8zfZEc2gZg7YU75yAgF0BRWdghkESyCA/kuv/p1mpNOO0oQgUbuEi9iPXIDoPaDXB6Ahp3I3LzBMTetPVJWXswPd0NBzOKrkvtF8iw2Hek0HWtckVnX51vN7dR5308hQJutIUBWvvg5YQfJuU6r4+GBGzTdqT7piRSujhNr4M/833sTM52Lk78iAQk0UBM0QpNV3zfxfloCTDssRMGqGTHtUa6ZtH+4yXK9g== 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=4nfvoqV88olfNGdT3KJcSdCC1mokeqA/ED8HrOX+qGk=; b=dhDl5cCnnJ9XfRLxXzgRO6+YTgnXNdMGwIIDbX5tN9MWBSvr2y1Nd+JvUTqxjifiopHRhqhmD35ihX5/Qz6H6MltA/zfSp/MirZ37iAHU2MLeaR89pEqHk8tGJ4j4m9V4oFwZFvwqPgDam/u2eZv8Ta8A5XAq1i5g9X0mwfoQBnPwl+NzqR8cKnTH0ULZe27BFez7kzlboQ6sTDPFqN9LJQt2/GhGNcn4Ri2F2yvnBxNUChjiWYHStgWvnRW2I2b/WAEysICDCxHL9Wj2nafo5m3Xf5seUbYiJP6NiX7L+mDkcaY/57p1x0ay1EMOoFOZT7YIgpPDrFr42LPzaf8ig== 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 BY5PR11MB3879.namprd11.prod.outlook.com (2603:10b6:a03:18f::17) by BL1PR11MB5398.namprd11.prod.outlook.com (2603:10b6:208:31c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Thu, 2 Jun 2022 05:22:57 +0000 Received: from BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::d4e5:8778:5e7f:69ba]) by BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::d4e5:8778:5e7f:69ba%7]) with mapi id 15.20.5314.013; Thu, 2 Jun 2022 05:22:57 +0000 From: "Chen, Wenbin" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: add ROI support to qsv encoder Thread-Index: AQHYYQ04TUCMDDAm/UCENQvyWFke/K0655QAgADXQiA= Date: Thu, 2 Jun 2022 05:22:57 +0000 Message-ID: References: <20220506054957.2291057-1-wenbin.chen@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action 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: 7ca896a7-7a64-4108-bc46-08da4457f404 x-ms-traffictypediagnostic: BL1PR11MB5398:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Au6jtokQAbQf5kqBxOVCNvEhol4mH602FhfFTgQnEbw62ZO1eTk3MB+bbkC1JcubMESo+/wGZRiAtxH1PF51bJomSJj/PSezSeli9IsCCrnVu+EzdEdGPunV8u3rADv4073cSfOe3ixxWPYsj6H7fjUMPPhckEJbaa/2PWWvVmeyyDEF16IyLOvuKuq7P26IJRCdmS7X5kwo1Ahdke7j9ve6ZCz6eTZEaEA4bJ+Tf0dhTCbfZAjhtQsOUAuUIclCgKsbyQ+eblOZaf47PhR0gXz2BgcrMBT2iIP6L3DQ0svo152Lk7oIWie7xpmoZBN4wQeQekzwo1+IIhwUu4Rc9KgoepynXdeCrCF3pVr33EmQzswwYuKWomfrotg/dBfWQw2KyJCYAisdhxIzTY/W0B/YQmBmo9p8Bw/VeWs4Tz0n608bsqOG+FhCJjDh6hhQSqHke4uQ5Rwqi2o0vX1A1UZ7bbDZXE4fVDnkFYtaFENu8rkK3D0bwr4CWOPODhzadywSS2dLhUE3YoG82iKnwfk9IsXILmI4kru728zkMp2S/kB1U7bNDLtvg/P53KcKyhVPYu/9cgqd5MPDqE8at2+fj4vKa51Clnsd2uPNuoZ5EbKDzIKIl4QJLU91qCJ4P4dXYDR5qeSXNOioXqWtxVzIezLPhXHGygsN3KGNHkEYkd72mEuvYEH5TxbfhIzB0/YG84wDrnqMpFHBFVRi2bI2KMuOPSGGAHJIqvzj5tm6igwnebFLZUAAhxb7fS9NisVsRL856d50bg0voPbgJ0XES/v3y7vWjz/en/I+y8s= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB3879.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(966005)(6916009)(82960400001)(86362001)(316002)(2906002)(71200400001)(8936002)(26005)(186003)(9686003)(55016003)(6506007)(5660300002)(83380400001)(38070700005)(508600001)(122000001)(38100700002)(7696005)(52536014)(66446008)(64756008)(66476007)(66946007)(33656002)(66556008)(8676002)(76116006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?5Vi2TTuOcz2uJUMrHHcGWEwj4cN07Jk1xIFiVuzhGgD5/QKqRMjDqncrfcol?= =?us-ascii?Q?U8EuUEZpGjgYaBcLkZGbjbLPCWLfbgusXdonxzoW7MQ4T4dA2Wo6gR9+KON7?= =?us-ascii?Q?ZdDZiNmvOMyzHbvUuV0xAwD422PAYIRjV4QIJ82WNEA2D7KLOxZ9KyYTX7Yr?= =?us-ascii?Q?t5jKbqw1+6tsld2DFuyfwqrqZK9mkRwDRXpVCOd5bfPNH230q6FEaNhuUTjN?= =?us-ascii?Q?MGyzb3CP4bguBY20wGCPibISTL5r6EckNDb5PFNrwGVNqHYLbDxPbZG1fJAX?= =?us-ascii?Q?5uqkVTYgU9a3izjsowDw86D3nBw/OUGAiTxM/Ev0wIM2qqRCgxLDXGm4lYlu?= =?us-ascii?Q?VFokoNV75p6hTDPsfHKD0tuIxX9/h5g30QW4OUpl2QcEOnaM1pugho4mtJXm?= =?us-ascii?Q?vstqLG8O9/ni8UjR+wvgVzWIKWnx/q/zsyQ41wJxV00iM45KSsLJ8T/POqA3?= =?us-ascii?Q?+Kc4akV6bdjX7XBABs/R2yq16w0GV4E9Fnli91DHXGOiWwVosKyEZMXTG0SN?= =?us-ascii?Q?8dA//crpAHrpSX+sspcGSWI3c+nHBWxrtaewd8SSGQu46O5xvB2/+DH8CULQ?= =?us-ascii?Q?cSqfRlzyycwLP+GFyF77MFMzT++YzkAwdUhquVCO6i05ndvfamlIEOjIrZKX?= =?us-ascii?Q?qqqxR75Zkr+7gE5rBFCCnNG2fqJzHauuFK3JGiZbbc7QYENyit7fz+HRdeuL?= =?us-ascii?Q?u/axNwJRC7uJB1UXgkkSn+o0l/c63sn5ncFGsaFAUzp/n2n0McdCGvcQOxi5?= =?us-ascii?Q?mJw/W+B/yn6JuxBEOwBXG6ucvDpNH6d/FhTHAHLeVRjRx2q2o+Lr2gGyq0yl?= =?us-ascii?Q?azc3DXNomzMc8F85fT6sOiKAW7t6gUYx1ibVPQcicD5kH8clURLoFyTKOsJ9?= =?us-ascii?Q?9hzDKPmj93VZBrUuOJxphj+JaSppbANzDcoTB5TVnRzviK9KAAN/DeDuai85?= =?us-ascii?Q?f4M6c98V6paox55ICRFP9g2DcJQhm6gONkHo6b0dsVmeH3J4PHMI8JzQySmH?= =?us-ascii?Q?jrfXDTyCJjiguIoJXxAniv09fNCYVVvbVlK7Khxkxz6SAMkEQucxSlf4071r?= =?us-ascii?Q?C8TFBrDMVkqzpBfEZ1LXSBtfBkyTypTGoTf0J1WtypV5XIxedhxh2D9kJgCr?= =?us-ascii?Q?PGDsH/rmPd9IkBDkGtIv/x8oPd0HiYNgfDMJr2nNo5uEWGnDB1yQ/CIdawsQ?= =?us-ascii?Q?Gguu80QwPhrMKKhXuGqMrT7eIJgrAZxv2HcjsWih+AtHnpzoH6dF9Lo5DW3C?= =?us-ascii?Q?OkUy6j+ph/K4tCRzilhzmaYCK+VBCFKoJnTKI/6VLFibloktpGag9++/lJLP?= =?us-ascii?Q?4y4j64MOOJdTu01M3w9aswOWCOU+9ziR6LK7rBVApY8YNuJJMkzaCAKA/4Hb?= =?us-ascii?Q?PR+dxwWUNJOoVioi8YPSx1ncDMHsuZ/LX9FEireSJpRjRpZfF1ba7nFoEF7/?= =?us-ascii?Q?f6sPYWiSUSUxMk1JjEVzdlaOfGC0rUx2za/VPsoqUkxCOx0WuLop4Pp6241R?= =?us-ascii?Q?hsGhD8gwCBNVmFkkZasBlI/OBEk+00lsqzvYjPsQmGoo4GpvIy4aa65m9ufd?= =?us-ascii?Q?pZ2RlmCACuvmoKoZaeVa72p9mWYNAUF0Xl5uBZ1BZbk/Z7l8iPepprdJJH38?= =?us-ascii?Q?wDmtLBASSsHZ4G+w4xRboVf7TLBT04LsRv3squ6LGkIgNqmwuK5ltBS6r+hK?= =?us-ascii?Q?ka3E9Ix5hU9wxs2Vgj9C6fmTFhvkH6/7q12Ub1QwlCkT5hUj75IvCyLrfUNs?= =?us-ascii?Q?fIHgiMi+nQ=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB3879.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ca896a7-7a64-4108-bc46-08da4457f404 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2022 05:22:57.2828 (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: /OFafSVi2BVVGO2zzBRGWYo2HGUJRb+SzAW1wA/2+xleKUM3yoIQbbu7FTjwzCYpbXspGhIBQO2OaM97C2NPwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR11MB5398 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: add ROI support to qsv 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 Fri, 2022-05-06 at 13:49 +0800, Wenbin Chen wrote: > > Use the mfxEncoderCtrl parameter to enable ROI. Get side data > > "AVRegionOfInterest" > > from filter "addroi" and use it to configure "mfxExtEncoderROI" which is > > the MediaSDK's ROI configuration. > > > > Signed-off-by: Wenbin Chen > > --- > > libavcodec/qsv_internal.h | 4 ++ > > libavcodec/qsvenc.c | 88 > +++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 92 insertions(+) > > > > diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h > > index e2aecdcbd6..8131acdae9 100644 > > --- a/libavcodec/qsv_internal.h > > +++ b/libavcodec/qsv_internal.h > > @@ -51,6 +51,9 @@ > > #define ASYNC_DEPTH_DEFAULT 4 // internal parallelism > > > > #define QSV_MAX_ENC_PAYLOAD 2 // # of mfxEncodeCtrl payloads > supported > > +#define QSV_MAX_ENC_EXTPARAM 2 > > + > > +#define QSV_MAX_ROI_NUM 256 > > > > #define QSV_MAX_FRAME_EXT_PARAMS 4 > > > > @@ -83,6 +86,7 @@ typedef struct QSVFrame { > > int num_ext_params; > > > > mfxPayload *payloads[QSV_MAX_ENC_PAYLOAD]; ///< used for > enc_ctrl.Payload > > + mfxExtBuffer *extparam[QSV_MAX_ENC_EXTPARAM]; ///< used for > > enc_ctrl.ExtParam > > > > int queued; > > int used; > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > > index fbb22ca436..9abead604b 100644 > > --- a/libavcodec/qsvenc.c > > +++ b/libavcodec/qsvenc.c > > @@ -1501,15 +1501,29 @@ static void > free_encoder_ctrl_payloads(mfxEncodeCtrl* > > enc_ctrl) > > } > > } > > > > +static void free_encoder_ctrl_extparam(mfxEncodeCtrl* enc_ctrl) > > +{ > > + if (enc_ctrl) { > > + int i; > > + for (i = 0; i < enc_ctrl->NumExtParam && i < > QSV_MAX_ENC_EXTPARAM; > > i++) { > > + if (enc_ctrl->ExtParam[i]) > > + av_freep(&(enc_ctrl->ExtParam[i])); > > + } > > + enc_ctrl->NumExtParam = 0; > > + } > > +} > > + > > static void clear_unused_frames(QSVEncContext *q) > > { > > QSVFrame *cur = q->work_frames; > > while (cur) { > > if (cur->used && !cur->surface.Data.Locked) { > > free_encoder_ctrl_payloads(&cur->enc_ctrl); > > + free_encoder_ctrl_extparam(&cur->enc_ctrl); > > //do not reuse enc_ctrl from previous frame > > memset(&cur->enc_ctrl, 0, sizeof(cur->enc_ctrl)); > > cur->enc_ctrl.Payload = cur->payloads; > > + cur->enc_ctrl.ExtParam = cur->extparam; > > if (cur->frame->format == AV_PIX_FMT_QSV) { > > av_frame_unref(cur->frame); > > } > > @@ -1547,6 +1561,7 @@ static int get_free_frame(QSVEncContext *q, > QSVFrame > > **f) > > return AVERROR(ENOMEM); > > } > > frame->enc_ctrl.Payload = frame->payloads; > > + frame->enc_ctrl.ExtParam = frame->extparam; > > *last = frame; > > > > *f = frame; > > @@ -1648,6 +1663,70 @@ static void print_interlace_msg(AVCodecContext > *avctx, > > QSVEncContext *q) > > } > > } > > > > +static int set_roi_encode_ctrl(AVCodecContext *avctx, const AVFrame > *frame, > > + mfxEncodeCtrl *enc_ctrl) > > +{ > > +#if QSV_VERSION_ATLEAST(1, 22) > > This check can be removed now because the minimal version is 1.28 > > > + AVFrameSideData *sd = NULL; > > + int mb_size; > > + > > + if (avctx->codec_id == AV_CODEC_ID_H264) { > > + mb_size = 16; > > + } else if (avctx->codec_id == AV_CODEC_ID_H265) { > > + mb_size = 32; > > + } else { > > + return 0; > > + } > > + > > + if (frame) > > + sd = av_frame_get_side_data(frame, > > AV_FRAME_DATA_REGIONS_OF_INTEREST); > > + > > + if (sd) { > > + mfxExtEncoderROI *enc_roi = NULL; > > + AVRegionOfInterest *roi; > > + uint32_t roi_size; > > + int nb_roi, i; > > + > > + roi = (AVRegionOfInterest *)sd->data; > > + roi_size = roi->self_size; > > + if (!roi_size || sd->size % roi_size) { > > + av_log(avctx, AV_LOG_ERROR, "Invalid ROI Data.\n"); > > + return AVERROR(EINVAL); > > + } > > + nb_roi = sd->size / roi_size; > > + if (nb_roi > QSV_MAX_ROI_NUM) { > > + av_log(avctx, AV_LOG_WARNING, "More ROIs set than " > > + "supported by driver (%d > %d).\n", > > + nb_roi, QSV_MAX_ROI_NUM); > > + nb_roi = QSV_MAX_ROI_NUM; > > + } > > + > > + enc_roi = av_mallocz(sizeof(*enc_roi)); > > + if (!enc_roi) > > + return AVERROR(ENOMEM); > > + enc_roi->Header.BufferId = MFX_EXTBUFF_ENCODER_ROI; > > + enc_roi->Header.BufferSz = sizeof(*enc_roi); > > + enc_roi->NumROI = nb_roi; > > + enc_roi->ROIMode = MFX_ROI_MODE_QP_DELTA; > > + for (i = 0; i < nb_roi; i++) { > > + roi = (AVRegionOfInterest *)(sd->data + roi_size * i); > > + enc_roi->ROI[i].Top = FFALIGN(roi->top, mb_size); > > + enc_roi->ROI[i].Bottom = FFALIGN(roi->bottom, mb_size); > > + enc_roi->ROI[i].Left = FFALIGN(roi->left, mb_size); > > + enc_roi->ROI[i].Right = FFALIGN(roi->right, mb_size); > > + enc_roi->ROI[i].DeltaQP = > > + roi->qoffset.num * 51 / roi->qoffset.den; > > + av_log(avctx, AV_LOG_DEBUG, "ROI: (%d,%d)-(%d,%d) -> %+d.\n", > > + roi->top, roi->left, roi->bottom, roi->right, > > + enc_roi->ROI[i].DeltaQP); > > + } > > + enc_ctrl->ExtParam[enc_ctrl->NumExtParam] = (mfxExtBuffer > *)enc_roi; > > > You should ensure the runtime supports MFX_EXTBUFF_ENCODER_ROI > when adding > MFX_EXTBUFF_ENCODER_ROI buffer to enc_ctrl->ExtParam[]. > > Thanks > Haihao Thanks for review. I will update the PR. I will add runtime check before call set_roi_encode_ctrl(). Thanks Wenbin > > > + enc_ctrl->NumExtParam++; > > + } > > +#endif > > + return 0; > > +} > > + > > static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, > > const AVFrame *frame) > > { > > @@ -1714,6 +1793,14 @@ static int encode_frame(AVCodecContext > *avctx, > > QSVEncContext *q, > > q->set_encode_ctrl_cb(avctx, frame, &qsv_frame->enc_ctrl); > > } > > > > + if ((avctx->codec_id == AV_CODEC_ID_H264 || > > + avctx->codec_id == AV_CODEC_ID_H265) && > > + enc_ctrl) { > > + ret = set_roi_encode_ctrl(avctx, frame, enc_ctrl); > > + if (ret < 0) > > + goto free; > > + } > > + > > pkt.sync = av_mallocz(sizeof(*pkt.sync)); > > if (!pkt.sync) > > goto nomem; > > @@ -1842,6 +1929,7 @@ int ff_qsv_enc_close(AVCodecContext *avctx, > > QSVEncContext *q) > > while (cur) { > > q->work_frames = cur->next; > > av_frame_free(&cur->frame); > > + free_encoder_ctrl_extparam(&cur->enc_ctrl); > > free_encoder_ctrl_payloads(&cur->enc_ctrl); > > av_freep(&cur); > > cur = q->work_frames; > _______________________________________________ > 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".