diff options
author | Yew, Chang Ching <chang.ching.yew@intel.com> | 2022-02-11 10:24:43 +0800 |
---|---|---|
committer | Anuj Mittal <anuj.mittal@intel.com> | 2022-02-11 12:50:06 +0800 |
commit | 4e6473e8d24970960600725e496e27ae91902e97 (patch) | |
tree | 715c449b7179e60744a27990bf3bc8f9e2854bea /recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch | |
parent | 840a4824e7f85a7f9fab1bc1fa8814aa6da2bf13 (diff) | |
download | meta-intel-4e6473e8d24970960600725e496e27ae91902e97.tar.gz |
onevpl-intel-gpu: upgrade 21.3.4 -> 22.1.0
Backport a patch to fix issues while building with gcc 11.2.
Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Diffstat (limited to 'recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch')
-rw-r--r-- | recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch b/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch deleted file mode 100644 index 69ce1369..00000000 --- a/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-HEVCd-Add-frame-info-check-and-update-ChromaFormat-i.patch +++ /dev/null | |||
@@ -1,173 +0,0 @@ | |||
1 | From 99160958668fd4a170cd749492e37ebdb28dae69 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Yew, Chang Ching" <chang.ching.yew@intel.com> | ||
3 | Date: Thu, 23 Sep 2021 21:34:16 +0000 | ||
4 | Subject: [PATCH 1/2] [HEVCd] 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/h265/src/mfx_h265_dec_decode.cpp | 64 +++++++++++-------- | ||
13 | .../mfx_lib/shared/include/mfx_common_int.h | 1 + | ||
14 | _studio/mfx_lib/shared/src/mfx_common_int.cpp | 33 ++++++++++ | ||
15 | 3 files changed, 71 insertions(+), 27 deletions(-) | ||
16 | |||
17 | diff --git a/_studio/mfx_lib/decode/h265/src/mfx_h265_dec_decode.cpp b/_studio/mfx_lib/decode/h265/src/mfx_h265_dec_decode.cpp | ||
18 | index fe2bcf2c3f..362ad257d6 100644 | ||
19 | --- a/_studio/mfx_lib/decode/h265/src/mfx_h265_dec_decode.cpp | ||
20 | +++ b/_studio/mfx_lib/decode/h265/src/mfx_h265_dec_decode.cpp | ||
21 | @@ -963,8 +963,16 @@ mfxStatus VideoDECODEH265::DecodeFrameCheck(mfxBitstream *bs, mfxFrameSurface1 * | ||
22 | |||
23 | if (surface_work) | ||
24 | { | ||
25 | - sts = CheckFrameInfoCodecs(&surface_work->Info, MFX_CODEC_HEVC); | ||
26 | - MFX_CHECK(sts == MFX_ERR_NONE, MFX_ERR_INVALID_VIDEO_PARAM); | ||
27 | + bool isVideoProcCscEnabled = false; | ||
28 | +#ifndef MFX_DEC_VIDEO_POSTPROCESS_DISABLE | ||
29 | + mfxExtDecVideoProcessing* videoProcessing = (mfxExtDecVideoProcessing*)GetExtendedBuffer(m_vInitPar.ExtParam, m_vInitPar.NumExtParam, MFX_EXTBUFF_DEC_VIDEO_PROCESSING); | ||
30 | + if (videoProcessing && videoProcessing->Out.FourCC != m_vPar.mfx.FrameInfo.FourCC) | ||
31 | + { | ||
32 | + isVideoProcCscEnabled = true; | ||
33 | + } | ||
34 | +#endif | ||
35 | + sts = isVideoProcCscEnabled ? CheckFrameInfoDecVideoProcCsc(&surface_work->Info, MFX_CODEC_HEVC) : CheckFrameInfoCodecs(&surface_work->Info, MFX_CODEC_HEVC); | ||
36 | + MFX_CHECK(sts == MFX_ERR_NONE, MFX_ERR_INVALID_VIDEO_PARAM) | ||
37 | |||
38 | sts = CheckFrameData(surface_work); | ||
39 | MFX_CHECK_STS(sts); | ||
40 | @@ -1172,11 +1180,6 @@ void VideoDECODEH265::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
41 | |||
42 | surface_out->Info.FrameId.TemporalId = 0; | ||
43 | |||
44 | - surface_out->Info.CropH = (mfxU16)(pFrame->lumaSize().height - pFrame->m_crop_bottom - pFrame->m_crop_top); | ||
45 | - surface_out->Info.CropW = (mfxU16)(pFrame->lumaSize().width - pFrame->m_crop_right - pFrame->m_crop_left); | ||
46 | - surface_out->Info.CropX = (mfxU16)(pFrame->m_crop_left); | ||
47 | - surface_out->Info.CropY = (mfxU16)(pFrame->m_crop_top); | ||
48 | - | ||
49 | #ifndef MFX_DEC_VIDEO_POSTPROCESS_DISABLE | ||
50 | mfxExtDecVideoProcessing * videoProcessing = (mfxExtDecVideoProcessing *)GetExtendedBuffer(m_vFirstPar.ExtParam, m_vFirstPar.NumExtParam, MFX_EXTBUFF_DEC_VIDEO_PROCESSING); | ||
51 | if (videoProcessing) | ||
52 | @@ -1185,8 +1188,35 @@ void VideoDECODEH265::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
53 | surface_out->Info.CropW = videoProcessing->Out.CropW; | ||
54 | surface_out->Info.CropX = videoProcessing->Out.CropX; | ||
55 | surface_out->Info.CropY = videoProcessing->Out.CropY; | ||
56 | + surface_out->Info.ChromaFormat = videoProcessing->Out.ChromaFormat; | ||
57 | } | ||
58 | + else | ||
59 | #endif | ||
60 | + { | ||
61 | + surface_out->Info.CropH = (mfxU16)(pFrame->lumaSize().height - pFrame->m_crop_bottom - pFrame->m_crop_top); | ||
62 | + surface_out->Info.CropW = (mfxU16)(pFrame->lumaSize().width - pFrame->m_crop_right - pFrame->m_crop_left); | ||
63 | + surface_out->Info.CropX = (mfxU16)(pFrame->m_crop_left); | ||
64 | + surface_out->Info.CropY = (mfxU16)(pFrame->m_crop_top); | ||
65 | + | ||
66 | + switch(pFrame->m_chroma_format) | ||
67 | + { | ||
68 | + case 0: | ||
69 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV400; | ||
70 | + break; | ||
71 | + case 1: | ||
72 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
73 | + break; | ||
74 | + case 2: | ||
75 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
76 | + break; | ||
77 | + case 3: | ||
78 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
79 | + break; | ||
80 | + default: | ||
81 | + VM_ASSERT(!"Unknown chroma format"); | ||
82 | + surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
83 | + } | ||
84 | + } | ||
85 | |||
86 | bool isShouldUpdate = !(m_vFirstPar.mfx.FrameInfo.AspectRatioH || m_vFirstPar.mfx.FrameInfo.AspectRatioW); | ||
87 | |||
88 | @@ -1198,26 +1228,6 @@ void VideoDECODEH265::FillOutputSurface(mfxFrameSurface1 **surf_out, mfxFrameSur | ||
89 | surface_out->Info.FrameRateExtD = isShouldUpdate ? m_vPar.mfx.FrameInfo.FrameRateExtD : m_vFirstPar.mfx.FrameInfo.FrameRateExtD; | ||
90 | surface_out->Info.FrameRateExtN = isShouldUpdate ? m_vPar.mfx.FrameInfo.FrameRateExtN : m_vFirstPar.mfx.FrameInfo.FrameRateExtN; | ||
91 | |||
92 | - surface_out->Info.PicStruct = 0; | ||
93 | - switch(pFrame->m_chroma_format) | ||
94 | - { | ||
95 | - case 0: | ||
96 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV400; | ||
97 | - break; | ||
98 | - case 1: | ||
99 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
100 | - break; | ||
101 | - case 2: | ||
102 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV422; | ||
103 | - break; | ||
104 | - case 3: | ||
105 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV444; | ||
106 | - break; | ||
107 | - default: | ||
108 | - VM_ASSERT(!"Unknown chroma format"); | ||
109 | - surface_out->Info.ChromaFormat = MFX_CHROMAFORMAT_YUV420; | ||
110 | - } | ||
111 | - | ||
112 | surface_out->Info.PicStruct = | ||
113 | UMC2MFX_PicStruct(pFrame->m_DisplayPictureStruct_H265, !!m_vPar.mfx.ExtendedPicStruct); | ||
114 | |||
115 | diff --git a/_studio/mfx_lib/shared/include/mfx_common_int.h b/_studio/mfx_lib/shared/include/mfx_common_int.h | ||
116 | index 4f12ddb883..73f4667a18 100644 | ||
117 | --- a/_studio/mfx_lib/shared/include/mfx_common_int.h | ||
118 | +++ b/_studio/mfx_lib/shared/include/mfx_common_int.h | ||
119 | @@ -29,6 +29,7 @@ | ||
120 | |||
121 | mfxStatus CheckFrameInfoCommon(mfxFrameInfo *info, mfxU32 codecId); | ||
122 | mfxStatus CheckFrameInfoEncoders(mfxFrameInfo *info); | ||
123 | +mfxStatus CheckFrameInfoDecVideoProcCsc(mfxFrameInfo *info, mfxU32 codecId); | ||
124 | mfxStatus CheckFrameInfoCodecs(mfxFrameInfo *info, mfxU32 codecId = MFX_CODEC_AVC); | ||
125 | |||
126 | mfxStatus CheckVideoParamEncoders(mfxVideoParam *in, eMFXHWType type); | ||
127 | diff --git a/_studio/mfx_lib/shared/src/mfx_common_int.cpp b/_studio/mfx_lib/shared/src/mfx_common_int.cpp | ||
128 | index 1142457f00..4f2126d944 100644 | ||
129 | --- a/_studio/mfx_lib/shared/src/mfx_common_int.cpp | ||
130 | +++ b/_studio/mfx_lib/shared/src/mfx_common_int.cpp | ||
131 | @@ -163,6 +163,39 @@ mfxStatus CheckFrameInfoEncoders(mfxFrameInfo *info) | ||
132 | return MFX_ERR_NONE; | ||
133 | } | ||
134 | |||
135 | +mfxStatus CheckFrameInfoDecVideoProcCsc(mfxFrameInfo *info, mfxU32 codecId) | ||
136 | +{ | ||
137 | + mfxStatus sts = CheckFrameInfoCommon(info, codecId); | ||
138 | + MFX_CHECK_STS(sts); | ||
139 | + | ||
140 | + switch(info->FourCC) { | ||
141 | + case MFX_FOURCC_NV12: | ||
142 | + case MFX_FOURCC_P010: | ||
143 | + case MFX_FOURCC_P016: | ||
144 | + if (info->ChromaFormat == MFX_CHROMAFORMAT_YUV420) | ||
145 | + return MFX_ERR_NONE; | ||
146 | + MFX_RETURN(MFX_ERR_INVALID_VIDEO_PARAM); | ||
147 | + | ||
148 | + case MFX_FOURCC_YUY2: | ||
149 | + case MFX_FOURCC_Y210: | ||
150 | + case MFX_FOURCC_Y216: | ||
151 | + if (info->ChromaFormat == MFX_CHROMAFORMAT_YUV422) | ||
152 | + return MFX_ERR_NONE; | ||
153 | + MFX_RETURN(MFX_ERR_INVALID_VIDEO_PARAM); | ||
154 | + | ||
155 | + case MFX_FOURCC_AYUV: | ||
156 | + case MFX_FOURCC_Y410: | ||
157 | + case MFX_FOURCC_Y416: | ||
158 | + case MFX_FOURCC_RGB4: | ||
159 | + if (info->ChromaFormat == MFX_CHROMAFORMAT_YUV444) | ||
160 | + return MFX_ERR_NONE; | ||
161 | + MFX_RETURN(MFX_ERR_INVALID_VIDEO_PARAM); | ||
162 | + | ||
163 | + default: | ||
164 | + MFX_RETURN(MFX_ERR_UNSUPPORTED); | ||
165 | + } | ||
166 | +} | ||
167 | + | ||
168 | mfxStatus CheckFrameInfoCodecs(mfxFrameInfo *info, mfxU32 codecId) | ||
169 | { | ||
170 | mfxStatus sts = CheckFrameInfoCommon(info, codecId); | ||
171 | -- | ||
172 | 2.33.1 | ||
173 | |||