diff options
Diffstat (limited to 'recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch')
-rw-r--r-- | recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch b/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch new file mode 100644 index 00000000..3c41c741 --- /dev/null +++ b/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch | |||
@@ -0,0 +1,98 @@ | |||
1 | From f23ba1b768a4db58ed985a0f066b65d9a65dd61b Mon Sep 17 00:00:00 2001 | ||
2 | From: "Yew, Chang Ching" <chang.ching.yew@intel.com> | ||
3 | Date: Mon, 1 Nov 2021 13:28:06 +0000 | ||
4 | Subject: [PATCH 2/2] [AVCd] Add frame info check and update ChromaFormat in | ||
5 | FillOutputSurface for VDSFC CSC | ||
6 | |||
7 | Upstream-Status: Submitted | ||
8 | innersource PR #3871 | ||
9 | |||
10 | Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com> | ||
11 | --- | ||
12 | .../decode/h264/src/mfx_h264_dec_decode.cpp | 48 +++++++++---------- | ||
13 | 1 file changed, 24 insertions(+), 24 deletions(-) | ||
14 | |||
15 | diff --git a/_studio/mfx_lib/decode/h264/src/mfx_h264_dec_decode.cpp b/_studio/mfx_lib/decode/h264/src/mfx_h264_dec_decode.cpp | ||
16 | index 84e57f7f18..8e51ad7852 100644 | ||
17 | --- a/_studio/mfx_lib/decode/h264/src/mfx_h264_dec_decode.cpp | ||
18 | +++ b/_studio/mfx_lib/decode/h264/src/mfx_h264_dec_decode.cpp | ||
19 | @@ -1140,12 +1140,8 @@ mfxStatus VideoDECODEH264::DecodeFrameCheck(mfxBitstream *bs, mfxFrameSurface1 * | ||
20 | isVideoProcCscEnabled = true; | ||
21 | } | ||
22 | #endif | ||
23 | - sts = CheckFrameInfoCodecs(&surface_work->Info, MFX_CODEC_AVC); | ||
24 | - //Decode CSC support more FourCC format, already checked in Init, skip the check return; | ||
25 | - if(!isVideoProcCscEnabled) | ||
26 | - { | ||
27 | - MFX_CHECK(sts == MFX_ERR_NONE, MFX_ERR_UNSUPPORTED); | ||
28 | - } | ||
29 | + sts = isVideoProcCscEnabled ? CheckFrameInfoDecVideoProcCsc(&surface_work->Info, MFX_CODEC_AVC) : CheckFrameInfoCodecs(&surface_work->Info, MFX_CODEC_AVC); | ||
30 | + MFX_CHECK(sts == MFX_ERR_NONE, MFX_ERR_INVALID_VIDEO_PARAM) | ||
31 | |||
32 | sts = CheckFrameData(surface_work); | ||
33 | MFX_CHECK_STS(sts); | ||
34 | @@ -1420,11 +1416,6 @@ void VideoDECODEH264::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
35 | } | ||
36 | #endif | ||
37 | |||
38 | - surface_out->Info.CropH = (mfxU16)(pFrame->lumaSize().height - pFrame->m_crop_bottom - pFrame->m_crop_top); | ||
39 | - surface_out->Info.CropW = (mfxU16)(pFrame->lumaSize().width - pFrame->m_crop_right - pFrame->m_crop_left); | ||
40 | - surface_out->Info.CropX = (mfxU16)(pFrame->m_crop_left); | ||
41 | - surface_out->Info.CropY = (mfxU16)(pFrame->m_crop_top); | ||
42 | - | ||
43 | #ifndef MFX_DEC_VIDEO_POSTPROCESS_DISABLE | ||
44 | mfxExtDecVideoProcessing * videoProcessing = (mfxExtDecVideoProcessing *)GetExtendedBuffer(m_vFirstPar.ExtParam, m_vFirstPar.NumExtParam, MFX_EXTBUFF_DEC_VIDEO_PROCESSING); | ||
45 | if (videoProcessing) | ||
46 | @@ -1433,8 +1424,28 @@ void VideoDECODEH264::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
47 | surface_out->Info.CropW = videoProcessing->Out.CropW; | ||
48 | surface_out->Info.CropX = videoProcessing->Out.CropX; | ||
49 | surface_out->Info.CropY = videoProcessing->Out.CropY; | ||
50 | - } | ||
51 | + surface_out->Info.ChromaFormat = videoProcessing->Out.ChromaFormat; | ||
52 | + } else | ||
53 | #endif | ||
54 | + { | ||
55 | + surface_out->Info.CropH = (mfxU16)(pFrame->lumaSize().height - pFrame->m_crop_bottom - pFrame->m_crop_top); | ||
56 | + surface_out->Info.CropW = (mfxU16)(pFrame->lumaSize().width - pFrame->m_crop_right - pFrame->m_crop_left); | ||
57 | + surface_out->Info.CropX = (mfxU16)(pFrame->m_crop_left); | ||
58 | + surface_out->Info.CropY = (mfxU16)(pFrame->m_crop_top); | ||
59 | + | ||
60 | + switch(pFrame->m_chroma_format) | ||
61 | + { | ||
62 | + case 0: | ||
63 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV400; | ||
64 | + break; | ||
65 | + case 2: | ||
66 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
67 | + break; | ||
68 | + default: | ||
69 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
70 | + break; | ||
71 | + } | ||
72 | + } | ||
73 | |||
74 | bool isShouldUpdate = !(m_vFirstPar.mfx.FrameInfo.AspectRatioH || m_vFirstPar.mfx.FrameInfo.AspectRatioW); | ||
75 | |||
76 | @@ -1447,18 +1458,7 @@ void VideoDECODEH264::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
77 | surface_out->Info.FrameRateExtN = isShouldUpdate ? m_vPar.mfx.FrameInfo.FrameRateExtN : m_vFirstPar.mfx.FrameInfo.FrameRateExtN; | ||
78 | |||
79 | surface_out->Info.PicStruct = 0; | ||
80 | - switch(pFrame->m_chroma_format) | ||
81 | - { | ||
82 | - case 0: | ||
83 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV400; | ||
84 | - break; | ||
85 | - case 2: | ||
86 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
87 | - break; | ||
88 | - default: | ||
89 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
90 | - break; | ||
91 | - } | ||
92 | + | ||
93 | |||
94 | switch (pFrame->m_displayPictureStruct) | ||
95 | { | ||
96 | -- | ||
97 | 2.33.1 | ||
98 | |||