mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 13:02:03 +00:00
[PR #517] Add PyroWave video codec support #505
Labels
No labels
🧠 1 - 🤖 999
AMD
bug
bug
cannot reproduce
documentation
duplicate
easy
enhancement
enhancement
enhancement
fixed?
fixed?
good first issue
hard
help wanted
Intel
invalid
LXC
medium
moonlight-protocol
Multi GPU
nixos
not a bug
nvidia
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
games-on-whales/wolf#505
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/games-on-whales/wolf/pull/517
Author: @bscubed
Created: 9/29/2026
Status: 🔄 Open
Base:
beta← Head:pyrowave📝 Commits (6)
57a25a7Add PyroWave video codec supportbfc35caScale video pacing rate with the negotiated bitratedee1094Send legacy RGB dma-bufs to the PyroWave GPU importerb360faeSplit large video frames into consistent FEC blocks5c8ad56Update PyroWave to the 1.0 API090b13bEncode PyroWave in limited range to match Aurora📊 Changes
34 files changed (+3011 additions, -76 deletions)
View changed files
📝
docker/wolf.Dockerfile(+20 -0)📝
src/core/CMakeLists.txt(+7 -1)📝
src/moonlight-protocol/moonlight.cpp(+10 -1)📝
src/moonlight-protocol/moonlight/data-structures.hpp(+1 -0)📝
src/moonlight-protocol/moonlight/protocol.hpp(+5 -1)📝
src/moonlight-server/CMakeLists.txt(+18 -0)📝
src/moonlight-server/api/endpoints.cpp(+3 -1)📝
src/moonlight-server/events/events.hpp(+1 -0)📝
src/moonlight-server/events/reflectors.hpp(+3 -0)➕
src/moonlight-server/gst-plugin/pyrowave/gstpyrowaveenc.cpp(+975 -0)➕
src/moonlight-server/gst-plugin/pyrowave/gstpyrowaveenc.hpp(+57 -0)➕
src/moonlight-server/gst-plugin/pyrowave/pyrowave_align.hpp(+240 -0)➕
src/moonlight-server/gst-plugin/pyrowave/pyrowave_device.cpp(+404 -0)➕
src/moonlight-server/gst-plugin/pyrowave/pyrowave_device.hpp(+236 -0)📝
src/moonlight-server/gst-plugin/video.hpp(+136 -23)📝
src/moonlight-server/platforms/hw.hpp(+16 -0)📝
src/moonlight-server/platforms/hw_linux.cpp(+20 -7)📝
src/moonlight-server/platforms/hw_unknown.cpp(+5 -3)📝
src/moonlight-server/rest/endpoints.hpp(+4 -2)📝
src/moonlight-server/rtsp/commands.hpp(+22 -4)...and 14 more files
📄 Description
Closes #515
This PR adds PyroWave as a fourth video codec in Wolf, alongside H.264, HEVC and AV1. Other codecs save bandwidth by sending only what changed since the previous frame. That makes encoding slower, we have to wait an extra frame to compare the current frame with the previous, and one lost packet can corrupt the frames that follow. PyroWave compresses each frame on its own with a wavelet transform on the GPU. Encoding and decoding are very fast, but it needs much more bandwidth as a result. On a wired home network, that's a good trade for lower latency.
How
Infrastructure Changes
Bitrate requested for high resolutions and framerates can get as high as 1Gbps. Some changes around bitrate limits need to be adjusted in order to properly support this codec from within Wolf.
Comparison
Notes
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.