wmv_decoder/wma/
common.rs

1//! Common helpers shared by WMA variants.
2//!
3
4/// Return log2(number of output samples per frame).
5///
6/// This is `ff_wma_get_frame_len_bits()`.
7pub fn ff_wma_get_frame_len_bits(sample_rate: i32, version: i32, decode_flags: u32) -> i32 {
8    let mut frame_len_bits: i32;
9
10    if sample_rate <= 16000 {
11        frame_len_bits = 9;
12    } else if sample_rate <= 22050 || (sample_rate <= 32000 && version == 1) {
13        frame_len_bits = 10;
14    } else if sample_rate <= 48000 || version < 3 {
15        frame_len_bits = 11;
16    } else if sample_rate <= 96000 {
17        frame_len_bits = 12;
18    } else {
19        frame_len_bits = 13;
20    }
21
22    if version == 3 {
23        let tmp = (decode_flags & 0x6) as i32;
24        if tmp == 0x2 {
25            frame_len_bits += 1;
26        } else if tmp == 0x4 {
27            frame_len_bits -= 1;
28        } else if tmp == 0x6 {
29            frame_len_bits -= 2;
30        }
31    }
32
33    frame_len_bits
34}