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 BB2DD424FD for ; Tue, 24 May 2022 08:51:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CB16868B52B; Tue, 24 May 2022 11:51:33 +0300 (EEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDE0B68B0AA for ; Tue, 24 May 2022 11:51:25 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653382291; x=1684918291; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=cKy/YXgf7seRxWnP0LdfTvJdp4D07n0ghkHIadmcUyI=; b=PoCHZCkOEOo9zE1VehK5k3Lf6rWDfdvGRQW/tnpMuO8iJRww4ocJRqtU pWCvOQBMx+fwC1F/sWSc7IIuvJXgvq9caHdc90uIjUE5Xy3MZlCPSgbdh ffFk7cqw46hSPGxY8SbA0hW70tVSZi6MU6jnT79NJZMr2zx0weD1JmfX1 wEk5m2FGJKvVdA7LdsSdVMmD80kyWPGRoHqbsa7t3E3tLOkqAZLNKMFUD d7dzdqx27OMAUhE1EXafol4dwvhAH7N/vewm7l6RaEaViD+4kYVuqVL8f /5y17gBdPM0hwsQ5F9VmTTw113u2vH0fOQxXDN1g82n+A7jC1APAGQsg5 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273586445" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273586445" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 01:51:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="608593078" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga001.jf.intel.com with ESMTP; 24 May 2022 01:51:23 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 24 May 2022 01:51:23 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.2308.27 via Frontend Transport; Tue, 24 May 2022 01:51:23 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.170) 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; Tue, 24 May 2022 01:51:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vjg2NqXR3XQE2RxvLctPo31jabFZyObk85MPpn7UIeXXXiUyKS7aj1nXHO+GDh9pJwIDzndl6OEZTONMhbqGvjCYS875fQzEXafXAws6Nepe+XpOKgRK7lXmiqFkROcxncOBx/Tr5cPzrFB8PL3arC1n2aGF2xexBEOISgjHX8ysin6aMwRQKP5LcCKF2R72cqFK+sM30SbjrJ619mGEP32xcbVPUaN8vGx2qdxx8Mkcvxpx1MfF0TaEoJh6c1maWDx+iK0y9u94Y8jdUhYDHYHQmz0OkzQQz9c0w3wQ0Gc9jIYjAxL58pNEzP1zZBDqlkLofZUE0BcXBIfd9hFpMg== 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=cKy/YXgf7seRxWnP0LdfTvJdp4D07n0ghkHIadmcUyI=; b=I2ZY3zSjNyOi1bXqjuJ4N18EljwiTPj7OPd3j3Bg3DLAj3Zd2ozwYZ4+fEZsZ1n/dyEu2V13BEnir5cf9VdRwaPKKaODM9woroEduevUYBF320cNocByLokr1UAQaWrCS/eZSGm6Zv6VGv75mPyMaPEdRvPm2bZxnTlSb9TkhlO8ASkm9gVBPFXxNIM30ffgDZbzzBo4yALIi47U8NmpevedWx+DrOB8CkonpEytD1YWfoN6YNzh3er51fQP5VFUSCzzvNEHZzhNw72zsVwBpN/Rs4mlVEvvGHDQigm5Gozc3j6WLm73KQTVfdeTG5LISCmwfpoKqQed+vWCwNZ1MA== 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 CO1PR11MB4898.namprd11.prod.outlook.com (2603:10b6:303:92::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.13; Tue, 24 May 2022 08:51:21 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73%8]) with mapi id 15.20.5273.023; Tue, 24 May 2022 08:51:21 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: expose only supported options Thread-Index: AQHYa7pm8OnVfr46N0GHKkWZXQ0KWq0tv2sA Date: Tue, 24 May 2022 08:51:21 +0000 Message-ID: <42d1e091d7bf88745bd3e84cd694a1d53035cdd8.camel@intel.com> References: <1652990056-46383-1-git-send-email-dmitry.v.rogozhkin@intel.com> In-Reply-To: <1652990056-46383-1-git-send-email-dmitry.v.rogozhkin@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: 723c2e10-6852-4f96-93d1-08da3d629362 x-ms-traffictypediagnostic: CO1PR11MB4898: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: 0Qzmpeg2jS6nb0/lcXffb+zYN8EwGM8t3gDMnwlDEw+/Jn50AHFSe8VrfI0RqUn/qyTiX7ryr7MREfsyyI0Igk5y/c7s3zHqKPFY4CAHOQR1fUIXBAy6yZ+4+v526hjauVy8ea2GapgmAeWrKeG2VXvSPHP57hi++TLOmq4QERApUPVwq8nXNbCR2jSmXhMd86xr32kZJ9JZS5u9blwDtpo+1OX5VL/YeSpH/6u4tub8K9ZHzJHDMKNf4ZEJADxqFZmRDgvm7rC0rI3VoHQgO6b1ZEMvi3GPJbcNcd8r6E4/Kvt2ayXGVkIZO/CpVVVZ66rqZYwWbaR5WQ0zZeP8uxF+8+oVUNPR5mWW4oBhvfreyF15x1/lNXJT6lf39tAgRMbzzqiSTV789Yyz+1MpuC6BwkBLObh+XTU0pFzWp1GeWHvMQA6lnbL7zTH1veBGsk85PFpf4XhPuKukV/fi9WGln0UaTYeucI6/7EdUvMCXUnhou8xZlOuDgRY+2k1WvtGwGCSEKxIehemqS2vEEAgdA/dWlq++mlz08HRpfCooXNsHoLPUSxFrORFuwJ7n1mB4T9QY6Dax6qAN3A3M6iR7AtANAI1A6/8So9jv0MpPXAVM0+6nfSpZTsK9E5sZ8p9i8gktlVF05TR7yd+2OS2aGWv5E/lzgP9sHo4pjT5cPysARPuwCh5rBWcJ0kxHnRBLs89n0yDdrchsu699pR+JcctMtemRt+7dKl1igl0= 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)(38070700005)(86362001)(82960400001)(316002)(6916009)(186003)(122000001)(2906002)(83380400001)(36756003)(5660300002)(66476007)(38100700002)(4326008)(64756008)(66556008)(107886003)(66946007)(66446008)(71200400001)(508600001)(6486002)(6512007)(8676002)(6506007)(26005)(2616005)(91956017)(76116006)(8936002)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?KzdCZVRNMGhZU28wcnlnSWxBeUxQMXhYdG9mU242OTZDcVl6Q1ByZ2pJQ0dj?= =?utf-8?B?N1RpRlM5VE1rQkNhRm1uUnZ5TzZIYmFJU3kxRTFaUWd5cWVjZGNDSTF0ZnQ0?= =?utf-8?B?S3BsRTlZZWZKMVlPeDZKclpIMDdNamdOQ1hZcVNYdTAycWY0Zm11TjEzeVdT?= =?utf-8?B?L0ZjQ2s1V2J4TitKM0NYdmRzVXZvc005SHlZUHB5Sld6U096SkRNbDZjaTdE?= =?utf-8?B?WVgvSXRZTHJIRzRNNWNEaTgzSnlsQ0ZPNmNFSVQ4bkRNOExzb2VEdXhiUTZU?= =?utf-8?B?bmJIQ1lrQzlXRTdQdHZ5NzZZYVdYR1RjRWYwbTdKWThvdDFQNnpnZlp2dmM4?= =?utf-8?B?dSt6Rm1iNWZzSWNaeWlERWF6V0tSVVo3a0hFZFNhSTRKZ2VSUDIrc3lvTDBB?= =?utf-8?B?VEJRWDN1VU5rcFp5ZFBRcGU0ZTluekI5MDFxb0JCem5mNFJUUE0rcDh1VzZN?= =?utf-8?B?ZWQ3cWJYVnRaY3ZRdmdKTVUxME9BZVJiQllWOXNZKzd0amdORk00OEJpYis2?= =?utf-8?B?WnNCMXl1V3hZd3FlejBOK2YwSG95d00yRnB6SHZJTExMcFBXVWt0UmhFd3FG?= =?utf-8?B?cmNsMEE5RitIeStzeTR6VW9MRkNqZFRnWXloSDhlU05hSWlPSlJMOHJKa2cy?= =?utf-8?B?cDljeWlZZDZERm9HQzJaS0lYU1RKS2E4RS9VelpRQ2pUZk16eFBjSElENHRw?= =?utf-8?B?VWEwcklIVTFFeTlUb3dMQ0ltNnVka3hyZklFZ1hhTmVlb29MUkFOd2Y3VXlC?= =?utf-8?B?TTFxSjloN0ZIWW9CS3ZMeVIwdkVvMlN3cWduZkd0bjdjVVcxS3R2K3kzTHVa?= =?utf-8?B?L1ZFSXhuTVU3N2VZam5EYU1QR0FVMGNvSEpPZ0RrblE1UjREdk1UOHVXOWV5?= =?utf-8?B?S3RzWngvdzY4ZEFwQUN1T2FyZTdiOFNhWHNjTTBDRENYUk5YTTYvOUJLU3ZQ?= =?utf-8?B?Sjc1enQvMXU1YU9kNkNHa1FJVFlmeCtLU0dCSzdRbGY0a2RnTi9hNGFkaVg4?= =?utf-8?B?NFB2Z3M3cUlDWkhzWlZqTmZ3eDBTUXNuQkdNK2RyaUJWc2srT3g2S0Uwa2dh?= =?utf-8?B?TmhLd3FnSUxjSGloSm5ZdDl2Wjd3c1graTBCdysyTi8rZW05S1JEZEdSK3pL?= =?utf-8?B?c3R2a0FQcmFQb3BaYm9tcG94djV4amoyYWFGUGEzNjdUSTRzbE4yUitXUVg3?= =?utf-8?B?a3k5clFaQTd2SWNTd1BCZDRaRlN2cmxibGJkdUkzcEJmanlrK0Z4VWt6S1Bm?= =?utf-8?B?M2RrRkt1MERuaFZyUUlxOWQ1ckltRkJaL00zd3FqR0c1YWMvWDhQTU45V3l5?= =?utf-8?B?V0VTbEVxQndqb1ZDcmphOVM1Smp4N1BIN0pQdWNiWkxETk5mR2x6V041Umti?= =?utf-8?B?KzJudGRtQ1RoQ1FpRkJDMzJhS05Pbk1ZNUV5Q1ZzN2YzWng3cnRyTCt5QkM2?= =?utf-8?B?cXNQV2hSYm5DcUd1TnF0bTVEd0RQWG1kRWJUYStvMEJ0N0duZHV0TnRCQ0tw?= =?utf-8?B?ejEycmVOeFRzK3NhWmxuVm5sRC9ySm1UNVROSUk4QkszUktoSm83UUJTRFdy?= =?utf-8?B?aGlxZnU5LytUMzMrdkIvdW5KOTRpelhsZlp5RDV3Y0xxOVZRZmM4TG5PZTgr?= =?utf-8?B?WVEzYUVRTk4xaGYxUHI2OTQyUWkveGJabXA2NUdXTTBmN3JsZXQ3L2tWY2RZ?= =?utf-8?B?Y0FPNVc3TFo1c3dUMlpjeEhWRW8zTVdjNTljYk9zZy93V09HckpOaEdKUHhy?= =?utf-8?B?UjNESVFvZjA2enY5a2g2Q0l6M2RVSkNOVXdveUhQV201T1VQNVRkZlF0OVlj?= =?utf-8?B?T29Rd1VJWFF1dnZWNzIxb2ZCYXhJbHY3MEpOWEFkS2pZNnBDZGFaUTh3L20w?= =?utf-8?B?NU1ZaEs4Q0srWHZCdjZaWkFWUkNrTkxWR2RoNjk0VVdwWmtmcWN3Q1VmZEhQ?= =?utf-8?B?NWVUanlZTVJtUjllbnpiUzFEd0hjQ2JEdG8yS3Z1MHNuQ0ZzUUpmLzNoSVdL?= =?utf-8?B?K1k4M0wyTjdsVW1ObzBXaFl2SXJhcXFXWkdpd2dTMU5OY04wdnB5MFRRVEdp?= =?utf-8?B?RWVJZ0dCdDJDWXA3V2xiWXZxQ1RwUDFvbFQvQVQyQnFkWW05MTMyQVlUVG5z?= =?utf-8?B?OEZjczdqVXpYMEt5OFJCajQ5Y1h1ZUkwVVJtaVhCYU5pcDEzUnZuUjhZeHow?= =?utf-8?B?OWVHSlBHSSs3NmZwQkRnS1BVaW1zR29zdlNNSmIyZEQ2bW9lSVFDdUFTU3k0?= =?utf-8?B?WFc3MXJLMWJkSDVwNHFHZWFORDRCalpNUnEwUnlpVkhiRlFqUlY3WERCUVdG?= =?utf-8?B?SzJtT1AxREYrTEhQeWJoekVBTEFsdHBwUVQ0ay9WUElNRVRNYWloQTNyZ3hP?= =?utf-8?Q?XrLTeKoD6jOvKPaY=3D?= Content-ID: <945BE8291563ED429ACE1FD87B2561B2@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: 723c2e10-6852-4f96-93d1-08da3d629362 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2022 08:51:21.4678 (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: e57IMKAq0jszmHL1/6kZYvPRc5oEUJAV6xrO2jv6DaxgrX4v3okMQ4TO9GFLf5gyfNsGBzLO5H3FflM06/fvKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4898 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: expose only supported options 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 Cc: "Rogozhkin, Dmitry V" 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-05-19 at 12:54 -0700, Dmitry Rogozhkin wrote: > vp9, hevc, avc, mpeg2 QSV encoders inherit common list > of options (QSV_COMMON_OPTS) while bunch of options is not > actually supported by current qsv code. The only codec which > supportes everything is avc, followed by hevc, while vp9 and > mpeg2 significantly fall behind. This creates difficulties > for the users to use qsv encoders. This patch fixes options > list for encoders leaving only those which are actually > supported. > > Signed-off-by: Dmitry Rogozhkin > --- > libavcodec/qsvenc.h | 52 ++++++++++++++++++++++++++++++++++---------- > --- > libavcodec/qsvenc_h264.c | 12 +++++++++++ > libavcodec/qsvenc_hevc.c | 9 ++++++++ > libavcodec/qsvenc_mpeg2.c | 1 + > 4 files changed, 60 insertions(+), 14 deletions(-) > > diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h > index cb84723..33bbc2a 100644 > --- a/libavcodec/qsvenc.h > +++ b/libavcodec/qsvenc.h > @@ -89,22 +89,46 @@ > { "slow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_TARGETUSAGE_3 }, INT_MIN, INT_MAX, VE, "preset" > }, \ > { "slower", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_TARGETUSAGE_2 }, INT_MIN, INT_MAX, VE, "preset" > }, \ > { "veryslow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_TARGETUSAGE_BEST_QUALITY }, INT_MIN, INT_MAX, VE, "preset" > }, \ > -{ "rdo", "Enable rate distortion > optimization", OFFSET(qsv.rdo), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, 1, VE }, \ > +{ "forced_idr", "Forcing I frames as IDR > frames", OFFSET(qsv.forced_idr), AV_OPT_TYPE_BOOL,{ .i64 = > 0 }, 0, 1, VE }, \ > +{ "low_power", "enable low power mode(experimental: many limitations by mfx > version, BRC modes, etc.)", OFFSET(qsv.low_power), AV_OPT_TYPE_BOOL, { .i64 = > -1}, -1, 1, VE}, > + > +#define QSV_OPTION_RDO \ > +{ "rdo", "Enable rate distortion > optimization", OFFSET(qsv.rdo), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, 1, VE }, > + > +#define QSV_OPTION_MAX_FRAME_SIZE \ > { "max_frame_size", "Maximum encoded frame size in > bytes", OFFSET(qsv.max_frame_size), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, \ > { "max_frame_size_i", "Maximum encoded I frame size in > bytes",OFFSET(qsv.max_frame_size_i), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, \ > -{ "max_frame_size_p", "Maximum encoded P frame size in > bytes",OFFSET(qsv.max_frame_size_p), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, \ > -{ "max_slice_size", "Maximum encoded slice size in > bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, \ > -{ "bitrate_limit", "Toggle bitrate > limitations", OFFSET(qsv.bitrate_limit), AV_OPT_TYPE_INT, { .i64 > = -1 }, -1, 1, VE }, \ > -{ "mbbrc", "MB level bitrate > control", OFFSET(qsv.mbbrc), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, \ > -{ "extbrc", "Extended bitrate > control", OFFSET(qsv.extbrc), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, \ > -{ "adaptive_i", "Adaptive I-frame > placement", OFFSET(qsv.adaptive_i), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, \ > -{ "adaptive_b", "Adaptive B-frame > placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, \ > -{ "p_strategy", "Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need > to be set to 0).", OFFSET(qsv.p_strategy), AV_OPT_TYPE_INT, { .i64 = 0}, > 0, 2, VE }, \ > -{ "b_strategy", "Strategy to choose between I/P/B-frames", > OFFSET(qsv.b_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE > }, \ > -{ "forced_idr", "Forcing I frames as IDR > frames", OFFSET(qsv.forced_idr), AV_OPT_TYPE_BOOL,{ .i64 = > 0 }, 0, 1, VE }, \ > -{ "low_power", "enable low power mode(experimental: many limitations by mfx > version, BRC modes, etc.)", OFFSET(qsv.low_power), AV_OPT_TYPE_BOOL, { .i64 = > -1}, -1, 1, VE},\ > -{ "dblk_idc", "This option disable deblocking. It has value in range > 0~2.", OFFSET(qsv.dblk_idc), AV_OPT_TYPE_INT, { .i64 = 0 > }, 0, 2, VE}, \ > -{ "low_delay_brc", "Allow to strictly obey avg frame size", > OFFSET(qsv.low_delay_brc), AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE > }, \ > +{ "max_frame_size_p", "Maximum encoded P frame size in > bytes",OFFSET(qsv.max_frame_size_p), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, > + > +#define QSV_OPTION_MAX_SLICE_SIZE \ > +{ "max_slice_size", "Maximum encoded slice size in > bytes", OFFSET(qsv.max_slice_size), AV_OPT_TYPE_INT, { .i64 = -1 }, > -1, INT_MAX, VE }, > + > +#define QSV_OPTION_BITRATE_LIMIT \ > +{ "bitrate_limit", "Toggle bitrate > limitations", OFFSET(qsv.bitrate_limit), AV_OPT_TYPE_INT, { .i64 > = -1 }, -1, 1, VE }, > + > +#define QSV_OPTION_MBBRC \ > +{ "mbbrc", "MB level bitrate > control", OFFSET(qsv.mbbrc), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, > + > +#define QSV_OPTION_EXTBRC \ > +{ "extbrc", "Extended bitrate > control", OFFSET(qsv.extbrc), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, > + > +#define QSV_OPTION_ADAPTIVE_I \ > +{ "adaptive_i", "Adaptive I-frame > placement", OFFSET(qsv.adaptive_i), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, > + > +#define QSV_OPTION_ADAPTIVE_B \ > +{ "adaptive_b", "Adaptive B-frame > placement", OFFSET(qsv.adaptive_b), AV_OPT_TYPE_INT, { .i64 = > -1 }, -1, 1, VE }, > + > +#define QSV_OPTION_P_STRATEGY \ > +{ "p_strategy", "Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need > to be set to 0).", OFFSET(qsv.p_strategy), AV_OPT_TYPE_INT, { .i64 = 0}, > 0, 2, VE }, > + > +#define QSV_OPTION_B_STRATEGY \ > +{ "b_strategy", "Strategy to choose between I/P/B-frames", > OFFSET(qsv.b_strategy), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE > }, > + > +#define QSV_OPTION_DBLK_IDC \ > +{ "dblk_idc", "This option disable deblocking. It has value in range > 0~2.", OFFSET(qsv.dblk_idc), AV_OPT_TYPE_INT, { .i64 = 0 > }, 0, 2, VE}, > + > +#define QSV_OPTION_LOW_DELAY_BRC \ > +{ "low_delay_brc", "Allow to strictly obey avg frame size", > OFFSET(qsv.low_delay_brc), AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE > }, > > extern const AVCodecHWConfigInternal *const ff_qsv_enc_hw_configs[]; > > diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c > index b4cf9ea..a21961c 100644 > --- a/libavcodec/qsvenc_h264.c > +++ b/libavcodec/qsvenc_h264.c > @@ -102,6 +102,18 @@ static av_cold int qsv_enc_close(AVCodecContext *avctx) > #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM > static const AVOption options[] = { > QSV_COMMON_OPTS > + QSV_OPTION_RDO > + QSV_OPTION_MAX_FRAME_SIZE > + QSV_OPTION_MAX_SLICE_SIZE > + QSV_OPTION_BITRATE_LIMIT > + QSV_OPTION_MBBRC > + QSV_OPTION_EXTBRC > + QSV_OPTION_ADAPTIVE_I > + QSV_OPTION_ADAPTIVE_B > + QSV_OPTION_P_STRATEGY > + QSV_OPTION_B_STRATEGY > + QSV_OPTION_DBLK_IDC > + QSV_OPTION_LOW_DELAY_BRC > > { "cavlc", "Enable > CAVLC", OFFSET(qsv.cavlc), AV_OPT_TYPE_BOOL > , { .i64 = 0 }, 0, 1, VE }, > #if QSV_HAVE_VCM > diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c > index 3a2d50e..bb4de8e 100644 > --- a/libavcodec/qsvenc_hevc.c > +++ b/libavcodec/qsvenc_hevc.c > @@ -224,6 +224,15 @@ static av_cold int qsv_enc_close(AVCodecContext *avctx) > #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM > static const AVOption options[] = { > QSV_COMMON_OPTS > + QSV_OPTION_RDO > + QSV_OPTION_MAX_FRAME_SIZE > + QSV_OPTION_MAX_SLICE_SIZE > + QSV_OPTION_MBBRC > + QSV_OPTION_EXTBRC > + QSV_OPTION_P_STRATEGY > + QSV_OPTION_B_STRATEGY > + QSV_OPTION_DBLK_IDC > + QSV_OPTION_LOW_DELAY_BRC > > { "idr_interval", "Distance (in I-frames) between IDR frames", > OFFSET(qsv.idr_interval), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, INT_MAX, VE, > "idr_interval" }, > { "begin_only", "Output an IDR-frame only at the beginning of the > stream", 0, AV_OPT_TYPE_CONST, { .i64 = -1 }, 0, 0, VE, "idr_interval" }, > diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c > index 3f79b48..5cb12a2 100644 > --- a/libavcodec/qsvenc_mpeg2.c > +++ b/libavcodec/qsvenc_mpeg2.c > @@ -64,6 +64,7 @@ static av_cold int qsv_enc_close(AVCodecContext *avctx) > #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM > static const AVOption options[] = { > QSV_COMMON_OPTS > + QSV_OPTION_RDO > > { "profile", NULL, OFFSET(qsv.profile), AV_OPT_TYPE_INT, { .i64 = > MFX_PROFILE_UNKNOWN }, 0, INT_MAX, VE, "profile" }, > { "unknown", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = > MFX_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, VE, "profile" }, 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".