summaryrefslogtreecommitdiffstats
path: root/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-AVCd-Add-frame-info-check-and-update-ChromaFormat-in.patch
blob: 3c41c7410ced4b91c33329361db99a13ca64f455 (plain)
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