mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2025-08-18 01:15:46 +00:00
Unfortunately, this was a design flaw in the way we handled IDR frames NALUs. Because we split them all up and handled them as separate "frames" in the system, some of them could be discarded due to a video decode unit overflow, for example, and cause the decoder to get confused due to receiving an SPS without a following PPS. To address this, NALUs in the IDR frame are always delivered together as one frame. The SPS, PPS, and VPS are now in separate buffers in the IDR frame's buffer list and tagged as such with the new buffer type field. The IDR frames themselves have a new frame type field which marks them as special frames that clients may need to process in a special way. This will likely be a breaking change for your clients!
Moonlight Streaming Core Library
Moonlight-common-c contains the core GameStream client code shared between Moonlight clients, including Moonlight Chrome, Moonlight iOS, and Moonlight Android.
If you are implementing your own Moonlight game streaming client that can use a C library, you will need the code here.
Note to Developers
Moonlight-common-c requires the specific version of ENet that is bundled as a submodule. This version has changes required for IPv6 compatibility and retransmission reliability, among other things. These are breaking API/ABI changes which make Moonlight-common-c incompatible with other versions of the ENet library. Attempting to runtime link to another libenet library will cause your client to crash when connecting to recent versions of GeForce Experience.
Languages
C
99.4%
CMake
0.6%