#![allow(non_upper_case_globals)]
use super::ffi::{AudioFormatFlags, AudioFormatID, OSStatus};
pub(crate) struct Consts;
impl Consts {
pub(crate) const AAC_FRAMES_PER_PACKET: u32 = 1024;
pub(crate) const BITS_PER_F32_SAMPLE: u32 = 32;
pub(crate) const BYTES_PER_F32_SAMPLE: u32 = 4;
pub(crate) const FLAC_COOKIE_PREFIX_LEN: usize = 8;
pub(crate) const FLAC_STREAMINFO_LEN: usize = 34;
pub(crate) const kAudioConverterDecompressionMagicCookie: u32 = 0x646d_6763;
pub(crate) const kAudioConverterErr_NoDataNow: OSStatus = 0x2164_6174;
pub(crate) const kAudioConverterPrimeInfo: u32 = 0x7072_696d;
pub(crate) const kAudioFileCAFType: u32 = 0x6361_6666;
pub(crate) const kAudioFileM4AType: u32 = 0x6d34_6166;
pub(crate) const kAudioFileMP3Type: u32 = 0x4d50_4733;
pub(crate) const kAudioFilePropertyAudioDataPacketCount: u32 = 0x7063_6e74;
pub(crate) const kAudioFilePropertyDataFormat: u32 = 0x6466_6d74;
pub(crate) const kAudioFilePropertyMagicCookieData: u32 = 0x6d67_6963;
pub(crate) const kAudioFilePropertyMaximumPacketSize: u32 = 0x7073_7a65;
pub(crate) const kAudioFileWAVEType: u32 = 0x5741_5645;
pub(crate) const kAudioFormatAppleLossless: AudioFormatID = 0x616c_6163;
pub(crate) const kAudioFormatFLAC: AudioFormatID = 0x666c_6163;
pub(crate) const kAudioFormatFlagIsFloat: AudioFormatFlags = 1 << 0;
pub(crate) const kAudioFormatFlagIsPacked: AudioFormatFlags = 1 << 3;
pub(crate) const kAudioFormatFlagsNativeFloatPacked: AudioFormatFlags =
Self::kAudioFormatFlagIsFloat | Self::kAudioFormatFlagIsPacked;
pub(crate) const kAudioFormatLinearPCM: AudioFormatID = 0x6c70_636d;
pub(crate) const kAudioFormatMPEG4AAC: AudioFormatID = 0x6161_6320;
pub(crate) const kAudioFormatMPEG4AAC_HE: AudioFormatID = 0x6161_6368;
pub(crate) const kAudioFormatMPEG4AAC_HE_V2: AudioFormatID = 0x6161_6370;
pub(crate) const kAudioFormatMPEGLayer3: AudioFormatID = 0x2e6d_7033;
pub(crate) const noErr: OSStatus = 0;
}
pub(crate) fn os_status_to_string(status: OSStatus) -> String {
if status == Consts::noErr {
return "noErr".to_string();
}
let bytes = status.to_be_bytes();
if bytes.iter().all(|&b| b.is_ascii_graphic() || b == b' ') {
let s: String = bytes.iter().map(|&b| b as char).collect();
format!("'{}' ({})", s, status)
} else {
format!("{}", status)
}
}
#[cfg(test)]
mod tests {
use kithara_test_utils::kithara;
use super::*;
#[kithara::test]
fn test_os_status_to_string() {
assert_eq!(os_status_to_string(Consts::noErr), "noErr");
assert!(os_status_to_string(0x7768_743f).contains("wht?"));
}
}