diff options
| author | Yew, Chang Ching <chang.ching.yew@intel.com> | 2021-11-10 14:20:48 +0800 |
|---|---|---|
| committer | Anuj Mittal <anuj.mittal@intel.com> | 2021-11-11 22:22:24 +0800 |
| commit | 5a66f35237cf396b20cea60279262e93a8f52bdc (patch) | |
| tree | 43262aec3a09931e6f4c7a80fa2168db7c3dc8da | |
| parent | ff68bb495257c7867589ff434a091d14e267b47e (diff) | |
| download | meta-intel-5a66f35237cf396b20cea60279262e93a8f52bdc.tar.gz | |
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>
| -rw-r--r-- | recipes-multimedia/onevpl/onevpl/0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch | 132 | ||||
| -rw-r--r-- | recipes-multimedia/onevpl/onevpl_2021.6.0.bb | 1 |
2 files changed, 133 insertions, 0 deletions
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 @@ | |||
| 1 | From f8d87fc857d5bfd69247c985ed82ba88e167ef30 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: "Yew, Chang Ching" <chang.ching.yew@intel.com> | ||
| 3 | Date: Fri, 9 Jul 2021 13:59:33 +0000 | ||
| 4 | Subject: [PATCH] sample_decode: Add VDSFC CSC for AVC/HEVC | ||
| 5 | |||
| 6 | Upstream-Status: Submitted | ||
| 7 | innersource PR #289 | ||
| 8 | |||
| 9 | Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com> | ||
| 10 | --- | ||
| 11 | .../sample_decode/src/pipeline_decode.cpp | 84 +++++++++++++++++-- | ||
| 12 | 1 file changed, 77 insertions(+), 7 deletions(-) | ||
| 13 | |||
| 14 | diff --git a/tools/legacy/sample_decode/src/pipeline_decode.cpp b/tools/legacy/sample_decode/src/pipeline_decode.cpp | ||
| 15 | index 4dc811c5..d817ff2a 100644 | ||
| 16 | --- a/tools/legacy/sample_decode/src/pipeline_decode.cpp | ||
| 17 | +++ b/tools/legacy/sample_decode/src/pipeline_decode.cpp | ||
| 18 | @@ -765,6 +765,14 @@ bool CDecodingPipeline::IsVppRequired(sInputParams* pParams) { | ||
| 19 | if (pParams->eDeinterlace) { | ||
| 20 | bVppIsUsed = true; | ||
| 21 | } | ||
| 22 | + | ||
| 23 | + if ((MODE_DECODER_POSTPROC_AUTO == pParams->nDecoderPostProcessing) || | ||
| 24 | + (MODE_DECODER_POSTPROC_FORCE == pParams->nDecoderPostProcessing)) { | ||
| 25 | + /* Decoder will make decision about internal post-processing usage slightly later */ | ||
| 26 | + if ((pParams->videoType == MFX_CODEC_AVC) || (pParams->videoType == MFX_CODEC_HEVC)) | ||
| 27 | + bVppIsUsed = false; | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | return bVppIsUsed; | ||
| 31 | } | ||
| 32 | |||
| 33 | @@ -1014,6 +1022,8 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) { | ||
| 34 | if (!m_bVppIsUsed) { | ||
| 35 | if ((m_mfxVideoParams.mfx.FrameInfo.CropW != pParams->Width && pParams->Width) || | ||
| 36 | (m_mfxVideoParams.mfx.FrameInfo.CropH != pParams->Height && pParams->Height) || | ||
| 37 | + (pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_AVC) || | ||
| 38 | + (pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_HEVC) || | ||
| 39 | (pParams->nDecoderPostProcessing && pParams->videoType == MFX_CODEC_JPEG && | ||
| 40 | pParams->fourcc == MFX_FOURCC_RGB4 && | ||
| 41 | // No need to use decoder's post processing for decoding of JPEG with RGB 4:4:4 | ||
| 42 | @@ -1027,7 +1037,10 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) { | ||
| 43 | if (((MODE_DECODER_POSTPROC_AUTO == pParams->nDecoderPostProcessing) || | ||
| 44 | (MODE_DECODER_POSTPROC_FORCE == pParams->nDecoderPostProcessing)) && | ||
| 45 | (MFX_CODEC_AVC == m_mfxVideoParams.mfx.CodecId || | ||
| 46 | - MFX_CODEC_JPEG == m_mfxVideoParams.mfx.CodecId) && /* Only for AVC and JPEG */ | ||
| 47 | + MFX_CODEC_JPEG == m_mfxVideoParams.mfx.CodecId || | ||
| 48 | + MFX_CODEC_HEVC == m_mfxVideoParams.mfx.CodecId || | ||
| 49 | + MFX_CODEC_VP9 == m_mfxVideoParams.mfx.CodecId || | ||
| 50 | + MFX_CODEC_AV1 == m_mfxVideoParams.mfx.CodecId) && | ||
| 51 | (MFX_PICSTRUCT_PROGRESSIVE == | ||
| 52 | m_mfxVideoParams.mfx.FrameInfo.PicStruct)) /* ...And only for progressive!*/ | ||
| 53 | { /* it is possible to use decoder's post-processing */ | ||
| 54 | @@ -1050,12 +1063,69 @@ mfxStatus CDecodingPipeline::InitMfxParams(sInputParams* pParams) { | ||
| 55 | |||
| 56 | decPostProcessing->Out.FourCC = m_mfxVideoParams.mfx.FrameInfo.FourCC; | ||
| 57 | decPostProcessing->Out.ChromaFormat = m_mfxVideoParams.mfx.FrameInfo.ChromaFormat; | ||
| 58 | - decPostProcessing->Out.Width = MSDK_ALIGN16(pParams->Width); | ||
| 59 | - decPostProcessing->Out.Height = MSDK_ALIGN16(pParams->Height); | ||
| 60 | - decPostProcessing->Out.CropX = 0; | ||
| 61 | - decPostProcessing->Out.CropY = 0; | ||
| 62 | - decPostProcessing->Out.CropW = pParams->Width; | ||
| 63 | - decPostProcessing->Out.CropH = pParams->Height; | ||
| 64 | + | ||
| 65 | + if (pParams->videoType == MFX_CODEC_AVC || pParams->videoType == MFX_CODEC_HEVC) { | ||
| 66 | + switch (pParams->fourcc) { | ||
| 67 | + case MFX_FOURCC_RGB4: | ||
| 68 | + decPostProcessing->Out.FourCC = MFX_FOURCC_RGB4; | ||
| 69 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
| 70 | + break; | ||
| 71 | + | ||
| 72 | + case MFX_FOURCC_NV12: | ||
| 73 | + decPostProcessing->Out.FourCC = MFX_FOURCC_NV12; | ||
| 74 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
| 75 | + break; | ||
| 76 | + | ||
| 77 | + case MFX_FOURCC_P010: | ||
| 78 | + decPostProcessing->Out.FourCC = MFX_FOURCC_P010; | ||
| 79 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
| 80 | + break; | ||
| 81 | + | ||
| 82 | + case MFX_FOURCC_P016: | ||
| 83 | + decPostProcessing->Out.FourCC = MFX_FOURCC_P016; | ||
| 84 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
| 85 | + break; | ||
| 86 | + | ||
| 87 | + case MFX_FOURCC_YUY2: | ||
| 88 | + decPostProcessing->Out.FourCC = MFX_FOURCC_YUY2; | ||
| 89 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
| 90 | + break; | ||
| 91 | + | ||
| 92 | + case MFX_FOURCC_Y210: | ||
| 93 | + decPostProcessing->Out.FourCC = MFX_FOURCC_Y210; | ||
| 94 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
| 95 | + break; | ||
| 96 | + | ||
| 97 | + case MFX_FOURCC_Y216: | ||
| 98 | + decPostProcessing->Out.FourCC = MFX_FOURCC_Y216; | ||
| 99 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
| 100 | + break; | ||
| 101 | + | ||
| 102 | + case MFX_FOURCC_AYUV: | ||
| 103 | + decPostProcessing->Out.FourCC = MFX_FOURCC_AYUV; | ||
| 104 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
| 105 | + break; | ||
| 106 | + | ||
| 107 | + case MFX_FOURCC_Y410: | ||
| 108 | + decPostProcessing->Out.FourCC = MFX_FOURCC_Y410; | ||
| 109 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
| 110 | + break; | ||
| 111 | + | ||
| 112 | + case MFX_FOURCC_Y416: | ||
| 113 | + decPostProcessing->Out.FourCC = MFX_FOURCC_Y416; | ||
| 114 | + decPostProcessing->Out.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
| 115 | + break; | ||
| 116 | + | ||
| 117 | + default: | ||
| 118 | + break; | ||
| 119 | + } | ||
| 120 | + } | ||
| 121 | + decPostProcessing->Out.Width = MSDK_ALIGN16(pParams->Width); | ||
| 122 | + decPostProcessing->Out.Height = MSDK_ALIGN16(pParams->Height); | ||
| 123 | + decPostProcessing->Out.CropX = 0; | ||
| 124 | + decPostProcessing->Out.CropY = 0; | ||
| 125 | + decPostProcessing->Out.CropW = pParams->Width; | ||
| 126 | + decPostProcessing->Out.CropH = pParams->Height; | ||
| 127 | |||
| 128 | msdk_printf(MSDK_STRING("Decoder's post-processing is used for resizing\n")); | ||
| 129 | } | ||
| 130 | -- | ||
| 131 | 2.33.1 | ||
| 132 | |||
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 \ | |||
| 15 | file://0001-sample_misc-Addin-basic-wayland-dmabuf-support.patch \ | 15 | file://0001-sample_misc-Addin-basic-wayland-dmabuf-support.patch \ |
| 16 | file://0001-sample_misc-use-wayland-dmabuf-to-render-nv12.patch \ | 16 | file://0001-sample_misc-use-wayland-dmabuf-to-render-nv12.patch \ |
| 17 | file://0001-samples-use-find_program-to-detect-wayland-scanner-i.patch \ | 17 | file://0001-samples-use-find_program-to-detect-wayland-scanner-i.patch \ |
| 18 | file://0001-sample_decode-Add-VDSFC-CSC-for-AVC-HEVC.patch \ | ||
| 18 | " | 19 | " |
| 19 | SRCREV = "cdf7444dc971544d148c51e0d93a2df1bb55dda7" | 20 | SRCREV = "cdf7444dc971544d148c51e0d93a2df1bb55dda7" |
| 20 | S = "${WORKDIR}/git" | 21 | S = "${WORKDIR}/git" |
