mirror of
https://github.com/games-on-whales/wolf.git
synced 2026-10-15 13:02:03 +00:00
[PR #260] [CLOSED] Fix missing video_producer_buffer_caps field in API schema and handlers #397
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#397
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/260
Author: @lukemarsden
Created: 9/27/2025
Status: ❌ Closed
Base:
stable← Head:fix/api-video-producer-buffer-caps📝 Commits (1)
cf7b37dFix missing video_producer_buffer_caps field in API schema and handlers📊 Changes
2 files changed (+26 additions, -16 deletions)
View changed files
📝
src/moonlight-server/api/endpoints.cpp(+12 -8)📝
src/moonlight-server/events/reflectors.hpp(+14 -8)📄 Description
Problem
API-created apps generate malformed GStreamer video producer pipelines due to missing
video_producer_buffer_capsfield in the API, while TOML-loaded apps work correctly.Malformed pipeline example:
waylanddisplaysrc render_node=/dev/dri/renderD128 ! , width=3840, height=2160
(Note the stray comma from empty buffer_format parameter)
Root Cause
The API was missing
video_producer_buffer_capsfield in three critical places:Solution
1. Make API Schema Match TOML Flexibility (reflectors.hpp)
std::optional<std::string> video_producer_buffer_capsstd::optional<>to matchTOML config behavior
support_hdr:bool→std::optional<bool>h264/hevc/av1_gst_pipeline:string→std::optional<string>render_node:string→std::optional<string>opus_gst_pipeline:string→std::optional<string>start_virtual_compositor:bool→std::optional<bool>start_audio_server:bool→std::optional<bool>video_producer_buffer_capsin from()method
2. Add Comprehensive Defaults (endpoints.cpp)
"video/x-raw(memory:DMABuf)"(NVIDIA GPUzero-copy)
false""(empty when not available, matches TOML)"/dev/dri/renderD128"truetrueBenefits
Testing
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.