use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-core-audio-types")]
use objc2_core_audio_types::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct AudioFileStreamPropertyFlags(pub u32);
bitflags::bitflags! {
impl AudioFileStreamPropertyFlags: u32 {
#[doc(alias = "kAudioFileStreamPropertyFlag_PropertyIsCached")]
const PropertyIsCached = 1;
#[doc(alias = "kAudioFileStreamPropertyFlag_CacheProperty")]
const CacheProperty = 2;
}
}
unsafe impl Encode for AudioFileStreamPropertyFlags {
const ENCODING: Encoding = u32::ENCODING;
}
unsafe impl RefEncode for AudioFileStreamPropertyFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct AudioFileStreamParseFlags(pub u32);
bitflags::bitflags! {
impl AudioFileStreamParseFlags: u32 {
#[doc(alias = "kAudioFileStreamParseFlag_Discontinuity")]
const Discontinuity = 1;
}
}
unsafe impl Encode for AudioFileStreamParseFlags {
const ENCODING: Encoding = u32::ENCODING;
}
unsafe impl RefEncode for AudioFileStreamParseFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct AudioFileStreamSeekFlags(pub u32);
bitflags::bitflags! {
impl AudioFileStreamSeekFlags: u32 {
#[doc(alias = "kAudioFileStreamSeekFlag_OffsetIsEstimated")]
const OffsetIsEstimated = 1;
}
}
unsafe impl Encode for AudioFileStreamSeekFlags {
const ENCODING: Encoding = u32::ENCODING;
}
unsafe impl RefEncode for AudioFileStreamSeekFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type AudioFileStreamPropertyID = u32;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueAudioFileStreamID {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
unsafe impl RefEncode for OpaqueAudioFileStreamID {
const ENCODING_REF: Encoding =
Encoding::Pointer(&Encoding::Struct("OpaqueAudioFileStreamID", &[]));
}
pub type AudioFileStreamID = *mut OpaqueAudioFileStreamID;
pub type AudioFileStream_PropertyListenerProc = Option<
unsafe extern "C-unwind" fn(
NonNull<c_void>,
AudioFileStreamID,
AudioFileStreamPropertyID,
NonNull<AudioFileStreamPropertyFlags>,
),
>;
#[cfg(feature = "objc2-core-audio-types")]
pub type AudioFileStream_PacketsProc = Option<
unsafe extern "C-unwind" fn(
NonNull<c_void>,
u32,
u32,
NonNull<c_void>,
*mut AudioStreamPacketDescription,
),
>;
pub const kAudioFileStreamError_UnsupportedFileType: OSStatus = 0x7479703f;
pub const kAudioFileStreamError_UnsupportedDataFormat: OSStatus = 0x666d743f;
pub const kAudioFileStreamError_UnsupportedProperty: OSStatus = 0x7074793f;
pub const kAudioFileStreamError_BadPropertySize: OSStatus = 0x2173697a;
pub const kAudioFileStreamError_NotOptimized: OSStatus = 0x6f70746d;
pub const kAudioFileStreamError_InvalidPacketOffset: OSStatus = 0x70636b3f;
pub const kAudioFileStreamError_InvalidFile: OSStatus = 0x6474613f;
pub const kAudioFileStreamError_ValueUnknown: OSStatus = 0x756e6b3f;
pub const kAudioFileStreamError_DataUnavailable: OSStatus = 0x6d6f7265;
pub const kAudioFileStreamError_IllegalOperation: OSStatus = 0x6e6f7065;
pub const kAudioFileStreamError_UnspecifiedError: OSStatus = 0x7768743f;
pub const kAudioFileStreamError_DiscontinuityCantRecover: OSStatus = 0x64736321;
pub const kAudioFileStreamProperty_ReadyToProducePackets: AudioFileStreamPropertyID = 0x72656479;
pub const kAudioFileStreamProperty_FileFormat: AudioFileStreamPropertyID = 0x66666d74;
pub const kAudioFileStreamProperty_DataFormat: AudioFileStreamPropertyID = 0x64666d74;
pub const kAudioFileStreamProperty_FormatList: AudioFileStreamPropertyID = 0x666c7374;
pub const kAudioFileStreamProperty_MagicCookieData: AudioFileStreamPropertyID = 0x6d676963;
pub const kAudioFileStreamProperty_AudioDataByteCount: AudioFileStreamPropertyID = 0x62636e74;
pub const kAudioFileStreamProperty_AudioDataPacketCount: AudioFileStreamPropertyID = 0x70636e74;
pub const kAudioFileStreamProperty_MaximumPacketSize: AudioFileStreamPropertyID = 0x70737a65;
pub const kAudioFileStreamProperty_DataOffset: AudioFileStreamPropertyID = 0x646f6666;
pub const kAudioFileStreamProperty_ChannelLayout: AudioFileStreamPropertyID = 0x636d6170;
pub const kAudioFileStreamProperty_PacketToFrame: AudioFileStreamPropertyID = 0x706b6672;
pub const kAudioFileStreamProperty_FrameToPacket: AudioFileStreamPropertyID = 0x6672706b;
pub const kAudioFileStreamProperty_RestrictsRandomAccess: AudioFileStreamPropertyID = 0x72726170;
pub const kAudioFileStreamProperty_PacketToRollDistance: AudioFileStreamPropertyID = 0x706b726c;
pub const kAudioFileStreamProperty_PreviousIndependentPacket: AudioFileStreamPropertyID =
0x70696e64;
pub const kAudioFileStreamProperty_NextIndependentPacket: AudioFileStreamPropertyID = 0x6e696e64;
pub const kAudioFileStreamProperty_PacketToDependencyInfo: AudioFileStreamPropertyID = 0x706b6470;
pub const kAudioFileStreamProperty_PacketToByte: AudioFileStreamPropertyID = 0x706b6279;
pub const kAudioFileStreamProperty_ByteToPacket: AudioFileStreamPropertyID = 0x6279706b;
pub const kAudioFileStreamProperty_PacketTableInfo: AudioFileStreamPropertyID = 0x706e666f;
pub const kAudioFileStreamProperty_PacketSizeUpperBound: AudioFileStreamPropertyID = 0x706b7562;
pub const kAudioFileStreamProperty_AverageBytesPerPacket: AudioFileStreamPropertyID = 0x61627070;
pub const kAudioFileStreamProperty_BitRate: AudioFileStreamPropertyID = 0x62726174;
pub const kAudioFileStreamProperty_InfoDictionary: AudioFileStreamPropertyID = 0x696e666f;
extern "C-unwind" {
#[cfg(all(feature = "AudioFile", feature = "objc2-core-audio-types"))]
pub fn AudioFileStreamOpen(
in_client_data: *mut c_void,
in_property_listener_proc: AudioFileStream_PropertyListenerProc,
in_packets_proc: AudioFileStream_PacketsProc,
in_file_type_hint: AudioFileTypeID,
out_audio_file_stream: NonNull<AudioFileStreamID>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamParseBytes(
in_audio_file_stream: AudioFileStreamID,
in_data_byte_size: u32,
in_data: *const c_void,
in_flags: AudioFileStreamParseFlags,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamSeek(
in_audio_file_stream: AudioFileStreamID,
in_packet_offset: i64,
out_data_byte_offset: NonNull<i64>,
io_flags: NonNull<AudioFileStreamSeekFlags>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamGetPropertyInfo(
in_audio_file_stream: AudioFileStreamID,
in_property_id: AudioFileStreamPropertyID,
out_property_data_size: *mut u32,
out_writable: *mut Boolean,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamGetProperty(
in_audio_file_stream: AudioFileStreamID,
in_property_id: AudioFileStreamPropertyID,
io_property_data_size: NonNull<u32>,
out_property_data: NonNull<c_void>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamSetProperty(
in_audio_file_stream: AudioFileStreamID,
in_property_id: AudioFileStreamPropertyID,
in_property_data_size: u32,
in_property_data: NonNull<c_void>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioFileStreamClose(in_audio_file_stream: AudioFileStreamID) -> OSStatus;
}