diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2017-07-07 12:06:44 +0300 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2017-07-07 12:41:04 +0300 |
commit | 1fb5005d17383afcdad9add3679eafb474886322 (patch) | |
tree | 80f4dbd4c95112244f48bf83b79458cf598e8674 | |
parent | c96e7975b5728186bbf5a3add87c6d4196d1d7da (diff) |
Update color enumeration values
-rw-r--r-- | decoder/LAVVideo/LAVVideo.cpp | 8 | ||||
-rw-r--r-- | decoder/LAVVideo/Media.cpp | 16 |
2 files changed, 18 insertions, 6 deletions
diff --git a/decoder/LAVVideo/LAVVideo.cpp b/decoder/LAVVideo/LAVVideo.cpp index e26c536f..42b4d92a 100644 --- a/decoder/LAVVideo/LAVVideo.cpp +++ b/decoder/LAVVideo/LAVVideo.cpp @@ -1114,11 +1114,13 @@ HRESULT CLAVVideo::ReconnectOutput(int width, int height, AVRational ar, DXVA2_E // Remove custom matrix settings, which are not understood upstream if (dxvaExtFlags.VideoTransferMatrix == 6) { dxvaExtFlags.VideoTransferMatrix = DXVA2_VideoTransferMatrix_BT601; - } else if (dxvaExtFlags.VideoTransferMatrix > 4 && !m_bMadVR) { + } else if (dxvaExtFlags.VideoTransferMatrix > 5 && !m_bMadVR) { dxvaExtFlags.VideoTransferMatrix = DXVA2_VideoTransferMatrix_Unknown; } - if (dxvaExtFlags.VideoTransferFunction > MFVideoTransFunc_Log_316 && !m_bMadVR) { - dxvaExtFlags.VideoTransferFunction = DXVA2_VideoTransFunc_Unknown; + + // madVR uses a different value for SMPTE ST 2084 + if (dxvaExtFlags.VideoTransferFunction == 15 && m_bMadVR) { + dxvaExtFlags.VideoTransferFunction = 16; } if (mt.formattype == FORMAT_VideoInfo) { diff --git a/decoder/LAVVideo/Media.cpp b/decoder/LAVVideo/Media.cpp index 8b16010e..20daae6f 100644 --- a/decoder/LAVVideo/Media.cpp +++ b/decoder/LAVVideo/Media.cpp @@ -701,9 +701,18 @@ void fillDXVAExtFormat(DXVA2_ExtendedFormat &fmt, int range, int primaries, int case AVCOL_PRI_SMPTE240M: fmt.VideoPrimaries = DXVA2_VideoPrimaries_SMPTE240M; break; + // Values from newer Windows SDK (MediaFoundation) case AVCOL_PRI_BT2020: fmt.VideoPrimaries = (DXVA2_VideoPrimaries)9; break; + case AVCOL_PRI_SMPTE428: + // XYZ + fmt.VideoPrimaries = (DXVA2_VideoPrimaries)10; + break; + case AVCOL_PRI_SMPTE431: + // DCI-P3 + fmt.VideoPrimaries = (DXVA2_VideoPrimaries)11; + break; } // Color Space / Transfer Matrix @@ -718,11 +727,12 @@ void fillDXVAExtFormat(DXVA2_ExtendedFormat &fmt, int range, int primaries, int case AVCOL_SPC_SMPTE240M: fmt.VideoTransferMatrix = DXVA2_VideoTransferMatrix_SMPTE240M; break; - // Custom values, not official standard, but understood by madVR + // Values from newer Windows SDK (MediaFoundation) case AVCOL_SPC_BT2020_CL: case AVCOL_SPC_BT2020_NCL: fmt.VideoTransferMatrix = (DXVA2_VideoTransferMatrix)4; break; + // Custom values, not official standard, but understood by madVR case AVCOL_SPC_FCC: fmt.VideoTransferMatrix = (DXVA2_VideoTransferMatrix)6; break; @@ -754,9 +764,9 @@ void fillDXVAExtFormat(DXVA2_ExtendedFormat &fmt, int range, int primaries, int case AVCOL_TRC_LOG_SQRT: fmt.VideoTransferFunction = MFVideoTransFunc_Log_316; break; - // Custom values, not official standard, but understood by madVR + // Values from newer Windows SDK (MediaFoundation) case AVCOL_TRC_SMPTEST2084: - fmt.VideoTransferFunction = 16; + fmt.VideoTransferFunction = 15; break; } |