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 42FB840B1E for ; Mon, 27 Dec 2021 07:41:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0176068B075; Mon, 27 Dec 2021 09:41:29 +0200 (EET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 70B3B68AF62 for ; Mon, 27 Dec 2021 09:41:22 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640590887; x=1672126887; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=DSrX9N0vg5xQTQ5E0icZD5BIewcfQLIArlgtrthYDa0=; b=ez0aBcVWHc/ItjXYKI0RSIeeRWXQLrc+eJwe+Hy7zNKnDrrf5nbmQHtA qJYClLAD54FUyP+YQZM4Yz3uduA1fQpOj1BHAs3LqfaW30fLSHzDnr6iZ RRqs0avp5G0lll4Dhhd0rcruoMJIu56I4EfibUtM0s3/K1UnPVjvjnLnV XVxhNNGN/zD/4tvaTbT5n0rwFnzyNmcHmIHz/QkGI98EIIyE4pPec1wSB 52Qm9rp4R5qzVqMXv1gP7lZuo7+/xCO5aYm2P4huo3WSpFrbGBIFD5ZwB jO3arVBP5lLs4Em0zz49YUSchrYYN+hXc9pEtTkl+g0bKdwungO+7wn18 g==; X-IronPort-AV: E=McAfee;i="6200,9189,10209"; a="221178022" X-IronPort-AV: E=Sophos;i="5.88,238,1635231600"; d="scan'208";a="221178022" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Dec 2021 23:41:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,238,1635231600"; d="scan'208";a="758322218" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga006.fm.intel.com with ESMTP; 26 Dec 2021 23:41:19 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.20; Sun, 26 Dec 2021 23:41:19 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Sun, 26 Dec 2021 23:41:19 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) 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.20; Sun, 26 Dec 2021 23:41:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HpnSur30TItvWixnZssabmwLxLyZm0wj8rc0o4osV8TarOhLXQMTWi4qzp6y4b3K3M1hSu/QxyENrSVD4GxAEwsshAxBSu9yiJoSFJOUGmk69C4+RmSgSkEJx1vfHST6lVE7xL77U+LbymizThEAITsgJTXLMiNtGIODMgUeMR72f03nFOSnkmhc07wiENudjXtTe7Z2vS26S4QX/tufh2I5eUsJn8B19qcxrYOFtUd4RlYplPh1G4I49wqTRkHvobUu+CTYz7mTgI9639LR+1Zo1wuPzvw8auAqDW9BaFa1FqB8H7KIO2RIntiSuMmrSxKrn0XqP6iTOsqzWv443g== 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=DSrX9N0vg5xQTQ5E0icZD5BIewcfQLIArlgtrthYDa0=; b=gPfnjE9S9HPJXA00+Bj+2rKBC1NNW0pBMT1puODPcm9GFNCIyOD22LEXjZqHEibkbIluRsAVH0djl0fSXpBqrCzo25b3wjV4C1uHaLNBUMtYhHqD9ucok6CEdWg9zj6yMWDbpjgDauNv9eUOnxVIr2+T1QcLLwqx3tgI9gNYUa8BwXTwmLIRs9FvJiVLZ4vJaFLgAFOzvCnZYxF99xrFjymxBD3BOFYtIn7iu0FJfjYwJgQx2pZrI4IoqKJSDpt7UAebF8SUX7w/MY78IjsjjpdoasrY4+TaT+Fv1FV4igOb0JKnne4Y2cMOVtc4OnESO6KKhFro/W7nNXzaG5nS1A== 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 BYAPR11MB2613.namprd11.prod.outlook.com (2603:10b6:a02:cd::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.19; Mon, 27 Dec 2021 07:41:17 +0000 Received: from BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::550:e7c7:13c4:7e0f]) by BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::550:e7c7:13c4:7e0f%6]) with mapi id 15.20.4823.023; Mon, 27 Dec 2021 07:41:17 +0000 From: "Chen, Wenbin" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 1/3] libavcodec/vaapi_encode: Change the way to call async to increase performance Thread-Index: AQHXyxEou47jQxS0R0a+JMC16C/yBaxGTvqAgAAEX3A= Date: Mon, 27 Dec 2021 07:41:17 +0000 Message-ID: References: <20211027085705.4114165-1-wenbin.chen@intel.com> <3951cdd4c13cef34c48d76694b1f784511f4671f.camel@intel.com> In-Reply-To: <3951cdd4c13cef34c48d76694b1f784511f4671f.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.200.16 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: 709cc943-472a-4ff6-479b-08d9c90c4482 x-ms-traffictypediagnostic: BYAPR11MB2613:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:451; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PjSaR32qtadK08JTnY5gtS9cQRQGH2n1+POsPOJimwSvf76kNehu56nilD9Cx9RU5Ghfk2LWzvtdmCVJd4tIOWCeNXwWOCGs6HKYR0is2oiCk3wgX5tJiEZSzGARF1i/ZeXEsPTsMNJlLJ+4yHEa9Y65610SCLJ7JOTSAWngOEKjqfYGjZ0F4HT0wboJ8tehRowUT1vkUF1/G8KvmoaYgWSI1ed92vQqX/0wjJLL8GWUeH7WTpeEqwpqLUuv9O+DpGbCbekKl9C4abhdGp/vqxuJCWkPnxbW8WZAlbB603tD5J0YSX7ai90LSBb8Sx84zu595nPhMKXIKYP82Fjh5DS4VfU2BGv6knnIFT2ePMC7JJtBvDEMeCiVbLfE2n524Z7NO8P2riElzeFT/sCa95DUvUbhnipi7P3FkzOdOr2CIA7eVDgCK9VylREjiNMcF4fHx/sqWOcWIfn0lulanZrKvIse0m3TZK4zm16G3IewYzA+WvIjfyvdoj/Ew5hu74mWjZaIpqoF7WRLtMgICEKfGZ6D/2uPmoNllUVOsH6JyiBCchzyK/j1U8exkbp3MswrkSZRGipCGSrAO+vFYtPy0yvnQuvss04YUkJaKqjMEm9ajdVehoixvntOqbEbS0AK4ICuTVfvsZzed/BS4214WUOgnEjmD3btJADmiAELjmh2fE8TyIryAV0/TBDBRwLKamwQp0FfWbdFa2GH4rzL3YUz4M/q0y6I9bC6wZg= 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:(366004)(55016003)(4001150100001)(38070700005)(5660300002)(71200400001)(7696005)(64756008)(122000001)(6506007)(86362001)(83380400001)(9686003)(76116006)(107886003)(186003)(52536014)(316002)(66476007)(508600001)(33656002)(66556008)(66946007)(8936002)(4326008)(82960400001)(66446008)(26005)(38100700002)(2906002)(6916009)(8676002)(43043002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UVV6eUdPZy80ZkZseTZ3NURITTJHZmNIa0NBdHRHQWFRYUhkOUF3UXdKZjJm?= =?utf-8?B?enY3Z2prSVBnT3Z3eXR4RlpPakpkS1VtZEtVQ0h6aFVUSXBEZjJHWWtPVjcw?= =?utf-8?B?elQrVkdLQ1JUTUZJU05MeVEraktVNXNnQVlnbHY3djh0dmc1YmFCTVVFR0dD?= =?utf-8?B?MStZeWdiTGsxNFVCZzhtYmJ5cUVjV2c2dENFNUxFZlltZFM1M3FBYzlURW94?= =?utf-8?B?cGVCbWg4em84ZXN0TzNKZCs3WXo4aTRnQUtxaDZ0ZWMxakF4MVZzL3pNSEor?= =?utf-8?B?b1NNSmg5WUNJZW1INmExZVduNG4xNHd0bTQ0LzBHYmxVR2pQazYxKzhpVjJH?= =?utf-8?B?SlorUDV6UnVxVkpjNHVTZGxTbWh3NUVmdFZFeTNkcHBVT3NYbHNwckYwNnI1?= =?utf-8?B?NlJLVnVOTU5ZTFFsYUxxeEt5aUxMbUJ6Nzh5cGhBU3cyaUxLRmhhZTc4b3JK?= =?utf-8?B?QzNTd04zRzhqOVFzYU9KZDUxTTB5TE9ibTRMQjJLTEc5SnhZTnlXNDRnT043?= =?utf-8?B?dS91QUNjNnZiTjlZMVhWMmdEL0tPM1lyMjVrcTJucVZibmdadkdYSVAxQWxN?= =?utf-8?B?aGtaRFV2Z0lGL3NRaFRORzlPVGFWYWt3TU1nQ1krek5yYWs5S0Z0aUdDdXJ5?= =?utf-8?B?VTI2YUoyOFVTTHZ0dTQ0Z21TNG9laE1kbmJpdEtTTGpIVUZQVDI1SUtrVTd0?= =?utf-8?B?ME44RUNoYklMY2NtVU9Fc3A1c0RmZ3djeURoVlhRbjRZRnhvSGJTdmEyb3VS?= =?utf-8?B?R1JmN2dQVGkreWlxM3JXZkI2YXNBSld0KzZUaEF4RmcyYzlrdEVUZzJZSlJO?= =?utf-8?B?MXgraW9WejdRdkZ0SW5ZNGtVWkRYemVaQzV1RGdrZVRtZ2hqb0Q3bVVZeWRY?= =?utf-8?B?ZkpRVWYwSW5VOEpuSm1FUC8ydDRBNTF2eFV4UWxKVHA4QmxnVUpOcUpKeDVv?= =?utf-8?B?M3pnUStJRmkrRXlWOFZjMy8zQjJLc0lPMEVqblZDMzVNajJWOS9reC9JR2pD?= =?utf-8?B?dS9tWitYWStBUExrNmw4dTY3V1pXaHN5cUI4UHJjOGRuUHcvUnJIR3hoaUho?= =?utf-8?B?YzJWYVF1dEVQcFhGT3Bkd3liNkZSd0d4UWRGMmp3Wjd4Z3g1TWxMWXU2bmJj?= =?utf-8?B?SWlpTkVyaEpuODFxQ3RaUDJuQURaWW9jMHV3eUoyVDN1ekxIMFNGUFVpS2g5?= =?utf-8?B?TFdtTWFML1V2djM1alF6OHVmVDc1RHh6Q2wzTEEyV1FCUTNOeEQ3aERjMm1K?= =?utf-8?B?RExVd3JPSVowRlpnbXVhQ2NBaEN1alQ1ZGp1UjRNdG5lZHR4YkJhZ3FKR1Iv?= =?utf-8?B?SjRUc3cveFdYT3pDNjJVY2N4aXE4K1dGdTVEd1NpRThheU83NlhZdUltdk8x?= =?utf-8?B?RlNSVGQrbWVrajR6NHh5blRiSUFTRUM5dnIwNml3RUNORzc1ZUFJUHU0V0V4?= =?utf-8?B?aVBRQ0M0aVNEMjk0eitPNVFtTkEvaVdSOHhWZTJhYmMvbVRXNzRDenlVejNO?= =?utf-8?B?QnRueGFucDAyTlFMTWNsQlYvYmMvdTBXT29vdVh6SGE4TWF6dTRyR3VEdVJn?= =?utf-8?B?dHAyU244NGI5VS92azBwNTdmQ0lwVmtCQ2JnOWs4Y0xkeHdyMHpRZHpiS2I1?= =?utf-8?B?SDdUd0xhL25DZ1lRUit3QVQ1a3Q5SUkrQnpLRVh0OUhkT2RaSjg0dFR4RU1W?= =?utf-8?B?RklsOUFvZTJ5eEZKUGQ0Wnhnc0g2V2hONDhqNFo3VW15SHpZWnVnNzZldGdM?= =?utf-8?B?RWlwb1A4ZXNPdXVzMTVzUit3RUdxY0o0ME1XaVk5bkRFelZVbWVoR0V6Nlpz?= =?utf-8?B?b2dNWTYyN2UvWjZSSndGNFo4WmFvR09GenhDeG9JSlMwcGp4bmgzcHFSb0dI?= =?utf-8?B?ekdyTGQyWktTQ25ickhCazRZSTBDUDhuL09kbHBybVVGU3hOTE9BbXhjQnhW?= =?utf-8?B?eTRQbkdwYnVqVFVCMDJKOWFTSTRTNzhMUFhjcFk4ZUFBTVIvSkl3RVVkVjlH?= =?utf-8?B?K2ExQkhPNnhSaXZXc2xGY3BuZk8ydU5DUGY3dXFLckg0ME04TEpEc05QL1E3?= =?utf-8?B?NXlrdzd5dGdqaGg2MHpGQzdCcHRJeVM4MjZubkErWGtxTjRsOXFaQmN1TUtx?= =?utf-8?B?R20vdXJPaC9wWmNBakJyemVaOW4zdG9tT0ZGYnJ5dCt4UUpWSSs5NTJLUmVC?= =?utf-8?Q?7ldgyARtVixnxMgbhThQ3aM=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: 709cc943-472a-4ff6-479b-08d9c90c4482 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2021 07:41:17.4721 (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: FXOJ6ZLGwn7X5ChSzHczUewkcPy9cMbver3eM5qz+D+VkrG8UJOP61lIqfKi5ZZIzFnj2yjCa9bbg6Tyjen73Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB2613 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 1/3] libavcodec/vaapi_encode: Change the way to call async to increase performance 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: "Xiang, Haihao" 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 Wed, 2021-10-27 at 16:57 +0800, Wenbin Chen wrote: > > Fix: #7706. After commit 5fdcf85bbffe7451c2, vaapi encoder's performance > > decrease. The reason is that vaRenderPicture() and vaSyncSurface() are > > called at the same time (vaRenderPicture() always followed by a > > vaSyncSurface()). When we encode stream with B frames, we need buffer > to > > reorder frames, so we can send serveral frames to HW at once to increase > > performance. Now I changed them to be called in a > > asynchronous way, which will make better use of hardware. > > 1080p transcoding increases about 17% fps on my environment. > > Could you provide your command ? I'd like to have a try. > > Thanks > Haihao Here is my command: ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.264 -c:v h264_vaapi output.264 Thanks Wenbin > > > > > Signed-off-by: Wenbin Chen > > --- > > libavcodec/vaapi_encode.c | 41 ++++++++++++++++++++++++++++----------- > > libavcodec/vaapi_encode.h | 3 +++ > > 2 files changed, 33 insertions(+), 11 deletions(-) > > > > diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c > > index ec054ae701..5927849233 100644 > > --- a/libavcodec/vaapi_encode.c > > +++ b/libavcodec/vaapi_encode.c > > @@ -951,8 +951,10 @@ static int > vaapi_encode_pick_next(AVCodecContext *avctx, > > if (!pic && ctx->end_of_stream) { > > --b_counter; > > pic = ctx->pic_end; > > - if (pic->encode_issued) > > + if (pic->encode_complete) > > return AVERROR_EOF; > > + else if (pic->encode_issued) > > + return AVERROR(EAGAIN); > > } > > > > if (!pic) { > > @@ -1177,20 +1179,31 @@ int > ff_vaapi_encode_receive_packet(AVCodecContext > > *avctx, AVPacket *pkt) > > return AVERROR(EAGAIN); > > } > > > > - pic = NULL; > > - err = vaapi_encode_pick_next(avctx, &pic); > > - if (err < 0) > > - return err; > > - av_assert0(pic); > > + while (av_fifo_size(ctx->encode_fifo) <= MAX_PICTURE_REFERENCES * > > sizeof(VAAPIEncodePicture *)) { > > + pic = NULL; > > + err = vaapi_encode_pick_next(avctx, &pic); > > + if (err < 0) > > + break; > > + av_assert0(pic); > > > > - pic->encode_order = ctx->encode_order++; > > + pic->encode_order = ctx->encode_order + > > + (av_fifo_size(ctx->encode_fifo) / > > sizeof(VAAPIEncodePicture *)); > > > > - err = vaapi_encode_issue(avctx, pic); > > - if (err < 0) { > > - av_log(avctx, AV_LOG_ERROR, "Encode failed: %d.\n", err); > > - return err; > > + err = vaapi_encode_issue(avctx, pic); > > + if (err < 0) { > > + av_log(avctx, AV_LOG_ERROR, "Encode failed: %d.\n", err); > > + return err; > > + } > > + > > + av_fifo_generic_write(ctx->encode_fifo, &pic, sizeof(pic), NULL); > > } > > > > + if (!av_fifo_size(ctx->encode_fifo)) > > + return err; > > + > > + av_fifo_generic_read(ctx->encode_fifo, &pic, sizeof(pic), NULL); > > + ctx->encode_order = pic->encode_order + 1; > > + > > err = vaapi_encode_output(avctx, pic, pkt); > > if (err < 0) { > > av_log(avctx, AV_LOG_ERROR, "Output failed: %d.\n", err); > > @@ -2520,6 +2533,11 @@ av_cold int > ff_vaapi_encode_init(AVCodecContext *avctx) > > } > > } > > > > + ctx->encode_fifo = av_fifo_alloc((MAX_PICTURE_REFERENCES + 1) * > > + sizeof(VAAPIEncodePicture *)); > > + if (!ctx->encode_fifo) > > + return AVERROR(ENOMEM); > > + > > return 0; > > > > fail: > > @@ -2552,6 +2570,7 @@ av_cold int > ff_vaapi_encode_close(AVCodecContext *avctx) > > > > av_freep(&ctx->codec_sequence_params); > > av_freep(&ctx->codec_picture_params); > > + av_fifo_freep(&ctx->encode_fifo); > > > > av_buffer_unref(&ctx->recon_frames_ref); > > av_buffer_unref(&ctx->input_frames_ref); > > diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h > > index b41604a883..89fe8de466 100644 > > --- a/libavcodec/vaapi_encode.h > > +++ b/libavcodec/vaapi_encode.h > > @@ -29,6 +29,7 @@ > > > > #include "libavutil/hwcontext.h" > > #include "libavutil/hwcontext_vaapi.h" > > +#include "libavutil/fifo.h" > > > > #include "avcodec.h" > > #include "hwconfig.h" > > @@ -345,6 +346,8 @@ typedef struct VAAPIEncodeContext { > > int roi_warned; > > > > AVFrame *frame; > > + > > + AVFifoBuffer *encode_fifo; > > } VAAPIEncodeContext; > > > > enum { _______________________________________________ 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".