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 0282E421D9 for ; Tue, 29 Mar 2022 12:45:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2375668B292; Tue, 29 Mar 2022 15:45:10 +0300 (EEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CC30D68B285 for ; Tue, 29 Mar 2022 15:45:02 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648557908; x=1680093908; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=TN+ZI+pI9hnQs6UlvtDU6GnEDeNpzL/wr7Q9YuPXiyg=; b=lVcSgwxpDvjinqM38iwWGxPxCq7KAN0NGWqaGeFXXuCS3g1LzpZZMtda QbLfN1QFNKmaARQ3dBP+liijTEVZjm1S1pcBZyLzhEUfs5rOUl9yIemNg RmhjWFTIWEOs4XeGXH1bGWN05N9klAGEIHnZltoKaH3kAXOtGS9Qrk+lE rEBsUobUSWqLnwHTVeES7mfP7F/34AlMNEsNvz5D2qZTCjVi5K0z5tXHA msj60jcfN/hCdi45jH07QFVcmo0QcJ6nWqz9u84dsrQuKw0VtuP0Bi4K5 9V2Fif4FMQzSfNZORTRsk7qBP49yRoOenzQ4/SPwldmQ2A7+pHNpFwjBt A==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="239836125" X-IronPort-AV: E=Sophos;i="5.90,220,1643702400"; d="scan'208";a="239836125" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2022 05:45:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,220,1643702400"; d="scan'208";a="649436252" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga002.fm.intel.com with ESMTP; 29 Mar 2022 05:45:01 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) 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; Tue, 29 Mar 2022 05:45:00 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) 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, 29 Mar 2022 05:45:00 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) 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.2308.21; Tue, 29 Mar 2022 05:45:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b5eL0asa+Za8qJyaCaNFDziA8qYBAnrE4VK/4Nk3q59RRYtH7RPHX5Njt7Q0p97WfCrg7p5wWa0eLoL5eeSOFW7H9YJfJQMuWr7OiOsSxtjP0X+CcisYxEmb1j/hADoMZr9AKiw8ajUVurcvle7k82aH3Ytjmnu1jWbhDmO6yROJW87MIddpGKNmM5gS1N4xp3BNd7Dl4hH/KFkNjc8qs9cYEC1kkzYzKzMIzfyCqqHWGwdCglMNH9LJ54Vto6HWxyWp281TbIPpKIbksAGg1qMK3xhB+QbMw9TO8WSSJsHkTNfasY+NE9D5UM8E/FRQffvLNt5U4aOsz+7SVmzA6g== 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=TN+ZI+pI9hnQs6UlvtDU6GnEDeNpzL/wr7Q9YuPXiyg=; b=aJc5CJ27DFTrG7V1PIEzgymhgldK6rp+zWIb9c93i3eb8XOPef0wIJJugC4e/ku4r5JGPMXFSo7e0+JBB5PDQmaKftvcqj7rCZWLO50fuOWxuXIbLZ1DySn24ACcOAQ/Ruj0s1a7xy7T102wrxghBTQk66X4iZnMttGhuHOWa5tz6kppvy/DZmFM2Xe2FucHp1B52niFc78AmQekPpk/al+FCjiNUtaUU8SPkjON7YJGwYPsBSyfeSl614SS96W58wIrQDq6LaI4trMHCGK157DiqXvLnuD3tQoB/TAyGfN//HgzNt/X9mrPiSVA4di1IsAgjh+fIHHp4gntJdGHnw== 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 SN6PR11MB3392.namprd11.prod.outlook.com (2603:10b6:805:c5::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Tue, 29 Mar 2022 12:44:53 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::c0b8:e06a:3d29:da25]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::c0b8:e06a:3d29:da25%5]) with mapi id 15.20.5102.022; Tue, 29 Mar 2022 12:44:53 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v5 1/4] lavc/vaapi_encode_h265: Add GPB frame support for hevc_vaapi Thread-Index: AQHYOct35cz29vR6DUOqTaVS4Zv1TKzWYfoA Date: Tue, 29 Mar 2022 12:44:53 +0000 Message-ID: <35d1fb2cbaa86f7e9cc09efdc07daac845e68fbb.camel@intel.com> References: <20220317064152.430212-1-fei.w.wang@intel.com> In-Reply-To: <20220317064152.430212-1-fei.w.wang@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: 4b2d2d51-546d-4973-cfb3-08da1181ebe0 x-ms-traffictypediagnostic: SN6PR11MB3392: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: biA1EjLiuvXGwMPJZ9yvaX+RTtHo+nMlV/afd1ws00e3xcZ4/15FWbO7lYtKnrn9jRuYfwDTERyd2F46YAF/4KoOc3cjMd7FcLS1jwSQrHff0HdS6hkNDbQbAwnxif7MVfEXLdis/1HkFdKAq1GV5Jl5p3NXfZ5bupAsBCkFVDQ7VCjC00elodyUGZZKfeMm1SS/sbTNtaraBj8EMIzTp1nbGwhEaOm4Y1PbMbvHh7bLS8LSYd4Mjx2eB+RD+opxo/Rczm2lbxY2lrpCj+ZESBaaGWa9NdmTFh69ma3bcrV+J6TtoT/grgHjCzRek2rbo+deUYRoWCKqOspGerlzkKRmiqPGZATeMyHE4f/iADS+bQpMHc7Rh7cgv2qCh7rAdfowuFHxqOvrK5qvpb56aMiuJd0ArP+6Waa5LjuWxbgkv6+e/spYZj6Ydk5m8QJ7317btJBSvQwNsL660vQnXvkBasCyESlG61zrYUMvC3EqKQK31g1vr4modjUnxXJ+0DWH5E1Sd7RYosVTJWj8GeR+ZUZcM8bJSLHz8G7UGU8aq84gKzSAA6wwcOjD0FBkqVESyl0r/vmmUs+MbWXgiJql+C4apwkPp6394vDgXg50edqDCBWirirFvHI7dQs8ERcPJJmf9qNLuHe8w+Iv8msR2jPxDJ+Fr7yM+uFQY6CAe65Z2Rq/8mtuvonNr7+Reu58J2b+etas/5ulXZFkI9daEetBMJb/BpU5bKON0DI= 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)(6512007)(38100700002)(6506007)(66476007)(66556008)(71200400001)(6916009)(91956017)(66946007)(122000001)(66446008)(76116006)(8676002)(38070700005)(36756003)(54906003)(4326008)(83380400001)(6486002)(26005)(186003)(86362001)(316002)(64756008)(2906002)(107886003)(508600001)(5660300002)(82960400001)(8936002)(2616005)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c2pwbnlvUnd0VjFYN2Q1Q25iNEdjbS93SjVNZjl4dDNUREliMzNLbGIxSUZp?= =?utf-8?B?U2Zvd0JPZkd1Y1g1QUZFdFY1YkZwbWJscElqcFB0UXFCQ3VaY2QxdlRaSVEw?= =?utf-8?B?VkRicXJBWlZrcVRDQVZpdWt2RXNpdW51ZXd3ekFCTG91a3VEV3pQWkNCaks3?= =?utf-8?B?b1BjdjJ2SFJxLzlTYlhZOU1JQlhtMVVHVE1EakZ3QTRMMVVKaERTSkxHZFd2?= =?utf-8?B?STYwTWZYd2ZJaGh4QkZDak15SnNlMkpvSzA3bnV0VlF5M3JmUzUxOCtSTnBL?= =?utf-8?B?Z3A2ejJOR0ZLbmNQcXQxa0tWTXlqMzhjQjFxK1hFRnoxRDdobEZIYTIzTmVK?= =?utf-8?B?NGJUQnpIbGRsT0hSTUNNNlVjZW9vbmdPN2hiRUNoaTg0Y1NCMnVNdGFaVXNn?= =?utf-8?B?T05tKzFSdkNvOTZtUmI0dEM4T0ljMmlXUWhVeHZmamdCTDVpVnR6QzhWeXdk?= =?utf-8?B?NGFDT1E4ZlhtbVJRb3BFWFExTklwb3NFQ3pFamlCMkc3U2p4eFd3QUhBRXhS?= =?utf-8?B?bGhQc0JRa0Fnbmg2cXN5OHJPajgzbTNwRS9JYmpJMUlHM3RDUzdGZ2d4UEhD?= =?utf-8?B?SWhpVGJqSkxoNHllY1NOQmd1N3IzQmhDdkdZY3IvbHJYSmU5T2Z5ZkRZT2V5?= =?utf-8?B?VHBKOEVjSXJwZVpLUmxwT01QYzBBelY1bVloQVlIa3B0MEd6QUhicS9Yb2Y1?= =?utf-8?B?QUNKOTBNY2FDVnlXMzNYdVlKeG93UzZDTVphNWcxT1V2V3pRcTFBaGU0ZUpn?= =?utf-8?B?MFdRQjFiSy9MT3BRdWlHYmVhaWRsVUkvc3NpbmpMSHljWkRzdC96YWdwdWhr?= =?utf-8?B?N0pyR3BOOGRsSE52eXlreWY5QmhNRkVoeGNjU1ZHa1g5Q2VpbVdLNkxaanNX?= =?utf-8?B?SkNtUXNjbkRERGI5RlhSUzBIdS9sbEs1ZXZ4aUtWR3FEaythWjNEUFprazV3?= =?utf-8?B?NC8rWmtVS20zN0tFYlZSUkNpRC9wVmVJR3hMN2Y3c3FITUVRbkNvMVBBMjFu?= =?utf-8?B?Tk01R2V0ZzM1RnVyd2FxUXh0eXkyblFuY3ptc3B6cEFtNEJBUDJWNkMrZlZK?= =?utf-8?B?aWR3dG5HUUlFZlRmaktjMTArZFlTeEdYNnJMMUhKampnZlFSMmdNd1NyRjEv?= =?utf-8?B?M3pEMGMrbmdmYVhZT3luVS9qdEpXQnJybjFpM2xEZFBWbEtialRIbllGZVBw?= =?utf-8?B?YzJrNmIwcFgva015RjlRb3RIUHRNVWVUUW5Qd21xUWh5N04yNGlYcjBZYWp0?= =?utf-8?B?aSt2cy9RWXBYM2NjcGVhVU1XZFRBZktZclRFU0lqcEttbFM3VDFkZXIycTMz?= =?utf-8?B?ejZoVFZpSjc5RDNPY2hnanZWNjJtVy80YW5jN01JYmc3S05JOUJWR0c3SVJO?= =?utf-8?B?bFFCUjY0UFprU3VQeVlPamo1dC9QZW1HeWMzSnpaOHp2UUg2cEJ5VldoZVhU?= =?utf-8?B?bXhsdnR0VTZPbThkTkZYYjZZbzhKV1FKaFd6dE5WK0JlYXJEWmdTaTlYNDBk?= =?utf-8?B?eWIwTUZvOTc0Zi8wK1dYdXUrV1crLzBiZm4yMDBYVGw4WHNqbFVwdlUzZndr?= =?utf-8?B?Z3d6ck12WGROR3dla3JocDZsOUcvall4SXpDL1FHbUs3YTdNekMrd3laakNL?= =?utf-8?B?SUh4WS9JWDhSYVBFdzgyU1JZLzI3SkxKaEZteGFWMHg5UU9Zd1M2b2hMRXdF?= =?utf-8?B?a1AvMVdOdHZyK2hFT0IzRWRibXQ5ZnRHY3hRWGx3TkpxTWVFUGlmaE51Nk9p?= =?utf-8?B?ZUdWMlA3RUN5eXpRSS9WeGo4S3dBT2p5V3YwZnp1TktmVGt4K0ZHclhrSC9M?= =?utf-8?B?RjBwRzdCdG55S2dyWUE1Vk1pNXJYeUExUjY3czl5TkxEOGl4UlloQjRBc2hK?= =?utf-8?B?M2diRS9wSjVLWHBld1pXa0ZmaUdUOElvcU9MSnM2ek5OWlMvclVzbUZxcGdj?= =?utf-8?B?dTlGQ1gzdWtqaUMxdE5tUk9SdkxkRWRvSzhaVDgxRkFqa2hrdG1XMSsxeFEw?= =?utf-8?B?Y3FKRHlneTE5WjhvOUFuYXhIR1JlOVFSZjYybU54cFJTS2VPMUZ5dTY0czNr?= =?utf-8?B?RHYwK1N4TzEydzVMUGlCS3QrRTlORGN4dzViZFNBVTRqMjR3OEZrU3lKVUF4?= =?utf-8?B?V2xBb3A1KytaRTc0RUhGZS9xTWFNS2xNWUhUS2Y4U3R2bmZFS0RnL2dWZXpv?= =?utf-8?B?bjM4RndyUWFOcVR3UkJzVHdkWHgxRlBTN3p6SGNISTdwS2dwMGRzMm1wTllI?= =?utf-8?B?NG9HaGR6M0VRQTZUbTdwNW1vY0hyWWpra0tHNjl6NnZ1UWhwbGl4b05XRXhH?= =?utf-8?B?STg4eU5aVUlXSkhwSUVIVWpEVTVlSW1mVGZUam1vNWh2V09BRGJKQS9XRDZQ?= =?utf-8?Q?9qqVHnA2Sz/WZq0U=3D?= Content-ID: <3ADD5912213D9A45995DAC292ACB020D@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: 4b2d2d51-546d-4973-cfb3-08da1181ebe0 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2022 12:44:53.1241 (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: qv/tbIRqGgMm05dbht2bx0DOCl/1GMFi5HsfCbqiVH9rpWXkvX+FNEi/XdU8HXFCFkji0mogN34OI1qBkusd1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3392 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v5 1/4] lavc/vaapi_encode_h265: Add GPB frame support for hevc_vaapi 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: "Wang, Fei W" , "linjie.fu@intel.com" 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-03-17 at 14:41 +0800, Fei Wang wrote: > From: Linjie Fu > > Use GPB frames to replace regular P/B frames if backend driver does not > support it. > > - GPB: > Generalized P and B picture. Regular P/B frames replaced by B > frames with previous-predict only, L0 == L1. Normal B frames > still have 2 different ref_lists and allow bi-prediction > > Signed-off-by: Linjie Fu > Signed-off-by: Fei Wang > --- > update: > 1. fall back logic that implemented in v3. > 2. refine debug message. > > libavcodec/vaapi_encode.c | 67 +++++++++++++++++++++++++++++++--- > libavcodec/vaapi_encode.h | 1 + > libavcodec/vaapi_encode_h265.c | 15 ++++++++ > 3 files changed, 78 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c > index 3bf379b1a0..081eb475a3 100644 > --- a/libavcodec/vaapi_encode.c > +++ b/libavcodec/vaapi_encode.c > @@ -1827,6 +1827,7 @@ static av_cold int > vaapi_encode_init_gop_structure(AVCodecContext *avctx) > VAStatus vas; > VAConfigAttrib attr = { VAConfigAttribEncMaxRefFrames }; > uint32_t ref_l0, ref_l1; > + int prediction_pre_only; > > vas = vaGetConfigAttributes(ctx->hwctx->display, > ctx->va_profile, > @@ -1845,6 +1846,51 @@ static av_cold int > vaapi_encode_init_gop_structure(AVCodecContext *avctx) > ref_l1 = attr.value >> 16 & 0xffff; > } > > + ctx->p_to_gpb = 0; > + prediction_pre_only = 0; > + > +#if VA_CHECK_VERSION(1, 9, 0) > + if (!(ctx->codec->flags & FLAG_INTRA_ONLY || > + avctx->gop_size <= 1)) { > + attr = (VAConfigAttrib) { VAConfigAttribPredictionDirection }; > + vas = vaGetConfigAttributes(ctx->hwctx->display, > + ctx->va_profile, > + ctx->va_entrypoint, > + &attr, 1); > + if (vas != VA_STATUS_SUCCESS) { > + av_log(avctx, AV_LOG_WARNING, "Failed to query prediction > direction " > + "attribute: %d (%s).\n", vas, vaErrorStr(vas)); > + return AVERROR_EXTERNAL; > + } else if (attr.value == VA_ATTRIB_NOT_SUPPORTED) { > + av_log(avctx, AV_LOG_VERBOSE, "Driver does not report any > additional " > + "prediction constraints.\n"); > + } else { > + if (((ref_l0 > 0 || ref_l1 > 0) && !(attr.value & > VA_PREDICTION_DIRECTION_PREVIOUS)) || > + ((ref_l1 == 0) && (attr.value & > (VA_PREDICTION_DIRECTION_FUTURE | VA_PREDICTION_DIRECTION_BI_NOT_EMPTY)))) { > + av_log(avctx, AV_LOG_ERROR, "Driver report incorrect > prediction " > + "direction attribute.\n"); > + return AVERROR_EXTERNAL; > + } > + > + if (!(attr.value & VA_PREDICTION_DIRECTION_FUTURE)) { > + if (ref_l0 > 0 && ref_l1 > 0) { > + prediction_pre_only = 1; > + av_log(avctx, AV_LOG_VERBOSE, "Driver only support same > reference " > + "lists for B-frames.\n"); > + } > + } > + > + if (attr.value & VA_PREDICTION_DIRECTION_BI_NOT_EMPTY) { > + if (ref_l0 > 0 && ref_l1 > 0) { > + ctx->p_to_gpb = 1; > + av_log(avctx, AV_LOG_VERBOSE, "Driver does not support P- > frames, " > + "replacing them with B-frames.\n"); > + } > + } > + } > + } > +#endif > + > if (ctx->codec->flags & FLAG_INTRA_ONLY || > avctx->gop_size <= 1) { > av_log(avctx, AV_LOG_VERBOSE, "Using intra frames only.\n"); > @@ -1854,15 +1900,26 @@ static av_cold int > vaapi_encode_init_gop_structure(AVCodecContext *avctx) > "reference frames.\n"); > return AVERROR(EINVAL); > } else if (!(ctx->codec->flags & FLAG_B_PICTURES) || > - ref_l1 < 1 || avctx->max_b_frames < 1) { > - av_log(avctx, AV_LOG_VERBOSE, "Using intra and P-frames " > - "(supported references: %d / %d).\n", ref_l0, ref_l1); > + ref_l1 < 1 || avctx->max_b_frames < 1 || > + prediction_pre_only) { > + if (ctx->p_to_gpb) > + av_log(avctx, AV_LOG_VERBOSE, "Using intra and B-frames " > + "(supported references: %d / %d).\n", > + ref_l0, ref_l1); > + else > + av_log(avctx, AV_LOG_VERBOSE, "Using intra and P-frames " > + "(supported references: %d / %d).\n", ref_l0, ref_l1); > ctx->gop_size = avctx->gop_size; > ctx->p_per_i = INT_MAX; > ctx->b_per_p = 0; > } else { > - av_log(avctx, AV_LOG_VERBOSE, "Using intra, P- and B-frames " > - "(supported references: %d / %d).\n", ref_l0, ref_l1); > + if (ctx->p_to_gpb) > + av_log(avctx, AV_LOG_VERBOSE, "Using intra and B-frames " > + "(supported references: %d / %d).\n", > + ref_l0, ref_l1); > + else > + av_log(avctx, AV_LOG_VERBOSE, "Using intra, P- and B-frames " > + "(supported references: %d / %d).\n", ref_l0, ref_l1); > ctx->gop_size = avctx->gop_size; > ctx->p_per_i = INT_MAX; > ctx->b_per_p = avctx->max_b_frames; > diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h > index b41604a883..61c5615eb8 100644 > --- a/libavcodec/vaapi_encode.h > +++ b/libavcodec/vaapi_encode.h > @@ -328,6 +328,7 @@ typedef struct VAAPIEncodeContext { > int idr_counter; > int gop_counter; > int end_of_stream; > + int p_to_gpb; > > // Whether the driver supports ROI at all. > int roi_allowed; > diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c > index e1dc53dfa9..ea45893508 100644 > --- a/libavcodec/vaapi_encode_h265.c > +++ b/libavcodec/vaapi_encode_h265.c > @@ -886,6 +886,7 @@ static int > vaapi_encode_h265_init_slice_params(AVCodecContext *avctx, > VAAPIEncodePicture *pic, > VAAPIEncodeSlice *slice) > { > + VAAPIEncodeContext *ctx = avctx->priv_data; > VAAPIEncodeH265Context *priv = avctx->priv_data; > VAAPIEncodeH265Picture *hpic = pic->priv_data; > const H265RawSPS *sps = &priv->raw_sps; > @@ -908,6 +909,9 @@ static int > vaapi_encode_h265_init_slice_params(AVCodecContext *avctx, > > sh->slice_type = hpic->slice_type; > > + if (sh->slice_type == HEVC_SLICE_P && ctx->p_to_gpb) > + sh->slice_type = HEVC_SLICE_B; > + > sh->slice_pic_order_cnt_lsb = hpic->pic_order_cnt & > (1 << (sps->log2_max_pic_order_cnt_lsb_minus4 + 4)) - 1; > > @@ -1066,6 +1070,9 @@ static int > vaapi_encode_h265_init_slice_params(AVCodecContext *avctx, > av_assert0(pic->type == PICTURE_TYPE_P || > pic->type == PICTURE_TYPE_B); > vslice->ref_pic_list0[0] = vpic->reference_frames[0]; > + if (ctx->p_to_gpb && pic->type == PICTURE_TYPE_P) > + // Reference for GPB B-frame, L0 == L1 > + vslice->ref_pic_list1[0] = vpic->reference_frames[0]; > } > if (pic->nb_refs >= 2) { > // Forward reference for B-frame. > @@ -1073,6 +1080,14 @@ static int > vaapi_encode_h265_init_slice_params(AVCodecContext *avctx, > vslice->ref_pic_list1[0] = vpic->reference_frames[1]; > } > > + if (pic->type == PICTURE_TYPE_P && ctx->p_to_gpb) { > + vslice->slice_type = HEVC_SLICE_B; > + for (i = 0; i < FF_ARRAY_ELEMS(vslice->ref_pic_list0); i++) { > + vslice->ref_pic_list1[i].picture_id = vslice- > >ref_pic_list0[i].picture_id; > + vslice->ref_pic_list1[i].flags = vslice- > >ref_pic_list0[i].flags; > + } > + } > + > return 0; > } Hi Mark, The new patchset version LGTM and works well, do you have any comment? 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".