From 40c0bc6d3dfe172dd25908df2c16de29c34fa4d4 Mon Sep 17 00:00:00 2001 From: gfxVPLsdm Date: Mon, 5 Feb 2024 17:14:07 +0800 Subject: [PATCH] [JPEGe] Enable BGR4 JPEG Enc support (#6470) Co-authored-by: vcheah Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/e73763d05f8fdc348c356b58dcb83075b5e868f8] Signed-off-by: Lim Siew Hoon --- .../mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp | 6 ++++-- .../encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp index 141564b1..332f6372 100644 --- a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp +++ b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp @@ -212,7 +212,8 @@ mfxStatus MFXVideoENCODEMJPEG_HW::QueryImplsDescription( ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YV12; ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YUY2; ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_RGB4; - memCaps.NumColorFormats = 4; + ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_BGR4; + memCaps.NumColorFormats = 5; ah.PushBack(profileCaps.MemDesc); profileCaps.MemDesc[1] = profileCaps.MemDesc[0]; @@ -392,7 +393,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Query(VideoCORE * core, mfxVideoParam *in, mfx if ((fourCC == 0 && chromaFormat == 0) || (fourCC == MFX_FOURCC_NV12 && (chromaFormat == MFX_CHROMAFORMAT_YUV420 || chromaFormat == MFX_CHROMAFORMAT_YUV400)) || (fourCC == MFX_FOURCC_YUY2 && chromaFormat == MFX_CHROMAFORMAT_YUV422H) || - (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444)) + ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444)) { out->mfx.FrameInfo.FourCC = in->mfx.FrameInfo.FourCC; out->mfx.FrameInfo.ChromaFormat = in->mfx.FrameInfo.ChromaFormat; @@ -698,6 +699,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Init(mfxVideoParam *par) doubleBytesPerPx = 4; break; case MFX_FOURCC_RGB4: + case MFX_FOURCC_BGR4: default: doubleBytesPerPx = 8; break; diff --git a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp index 3fc619d1..b1ab556e 100644 --- a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp +++ b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp @@ -108,6 +108,7 @@ mfxStatus MfxHwMJpegEncode::CheckJpegParam(VideoCORE *core, mfxVideoParam & par, BytesPerPx = 2; break; case MFX_FOURCC_RGB4: + case MFX_FOURCC_BGR4: default: BytesPerPx = 4; } @@ -157,7 +158,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c m_payload_base.length = 0; m_payload_list.clear(); - if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444) + if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444) { m_app14_data.header = 0xEEFF;//APP14 m_app14_data.lenH = 0; @@ -287,7 +288,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c m_pps.num_components = 3; else if (fourCC == MFX_FOURCC_NV12 && chromaFormat == MFX_CHROMAFORMAT_YUV400) m_pps.num_components = 1; - else if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444) + else if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444) m_pps.num_components = 3; else MFX_RETURN(MFX_ERR_UNDEFINED_BEHAVIOR); @@ -341,7 +342,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c { // No external tables - use Quality parameter m_dqt_list.resize(0); - if (fourCC == MFX_FOURCC_RGB4) + if (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) { m_pps.quantiser_table_selector[0] = 0; m_pps.quantiser_table_selector[1] = 0; @@ -393,7 +394,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c { m_dht_list.resize(0); } - else if (hwCaps->MaxNumHuffTable == 1 || fourCC == MFX_FOURCC_RGB4) + else if (hwCaps->MaxNumHuffTable == 1 || (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4)) { m_dht_list.resize(1); -- 2.40.1