mirror of
git://git.yoctoproject.org/meta-intel
synced 2026-01-01 13:58:05 +00:00
onevpl: Add VDSFC CSC support for sample_decode
Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com> Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
This commit is contained in:
parent
ff68bb4952
commit
5a66f35237
|
|
@ -0,0 +1,132 @@
|
|||
From f8d87fc857d5bfd69247c985ed82ba88e167ef30 Mon Sep 17 00:00:00 2001
|
||||
From: "Yew, Chang Ching" <chang.ching.yew@intel.com>
|
||||
Date: Fri, 9 Jul 2021 13:59:33 +0000
|
||||
Subject: [PATCH] sample_decode: Add VDSFC CSC for AVC/HEVC
|
||||
|
||||
Upstream-Status: Submitted
|
||||
innersource PR #289
|
||||
|
||||
Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com>
|
||||
---
|
||||
.../sample_decode/src/pipeline_decode.cpp | 84 +++++++++++++++++--
|
||||
1 file changed, 77 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/tools/legacy/sample_decode/src/pipeline_decode.cpp b/tools/legacy/sample_decode/src/pipeline_decode.cpp
|
||||
index 4dc811c5..d817ff2a 100644
|
||||
--- a/tools/legacy/sample_decode/src/pipeline_decode.cpp
|
||||
+++ b/tools/legacy/sample_decode/src/pipeline_decode.cpp
|
||||
@@ -765,6 +765,14 @@ bool CDecodingPipeline::IsVppRequired(sInputParams* pParams) {
|
||||
if (pParams->eDeinterlace) {
|
||||
bVppIsUsed = true;
|
||||
}
|
||||
+
|
||||
+ if ((MODE_DECODER_POSTPROC_AUTO == pParams->nDecoderPostProcessing) ||
|
||||
+ (MODE_DECODER_POSTPROC_FORCE == pParams->nDecoderPostProcessing)) {
|
||||
+ /* Decoder will make decision about internal post-processing usage slightly later */
|
||||
+ if ((pParams->videoType == MFX_CODEC_AVC) || (pParams->videoType == MFX_CODEC_HEVC))
|
||||
+ bVppIsUsed = false;
|
||||
+ }
|
||||
+
|
||||
return bVppIsUsed;
|
||||
}
|
||||
|
||||
@@ -1014,6 +1022,8 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) {
|
||||
if (!m_bVppIsUsed) {
|
||||
if ((m_mfxVideoParams.mfx.FrameInfo.CropW != pParams->Width && pParams->Width) ||
|
||||
(m_mfxVideoParams.mfx.FrameInfo.CropH != pParams->Height && pParams->Height) ||
|
||||
+ (pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_AVC) ||
|
||||
+ (pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_HEVC) ||
|
||||
(pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_JPEG &&
|
||||
pParams->fourcc == MFX_FOURCC_RGB4 &&
|
||||
// No need to use decoder's post processing for decoding of JPEG with RGB 4:4:4
|
||||
@@ -1027,7 +1037,10 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) {
|
||||
if (((MODE_DECODER_POSTPROC_AUTO == pParams->nDecoderPostProcessing) ||
|
||||
(MODE_DECODER_POSTPROC_FORCE == pParams->nDecoderPostProcessing)) &&
|
||||
(MFX_CODEC_AVC == m_mfxVideoParams.mfx.CodecId ||
|
||||
- MFX_CODEC_JPEG == m_mfxVideoParams.mfx.CodecId) && /* Only for AVC and JPEG */
|
||||
+ MFX_CODEC_JPEG == m_mfxVideoParams.mfx.CodecId ||
|
||||
+ MFX_CODEC_HEVC == m_mfxVideoParams.mfx.CodecId ||
|
||||
+ MFX_CODEC_VP9 == m_mfxVideoParams.mfx.CodecId ||
|
||||
+ MFX_CODEC_AV1 == m_mfxVideoParams.mfx.CodecId) &&
|
||||
(MFX_PICSTRUCT_PROGRESSIVE ==
|
||||
m_mfxVideoParams.mfx.FrameInfo.PicStruct)) /* ...And only for progressive!*/
|
||||
{ /* it is possible to use decoder's post-processing */
|
||||
@@ -1050,12 +1063,69 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) {
|
||||
|
||||
decPostProcessing->Out.FourCC = m_mfxVideoParams.mfx.FrameInfo.FourCC;
|
||||
decPostProcessing->Out.ChromaFormat = m_mfxVideoParams.mfx.FrameInfo.ChromaFormat;
|
||||
- decPostProcessing->Out.Width = MSDK_ALIGN16(pParams->Width);
|
||||
- decPostProcessing->Out.Height = MSDK_ALIGN16(pParams->Height);
|
||||
- decPostProcessing->Out.CropX = 0;
|
||||
- decPostProcessing->Out.CropY = 0;
|
||||
- decPostProcessing->Out.CropW = pParams->Width;
|
||||
- decPostProcessing->Out.CropH = pParams->Height;
|
||||
+
|
||||
+ if (pParams->videoType == MFX_CODEC_AVC || pParams->videoType == MFX_CODEC_HEVC) {
|
||||
+ switch (pParams->fourcc) {
|
||||
+ case MFX_FOURCC_RGB4:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_RGB4;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_NV12:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_NV12;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_P010:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_P010;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_P016:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_P016;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_YUY2:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_YUY2;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_Y210:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_Y210;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_Y216:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_Y216;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_AYUV:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_AYUV;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_Y410:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_Y410;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444;
|
||||
+ break;
|
||||
+
|
||||
+ case MFX_FOURCC_Y416:
|
||||
+ decPostProcessing->Out.FourCC = MFX_FOURCC_Y416;
|
||||
+ decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444;
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ decPostProcessing->Out.Width = MSDK_ALIGN16(pParams->Width);
|
||||
+ decPostProcessing->Out.Height = MSDK_ALIGN16(pParams->Height);
|
||||
+ decPostProcessing->Out.CropX = 0;
|
||||
+ decPostProcessing->Out.CropY = 0;
|
||||
+ decPostProcessing->Out.CropW = pParams->Width;
|
||||
+ decPostProcessing->Out.CropH = pParams->Height;
|
||||
|
||||
msdk_printf(MSDK_STRING("Decoder's post-processing is used for resizing\n"));
|
||||
}
|
||||
--
|
||||
2.33.1
|
||||
|
||||
|
|
@ -15,6 +15,7 @@ SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \
|
|||
file://0001-sample_misc-Addin-basic-wayland-dmabuf-support.patch \
|
||||
file://0001-sample_misc-use-wayland-dmabuf-to-render-nv12.patch \
|
||||
file://0001-samples-use-find_program-to-detect-wayland-scanner-i.patch \
|
||||
file://0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch \
|
||||
"
|
||||
SRCREV = "cdf7444dc971544d148c51e0d93a2df1bb55dda7"
|
||||
S = "${WORKDIR}/git"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user