From 8183ff3347aa4c76bfe3183de42003bad78369a1 Mon Sep 17 00:00:00 2001 From: ened Date: Tue, 7 Oct 2025 22:42:30 +0900 Subject: [PATCH] WIP --- .../src/Playback/PlaybackController.cpp | 15 +++++++++++++++ .../src/Rendering/YUV420PUploadBackend.cpp | 12 +++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Playback/PlaybackController.cpp b/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Playback/PlaybackController.cpp index b17a71e..9d81eb4 100644 --- a/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Playback/PlaybackController.cpp +++ b/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Playback/PlaybackController.cpp @@ -100,6 +100,21 @@ bool PlaybackController::LoadVideo(const std::wstring& filePath) } LOGF_INFO("[PlaybackController] File opened successfully"); + // Enable debug options for DAV1D decoder to dump first 5 frames as BMP + if (m_decoderType == VAVCORE_DECODER_DAV1D) { + VavCoreDebugOptions debugOpts = {}; + debugOpts.enable_rgba_debug = true; + debugOpts.rgba_debug_count = 5; // Dump frames 0-4 + debugOpts.debug_output_path = "./debug_output"; + + result = vavcore_set_debug_options(m_vavCorePlayer, &debugOpts); + if (result == VAVCORE_SUCCESS) { + LOGF_INFO("[PlaybackController] Debug options enabled: dump first 5 frames to ./debug_output"); + } else { + LOGF_ERROR("[PlaybackController] Failed to set debug options: %d", result); + } + } + // Get video metadata VavCoreVideoMetadata metadata; result = vavcore_get_metadata(m_vavCorePlayer, &metadata); diff --git a/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Rendering/YUV420PUploadBackend.cpp b/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Rendering/YUV420PUploadBackend.cpp index 4c281ab..2587bbc 100644 --- a/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Rendering/YUV420PUploadBackend.cpp +++ b/vav2/platforms/windows/applications/vav2player/Vav2Player/src/Rendering/YUV420PUploadBackend.cpp @@ -194,13 +194,11 @@ HRESULT YUV420PUploadBackend::CreateComputeShaderResources() { HRESULT YUV420PUploadBackend::CompileComputeShader() { const char* shaderSource = R"( -struct YUVtoRGBConstants { +cbuffer ConstantsBuffer : register(b0) { float4x4 colorMatrix; float4 offsets; }; -ConstantBuffer g_colorConstants : register(b0); - Texture2D g_yTexture : register(t0); Texture2D g_uTexture : register(t1); Texture2D g_vTexture : register(t2); @@ -209,11 +207,11 @@ RWTexture2D g_rgbTexture : register(u0); [numthreads(8, 8, 1)] void main(uint3 id : SV_DispatchThreadID) { - float y = g_yTexture[id.xy].r - g_colorConstants.offsets.r; - float u = g_uTexture[id.xy / 2].r - g_colorConstants.offsets.g; - float v = g_vTexture[id.xy / 2].r - g_colorConstants.offsets.b; + float y = g_yTexture[id.xy].r - offsets.r; + float u = g_uTexture[id.xy / 2].r - offsets.g; + float v = g_vTexture[id.xy / 2].r - offsets.b; - float3 rgb = mul(float3(y, u, v), (float3x3)g_colorConstants.colorMatrix); + float3 rgb = mul(float3(y, u, v), (float3x3)colorMatrix); g_rgbTexture[id.xy] = float4(saturate(rgb), 1.0f); }