From 2d4ec4f858827c24a4fddec7cfa8570fb31957d4 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Tue, 3 Nov 2026 23:18:29 +0000 Subject: hlvr: fix video decoding --- hlvr/patch-hlvr | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'hlvr') diff --git a/hlvr/patch-hlvr b/hlvr/patch-hlvr index d7b8d9d..0594f37 100755 --- a/hlvr/patch-hlvr +++ b/hlvr/patch-hlvr @@ -69,6 +69,28 @@ def patch( PATCHES = { + "game/hlvr/bin/linuxsteamrt64/libclient.so": patch( + "a49955f7935ed21ccbe0c0b75362ca28c94fa922b15d8c6f650b7cc5383138b6", + "1a48a9fe4da43cf2ae3a124f38ce96a2b35bdd4d5a8c1a72a4122e4012236d88", + ( + # The `libvideo` that ships with the game seems to be some newer + # version which can decode an optional alpha channel. The game + # calls `CreateVideoPlayer` (an export of this library) with a + # callback that the library calls for every decoded frame of a + # video. The callback that `libvideo` expects to call is supposed + # to take an extra pointer and stride parameter for the optional + # alpha plane. The game passes a callback which presumably matches + # an older signature. The result is that the game's callback is + # called with the wrong y and u strides (the v and u strides happen + # to be the same, so a shift doesn't break them) which causes a + # corrupt looking decoding. + # This patch shifts the three stack accesses which access the three + # stride parameters up by 8 bytes. + (0x2DDEDFB, "28"), + (0x2DDEE07, "20"), + (0x2DDEE0B, "18"), + ), + ), "game/bin/linuxsteamrt64/librendersystemvulkan.so": patch( "dc034f6b5d2116393bfead77f3265c124687b76766906c53a077c196b21ffa18", "7a52bda8f4e6cc35e5ed46f181c3847400807704cab3fea38b40154d0b977f03", -- cgit v1.3.1