From: "Yew, Chang Ching" <[email protected]>

Signed-off-by: Yew, Chang Ching <[email protected]>
---
 ...le_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch | 132 ++++++++++++++++++
 recipes-multimedia/onevpl/onevpl_2021.6.0.bb  |   1 +
 2 files changed, 133 insertions(+)
 create mode 100644 
recipes-multimedia/onevpl/onevpl/0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch

diff --git 
a/recipes-multimedia/onevpl/onevpl/0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch
 
b/recipes-multimedia/onevpl/onevpl/0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch
new file mode 100644
index 00000000..db8baa3e
--- /dev/null
+++ 
b/recipes-multimedia/onevpl/onevpl/0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch
@@ -0,0 +1,132 @@
+From f8d87fc857d5bfd69247c985ed82ba88e167ef30 Mon Sep 17 00:00:00 2001
+From: "Yew, Chang Ching" <[email protected]>
+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 <[email protected]>
+---
+ .../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
+
diff --git a/recipes-multimedia/onevpl/onevpl_2021.6.0.bb 
b/recipes-multimedia/onevpl/onevpl_2021.6.0.bb
index ae198e9a..e586b54e 100644
--- a/recipes-multimedia/onevpl/onevpl_2021.6.0.bb
+++ b/recipes-multimedia/onevpl/onevpl_2021.6.0.bb
@@ -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"
-- 
2.33.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#7346): 
https://lists.yoctoproject.org/g/meta-intel/message/7346
Mute This Topic: https://lists.yoctoproject.org/mt/86952157/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-intel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to