Skip to content

⚡ The imaginary Parsec SDK — Low latency, peer-to-peer, interactive game streaming.

License

Notifications You must be signed in to change notification settings

nomi-san/libparsec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation


libparsec

⚡ The imaginary Parsec SDK
Low latency, peer-to-peer, interactive game streaming.


🚧 Working in progress

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!

Target platforms

  • Windows (64-bit)
  • Linux
  • macOS

Client features

  • Hardware decoders
  • FFmpeg decoder (smaller build)
  • HEVC codec
  • YUV420, YUV444
  • 10-bit color

Instance functions

  • ParsecInit
  • ParsecDestroy
  • ParsecGetConfig
  • ParsecGetBuffer
  • ParsecFree
  • ParsecSetLogCallback
  • ParsecVersion
  • ParsecGetOutputs
  • ParsecGetAudioOutputs
  • ParsecGetDecoders
  • ParsecJSONCommand
  • ParsecCanHost
  • ParsecGetVUSBState (not supported)
  • ParsecGetVDDState (not supported)
  • ParsecSetConfig

Client functions

  • 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 functions

HOST_DESKTOP only.

  • ParsecHostStart
  • ParsecHostStop
  • ParsecHostGetStatus
  • ParsecHostSetConfig
  • ParsecHostGetGuests
  • ParsecHostKickGuest
  • ParsecHostSendUserData
  • ParsecHostSendUserDataAll
  • ParsecHostBeginP2P
  • ParsecHostSetPermissions

Signal functions

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

Loading
  • ParsecSignalInit
  • ParsecSignalDestroy
  • ParsecSignalUpdateHost
  • ParsecSignalConnect
  • ParsecSignalDisconnect
  • ParsecSignalSendCandidate
  • ParsecClientNewAttempt
  • ParsecClientAddCandidate
  • ParsecClientBeginP2P
  • ParsecClientEndConnection

About

⚡ The imaginary Parsec SDK — Low latency, peer-to-peer, interactive game streaming.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published