summaryrefslogtreecommitdiffstats
path: root/recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch')
-rw-r--r--recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch154
1 files changed, 0 insertions, 154 deletions
diff --git a/recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch b/recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch
deleted file mode 100644
index 5529b5e3..00000000
--- a/recipes-multimedia/vpl/files/0002-Enable-YUV400-JPEG-Enc-for-vaapi.patch
+++ /dev/null
@@ -1,154 +0,0 @@
1From 1a064a36c164080a21f8d89409564c1812dea6af Mon Sep 17 00:00:00 2001
2From: Vincent Cheah Beng Keat <vincent.beng.keat.cheah@intel.com>
3Date: Wed, 15 May 2024 09:51:53 +0800
4Subject: [PATCH 2/9] Enable YUV400 JPEG Enc for vaapi
5
6Upstream-Status: Backport [https://github.com/intel/libvpl-tools/commit/747b66ce97c6ac5d17a8b8629eb22d790d802da3]
7Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
8---
9 .../legacy/sample_common/src/sample_utils.cpp | 2 +-
10 .../sample_common/src/vaapi_allocator.cpp | 13 +++++++++++-
11 .../sample_encode/src/pipeline_encode.cpp | 20 +++++++++----------
12 .../sample_encode/src/sample_encode.cpp | 4 ----
13 4 files changed, 22 insertions(+), 17 deletions(-)
14
15diff --git a/tools/legacy/sample_common/src/sample_utils.cpp b/tools/legacy/sample_common/src/sample_utils.cpp
16index ddd783f..b2b67bf 100644
17--- a/tools/legacy/sample_common/src/sample_utils.cpp
18+++ b/tools/legacy/sample_common/src/sample_utils.cpp
19@@ -284,7 +284,7 @@ mfxStatus CSmplYUVReader::LoadNextFrame(mfxFrameSurface1* pSurface) {
20 MFX_FOURCC_P010 == pInfo.FourCC || MFX_FOURCC_P210 == pInfo.FourCC ||
21 MFX_FOURCC_P016 == pInfo.FourCC || MFX_FOURCC_I010 == pInfo.FourCC ||
22 MFX_FOURCC_P016 == pInfo.FourCC || MFX_FOURCC_I010 == pInfo.FourCC ||
23- MFX_FOURCC_I420 == pInfo.FourCC) {
24+ MFX_FOURCC_I420 == pInfo.FourCC || MFX_FOURCC_YUV400 == pInfo.FourCC) {
25 pitch = pData.Pitch;
26 ptr = pData.Y + pInfo.CropX + pInfo.CropY * pData.Pitch;
27
28diff --git a/tools/legacy/sample_common/src/vaapi_allocator.cpp b/tools/legacy/sample_common/src/vaapi_allocator.cpp
29index db18e23..8ee2408 100644
30--- a/tools/legacy/sample_common/src/vaapi_allocator.cpp
31+++ b/tools/legacy/sample_common/src/vaapi_allocator.cpp
32@@ -54,6 +54,8 @@ unsigned int ConvertMfxFourccToVAFormat(mfxU32 fourcc) {
33 return VA_FOURCC_Y216;
34 case MFX_FOURCC_Y416:
35 return VA_FOURCC_Y416;
36+ case MFX_FOURCC_YUV400:
37+ return VA_FOURCC_Y800;
38
39 default:
40 assert(!"unsupported fourcc");
41@@ -133,7 +135,8 @@ static mfxStatus GetVAFourcc(mfxU32 fourcc, unsigned int& va_fourcc) {
42 (VA_FOURCC_Y210 != va_fourcc) && (VA_FOURCC_Y410 != va_fourcc) &&
43 (VA_FOURCC_RGB565 != va_fourcc) && (VA_FOURCC_RGBP != va_fourcc) &&
44 (VA_FOURCC_P016 != va_fourcc) && (VA_FOURCC_Y216 != va_fourcc) &&
45- (VA_FOURCC_Y416 != va_fourcc) && (VA_FOURCC_AYUV != va_fourcc))) {
46+ (VA_FOURCC_Y416 != va_fourcc) && (VA_FOURCC_AYUV != va_fourcc) &&
47+ (VA_FOURCC_Y800 != va_fourcc))) {
48 return MFX_ERR_MEMORY_ALLOC;
49 }
50
51@@ -281,6 +284,9 @@ mfxStatus vaapiFrameAllocator::AllocImpl(mfxFrameAllocRequest* request,
52 else if (fourcc == MFX_FOURCC_RGBP) {
53 format = VA_RT_FORMAT_RGBP;
54 }
55+ else if (fourcc == MFX_FOURCC_YUV400) {
56+ format = VA_RT_FORMAT_YUV400;
57+ }
58
59 va_res = m_libva->vaCreateSurfaces(m_dpy,
60 format,
61@@ -486,6 +492,11 @@ mfxStatus vaapiFrameAllocator::LockFrame(mfxMemId mid, mfxFrameData* ptr) {
62 }
63 if (MFX_ERR_NONE == mfx_res) {
64 switch (vaapi_mid->m_image.format.fourcc) {
65+ case MFX_FOURCC_YUV400:
66+ if (mfx_fourcc != vaapi_mid->m_image.format.fourcc)
67+ return MFX_ERR_LOCK_MEMORY;
68+ { ptr->Y = pBuffer + vaapi_mid->m_image.offsets[0]; }
69+ break;
70 case VA_FOURCC_NV12:
71 if (mfx_fourcc != vaapi_mid->m_image.format.fourcc)
72 return MFX_ERR_LOCK_MEMORY;
73diff --git a/tools/legacy/sample_encode/src/pipeline_encode.cpp b/tools/legacy/sample_encode/src/pipeline_encode.cpp
74index 4476c49..cda607b 100644
75--- a/tools/legacy/sample_encode/src/pipeline_encode.cpp
76+++ b/tools/legacy/sample_encode/src/pipeline_encode.cpp
77@@ -50,6 +50,7 @@ msdk_tick time_get_frequency(void) {
78
79 mfxU16 FourCcBitDepth(mfxU32 fourCC) {
80 switch (fourCC) {
81+ case MFX_FOURCC_YUV400:
82 case MFX_FOURCC_NV12:
83 case MFX_FOURCC_NV16:
84 case MFX_FOURCC_YUY2:
85@@ -845,8 +846,8 @@ mfxStatus CEncodingPipeline::CheckHyperEncodeParams(mfxHyperMode hyperMode) {
86 #endif
87
88 mfxU32 CEncodingPipeline::FileFourCC2EncFourCC(mfxU32 fcc) {
89- // File reader automatically converts I420, YV12, and YUV400 to NV12
90- if (fcc == MFX_FOURCC_I420 || fcc == MFX_FOURCC_YV12 || fcc == MFX_FOURCC_YUV400)
91+ // File reader automatically converts I420 and YV12 to NV12
92+ if (fcc == MFX_FOURCC_I420 || fcc == MFX_FOURCC_YV12)
93 return MFX_FOURCC_NV12;
94 else
95 return fcc;
96@@ -1054,6 +1055,7 @@ mfxStatus CEncodingPipeline::AllocFrames() {
97
98 // prepare allocation requests
99 EncRequest.NumFrameSuggested = EncRequest.NumFrameMin = nEncSurfNum;
100+
101 MSDK_MEMCPY_VAR(EncRequest.Info, &(m_mfxEncParams.mfx.FrameInfo), sizeof(mfxFrameInfo));
102 if (m_pmfxVPP) {
103 EncRequest.Type |=
104@@ -1650,15 +1652,11 @@ mfxStatus CEncodingPipeline::Init(sInputParams* pParams) {
105
106 // FileReader can convert yv12->nv12 without vpp, when hw impl
107 if (pParams->bUseHWLib) {
108- m_InputFourCC = ((pParams->FileInputFourCC == MFX_FOURCC_I420) ||
109- (pParams->FileInputFourCC == MFX_FOURCC_YUV400))
110- ? MFX_FOURCC_NV12
111- : pParams->FileInputFourCC;
112-
113- pParams->EncodeFourCC = ((pParams->EncodeFourCC == MFX_FOURCC_I420) ||
114- (pParams->EncodeFourCC == MFX_FOURCC_YUV400))
115- ? MFX_FOURCC_NV12
116- : pParams->EncodeFourCC;
117+ m_InputFourCC = (pParams->FileInputFourCC == MFX_FOURCC_I420) ? MFX_FOURCC_NV12
118+ : pParams->FileInputFourCC;
119+
120+ pParams->EncodeFourCC =
121+ (pParams->EncodeFourCC == MFX_FOURCC_I420) ? MFX_FOURCC_NV12 : pParams->EncodeFourCC;
122 }
123 else {
124 m_InputFourCC = pParams->FileInputFourCC;
125diff --git a/tools/legacy/sample_encode/src/sample_encode.cpp b/tools/legacy/sample_encode/src/sample_encode.cpp
126index 0a65016..7c722ea 100644
127--- a/tools/legacy/sample_encode/src/sample_encode.cpp
128+++ b/tools/legacy/sample_encode/src/sample_encode.cpp
129@@ -94,10 +94,8 @@ void PrintHelp(char* strAppName, const char* strErrorMessage, ...) {
130 #endif
131 printf(
132 " [-nv12|nv16|yuy2|uyvy|ayuv|rgb4|bgr4|p010|y210|y410|a2rgb10|p016|p210|y216|i010|i420] - input color format (by default YUV420 is expected).\n");
133-#if (defined(_WIN64) || defined(_WIN32))
134 printf(
135 " [-yuv400] - input color format is YUV400 (grayscale) and will be converted to NV12 for encoding (JPEG only).\n");
136-#endif
137 printf(
138 " [-msb10] - 10-bit color format is expected to have data in Most Significant Bits of words.\n (LSB data placement is expected by default).\n This option also disables data shifting during file reading.\n");
139 printf(
140@@ -924,11 +922,9 @@ mfxStatus ParseInputString(char* strInput[], mfxU32 nArgNum, sInputParams* pPara
141 else if (msdk_match(strInput[i], "-y410")) {
142 pParams->FileInputFourCC = MFX_FOURCC_Y410;
143 }
144-#if (defined(_WIN64) || defined(_WIN32))
145 else if (msdk_match(strInput[i], "-yuv400")) {
146 pParams->FileInputFourCC = MFX_FOURCC_YUV400;
147 }
148-#endif
149 else if (msdk_match(strInput[i], "-ec::p010")) {
150 pParams->EncodeFourCC = MFX_FOURCC_P010;
151 }
152--
1532.43.2
154