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}