Cameron Gutman 1c386a8987 Fix race condition that could result in loss of NALUs in an IDR frame
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!
2017-11-18 14:00:25 -08:00
2017-05-07 13:17:32 -07:00
2016-03-06 15:29:02 -08:00
2017-05-10 10:13:06 -07:00
2017-08-14 00:13:37 -07:00

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.

Description
Core implementation of Nvidia's GameStream protocol
Readme 2.1 MiB
Languages
C 99.4%
CMake 0.6%