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
Subscribe to:
Post Comments (Atom)
Wireshark setting to interpret UDP as RTP automatically
Before I forget again, a Wireshark setting that can help saving time by trying to interpret any UDP as RTP, if possible: Analyze --> Ena...
-
I needed an efficient way to programmatically extract RTP streams from a network capture. In addition I wanted to: save each stream into a s...
-
Before I forget again, a Wireshark setting that can help saving time by trying to interpret any UDP as RTP, if possible: Analyze --> Ena...
-
Docker is an incredibly useful tool to build prototypes of Linux hosts and applications. You can easily build a network of servers inside...
No comments:
Post a Comment