mod compressed;
mod decompressed;
mod error;
mod hint;
mod memory;
mod util;
pub(crate) use self::util::*;
pub use self::{compressed::*, decompressed::*, error::*, hint::*, memory::*};
use crate::constants::*;
use crate::input::utils;
use opus2::Bitrate;
use std::{mem, time::Duration};
use streamcatcher::{Config as ScConfig, GrowthStrategy};
#[must_use]
pub fn compressed_cost_per_sec(bitrate: Bitrate) -> usize {
let framing_cost_per_sec = AUDIO_FRAME_RATE * mem::size_of::<u16>();
let bitrate_raw = match bitrate {
Bitrate::Bits(i) => i,
Bitrate::Auto => 64_000,
Bitrate::Max => 512_000,
} as usize;
(bitrate_raw / 8) + framing_cost_per_sec
}
#[must_use]
pub fn raw_cost_per_sec(stereo: bool) -> usize {
utils::timestamp_to_byte_count(Duration::from_secs(1), stereo)
}
#[must_use]
pub fn default_config(cost_per_sec: usize) -> ScConfig {
ScConfig::new().chunk_size(GrowthStrategy::Constant(5 * cost_per_sec))
}