⚡ The imaginary Parsec SDK
Low latency, peer-to-peer, interactive game streaming.
The goal is single header for C/C++, and Rust bindings. Output binaries would be static lib and dynamic lib (DLL).
F**k this $320M acquisition!
- Windows (64-bit)
- Linux
- macOS
- Hardware decoders
- FFmpeg decoder (smaller build)
- HEVC codec
- YUV420, YUV444
- 10-bit color
- ParsecInit
- ParsecDestroy
- ParsecGetConfig
- ParsecGetBuffer
- ParsecFree
- ParsecSetLogCallback
- ParsecVersion
- ParsecGetOutputs
- ParsecGetAudioOutputs
- ParsecGetDecoders
- ParsecJSONCommand
- ParsecCanHost
-
ParsecGetVUSBState(not supported) -
ParsecGetVDDState(not supported) - ParsecSetConfig
- ParsecClientConnect (removed in new SDK)
- ParsecClientDisconnect
- ParsecClientGetStatus
- ParsecClientGetGuests
- ParsecClientSetConfig
- ParsecClientSetDimensions
- ParsecClientPollFrame
- ParsecClientPollAudio
- ParsecClientPollEvents
-
ParsecClientGLDestroy(deprecated) - ParsecClientSendMessage
- ParsecClientPause
- ParsecClientEnableStream
- ParsecClientSendUserData
- ParsecClientSendExtraData
-
ParsecClientScalePenMessage(not supported) -
ParsecClientSendVirtualUSB(not supported)
HOST_DESKTOP
only.
- ParsecHostStart
- ParsecHostStop
- ParsecHostGetStatus
- ParsecHostSetConfig
- ParsecHostGetGuests
- ParsecHostKickGuest
- ParsecHostSendUserData
- ParsecHostSendUserDataAll
- ParsecHostBeginP2P
- ParsecHostSetPermissions
Signal server and these functions are used to control the handshake flow.
This is a way to build your own server without relying on the Parsec's online service.
sequenceDiagram
participant Client
participant STUN_Server as STUN Server
participant Host
participant Signal_API as Signal API
Client->>STUN_Server: Start UDP conversation (port 3478)
STUN_Server-->>Client: Respond with public IP & listener port
Client->>Signal_API: Send connection info via WebSocket
Host->>STUN_Server: Start UDP conversation (port 3478)
STUN_Server-->>Host: Respond with public IP & listener port
Host->>Signal_API: Send connection info via WebSocket
Signal_API-->>Client: Host's connection info
Signal_API-->>Host: Client's connection info
Client->>Host: Attempt connection
Host->>Client: Attempt connection
Note over Client, Host: Connection established based on NAT traversal success
- ParsecSignalInit
- ParsecSignalDestroy
- ParsecSignalUpdateHost
- ParsecSignalConnect
- ParsecSignalDisconnect
- ParsecSignalSendCandidate
- ParsecClientNewAttempt
- ParsecClientAddCandidate
- ParsecClientBeginP2P
- ParsecClientEndConnection