From: "Yew, Chang Ching" <[email protected]>

HSD ID: 22013248724

Signed-off-by: Yew, Chang Ching <[email protected]>
---
 ...pegd-Enable-JPEG-decode-error-report.patch | 502 ++++++++++++++++++
 .../onevpl/onevpl-intel-gpu_21.3.2.bb         |   1 +
 2 files changed, 503 insertions(+)
 create mode 100644 
recipes-multimedia/onevpl/onevpl-intel-gpu/0001-jpegd-Enable-JPEG-decode-error-report.patch

diff --git 
a/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-jpegd-Enable-JPEG-decode-error-report.patch
 
b/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-jpegd-Enable-JPEG-decode-error-report.patch
new file mode 100644
index 00000000..21482ed7
--- /dev/null
+++ 
b/recipes-multimedia/onevpl/onevpl-intel-gpu/0001-jpegd-Enable-JPEG-decode-error-report.patch
@@ -0,0 +1,502 @@
+From fe25ec3db9a48308bd6d3e9fe800e67335f8a369 Mon Sep 17 00:00:00 2001
+From: "Yew, Chang Ching" <[email protected]>
+Date: Mon, 4 Oct 2021 13:56:08 +0800
+Subject: [PATCH] [jpegd] Enable JPEG decode error report
+
+Upstream-Status: Submitted
+innersource PR #3318
+
+[Internal]
+    Issue: NA
+    Test: manual. Gst-MSDK with mfxExtDecodeErrorReport
+    OSPR: N/A
+
+Signed-off-by: Cheah, Vincent Beng Keat [email protected]>
+---
+ .../mjpeg/include/mfx_mjpeg_dec_decode.h      |  2 ++
+ .../decode/mjpeg/src/mfx_mjpeg_dec_decode.cpp | 19 ++++++++++-
+ .../umc/codec/jpeg_dec/include/jpegdec.h      |  1 +
+ .../umc/codec/jpeg_dec/include/jpegdec_base.h | 19 +++++++++++
+ .../jpeg_dec/include/umc_mjpeg_mfx_decode.h   |  2 +-
+ .../include/umc_mjpeg_mfx_decode_base.h       |  4 +--
+ .../shared/umc/codec/jpeg_dec/src/jpegdec.cpp | 17 ++++++++--
+ .../umc/codec/jpeg_dec/src/jpegdec_base.cpp   | 29 +++++++++++++++-
+ .../jpeg_dec/src/umc_mjpeg_mfx_decode.cpp     |  6 ++--
+ .../src/umc_mjpeg_mfx_decode_base.cpp         |  6 ++--
+ api/vpl/mfxstructures.h                       | 33 +++++++++++++++----
+ 11 files changed, 121 insertions(+), 17 deletions(-)
+
+diff --git a/_studio/mfx_lib/decode/mjpeg/include/mfx_mjpeg_dec_decode.h 
b/_studio/mfx_lib/decode/mjpeg/include/mfx_mjpeg_dec_decode.h
+index c6641d3e71..a2ea6b5cec 100644
+--- a/_studio/mfx_lib/decode/mjpeg/include/mfx_mjpeg_dec_decode.h
++++ b/_studio/mfx_lib/decode/mjpeg/include/mfx_mjpeg_dec_decode.h
+@@ -37,6 +37,7 @@
+ #endif
+ 
+ #include "mfx_task.h"
++#include "umc_media_data.h"
+ 
+ #include "mfx_vpp_jpeg.h"
+ 
+@@ -46,6 +47,7 @@ namespace UMC
+     class JpegFrameConstructor;
+     class MediaDataEx;
+     class FrameData;
++    class MediaData;
+ };
+ 
+ class VideoDECODEMJPEGBase
+diff --git a/_studio/mfx_lib/decode/mjpeg/src/mfx_mjpeg_dec_decode.cpp 
b/_studio/mfx_lib/decode/mjpeg/src/mfx_mjpeg_dec_decode.cpp
+index 3769fe8a72..0775fbb1be 100644
+--- a/_studio/mfx_lib/decode/mjpeg/src/mfx_mjpeg_dec_decode.cpp
++++ b/_studio/mfx_lib/decode/mjpeg/src/mfx_mjpeg_dec_decode.cpp
+@@ -456,6 +456,14 @@ mfxStatus VideoDECODEMJPEG::DecodeHeader(VideoCORE *core, 
mfxBitstream *bs, mfxV
+     UMC::Status umcRes = decoder.Init(&umcVideoParams);
+     MFX_CHECK_INIT(umcRes == UMC::UMC_OK);
+ 
++    mfxExtBuffer* extbuf = (bs) ? GetExtendedBuffer(bs->ExtParam, 
bs->NumExtParam, MFX_EXTBUFF_DECODE_ERROR_REPORT) : NULL;
++
++    if (extbuf)
++    {
++        reinterpret_cast<mfxExtDecodeErrorReport *>(extbuf)->ErrorTypes = 0;
++        in.SetExtBuffer(extbuf);
++    }
++
+     umcRes = decoder.DecodeHeader(&in);
+ 
+     in.Save(bs);
+@@ -770,6 +778,14 @@ mfxStatus VideoDECODEMJPEG::DecodeFrameCheck(mfxBitstream 
*bs, mfxFrameSurface1
+         MFXMediaDataAdapter src(bs);
+         UMC::MediaDataEx *pSrcData;
+ 
++        mfxExtBuffer* extbuf = (bs) ? GetExtendedBuffer(bs->ExtParam, 
bs->NumExtParam, MFX_EXTBUFF_DECODE_ERROR_REPORT) : NULL;
++
++        if (extbuf)
++        {
++            reinterpret_cast<mfxExtDecodeErrorReport *>(extbuf)->ErrorTypes = 
0;
++            src.SetExtBuffer(extbuf);
++        }
++
+         if (!m_isHeaderFound && bs)
+         {
+             umcRes = pMJPEGVideoDecoder->FindStartOfImage(&src);
+@@ -785,7 +801,8 @@ mfxStatus VideoDECODEMJPEG::DecodeFrameCheck(mfxBitstream 
*bs, mfxFrameSurface1
+ 
+         if (!m_isHeaderParsed && bs)
+         {
+-            umcRes = 
pMJPEGVideoDecoder->_GetFrameInfo((uint8_t*)src.GetDataPointer(), 
src.GetDataSize());
++            umcRes = 
pMJPEGVideoDecoder->_GetFrameInfo((uint8_t*)src.GetDataPointer(), 
src.GetDataSize(), &src);
++
+             if (umcRes != UMC::UMC_OK)
+             {
+                 if(umcRes != UMC::UMC_ERR_NOT_ENOUGH_DATA)
+diff --git a/_studio/shared/umc/codec/jpeg_dec/include/jpegdec.h 
b/_studio/shared/umc/codec/jpeg_dec/include/jpegdec.h
+index 1e70931284..561e1c2889 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/include/jpegdec.h
++++ b/_studio/shared/umc/codec/jpeg_dec/include/jpegdec.h
+@@ -27,6 +27,7 @@
+ #include "omp.h"
+ #endif
+ #include "jpegdec_base.h"
++#include "umc_media_data.h"
+ 
+ class CBaseStreamInput;
+ 
+diff --git a/_studio/shared/umc/codec/jpeg_dec/include/jpegdec_base.h 
b/_studio/shared/umc/codec/jpeg_dec/include/jpegdec_base.h
+index 5e9c139c2c..42647f871c 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/include/jpegdec_base.h
++++ b/_studio/shared/umc/codec/jpeg_dec/include/jpegdec_base.h
+@@ -29,6 +29,13 @@
+ #include "colorcomp.h"
+ #include "membuffin.h"
+ #include "bitstreamin.h"
++#include "mfxstructures.h"
++#include "umc_media_data.h"
++
++namespace UMC
++{
++    class MediaData;
++};
+ 
+ class CJPEGDecoderBase
+ {
+@@ -146,6 +153,18 @@ public:
+   JERRCODE SkipMarker(void);
+ 
+   JERRCODE DetectSampling(void);
++
++  void SetDecodeErrorTypes(void);
++
++  void SetDecodeErrorReportParam(UMC::MediaData *in)
++  {
++      UMC::MediaData::AuxInfo* aux = (in) ? 
in->GetAuxInfo(MFX_EXTBUFF_DECODE_ERROR_REPORT) : NULL;
++      m_pDecodeErrorReport = (aux) ? 
reinterpret_cast<mfxExtDecodeErrorReport*>(aux->ptr) : NULL;
++  }
++
++protected:
++  mfxExtDecodeErrorReport* m_pDecodeErrorReport;
++
+ };
+ 
+ #endif // MFX_ENABLE_MJPEG_VIDEO_DECODE
+diff --git a/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode.h 
b/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode.h
+index fbe535cd95..2edd4d57a8 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode.h
++++ b/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode.h
+@@ -94,7 +94,7 @@ public:
+     JCOLOR GetColorType();
+ 
+     // All memory sizes should come in size_t type
+-    Status _GetFrameInfo(const uint8_t* pBitStream, size_t nSize);
++    Status _GetFrameInfo(const uint8_t* pBitStream, size_t nSize, MediaData 
*in);
+ 
+     // Allocate the destination frame
+     Status AllocateFrame() override;
+diff --git 
a/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode_base.h 
b/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode_base.h
+index 9cee49e9c1..90ce5888ea 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode_base.h
++++ b/_studio/shared/umc/codec/jpeg_dec/include/umc_mjpeg_mfx_decode_base.h
+@@ -63,7 +63,7 @@ public:
+     // Close decoding & free all allocated resources
+     virtual Status Close(void);
+ 
+-    virtual Status GetFrame(UMC::MediaDataEx *, UMC::FrameData** , const 
mfxU32  ) { return MFX_ERR_NONE; };
++    virtual Status GetFrame(UMC::MediaDataEx *, UMC::FrameData** , const 
mfxU32) { return MFX_ERR_NONE; };
+ 
+     virtual void SetFrameAllocator(FrameAllocator * frameAllocator);
+ 
+@@ -79,7 +79,7 @@ public:
+     Status FindStartOfImage(MediaData * in);
+ 
+     // All memory sizes should come in size_t type
+-    Status _GetFrameInfo(const uint8_t* pBitStream, size_t nSize);
++    Status _GetFrameInfo(const uint8_t* pBitStream, size_t nSize, MediaData 
*in);
+ 
+     Status SetRotation(uint16_t rotation);
+ 
+diff --git a/_studio/shared/umc/codec/jpeg_dec/src/jpegdec.cpp 
b/_studio/shared/umc/codec/jpeg_dec/src/jpegdec.cpp
+index 127133ae4c..54441dc534 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/src/jpegdec.cpp
++++ b/_studio/shared/umc/codec/jpeg_dec/src/jpegdec.cpp
+@@ -1120,6 +1120,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseAPP0();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1128,6 +1129,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseAPP1();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1136,6 +1138,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseAPP14();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1152,6 +1155,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseDQT();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1160,6 +1164,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseSOF0();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1206,6 +1211,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseDHT();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1214,6 +1220,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseDRI();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1222,6 +1229,7 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       jerr = ParseSOS(op);
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+ 
+@@ -1231,7 +1239,10 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+           {
+               jerr = m_BitStreamIn.Seek(-(m_sos_len + 2));
+               if(JPEG_OK != jerr)
++              {
++                  SetDecodeErrorTypes();
+                   return jerr;
++              }
+           }
+           else
+           {
+@@ -1246,7 +1257,10 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION op)
+       {
+           jerr = ParseData();
+           if(JPEG_OK != jerr)
++          {
++            SetDecodeErrorTypes();
+             return jerr;
++        }
+ 
+       }
+       break;
+@@ -1288,10 +1302,10 @@ JERRCODE CJPEGDecoder::ParseJPEGBitStream(JOPERATION 
op)
+     default:
+       TRC1("-> Unknown marker ",m_marker);
+       TRC0("..Skipping");
++      SetDecodeErrorTypes();
+       jerr = SkipMarker();
+       if(JPEG_OK != jerr)
+         return jerr;
+-
+       break;
+     }
+   }
+@@ -4575,7 +4589,6 @@ JERRCODE CJPEGDecoder::ReadHeader(
+ JERRCODE CJPEGDecoder::ReadData(void)
+ {
+     return ParseJPEGBitStream(JO_READ_DATA);
+-
+ } // CJPEGDecoder::ReadData(void)
+ 
+ JERRCODE CJPEGDecoder::ReadData(uint32_t restartNum, uint32_t 
restartsToDecode)
+diff --git a/_studio/shared/umc/codec/jpeg_dec/src/jpegdec_base.cpp 
b/_studio/shared/umc/codec/jpeg_dec/src/jpegdec_base.cpp
+index d6244e827b..4409b51cee 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/src/jpegdec_base.cpp
++++ b/_studio/shared/umc/codec/jpeg_dec/src/jpegdec_base.cpp
+@@ -282,6 +282,23 @@ JERRCODE CJPEGDecoderBase::DetectSampling(void)
+   return JPEG_OK;
+ } // CJPEGDecoderBase::DetectSampling()
+ 
++void CJPEGDecoderBase::SetDecodeErrorTypes(void)
++{
++    if (!m_pDecodeErrorReport)
++        return;
++
++    switch (m_marker)
++    {
++        case JM_APP0: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_APP0_MARKER; break;
++        case JM_APP14: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_APP14_MARKER; break;
++        case JM_DQT: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_DQT_MARKER; break;
++        case JM_SOF0: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_SOF0_MARKER; break;
++        case JM_DHT: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_DHT_MARKER; break;
++        case JM_DRI: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_DRI_MARKER; break;
++        case JM_SOS: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_SOS_MARKER; break;
++        default: m_pDecodeErrorReport->ErrorTypes |= 
MFX_ERROR_JPEG_UNKNOWN_MARKER; break;
++    };
++}
+ 
+ JERRCODE CJPEGDecoderBase::NextMarker(JMARKER* marker)
+ {
+@@ -1265,6 +1282,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseAPP0();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1273,6 +1291,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseAPP14();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1281,6 +1300,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseDQT();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1289,6 +1309,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseSOF0();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1311,6 +1332,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseDHT();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1319,6 +1341,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseDRI();
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+       break;
+@@ -1327,6 +1350,7 @@ JERRCODE CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION 
op)
+       jerr = ParseSOS(op);
+       if(JPEG_OK != jerr)
+       {
++        SetDecodeErrorTypes();
+         return jerr;
+       }
+ 
+@@ -1336,7 +1360,10 @@ JERRCODE 
CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION op)
+           {
+               jerr = m_BitStreamIn.Seek(-(m_sos_len + 2));
+               if(JPEG_OK != jerr)
++              {
++                  SetDecodeErrorTypes();
+                   return jerr;
++              }
+           }
+           else
+           {
+@@ -1355,10 +1382,10 @@ JERRCODE 
CJPEGDecoderBase::ParseJPEGBitStream(JOPERATION op)
+     default:
+       TRC1("-> Unknown marker ",m_marker);
+       TRC0("..Skipping");
++      SetDecodeErrorTypes();
+       jerr = SkipMarker();
+       if(JPEG_OK != jerr)
+         return jerr;
+-
+       break;
+     }
+   }
+diff --git a/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode.cpp 
b/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode.cpp
+index 01a513e883..0ffcfaf7ab 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode.cpp
++++ b/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode.cpp
+@@ -378,7 +378,7 @@ Status MJPEGVideoDecoderMFX::DecodeHeader(MediaData* in)
+         }
+     }
+ 
+-    Status sts = _GetFrameInfo((uint8_t*)in->GetDataPointer(), 
in->GetDataSize());
++    Status sts = _GetFrameInfo((uint8_t*)in->GetDataPointer(), 
in->GetDataSize(), in);
+ 
+     if (sts == UMC_ERR_NOT_ENOUGH_DATA &&
+         (!(in->GetFlags() & MediaData::FLAG_VIDEO_DATA_NOT_FULL_FRAME) ||
+@@ -937,7 +937,7 @@ Status MJPEGVideoDecoderMFX::PostProcessing(double pts)
+     return UMC_OK;
+ }
+ 
+-Status MJPEGVideoDecoderMFX::_GetFrameInfo(const uint8_t* pBitStream, size_t 
nSize)
++Status MJPEGVideoDecoderMFX::_GetFrameInfo(const uint8_t* pBitStream, size_t 
nSize, MediaData *in)
+ {
+     int32_t   nchannels;
+     int32_t   precision;
+@@ -945,6 +945,8 @@ Status MJPEGVideoDecoderMFX::_GetFrameInfo(const uint8_t* 
pBitStream, size_t nSi
+     JCOLOR   color;
+     JERRCODE jerr;
+ 
++    m_dec[0]->SetDecodeErrorReportParam(in);
++
+     if (!m_IsInit)
+         return UMC_ERR_NOT_INITIALIZED;
+ 
+diff --git 
a/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode_base.cpp 
b/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode_base.cpp
+index 06fd1a681b..3150492ab2 100644
+--- a/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode_base.cpp
++++ b/_studio/shared/umc/codec/jpeg_dec/src/umc_mjpeg_mfx_decode_base.cpp
+@@ -322,7 +322,7 @@ Status MJPEGVideoDecoderBaseMFX::DecodeHeader(MediaData* 
in)
+         }
+     }
+ 
+-    Status sts = _GetFrameInfo((uint8_t*)in->GetDataPointer(), 
in->GetDataSize());
++    Status sts = _GetFrameInfo((uint8_t*)in->GetDataPointer(), 
in->GetDataSize(), in);
+ 
+     if (sts == UMC_ERR_NOT_ENOUGH_DATA &&
+         (!(in->GetFlags() & MediaData::FLAG_VIDEO_DATA_NOT_FULL_FRAME) ||
+@@ -345,7 +345,7 @@ Status MJPEGVideoDecoderBaseMFX::SetRotation(uint16_t 
rotation)
+     return UMC_OK;
+ }
+ 
+-Status MJPEGVideoDecoderBaseMFX::_GetFrameInfo(const uint8_t* pBitStream, 
size_t nSize)
++Status MJPEGVideoDecoderBaseMFX::_GetFrameInfo(const uint8_t* pBitStream, 
size_t nSize, MediaData *in)
+ {
+     int32_t   nchannels;
+     int32_t   precision;
+@@ -353,6 +353,8 @@ Status MJPEGVideoDecoderBaseMFX::_GetFrameInfo(const 
uint8_t* pBitStream, size_t
+     JCOLOR   color;
+     JERRCODE jerr;
+ 
++    m_decBase->SetDecodeErrorReportParam(in);
++
+     if (!m_IsInit)
+         return UMC_ERR_NOT_INITIALIZED;
+ 
+diff --git a/api/vpl/mfxstructures.h b/api/vpl/mfxstructures.h
+index 879a431602..1bfdaf68c2 100644
+--- a/api/vpl/mfxstructures.h
++++ b/api/vpl/mfxstructures.h
+@@ -3520,12 +3520,33 @@ MFX_PACK_END()
+ 
+ /*! The ErrorTypes enumerator uses bit-ORed values to itemize bitstream error 
types. */
+ enum {
+-    MFX_ERROR_NO            =        0, /*!< No error in bitstream. */
+-    MFX_ERROR_PPS           = (1 << 0), /*!< Invalid/corrupted PPS. */
+-    MFX_ERROR_SPS           = (1 << 1), /*!< Invalid/corrupted SPS. */
+-    MFX_ERROR_SLICEHEADER   = (1 << 2), /*!< Invalid/corrupted slice header. 
*/
+-    MFX_ERROR_SLICEDATA     = (1 << 3), /*!< Invalid/corrupted slice data. */
+-    MFX_ERROR_FRAME_GAP     = (1 << 4), /*!< Missed frames. */
++    MFX_ERROR_NO                  =        0,  /*!< No error in bitstream. */
++    MFX_ERROR_PPS                 = (1 << 0),  /*!< Invalid/corrupted PPS. */
++    MFX_ERROR_SPS                 = (1 << 1),  /*!< Invalid/corrupted SPS. */
++    MFX_ERROR_SLICEHEADER         = (1 << 2),  /*!< Invalid/corrupted slice 
header. */
++    MFX_ERROR_SLICEDATA           = (1 << 3),  /*!< Invalid/corrupted slice 
data. */
++    MFX_ERROR_FRAME_GAP           = (1 << 4),  /*!< Missed frames. */
++    MFX_ERROR_JPEG_APP0_MARKER    = (1 << 5),  /*!< Invalid/corrupted APP0 
marker. */
++    MFX_ERROR_JPEG_APP1_MARKER    = (1 << 6),  /*!< Invalid/corrupted APP1 
marker. */
++    MFX_ERROR_JPEG_APP2_MARKER    = (1 << 7),  /*!< Invalid/corrupted APP2 
marker. */
++    MFX_ERROR_JPEG_APP3_MARKER    = (1 << 8),  /*!< Invalid/corrupted APP3 
marker. */
++    MFX_ERROR_JPEG_APP4_MARKER    = (1 << 9),  /*!< Invalid/corrupted APP4 
marker. */
++    MFX_ERROR_JPEG_APP5_MARKER    = (1 << 10), /*!< Invalid/corrupted APP5 
marker. */
++    MFX_ERROR_JPEG_APP6_MARKER    = (1 << 11), /*!< Invalid/corrupted APP6 
marker. */
++    MFX_ERROR_JPEG_APP7_MARKER    = (1 << 12), /*!< Invalid/corrupted APP7 
marker. */
++    MFX_ERROR_JPEG_APP8_MARKER    = (1 << 13), /*!< Invalid/corrupted APP8 
marker. */
++    MFX_ERROR_JPEG_APP9_MARKER    = (1 << 14), /*!< Invalid/corrupted APP9 
marker. */
++    MFX_ERROR_JPEG_APP10_MARKER   = (1 << 15), /*!< Invalid/corrupted APP10 
marker. */
++    MFX_ERROR_JPEG_APP11_MARKER   = (1 << 16), /*!< Invalid/corrupted APP11 
marker. */
++    MFX_ERROR_JPEG_APP12_MARKER   = (1 << 17), /*!< Invalid/corrupted APP12 
marker. */
++    MFX_ERROR_JPEG_APP13_MARKER   = (1 << 18), /*!< Invalid/corrupted APP13 
marker. */
++    MFX_ERROR_JPEG_APP14_MARKER   = (1 << 19), /*!< Invalid/corrupted APP14 
marker. */
++    MFX_ERROR_JPEG_DQT_MARKER     = (1 << 20), /*!< Invalid/corrupted DQT 
marker. */
++    MFX_ERROR_JPEG_SOF0_MARKER    = (1 << 21), /*!< Invalid/corrupted SOF0 
marker. */
++    MFX_ERROR_JPEG_DHT_MARKER     = (1 << 22), /*!< Invalid/corrupted DHT 
marker. */
++    MFX_ERROR_JPEG_DRI_MARKER     = (1 << 23), /*!< Invalid/corrupted DRI 
marker. */
++    MFX_ERROR_JPEG_SOS_MARKER     = (1 << 24), /*!< Invalid/corrupted SOS 
marker. */
++    MFX_ERROR_JPEG_UNKNOWN_MARKER = (1 << 25), /*!< Unknown Marker. */
+ };
+ 
+ MFX_PACK_BEGIN_USUAL_STRUCT()
+-- 
+2.33.0
+
diff --git a/recipes-multimedia/onevpl/onevpl-intel-gpu_21.3.2.bb 
b/recipes-multimedia/onevpl/onevpl-intel-gpu_21.3.2.bb
index 9a20e785..88ab0bb2 100644
--- a/recipes-multimedia/onevpl/onevpl-intel-gpu_21.3.2.bb
+++ b/recipes-multimedia/onevpl/onevpl-intel-gpu_21.3.2.bb
@@ -17,6 +17,7 @@ COMPATIBLE_HOST:x86-x32 = "null"
 DEPENDS += "libdrm libva intel-media-driver onevpl"
 
 SRC_URI = 
"git://github.com/oneapi-src/oneVPL-intel-gpu.git;protocol=https;branch=main;lfs=0
 \
+            file://0001-jpegd-Enable-JPEG-decode-error-report.patch \
             "
 
 SRCREV = "9a8e9626859fbffd631b3d7cf26ac7b4efe6ae3c"
-- 
2.33.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#7283): 
https://lists.yoctoproject.org/g/meta-intel/message/7283
Mute This Topic: https://lists.yoctoproject.org/mt/86228116/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-intel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to