From patchwork Thu Oct 6 07:35:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 38580 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4d9:b0:9c:f4b:4e41 with SMTP id 25csp68117pzd; Thu, 6 Oct 2022 00:38:51 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5npc3Qt1RcyjaglW/MSeNQWwpw9kbkMIbIh82b99TADcngOlHRZqIKUMwPxRjWufSUNkYR X-Received: by 2002:a17:907:2d9e:b0:782:69f2:a0ec with SMTP id gt30-20020a1709072d9e00b0078269f2a0ecmr2754027ejc.680.1665041931179; Thu, 06 Oct 2022 00:38:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665041931; cv=none; d=google.com; s=arc-20160816; b=fBUmJow8YRBkfmIMTQLrRkbryxB10NyytRwHCfAgJL4g0ywunrLMP3+S3G7IMoUQE6 R52dFxuYq0snk/RFI/C2mpdK7Z7I9U6qfaEhT7LP/ZtpOXr+OU3+07QlCUieC1SmID23 3Ydw5HtUfoB4JyrAjVZhj3Kqskr3loZIFGpurFYxXNCsFEu7uz8HGj8tjvs7qOJtSlP3 52h/7uaeP0/slS8XIn4Ox5jdpcvZXJBgWTms7MMvi6zSG4/DOohwaHOJQR2qb20io3vW KVsa/exqU/gawQ1PRvg7y1QsN9o3T3uaFuG/80Wg05/Ma5t6opOOGHW5+WAGjuoCySnA Ddhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=SuFsRbbB7UPm0nSZQBooUo+cpX3od6S6Z4JYYLrZmxI=; b=wm3Mh3+wcOI3Y9p0mNfwBmh+eCU4/xd51r4pt+i5cuu+ae4nJzYKHgcoo9yJVpjsDn DYOn/QV2rIq0PDUhrKzRdjG+Nw56KHy7zDGonNWwbqagBMnFA0jkFPduL0VAKc/tnT4s dFTfYD8BoyVltorYWJBtkPCbnn2TzN/XPVaigAsfi7QFAQo3Sh7dLHqxH4c8oq0YT0NR SFIkoPnRXI9MFCVmlNJ+AycVsMlFSixN9B2X2AZtYBlVmPMLuUJSUIrQamKlloQ4oI1o +tAL5obA4t90XpwyBPegElvi2B9OCgMuPbbKec9K59pa7m8uQiQhM5PCkGS5ZdOCal8P cAWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="DCS1eOg/"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w1-20020a1709067c8100b0070fc7c9d71dsi13518480ejo.989.2022.10.06.00.38.50; Thu, 06 Oct 2022 00:38:51 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="DCS1eOg/"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 32D9368BBFC; Thu, 6 Oct 2022 10:38:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C956568BBFD for ; Thu, 6 Oct 2022 10:38:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665041898; x=1696577898; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=v1paPjRXxAPs/9p+0qOFUndf2sEmbycEFwbZiMY1l2A=; b=DCS1eOg/1drGupsPJcGQg67t6O1DCOtNVYJVF5oYXc045TrfriyzxZAV QV/fEKjKFBE6hA22YzE4dkT2Zg3wD++DWJ4TbtxzLFSj+mSdvQV2bwg4G m5Vkb+wVNqI1qxwZ1ZOpDBvX6WNQ7gE7/2nzJqqi1Gphfebh+zwY4gc/X ec574VDdEPJbJ7AO7tZLC87o5FwwxjIhFxHLT+PU8aFltd1iHTsR0ojtj wHImWnfhMFIngW2nr+9hKDvzedO8r2VRnE29PZBhGL6g/Om8rMRmxy6/8 CU3y3miGXMEKdpzq0t3Rs93hW9OfLKJdNqadqZUzfh2zku5zDptmU7OPV A==; X-IronPort-AV: E=McAfee;i="6500,9779,10491"; a="300974400" X-IronPort-AV: E=Sophos;i="5.95,163,1661842800"; d="scan'208";a="300974400" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2022 00:38:04 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10491"; a="687319006" X-IronPort-AV: E=Sophos;i="5.95,163,1661842800"; d="scan'208";a="687319006" Received: from xhh-dg164.sh.intel.com ([10.238.5.169]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2022 00:38:03 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Oct 2022 15:35:37 +0800 Message-Id: <20221006073538.27710-5-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221006073538.27710-1-haihao.xiang@intel.com> References: <20221006073538.27710-1-haihao.xiang@intel.com> Subject: [FFmpeg-devel] [PATCH 5/6] lavu/hwcontext_qsv: add support for 12bit content on Linux 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: Haihao Xiang , Wenbin Chen , Fei Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: koL6PoqU4Edq From: Fei Wang P012, Y212 and XV36 are used for 12bit content in FFmpeg VAAPI, so these formats should be used in FFmpeg QSV too, however the SDK only declares support for P016, Y216 and Y416. So this commit fudged mappings between AV_PIX_FMT_P012 and MFX_FOURCC_P016, AV_PIX_FMT_Y212 and MFX_FOURCC_Y216, AV_PIX_FMT_XV36 and MFX_FOURCC_Y416. Signed-off-by: Fei Wang Signed-off-by: Wenbin Chen Signed-off-by: Haihao Xiang --- libavutil/hwcontext_qsv.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 93ecd2f1a3..ec0f72b329 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -128,6 +128,20 @@ static const struct { // the SDK only delares support for Y410 { AV_PIX_FMT_XV30, MFX_FOURCC_Y410, 0 }, +#if QSV_VERSION_ATLEAST(1, 31) + // P012 is used for VAAPI child device, + // the SDK only delares support for P016 + { AV_PIX_FMT_P012, + MFX_FOURCC_P016, 1 }, + // Y212 is used for VAAPI child device, + // the SDK only delares support for Y216 + { AV_PIX_FMT_Y212, + MFX_FOURCC_Y216, 1 }, + // XV36 is used for VAAPI child device, + // the SDK only delares support for Y416 + { AV_PIX_FMT_XV36, + MFX_FOURCC_Y416, 1 }, +#endif #endif }; @@ -1493,6 +1507,7 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) switch (frame->format) { case AV_PIX_FMT_NV12: case AV_PIX_FMT_P010: + case AV_PIX_FMT_P012: surface->Data.Y = frame->data[0]; surface->Data.UV = frame->data[1]; break; @@ -1517,6 +1532,7 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) break; case AV_PIX_FMT_Y210: + case AV_PIX_FMT_Y212: surface->Data.Y16 = (mfxU16 *)frame->data[0]; surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; @@ -1532,6 +1548,14 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) case AV_PIX_FMT_XV30: surface->Data.U = frame->data[0]; break; + case AV_PIX_FMT_XV36: + surface->Data.U = frame->data[0]; + surface->Data.Y = frame->data[0] + 2; + surface->Data.V = frame->data[0] + 4; + // Only set Data.A to a valid address, the SDK doesn't + // use the value from the frame. + surface->Data.A = frame->data[0] + 6; + break; #endif default: return MFX_ERR_UNSUPPORTED;