From 99c456b777b72ff229b63090de38ea7ef2134aa5 Mon Sep 17 00:00:00 2001 From: Gale Date: Wed, 12 Jul 2023 20:22:14 -0700 Subject: [PATCH] obs-qsv11: Add AV1 meta data Enable content light meta data over the AV1 stream. --- plugins/obs-qsv11/QSV_Encoder_Internal.cpp | 34 +++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/plugins/obs-qsv11/QSV_Encoder_Internal.cpp b/plugins/obs-qsv11/QSV_Encoder_Internal.cpp index 4733028a4..1f56ba608 100644 --- a/plugins/obs-qsv11/QSV_Encoder_Internal.cpp +++ b/plugins/obs-qsv11/QSV_Encoder_Internal.cpp @@ -387,20 +387,28 @@ mfxStatus QSV_Encoder_Internal::InitParams(qsv_param_t *pParams, extendedBuffers.push_back((mfxExtBuffer *)&m_ExtVideoSignalInfo); #endif -/* TODO: Ask Intel why this is MFX_ERR_UNSUPPORTED */ -#if 0 - memset(&m_ExtChromaLocInfo, 0, sizeof(m_ExtChromaLocInfo)); - m_ExtChromaLocInfo.Header.BufferId = MFX_EXTBUFF_CHROMA_LOC_INFO; - m_ExtChromaLocInfo.Header.BufferSz = sizeof(m_ExtChromaLocInfo); - m_ExtChromaLocInfo.ChromaLocInfoPresentFlag = 1; - m_ExtChromaLocInfo.ChromaSampleLocTypeTopField = - pParams->ChromaSampleLocTypeTopField; - m_ExtChromaLocInfo.ChromaSampleLocTypeBottomField = - pParams->ChromaSampleLocTypeBottomField; - extendedBuffers.push_back((mfxExtBuffer *)&m_ExtChromaLocInfo); -#endif + // CLL and Chroma location in HEVC only supported by VPL + if (m_ver.Major >= 2) { + // Chroma location is HEVC only + if (codec == QSV_CODEC_HEVC) { + memset(&m_ExtChromaLocInfo, 0, + sizeof(m_ExtChromaLocInfo)); + m_ExtChromaLocInfo.Header.BufferId = + MFX_EXTBUFF_CHROMA_LOC_INFO; + m_ExtChromaLocInfo.Header.BufferSz = + sizeof(m_ExtChromaLocInfo); + m_ExtChromaLocInfo.ChromaLocInfoPresentFlag = 1; + m_ExtChromaLocInfo.ChromaSampleLocTypeTopField = + pParams->ChromaSampleLocTypeTopField; + m_ExtChromaLocInfo.ChromaSampleLocTypeBottomField = + pParams->ChromaSampleLocTypeBottomField; + extendedBuffers.push_back( + (mfxExtBuffer *)&m_ExtChromaLocInfo); + } + } - if (codec != QSV_CODEC_AV1 && pParams->MaxContentLightLevel > 0) { + // AV1 HDR meta data is now supported by VPL. + if (pParams->MaxContentLightLevel > 0) { memset(&m_ExtMasteringDisplayColourVolume, 0, sizeof(m_ExtMasteringDisplayColourVolume)); m_ExtMasteringDisplayColourVolume.Header.BufferId =