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