This is a quite simple computation or validation of the network bandwidth, but can be tricky if you don't take into account the "quality" parameter used in Speex.
Speex is designed to change bitrate depending on the desired quality, and there are 10 different levels of quality per type (narrowband (8 KHz), wideband (16 KHz), ultra-wideband (32 KHz)).
All you have to do is take the expected encoding bitrate for that quality (e.g. 28 Kbps for wideband at quality 8/10), compute the payload per frame, optionally sum the payload when you have more than 1 frame per packet, add the overhead of IP, UDP and RTP, then recompute the overall bitrate.
Each Speex frame has 20 msec duration.
The payload for Speex wideband at quality 8 (28 kbps) is:
P = (28*10^3 kbps * 20*10^-3 msec/frame) = 70 B/frame
Consider 1 frame per packet and add the overhead from IP, UDP and RTP:
Ptot = 70 B + 40 B = 110 B/packet
Compute the final network bandwidth:
BW = (110 B)*8 / (20 * 10^-3) = 44 Kbps
WebRTC applications use the ICE negotiation to discovery the best way to communicate with a remote party. I t dynamically finds a pair of...
On a previous post I shared my experiments with node.js as a WebSocket server. This is quite useful for people working on WebRTC prototyp...
Verto is a newly designed signalling protocol for WebRTC clients interacting with FreeSWITCH . It has an intuitive, JSON-based RPC whic...
From time to time I need to verify that the audio inside a trace is as expected. Not much in terms of quality, but more often content and du...