I'm going to implement Java VoiP server to work with WebRtc. Implementation of browser p2p connection is really straightforward. Server to client connection is slightly more tricky.
After a quick look at RFC I wrote down what should be done to make Java server as browser. Kindly help me to complete list below.
- Implement STUN server. Server should be abke to respond binding request and keep-alive pings.
- Implement DTLS protocol along with DTLS handshake. After the DTLS handshake shared secret will be used as keying material within SRTP and SRTCP.
- Support multiplexing of SRTP and SRTCP stream. SRTP and SRTCP use same port to adress NAT issue.
- Not sure whether should I implement SRTCP. I believe connection will not be broken, if server does not send SRTCP reports to client.
- Decode SRTP stream to RTP.
Questions:
- Is there anything else which should be done on server-side ?
- How webRtc handles SRTCP reports ? Does it adjust sample rate/bit rate depends on SRTCP report?
WebRtc claims that following issues will be addressed:
- packet loss concealment
- echo cancellation
- bandwidth adaptivity
- dynamic jitter buffering
- automatic gain control
- noise reduction and suppression
Is is webRtc internals or codec(Opus) internals? Do I need to do anything on server side to handle this issues, for example variable bitrate etc ?