Browse Source

obs-qsv11: Add AV1 meta data

Enable content light meta data over the AV1 stream.
Gale 2 years ago
parent
commit
99c456b777
1 changed files with 21 additions and 13 deletions
  1. 21 13
      plugins/obs-qsv11/QSV_Encoder_Internal.cpp

+ 21 - 13
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 =