From patchwork Fri Aug 12 04:20:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 37238 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp765728pzi; Thu, 11 Aug 2022 21:21:18 -0700 (PDT) X-Google-Smtp-Source: AA6agR7ZH6+ErUTPriNEriSZAhXlXIxxKuF0nEM6DwAQD657iHbc8f4PQLyugaMuoLKuJ7coFiXY X-Received: by 2002:a05:6402:95c:b0:43d:6297:f241 with SMTP id h28-20020a056402095c00b0043d6297f241mr1894072edz.373.1660278078466; Thu, 11 Aug 2022 21:21:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660278078; cv=none; d=google.com; s=arc-20160816; b=IwJzjWq83abmKwTOHpASp+4kINdnTJ3W4inLFdXK7queY8ekXXCbJ7XQcJqz8anArB IERCqbQnqCcWwirLg6H1ypl+Epjqu8EZxV37Wu1aN8vF25iWjXd6uq+F5wILLYKfrx+q NnwYxvAx2X02ijg2zn/7YddJXiVcnKXNEnSQygp4I+sR6tI8DdFBUwiuvU07omUEellR 39iAAZFkCYQHFpr8/L8aqPuAaNxLyuKAuEoNRTFvT22Axkjg/1icTfWMD3lVXJDjp0HR BYbFg4K4tJLXyfSLzZDFkzaA7alxYdocTiFeEqjTlJGbdgOialVEAh+CKVkqcD5AhWe5 vAtA== 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:message-id:date:to:from:dkim-signature :delivered-to; bh=PaHR3vjGPc22HG4JofXE9XYeRn+M3XquLy6RhMszM0A=; b=QTvQmwxgbv2a7DD7MEpa6GD90OicR2lstFjYDzkrt2rNa21Q34NfRlr2w4cOUxaVn8 RzuzPzond1BB/OLHba30i9svWRZEDg/yuIFvuzxu31CkRWyybsfIPh4QydQL6SA+f5OZ nLCTGZQCxCWwHbPU5DnqUEf990C2hnYEAU5kCeZpk5IfOFTILFUCEF4RS8BSi8vmjqLN D5bwwQ+VSEYOk5Q+22ka/gE1z0MyIgN5mFNMgp+uHkxSQ7uEwVq6qDM3tc1a0KvPuNCc nnMJYuIOccfnh0Lp7l1FXu1xNrv4GAw5Vnx81mzoGpEu13pMAIJ+S7bUeiWJvdT6R75o HBTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=WYICGeUs; 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 hy16-20020a1709068a7000b007308bc0ecaesi858976ejc.429.2022.08.11.21.21.17; Thu, 11 Aug 2022 21:21:18 -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=WYICGeUs; 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 3C33468B939; Fri, 12 Aug 2022 07:21:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BE41468B5A2 for ; Fri, 12 Aug 2022 07:21:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660278071; x=1691814071; h=from:to:cc:subject:date:message-id; bh=DFkXQPPH5H0ItIAfPLyZV69nj7vvdtj3bQmQhWAj2/Q=; b=WYICGeUsJn2N8D/QdMmoy35V17o/qLM8+vfNaTcRqQQycVxj1CZV4oX3 ZhA6Rc/36zw/GUGR//pD6LFDpodsqZO+KyOuI45IVxc3E9VRmkUsQUqqK D/YlimHsiydJ10a+S4+ObunVTfpexqQ/vaAuIrjGDTElaev4mdcRGPFRO pOCkucU0WGsVLS1Bx/uXJcsLA7MQqIDp6w8ezpW0lLMnUlTBT95nG9CM0 eHZzVAx9KIy2+alE2knG8FnrjexlN1Rnukt+o+8lmbKADaNfaajGcNHpQ kT3RAB+SAVZTuUPVtTmn6Uv+iSBHJC2UHux187KyH38ehyfz7d+1xC1KQ A==; X-IronPort-AV: E=McAfee;i="6400,9594,10436"; a="274574014" X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="274574014" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 21:21:04 -0700 X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="602395110" Received: from xhh-dg164.sh.intel.com ([10.238.5.169]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 21:21:03 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Aug 2022 12:20:52 +0800 Message-Id: <20220812042053.9662-1-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 1/2] lavu/hwcontext_qsv: add support for AV_PIX_FMT_VUYA 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: P8Y00AK6Tl88 From: Haihao Xiang It is used for 8bit 4:4:4 content --- libavutil/hwcontext_qsv.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 510f422562..ee1f9c833a 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -119,6 +119,8 @@ static const struct { MFX_FOURCC_YUY2 }, { AV_PIX_FMT_Y210, MFX_FOURCC_Y210 }, + { AV_PIX_FMT_VUYA, + MFX_FOURCC_AYUV }, #endif }; @@ -1502,6 +1504,12 @@ static int map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; break; + case AV_PIX_FMT_VUYA: + surface->Data.V = frame->data[0]; + surface->Data.U = frame->data[0] + 1; + surface->Data.Y = frame->data[0] + 2; + surface->Data.A = frame->data[0] + 3; + break; #endif default: return MFX_ERR_UNSUPPORTED; From patchwork Fri Aug 12 04:20:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xiang, Haihao" X-Patchwork-Id: 37239 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp765827pzi; Thu, 11 Aug 2022 21:21:35 -0700 (PDT) X-Google-Smtp-Source: AA6agR5yLMV1ZcM7votOYj1zBolk5fO4QbfrtjGA8ckwgz7gZkrjGO8cvwcItGlQXaxLd26BP9on X-Received: by 2002:a17:907:3111:b0:730:6535:b3fb with SMTP id wl17-20020a170907311100b007306535b3fbmr1397236ejb.490.1660278095166; Thu, 11 Aug 2022 21:21:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660278095; cv=none; d=google.com; s=arc-20160816; b=M9p1rkacyLsBIiyfHGfUB+5zLxAznwGw2thzeTG7kxFxj4rTM0f93zEtK6KIT8pBlA f2ykpYnNmgTAlqBhLu7dIJMSR+r4QZzLq/AWRIM5RzWHRWV5i9ZIrXA1YVXRGxggcPt3 4JQPvELZceLiAxTfaQt2jchrZsZJCO1+1wuzW6rVfC0YwDwcnJbbdn9T90o4FtrVOSdx lK9Fk2GU5prjFZWOM+ZxAWmLRsqYGi+0Tid+VSSx1wrX4YxItz50lGS8tYWTAZzr+npy Vg5598Gy7ftYVwGP5cbwK5orc3HalRkAEChMABvAfmCKNlb2prF7u61tZtnO/NKg1fnx Ic2g== 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=uOqBSWUjE2EO7e+hA120AC61S8fNdKfMY5Jw29R4DEw=; b=CeR7ij87cTREdaajerj9YNY3+ApN4E3ARLvP1CepXue7ciymZ2kWZ/kRYEKUTKRoVh KtH5DXIe2xk6MNCPpCd3Rd+TZ7KtWoXuR7vQnCREHWWcsAqw1c+AL59wn1O8+EOY/lLW S1hDu1pxA35MNe6jJHe5AZZ7udnUs7l/k2nTHvmG8kAHiOjeciZiaym86wfZsAPNvNh6 qyTDgtlC4+lfElkHD5TnfvOmNU9bDQCzpyTec5bJC6T7TF1HnohQeV70duKpvYrwcrKf 5WLo9ekg6YKwLoXL3es0AmgYccMdISYqyksYqPw7ZmG4oAJg0WA8IugGKdGL0LMkcGSl B2zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=DlgmiEp+; 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 m11-20020a056402510b00b0043cd07cb6e5si1310594edd.78.2022.08.11.21.21.34; Thu, 11 Aug 2022 21:21:35 -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=DlgmiEp+; 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 703CB68B960; Fri, 12 Aug 2022 07:21:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 36D9D68B5A2 for ; Fri, 12 Aug 2022 07:21:25 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1660278090; x=1691814090; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=XXwCz8jmuhelqlnJlRJ2L5t17ECKpBPrEpBjODCTKtg=; b=DlgmiEp+8NBpXBWz0tlSnDylmTJjnQLnpVqr/HgHFOS66yrEpKtshIrA WNjFgH7ivyTPZd2M5wkwjQjIp+OJZTo5R3ERGRqangwE4o+YuJwrizBcX 5SSD4mggToL7ChM4W1bQAH6Okunlj9rES4NNrBtu4n6n6dD3Xd0I/Cww3 YOrKPAdRKp3Y3EYDGTBnW88qe95QRmhx9/ImXTkFt90ZVl8N3yv0a9/q+ Yu1yelRHjFHFxt5umnSseM/2AlFaTCZzdjahdZHPyw58DEssxCaaRDbuh VBl+9monlSl35af1UeEqj7HTbBPN9YesofOqh+GYDY3p/eJMdLU6CAnk2 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10436"; a="271902261" X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="271902261" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 21:21:23 -0700 X-IronPort-AV: E=Sophos;i="5.93,231,1654585200"; d="scan'208";a="602395169" Received: from xhh-dg164.sh.intel.com ([10.238.5.169]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 21:21:22 -0700 From: "Xiang, Haihao" To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Aug 2022 12:20:53 +0800 Message-Id: <20220812042053.9662-2-haihao.xiang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220812042053.9662-1-haihao.xiang@intel.com> References: <20220812042053.9662-1-haihao.xiang@intel.com> Subject: [FFmpeg-devel] [PATCH 2/2] lavc/qsv: Add support for decoding & encoding 8bit 4:4:4 content 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: eySiRBWlPKe8 From: Haihao Xiang AV_PIX_FMT_VUYA is used in FFmpeg and MFX_FOURCC_AYUV is used in the SDK --- libavcodec/qsv.c | 12 ++++++++++++ libavcodec/qsvdec.c | 2 ++ libavcodec/qsvenc_hevc.c | 1 + libavcodec/qsvenc_vp9.c | 1 + 4 files changed, 16 insertions(+) diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c index 3449789a2c..6a4730a482 100644 --- a/libavcodec/qsv.c +++ b/libavcodec/qsv.c @@ -211,6 +211,7 @@ enum AVPixelFormat ff_qsv_map_fourcc(uint32_t fourcc) #if CONFIG_VAAPI case MFX_FOURCC_YUY2: return AV_PIX_FMT_YUYV422; case MFX_FOURCC_Y210: return AV_PIX_FMT_Y210; + case MFX_FOURCC_AYUV: return AV_PIX_FMT_VUYA; #endif } return AV_PIX_FMT_NONE; @@ -243,6 +244,9 @@ int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) case AV_PIX_FMT_Y210: *fourcc = MFX_FOURCC_Y210; return AV_PIX_FMT_Y210; + case AV_PIX_FMT_VUYA: + *fourcc = MFX_FOURCC_AYUV; + return AV_PIX_FMT_VUYA; #endif default: return AVERROR(ENOSYS); @@ -277,6 +281,14 @@ int ff_qsv_map_frame_to_surface(const AVFrame *frame, mfxFrameSurface1 *surface) surface->Data.U16 = (mfxU16 *)frame->data[0] + 1; surface->Data.V16 = (mfxU16 *)frame->data[0] + 3; break; + + case AV_PIX_FMT_VUYA: + surface->Data.V = frame->data[0]; + surface->Data.U = frame->data[0] + 1; + surface->Data.Y = frame->data[0] + 2; + surface->Data.A = frame->data[0] + 3; + break; + default: return AVERROR(ENOSYS); } diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 89ec5dcee8..f7b1371586 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -141,6 +141,7 @@ static int qsv_get_continuous_buffer(AVCodecContext *avctx, AVFrame *frame, frame->linesize[0] = 2 * FFALIGN(avctx->width, 128); break; case AV_PIX_FMT_Y210: + case AV_PIX_FMT_VUYA: frame->linesize[0] = 4 * FFALIGN(avctx->width, 128); break; default: @@ -1041,6 +1042,7 @@ const FFCodec ff_##x##_qsv_decoder = { \ AV_PIX_FMT_P010, \ AV_PIX_FMT_YUYV422, \ AV_PIX_FMT_Y210, \ + AV_PIX_FMT_VUYA, \ AV_PIX_FMT_QSV, \ AV_PIX_FMT_NONE }, \ .hw_configs = qsv_hw_configs, \ diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c index e11f5dec4a..df6bb40648 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -311,6 +311,7 @@ const FFCodec ff_hevc_qsv_encoder = { AV_PIX_FMT_QSV, AV_PIX_FMT_BGRA, AV_PIX_FMT_X2RGB10, + AV_PIX_FMT_VUYA, AV_PIX_FMT_NONE }, .p.priv_class = &class, .defaults = qsv_enc_defaults, diff --git a/libavcodec/qsvenc_vp9.c b/libavcodec/qsvenc_vp9.c index c738da3904..5b3e24ed54 100644 --- a/libavcodec/qsvenc_vp9.c +++ b/libavcodec/qsvenc_vp9.c @@ -113,6 +113,7 @@ const FFCodec ff_vp9_qsv_encoder = { .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, + AV_PIX_FMT_VUYA, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .p.priv_class = &class,