Example of playing file from disk.
- User declares codec they are reading from disk
- On each negotiated PeerConnection they are notified if the receiver can accept what they are offering
- Read packets from disk and send until completed
Example of playing a file from a disk and condtionally selecting codec.
- User declares codecs that are available
- On each negotiated PeerConnection a callback is fired with the codecs that are supported
- Read packets from disk and send until completed
Example of saving user input to disk,
- User declares codecs they are saving to disk
- On each negotiated PeerConnection they are notified if the receiver can send what they are offering
- In OnTrack user Read packets from webrtc.RTPReceiver and save to disk
Example of simple SFU
- User declares codec they wish to fan out
- Uploader connects and we assert that our chosen codec is supported, if so we start reading
- Downloader connects and we assert our chosen codec is supported
- We send our video packets and the developer doesn't have to worry about managing PayloadTypes/SSRCes etc..
We can also implement some basic receiver feedback. These need to be supported, but are not mandatory
- Determine the lowest support bitrate across all receivers, and forward it back to the sender
- Forward NACK/PLI messages from each receiver back to the sender
- Simulcast (see below)
A user should be able to receive multiple feeds for a single Track
TODO (Works in master)
A user sending video should be able to receive NACKs and respond to them
TODO
A user receiving video should be able to send NACKs and receive retransmissions
TODO
A user sending video should be able to receive REMB/Receiver Reports/TWCC and adjust bitrate
TODO
A user receiving video should be able to send REMB/Receiver Reports/TWCC
TODO
A user should be able to send simulcast to another Pion instance. This isn't supported to the browser.
TODO
Users should be able to call getUserMedia and have it work in both their Go and WASM code.
Everything should be behind platform flags in the mediadevices
repo so user doesn't need to write platform specific
code.