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 21D6C4082F for ; Sat, 2 Apr 2022 09:27:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 46BDB68B211; Sat, 2 Apr 2022 12:27:10 +0300 (EEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A9A1868AD96 for ; Sat, 2 Apr 2022 12:27: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=1648891628; x=1680427628; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=aVgJiz/PUP4I7TjBLKhW9k+whm9YwgcuT9NwZdWcVxg=; b=g5XlVcpAtbmXyq6afm1vzFGTESBkNfO+jyPbF9k/zinVJqX49NgT5Zdi EadhMAiiA0axBwsfsNpOUrKYSaSO829KwKeto6mpEjeZuKpOuUVA4hazY QStavXFD0M2+idgMRztj8YWIVu2BaTX89WNqmU4o5S1VYnJlqqSGQDqPz PHHMjaTb+1jwE6RDgt1CMioG9OIbim4Z2yziO9KqtQTFTk7KIP1Xivk7I a/Lipa8AsKDm//dpam/uhw+0TOPZ+oPWHxxJz8M7A8qQklqaSWTZbecGY My2Ha9wtBaA0wuWlg/4mCcBQHyXWvUNmHhDWxaNjTUN9MOVnEJ2zMHfLK A==; X-IronPort-AV: E=McAfee;i="6200,9189,10304"; a="346729156" X-IronPort-AV: E=Sophos;i="5.90,229,1643702400"; d="scan'208";a="346729156" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2022 02:27:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,229,1643702400"; d="scan'208";a="548100095" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga007.jf.intel.com with ESMTP; 02 Apr 2022 02:26:59 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Sat, 2 Apr 2022 02:26:59 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) 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.27 via Frontend Transport; Sat, 2 Apr 2022 02:26:59 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Sat, 2 Apr 2022 02:26:59 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XrURh1aoNhKoAnLDvfGuv2XgS8Z0J3IebYVq/h4EPAJ2lhcAFpWJQGMM2CvWjvlmiXw1hCFXIs3ZPtlfrTOslAssy1sthIasf3/hToLKJrPxELadjXz8VY6Z32hzIaX/Ht9aFQ368QifBcbP04b0ZDssD75k1fu0jR5PI6iiWw0Y2qsVWdNgPr2y1I8d1hx0JMRpzPalk0u/+fgc3k/rR6er3ROu8m1FZjJHp9k3q1+dyZGVV4E5phJsK5Bo3crO6VD5ZU9T42ofa8TYs60/TVhD+hXLaVwVIhMSN6o0BYPMmMGy0G1pW4p96GFTlZaHO1ZHpjHb9CeNKLcg7Uhkjw== 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=mRR74pXdOyKY4qH4TH0vZkaOT7Vr67t4zdSB5V8T51M=; b=WgsMSWvhDzOzNBoNLaYclmLLRkaBvcZrEZUvJUvFJ+eXA3UbpBVa52dcci4v8waHHBuAZgGDBhVfJeGMJFfpNBD8mNwdvcdwhwzI2k8qDZKHP7UP0cmXWVaSoPDjNe0ktJBxzpM1FwiCWETVVrLFymO09bKwZd8jyrnRGnfm85ppCcqbxFrndihiF0T28ZNiPN1TTkSAFAiInFMbT2iT/iiFRkDq8RqOSkZQOrwgZ0uyxqs9t8hZSTjmN4Wt45SYleBPdeBnp1hmXULOa80/Uqlay5K9o76KAYZ/nlt4OOLmQ1drXFKjyNHLor+3D7YiCRDrO45xn1iLzW7PEvJ7pw== 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 BN6PR11MB4018.namprd11.prod.outlook.com (2603:10b6:405:7a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.21; Sat, 2 Apr 2022 09:26:57 +0000 Received: from BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::f4be:cd00:85e4:4f5]) by BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::f4be:cd00:85e4:4f5%7]) with mapi id 15.20.5123.021; Sat, 2 Apr 2022 09:26:57 +0000 From: "Chen, Wenbin" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH 1/2] libavcodec/qsvdec: Add more pixel format support to qsvdec Thread-Index: AQHYRAGikFz6knSs+0akP3nn0e7kXKzcWGEAgAAG+SA= Date: Sat, 2 Apr 2022 09:26:57 +0000 Message-ID: References: <20220330064349.850881-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.401.20 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: 1581a084-743b-4bab-7e5d-08da148aeed5 x-ms-traffictypediagnostic: BN6PR11MB4018: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: bTba5iPotCdFUxbgKzN2K/8qNIASzOMtlEKf3SU4aTr8wnulbYEVziIKJspL7m9NqDMHXc2eUK9y/KDNg5jF5/Zh5y135a/h4czhYTer1eG1fGw6xulcMQEPHnAiowWVN72spIsbxcckswOEBkoqbwemvRjhOkd9ALuI+lj0OFPNdmtllwGHaZRKePlA47+M6H2rhJ23tClZeTqL0wcNyF8o72r2Ir9NwJpkUB3MrGWUWCsj38xPrAkC1v0R0HXWJ0U9UT37gIWz81grMlDVUR7QEmL00yuIUtZ7A85XKTMk4Xq//XgtfGp5ywwOQacFGqwuuir9htKMLkd6b2zTXaajDakZiycWNllvnrDrT+fBAxO/MglzaFmn1CdtobDLhrJao/hVhZ44ETK2abgCuGCkavnmCIrW6xH7ODfq23o3x0LyI4uPlWuHam+uKQLJzLMig/u0NkSVvthO9WeSnDLT9Kkrf43XFwf9MS5O6nzs/7UBOLnfTivtsbpbyQ1a9KY/s5XrbeX4ZPZAz6k6VKWIHqPnGI4lYaKIeVfBMS+rD3l2iQLXyaQGtzA6z6EGAXL6dcn+V+2gzR+svUAMOtjinNuqa0cG9pQqms6c5bWGAHX0DSsFUSHTBFn1vUayWjtO7wyfjsy461+QRiiNOluxdumh69nM3f39ulbSiPY7RpRdABafOmrFYTMLLqQj7hc01N2HGmKSqut7cUSpZ84vJSqB3d+2BI/Mck7dICyGqbUQHmLVLGjtJdjaWBTYMt4oPQJpw6OCrDgxPiw8P3Ic6fMGBDzmcS2zx2TWNnw= 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)(8676002)(86362001)(71200400001)(316002)(66556008)(38070700005)(55016003)(26005)(38100700002)(66476007)(83380400001)(66446008)(64756008)(186003)(66946007)(76116006)(966005)(52536014)(6506007)(508600001)(82960400001)(122000001)(7696005)(2906002)(5660300002)(9686003)(6916009)(8936002)(33656002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?vT1FcAxguaf4fHKdoLjVhpiaOzgl7gJQkpHaVZOraBNiCiVP0Pf3TMWR//Q0?= =?us-ascii?Q?GcmHul2Si+s5CB7zVomJ7gD0U8kYrJi/Fh5W/hBtpFKVZMr95LZ8eoVVPEdd?= =?us-ascii?Q?/iTJznsm76w9QLsjjRHiS0QWsYp/7vhcefAoZ8LgyeGwWb24/P5286/PKVgg?= =?us-ascii?Q?D2qf5DvRX5cWctzVQJqohCh1ta4hsyiKtBlFsMU3TpZdj6/AG27B5QB4cf2z?= =?us-ascii?Q?27LEsuTsZQYN26MopLmZrVeJgzQDNFpTC9DVyHRvs2qSS4H3PzhoeAh8yt5j?= =?us-ascii?Q?jjzGAaH8ER1opwoYTWsTifjEw3FDE87hX/NRCUe6nYVTfG0uapwIyzfKMYVb?= =?us-ascii?Q?fPcPgVmqtP7FJ7TFRWcIA2FapAFZggIzS/7LQslK4qbolo41luVN503dRCGf?= =?us-ascii?Q?PpsYV/V6hx1vU+exJqJKFXTcyyGhEmzon7E+ThcmKxAIA9vAyptxbpI4C5Gh?= =?us-ascii?Q?beIjl4tHbTTw6AJ92PkdgRhacQBVWSDX/rpqmznRxRPHnebFhR9LM/Ch6Zvj?= =?us-ascii?Q?9EQXLyyEc/z2NBJkdQolyt9yoU6FV7+dpyvmSh1+qSym+HjIxrB3EjEul7Wv?= =?us-ascii?Q?VnMps/AAsFbU9kIWaCPGFbxXRJY098/Oy0kBIu6lcHFomL4Jl6KSiTqCVifU?= =?us-ascii?Q?vO3MW6YAFApKved9jEllxVn6C9zLMxi+QZT/TmVK9e7ouo6FOCeD40pMObnC?= =?us-ascii?Q?c1CZIh06izyCJ7Bc6rxmERD7YdZkhPAFWi2r5yt7tmsEC4SHMFqvGORJpWVK?= =?us-ascii?Q?hj36Y4BXjJNYMjL5WeL1m30nc9yfNZFK+9QLBSpkajFO5FV1dNZqf7XDbSMd?= =?us-ascii?Q?LkPWsEsxcV8Ka8vWJVJFGrUBFttX5ygoLZRf/SUP//ybkwq/0zyJSEa4cZyX?= =?us-ascii?Q?PiAA3/JKmeyV584zAPNmoR2TtDDX0/UJpFda9OQK2VI39dHBTGB+pOFmiKQE?= =?us-ascii?Q?MmJSu1gfHruRjKBWGmvwKyolamyOtkUp7BO355GzS8PUOp86MHKlgQe7PwjD?= =?us-ascii?Q?eBrPti/y5G9FXMmxp5/RSU/XY6LVDNhJfk9ypq8tW7ESx8X25mqW/M09pXFI?= =?us-ascii?Q?ry+1oqTbCi8WFKg1pNBoID3/bEso2MWNxgs3dlrL+ehPQWIUm7cd+EDqcmLz?= =?us-ascii?Q?+W2474ZFDstSTvhXUZq1M9r2+Y3zGtHVi8tMGWBJ59X0mIDztuEnoKJibsDy?= =?us-ascii?Q?KEoj8KJIpWtOnRbSFtWgUyXg46ke2Jmpy7oRKXAxYXJ0yQLFokM1LJUucXdb?= =?us-ascii?Q?k15oxe7A2PDjH/pUgadryD6dRgLvol87lm31W2XUImhsnx5lcJ1+12sOjKli?= =?us-ascii?Q?ue55FkOQ4PMRMDoDgScUuCr6zFnyj7trV5EyG/MngzmCeMIFtvbJnTre/Sqp?= =?us-ascii?Q?SigBpxuh9vPQIgTm3aN+FrKpfmOoCs8LoQ9IzUOhBx2YaHaZ8mqBPOK6r7aY?= =?us-ascii?Q?qLss/v4slle5zCutMTWPJfSA00aobiII01lEOldphUjAkjMCeY6sLBS1asAz?= =?us-ascii?Q?Tz71tiMsqqBjFlF3LilQm8mrQh6mgX+12PptJ19jUgXYXGexBDPbHVAQv+I4?= =?us-ascii?Q?oWeVkLOczY20eytYaWd03UI7svAPwjjQdOFz1G8LEkQUNSnccz9PxiPkT5Bo?= =?us-ascii?Q?1w/KjIpZ5WSAdJTm0HDSSS4E88PyimsCiHJCVHJ90k8p9zF9pUYkB3uId9cV?= =?us-ascii?Q?Von1BkIBjYsr54O9b0Qb+Nj0Z4Kc9qxxqH9Ftw+A2y8ETI7FNGfQJyzy0AbP?= =?us-ascii?Q?3IUvFcO43A=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: 1581a084-743b-4bab-7e5d-08da148aeed5 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Apr 2022 09:26:57.0889 (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: 5njpwQkWEJVJJ1GAhnOPhODjMl+iRGH3Dg9omqf+kenjPuNWsSa4EaHJFvDzUHB7j69bRxXBmnTHr95DSjO2QQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4018 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 1/2] libavcodec/qsvdec: Add more pixel format support to qsvdec 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 Wed, 2022-03-30 at 14:43 +0800, Wenbin Chen wrote: > > Qsv decoder only supports directly output nv12 and p010 to system > > memory. For other format, we need to download frame from qsv format > > to system memory. Now add other supported format to qsvdec. > > > > Signed-off-by: Wenbin Chen > > --- > > libavcodec/qsv.c | 36 ++++++++++++++++++++++++++++++++++++ > > libavcodec/qsv_internal.h | 3 +++ > > libavcodec/qsvdec.c | 23 +++++++++++++++++------ > > 3 files changed, 56 insertions(+), 6 deletions(-) > > > > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c > > index 67d0e3934a..8010eef172 100644 > > --- a/libavcodec/qsv.c > > +++ b/libavcodec/qsv.c > > @@ -244,6 +244,42 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat > format, uint32_t > > *fourcc) > > } > > } > > > > +int ff_qsv_map_frame_to_surface(const AVFrame *frame, > mfxFrameSurface1 > > *surface) > > +{ > > + switch (frame->format) { > > + case AV_PIX_FMT_NV12: > > + case AV_PIX_FMT_P010: > > + surface->Data.Y = frame->data[0]; > > + surface->Data.UV = frame->data[1]; > > + /* The SDK checks Data.V when using system memory for VP9 > encoding */ > > + surface->Data.V = surface->Data.UV + 1; > > + break; > > + case AV_PIX_FMT_X2RGB10LE: > > + case AV_PIX_FMT_BGRA: > > + surface->Data.B = frame->data[0]; > > + surface->Data.G = frame->data[0] + 1; > > + surface->Data.R = frame->data[0] + 2; > > + surface->Data.A = frame->data[0] + 3; > > + break; > > + case AV_PIX_FMT_YUYV422: > > + surface->Data.Y = frame->data[0]; > > + surface->Data.U = frame->data[0] + 1; > > + surface->Data.V = frame->data[0] + 3; > > + break; > > + > > + case AV_PIX_FMT_Y210: > > + surface->Data.Y16 = (mfxU16 *)frame->data[0]; > > + surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; > > + surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; > > + break; > > + default: > > + return MFX_ERR_UNSUPPORTED; > > Please change the return type to mfxStatus if you want to return a mfx error > code, otherwise return a ffmpeg error here. > > Thanks > Haihao > Thanks for review. I will update it. > > > + } > > + surface->Data.PitchLow = frame->linesize[0]; > > + > > + return 0; > > +} > > + > > int ff_qsv_find_surface_idx(QSVFramesContext *ctx, QSVFrame *frame) > > { > > int i; > > diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h > > index 58186ea7ca..e2aecdcbd6 100644 > > --- a/libavcodec/qsv_internal.h > > +++ b/libavcodec/qsv_internal.h > > @@ -147,4 +147,7 @@ int ff_qsv_find_surface_idx(QSVFramesContext > *ctx, > > QSVFrame *frame); > > void ff_qsv_frame_add_ext_param(AVCodecContext *avctx, QSVFrame > *frame, > > mfxExtBuffer *param); > > > > +int ff_qsv_map_frame_to_surface(const AVFrame *frame, > mfxFrameSurface1 > > *surface); > > + > > + > > #endif /* AVCODEC_QSV_INTERNAL_H */ > > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c > > index 661f15bc75..f159e2690f 100644 > > --- a/libavcodec/qsvdec.c > > +++ b/libavcodec/qsvdec.c > > @@ -132,21 +132,28 @@ static int > qsv_get_continuous_buffer(AVCodecContext > > *avctx, AVFrame *frame, > > frame->linesize[0] = FFALIGN(avctx->width, 128); > > break; > > case AV_PIX_FMT_P010: > > + case AV_PIX_FMT_YUYV422: > > frame->linesize[0] = 2 * FFALIGN(avctx->width, 128); > > break; > > + case AV_PIX_FMT_Y210: > > + frame->linesize[0] = 4 * FFALIGN(avctx->width, 128); > > + break; > > default: > > av_log(avctx, AV_LOG_ERROR, "Unsupported pixel format.\n"); > > return AVERROR(EINVAL); > > } > > > > - frame->linesize[1] = frame->linesize[0]; > > frame->buf[0] = av_buffer_pool_get(pool); > > if (!frame->buf[0]) > > return AVERROR(ENOMEM); > > > > frame->data[0] = frame->buf[0]->data; > > - frame->data[1] = frame->data[0] + > > - frame->linesize[0] * FFALIGN(avctx->height, 64); > > + if (avctx->pix_fmt == AV_PIX_FMT_NV12 || > > + avctx->pix_fmt == AV_PIX_FMT_P010) { > > + frame->linesize[1] = frame->linesize[0]; > > + frame->data[1] = frame->data[0] + > > + frame->linesize[0] * FFALIGN(avctx->height, 64); > > + } > > > > ret = ff_attach_decode_data(frame); > > if (ret < 0) > > @@ -426,9 +433,11 @@ static int alloc_frame(AVCodecContext *avctx, > QSVContext > > *q, QSVFrame *frame) > > if (frame->frame->format == AV_PIX_FMT_QSV) { > > frame->surface = *(mfxFrameSurface1*)frame->frame->data[3]; > > } else { > > - frame->surface.Data.PitchLow = frame->frame->linesize[0]; > > - frame->surface.Data.Y = frame->frame->data[0]; > > - frame->surface.Data.UV = frame->frame->data[1]; > > + ret = ff_qsv_map_frame_to_surface(frame->frame, &frame- > >surface); > > + if (ret < 0) { > > + av_log(avctx, AV_LOG_ERROR, "map frame to surface failed.\n"); > > + return AVERROR(EINVAL); > > + } > > } > > > > frame->surface.Info = q->frame_info; > > @@ -993,6 +1002,8 @@ const FFCodec ff_##x##_qsv_decoder = { \ > > .p.priv_class = &x##_qsv_class, \ > > .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, \ > > AV_PIX_FMT_P010, \ > > + AV_PIX_FMT_YUYV422, \ > > + AV_PIX_FMT_Y210, \ > > AV_PIX_FMT_QSV, \ > > AV_PIX_FMT_NONE }, \ > > .hw_configs = qsv_hw_configs, \ > _______________________________________________ > 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".