rtp_parse/rtp/audio_level_header_extension.rs
1//
2// https://tools.ietf.org/html/rfc6464#section-3
3// TODO: this can be held as either 1 byte or 2 byte. (though webrtc clients appear to all use 1 byte)
4//
5// 0 1
6// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
7// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
8// | ID | len=0 |V| level |
9// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
10
11use super::header_extensions::SomeHeaderExtension;
12
13const AUDIO_LEVEL_MASK: u8 = 0x7F;
14const VAD_MASK: u8 = 0x80;
15
16pub fn get_audio_level(ext: &SomeHeaderExtension) -> u8 {
17 ext.data()[0] & AUDIO_LEVEL_MASK
18}
19
20pub fn is_muted(ext: &SomeHeaderExtension) -> bool {
21 get_audio_level(ext) == 127
22}
23
24pub fn get_vad(ext: &SomeHeaderExtension) -> bool {
25 ext.data()[0] & VAD_MASK != 0
26}