use crate::{arc, cf, ns};
pub mod all_formats_keys {
use crate::ns;
pub fn id() -> &'static ns::String {
unsafe { AVFormatIDKey }
}
pub fn sample_rate() -> &'static ns::String {
unsafe { AVSampleRateKey }
}
pub fn number_of_channels() -> &'static ns::String {
unsafe { AVNumberOfChannelsKey }
}
unsafe extern "C" {
static AVFormatIDKey: &'static ns::String;
static AVSampleRateKey: &'static ns::String;
static AVNumberOfChannelsKey: &'static ns::String;
}
}
pub mod linear_pcm_keys {
use crate::ns;
pub fn bit_depth() -> &'static ns::String {
unsafe { AVLinearPCMBitDepthKey }
}
pub fn is_big_endian() -> &'static ns::String {
unsafe { AVLinearPCMIsBigEndianKey }
}
pub fn is_float() -> &'static ns::String {
unsafe { AVLinearPCMIsFloatKey }
}
pub fn is_non_interleaved() -> &'static ns::String {
unsafe { AVLinearPCMIsNonInterleaved }
}
unsafe extern "C" {
static AVLinearPCMBitDepthKey: &'static ns::String;
static AVLinearPCMIsBigEndianKey: &'static ns::String;
static AVLinearPCMIsFloatKey: &'static ns::String;
static AVLinearPCMIsNonInterleaved: &'static ns::String;
}
}
pub mod file_keys {
use crate::ns;
pub fn file_type() -> &'static ns::String {
unsafe { AVAudioFileTypeKey }
}
unsafe extern "C" {
static AVAudioFileTypeKey: &'static ns::String;
}
}
pub mod encoder_propery_keys {
use crate::ns;
pub fn audio_quality() -> &'static ns::String {
unsafe { AVEncoderAudioQualityKey }
}
pub fn audio_quality_for_vbr() -> &'static ns::String {
unsafe { AVEncoderAudioQualityForVBRKey }
}
pub fn bit_rate() -> &'static ns::String {
unsafe { AVEncoderBitRateKey }
}
pub fn bit_rate_per_channel() -> &'static ns::String {
unsafe { AVEncoderBitRatePerChannelKey }
}
pub fn bit_rate_strategy() -> &'static ns::String {
unsafe { AVEncoderBitRateStrategyKey }
}
pub fn bit_depth_hint() -> &'static ns::String {
unsafe { AVEncoderBitDepthHintKey }
}
unsafe extern "C" {
static AVEncoderAudioQualityKey: &'static ns::String;
static AVEncoderAudioQualityForVBRKey: &'static ns::String;
static AVEncoderBitRateKey: &'static ns::String;
static AVEncoderBitRatePerChannelKey: &'static ns::String;
static AVEncoderBitRateStrategyKey: &'static ns::String;
static AVEncoderBitDepthHintKey: &'static ns::String;
}
}
pub mod sample_rate_converter_keys {
use crate::ns;
pub fn algorithm() -> &'static ns::String {
unsafe { AVSampleRateConverterAlgorithmKey }
}
pub fn audio_quality() -> &'static ns::String {
unsafe { AVSampleRateConverterAudioQualityKey }
}
unsafe extern "C" {
static AVSampleRateConverterAlgorithmKey: &'static ns::String;
static AVSampleRateConverterAudioQualityKey: &'static ns::String;
}
}
pub fn channel_layout_key() -> &'static ns::String {
unsafe extern "C" {
static AVChannelLayoutKey: &'static ns::String;
}
unsafe { AVChannelLayoutKey }
}
pub mod bit_rate_strategy {
use crate::ns;
pub fn constant() -> &'static ns::String {
unsafe { AVAudioBitRateStrategy_Constant }
}
pub fn long_term_average() -> &'static ns::String {
unsafe { AVAudioBitRateStrategy_LongTermAverage }
}
pub fn variable_constrained() -> &'static ns::String {
unsafe { AVAudioBitRateStrategy_VariableConstrained }
}
pub fn variable() -> &'static ns::String {
unsafe { AVAudioBitRateStrategy_Variable }
}
unsafe extern "C" {
static AVAudioBitRateStrategy_Constant: &'static ns::String;
static AVAudioBitRateStrategy_LongTermAverage: &'static ns::String;
static AVAudioBitRateStrategy_VariableConstrained: &'static ns::String;
static AVAudioBitRateStrategy_Variable: &'static ns::String;
}
}
pub mod sample_rate_converer_algorithm {
use crate::ns;
pub fn normal() -> &'static ns::String {
unsafe { AVSampleRateConverterAlgorithm_Normal }
}
pub fn mastering() -> &'static ns::String {
unsafe { AVSampleRateConverterAlgorithm_Mastering }
}
pub fn minimum_phase() -> &'static ns::String {
unsafe { AVSampleRateConverterAlgorithm_MinimumPhase }
}
unsafe extern "C" {
static AVSampleRateConverterAlgorithm_Normal: &'static ns::String;
static AVSampleRateConverterAlgorithm_Mastering: &'static ns::String;
static AVSampleRateConverterAlgorithm_MinimumPhase: &'static ns::String;
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
#[repr(transparent)]
pub struct Quality(pub isize);
impl Quality {
pub const MIN: Self = Self(0);
pub const LOW: Self = Self(0x20);
pub const MEDIUM: Self = Self(0x40);
pub const HIGH: Self = Self(0x60);
pub const MAX: Self = Self(0x7F);
pub fn to_cf_number(&self) -> arc::R<cf::Number> {
cf::Number::from_i64(self.0 as _)
}
}