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 969EE40B19 for ; Mon, 27 Dec 2021 07:23:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7B5A368B06C; Mon, 27 Dec 2021 09:23:03 +0200 (EET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B18E268AFD0 for ; Mon, 27 Dec 2021 09:22:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1640589781; x=1672125781; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=1G8x+lDXNz2j0vFaR6vX5MHRJBkAQtUp146z9V+2fRI=; b=Q18T/yFo//5FkCHVRqELIa5x8AoidhtOKqXUX28VskkEOTI9TNlx+Ylr 4Yl4JqLxoX4mx3PeVyEIpE7wcB3MGMKfryTeKNpqrLd7GgPD0ExRjKZhp nZNRBSKevJu0/0RQ4Xa2lOLesC9poBU9G1epuq+StlxeqD0pLBj77VCHP X/ekQtZXBmZ1hx8tyUHnBn92MNs7BHpE1VSA90EOSTbKCmZ6A3vePdLoK DyjvEE2DIns+vfKpVsHtQvs5POiZ2cof6bLmuVpbbZa0PNC6/FOZvU3zp dLgcs2g36lD+O2+kbFuhLBVWv+LTNbxvrepxoC/qy/9fP1/aaG+sKp3YR w==; X-IronPort-AV: E=McAfee;i="6200,9189,10209"; a="265394911" X-IronPort-AV: E=Sophos;i="5.88,238,1635231600"; d="scan'208";a="265394911" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Dec 2021 23:22:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,238,1635231600"; d="scan'208";a="760666872" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by fmsmga005.fm.intel.com with ESMTP; 26 Dec 2021 23:22:54 -0800 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.20; Sun, 26 Dec 2021 23:22:53 -0800 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.20 via Frontend Transport; Sun, 26 Dec 2021 23:22:53 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.175) 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.20; Sun, 26 Dec 2021 23:22:53 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VDrJ3g982DJ9U3rKZMhe17BjswZC1TajlzNtVn0vEnhrQjQMQXD83DaTu78XIPiBpCyIN41u6wh05Y3mEygUsUcWHlZUovA9XsXvXxRl9X3nCOYE9sCj1eTHKatufZFTXMi+fwN7GK0EYi7MnDc614s7hGu7fRHReWoz9G0sW7cND8dKcmIrUlzKocfcr8ejv2kQAOVA/yc8ehylC/Ncrapf8JSKCXktQzx+60ZQTZ4kbbWkN0/Sz6HbpIuTlsTuVIK8YA9zYO/G7kvQj0Cx7etEOciJHdC9HyNWetoed7e1gEpIz9hw/+NP+msYx6S+88nw46l5OjLiBOcUxTTsAQ== 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=1G8x+lDXNz2j0vFaR6vX5MHRJBkAQtUp146z9V+2fRI=; b=oRKssHkphoQK05vfr4qJo6Q3E6J1ekpgrnw4mV3hnOkfU7hatlUwSd08uDlx7WWo1xRZ2dN3XUnmRkLa18UY6RrmERgvjZTtR6ZKqurgFtg0Ld8+aySBLUSak+gQx6Zppnkrv9FZhN/yuBhhQRuwF6VBHzAwYKod1F5m5PUUOPmOkckb3wmzHW76+awCSdXRwHp+iG6Fy3yMdhz9XZDMZymkX2kFAa01l9gtMyxKUciP2O3ipy2wm4XNB1gYs44RryAfwVMUwBUUS7+AHvxSIuZFVEpPt2RicGWbwHVC3OcRw55XLsKgHVoCMdn8J2ahkKw+D0fWMTS41N6IyYfwhQ== 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 BN9PR11MB5387.namprd11.prod.outlook.com (2603:10b6:408:11c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.18; Mon, 27 Dec 2021 07:22:52 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::bcfc:ceef:cd03:dd16]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::bcfc:ceef:cd03:dd16%3]) with mapi id 15.20.4823.022; Mon, 27 Dec 2021 07:22:52 +0000 From: "Xiang, Haihao" 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: AQHXyxE26TO00PQfREKyk/v3ZjvOCKxGTvkA Date: Mon, 27 Dec 2021 07:22:51 +0000 Message-ID: <3951cdd4c13cef34c48d76694b1f784511f4671f.camel@intel.com> References: <20211027085705.4114165-1-wenbin.chen@intel.com> In-Reply-To: <20211027085705.4114165-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: 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: a83c8194-eec6-4bc1-7f2a-08d9c909b199 x-ms-traffictypediagnostic: BN9PR11MB5387:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:632; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: liLxIHFO2bMObhOyihz2fbvpD3JDcYbnQsMuW9X9xGIpRtAwBzjWJ6WEBEg3BXOfJxWiVJlgcx3QLJOaUBZzHiUR5t3E9Ia0n/tgh1OxLN1pAV44gsTP40tlFyBjUoBmDSS7fdv+Huqg1bEKUctMw2Fkzso4h8T9lpmrBOqCswoHgspem68TTXNrP/8I+7afX/Dfr1X4dTH8fPAUHSM3QnN3b45oQUGrDL17pFkG1UNB3smnpJBz1HthrnyVHSDLCw17GxF/jkqo7+jZVXCoitFLruHAH1/eQNI0rxQzO8MG8QBRGBS+sW8LuOvtDtVC5Si5vM4fDL/zmL1+lhP2qmsJ2yck6x8pkkLMpF1CIwOCwtoKRoQPsfPR6U/u3JeJgFrkrAE3o5z4zBGXKw1yzSVlqLHF3XeMQ+oxBFkxUXWdlbhRCiEhR4OYZyIG25f/omnGOCWoDPGlzNRTczL/Qk0zV+xiMb5LHwqL1h04YOropcMvTeQVDU+G2iuaNSdrEL4tns0vaS1a6ZEPK1vcuiKi6e3rS12lV3PcM3d/WQiDVGgGYBJwS/zOhXu0dsopyVTUwZFzGQcC5LxPZiYGtp86chxc36uq27ZCkwuYux/pKg00o5YVGbNt19AiPzFypUgu7P9fx43AcFxZUEaM88uJxkKPcxQ2zUyGVr9cobtztDKj1zhtgRQ9/qABTgDPT3Ejt3X5n8JU/iS8WWwENetO2EQii5fcMBpl7r8SFSTFlExybSPXxQkFbvy5L1OP 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:(366004)(316002)(82960400001)(71200400001)(36756003)(5660300002)(508600001)(8936002)(86362001)(38070700005)(2906002)(6506007)(91956017)(8676002)(6486002)(122000001)(6512007)(2616005)(38100700002)(107886003)(66556008)(64756008)(66476007)(6916009)(66446008)(4326008)(26005)(83380400001)(66946007)(4001150100001)(76116006)(186003)(99106002)(43043002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Rnp1QmY3REIwUWV0YXZHRGdqNFJLRnA4U0tFQzhDWVdkbWIxbnJsRzhCLzhM?= =?utf-8?B?eWc4ZnFjVHlWNDJJUU9GNnRuMU5PVjc1WW1vZW9PMzJDVnd5dW1lYU5tdlpN?= =?utf-8?B?UXVUcnc1WllRTDNFZ05NVWZBS2poZHNmQ1FTVXpNSVVqUVBTeWtmTytyWTF1?= =?utf-8?B?UUtDalU5QmJIRTZRaEhFRlA0cmFVM2d4Q2U1blc4UHNJMXhzNm9zcGM0Umhx?= =?utf-8?B?dlJmTGlBdjErN3MrMGlSbFRRT29NdjJrOURqcU5jbXV5c1JEektaTm04TWFK?= =?utf-8?B?bkloVVROZ1htYlUxS3ZjNkxHY1p1ZHdmTlFLbndpWEhqUm5LbEQxdndsZlNB?= =?utf-8?B?amdjam81RGppajVRdU10OTFUQjVCVlVIR0JIWFplQUZxOHF2bi9hVVBBRGRn?= =?utf-8?B?Rkx5S215Y2VkQVBzVjZpTFZiS1NEU2gwbSt4dmFvR25Ic1IycFNKaHdhS21w?= =?utf-8?B?MDNVSUVvZS9iNVB6cThHMEJlYnJ5MU9oUEl3VGFoU1VnTWtWdmM3RDhEc0RC?= =?utf-8?B?QTFVNDZqZk12TFJPQVgwakl1WmI5M205NEZGaXpiZW55cGhhNTExWmJjNzFx?= =?utf-8?B?dGNmN29TdFVScC9sYTNHemUzNHR6ZlE5RmpSRXNkVGpFQjJLak9kWWNLRm5I?= =?utf-8?B?RTFEMWtnRnF5c0FQaExjbCtIYWVLRjJVYU1HMFBETkQ1ZjNHcGgxanhvNk5T?= =?utf-8?B?bE5iQURERDM0Z2RISFhuYXVuU1MzVnNmUmU4OWtEdmg5WVQvUEthRVpFeE11?= =?utf-8?B?QXZjV1BEeVdkUy9JRGlEWEhWZGVSTHdYQ2NTOVlpSXFJQ0k2c09XV1RBNE55?= =?utf-8?B?NGNzazNNbUJXQ1BqUzliSWZGM2VXUGlKTE1XYWREam9yZ001MWc3QkVJd1lM?= =?utf-8?B?UWk2bjh4Z0pNcklFT0N4K3FYbXViVTJBa3llT3puRzZaQlhFekorYWdLOW9C?= =?utf-8?B?RzVxSmFaeWhVYk9PNTdmbVYzTHdaVms3OXV1QWlsbWRoRkVlL2VjL2NHMS9u?= =?utf-8?B?bWZ5KzFGaGVmaVErTzVpcmxvNkxpSXFaTnVHSFpOc3ppa0VNNDQ1MWRGS1VL?= =?utf-8?B?am9UOGFhMm91cXgxK3NmaklQSk4xbkE2UXQydmtKaThJMmtOUnlGemFOY0ky?= =?utf-8?B?NkN2aTdzTDc1Y1VheGtPOEdQdFFRVzBJUnJ4dTJpOEFUMklZM3ErNVFnWFhC?= =?utf-8?B?ajJ5cjRwMExLQXc5aEo0NXVFWG5aR2xPVDRwL1RHalZTRUJJd0Ric0szSmxs?= =?utf-8?B?cUtTYmZaSVlYVUpTRzlYdHJPSS9jeCtCSHVnQUliQm5vZDdVd1hmVDNWZSt1?= =?utf-8?B?NG5UUy9LdjZBUHMxUEw2TjdxdEJHQVRzREV5UGdKb0Nzc0NDS2hjNGhzM2xI?= =?utf-8?B?SERmTFZmOWt3QnFnYjYyNE5WOExzR2lYMHlIVDFXaWJGeXFSS3l5ZWt0c05G?= =?utf-8?B?OHdLWUhFUWh6VkNXRmZtcndwZXY4VS8yakxGVmNtTHR5ZHQwVGFKUUpwL2dy?= =?utf-8?B?dGw1eDBvY2c2UVlZbERvQjI5TGhKQXFHWnN5WUFEQXZQYjV3OG1Ndk1ZaDJi?= =?utf-8?B?TG1NY1R2Q2FMNENEWWptdGZjbWFXRGJSUnJLWHM1Q2tQNVVySEp2ejNqQUZr?= =?utf-8?B?OWZ0cXNVMFF4bHR1aDM3aTJyalowQTNWd0pMQk8rY3JsT1ByZVBIOGJxYVdM?= =?utf-8?B?LzlZQkg1ajFQWGNnRldCZnNBTWxHdE84SUNsSlNLcno1UG0vUEhublBGdFR5?= =?utf-8?B?bE5MUkVXRzQyOTRDTkVDTFI1bmJjVnRsZ1ZLZzdiNDV5R1h6S0R5TXJOajB6?= =?utf-8?B?WWducHEzQWJvVWpXd1UreE5reDlralJDUGM5YXZCZjJNY3JCSmZPU1dvZmRv?= =?utf-8?B?akFmczFnYkl1ZVpjMVRobTkxM0xXQ3UyYjJ1YTc5aFlFYk43dWdHSEt5Uk00?= =?utf-8?B?bk5FZkQvNUEzMVpnaUp3ZTJNUE9XUC82VmRhd1FOL3o1NG9LTnQveU1wdWVS?= =?utf-8?B?NDBoSGZsUkdUUjliYlR5SUtOYk1mOXVHdlFvNDloU1dMNmluaitjNmxRQWdk?= =?utf-8?B?WXNMMG15b1JWVEwzUDJkaDUwZHhCQXd5UTMwakFtY1BiUFE2eWNyRjYxOGtY?= =?utf-8?B?eUtOczlCMzZRdStsTCtUK2MwU09jV2NBc0wrdjMrQS9hRnZHRHdERVdpdHlZ?= =?utf-8?Q?CCHJoSTt1WZZh6kse7yxpno=3D?= Content-ID: <67C8BFA71A4BF4458CEB010474648928@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: a83c8194-eec6-4bc1-7f2a-08d9c909b199 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2021 07:22:52.0057 (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: /Zfz34SXSii1RK1Dx/O87DlnuDXgjgnpCySzZEO+o+cgKiP6uz6kGb4Msg/i/NUu3jIzY1CLAM2iFky7OXDhnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5387 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: "Chen, Wenbin" 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 > > 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".