From fd314db27ebddf410e4d599d29bd9efe589e9755 Mon Sep 17 00:00:00 2001 From: ns6089 <61738816+ns6089@users.noreply.github.com> Date: Mon, 3 Nov 2025 00:55:51 +0300 Subject: [PATCH] Use correct chroma co-siting offsets in D3D11 Introduced in f67272b15312fb30ae4d5f5dfb71843ee5610518 --- .../video/ffmpeg-renderers/d3d11va.cpp | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/app/streaming/video/ffmpeg-renderers/d3d11va.cpp b/app/streaming/video/ffmpeg-renderers/d3d11va.cpp index 962dde76..c2c730ad 100644 --- a/app/streaming/video/ffmpeg-renderers/d3d11va.cpp +++ b/app/streaming/video/ffmpeg-renderers/d3d11va.cpp @@ -786,41 +786,38 @@ void D3D11VARenderer::bindColorConversion(AVFrame* frame) switch (frame->chroma_location) { default: case AVCHROMA_LOC_LEFT: - constBuf.chromaOffset[0] = 0; - constBuf.chromaOffset[1] = 0.5; + constBuf.chromaOffset[0] = 0.5; + constBuf.chromaOffset[1] = 0; break; case AVCHROMA_LOC_CENTER: + constBuf.chromaOffset[0] = 0; + constBuf.chromaOffset[1] = 0; + break; + case AVCHROMA_LOC_TOPLEFT: constBuf.chromaOffset[0] = 0.5; constBuf.chromaOffset[1] = 0.5; break; - case AVCHROMA_LOC_TOPLEFT: - constBuf.chromaOffset[0] = 0; - constBuf.chromaOffset[1] = 0; - break; case AVCHROMA_LOC_TOP: - constBuf.chromaOffset[0] = 0.5; - constBuf.chromaOffset[1] = 0; + constBuf.chromaOffset[0] = 0; + constBuf.chromaOffset[1] = 0.5; break; case AVCHROMA_LOC_BOTTOMLEFT: - constBuf.chromaOffset[0] = 0; - constBuf.chromaOffset[1] = 1.0; + constBuf.chromaOffset[0] = 0.5; + constBuf.chromaOffset[1] = -0.5; break; case AVCHROMA_LOC_BOTTOM: - constBuf.chromaOffset[0] = 0.5; - constBuf.chromaOffset[1] = 1.0; + constBuf.chromaOffset[0] = 0; + constBuf.chromaOffset[1] = -0.5; break; } + constBuf.chromaOffset[0] /= m_TextureWidth; + constBuf.chromaOffset[1] /= m_TextureHeight; if (yuv444) { // 4:4:4 has no subsampling constBuf.chromaOffset[0] = 0; constBuf.chromaOffset[1] = 0; } - else { - // 4:2:0 has 2x2 subsampling - constBuf.chromaOffset[0] /= m_TextureWidth / 2; - constBuf.chromaOffset[1] /= m_TextureHeight / 2; - } D3D11_SUBRESOURCE_DATA constData = {}; constData.pSysMem = &constBuf;