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::*;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;
use crate::*;
#[repr(C)]
#[derive(Debug)]
pub struct OpaqueExtAudioFile {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
unsafe impl RefEncode for OpaqueExtAudioFile {
const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("OpaqueExtAudioFile", &[]));
}
pub type ExtAudioFileRef = *mut OpaqueExtAudioFile;
pub type ExtAudioFilePacketTableInfoOverride = i32;
pub const kExtAudioFilePacketTableInfoOverride_UseFileValue: ExtAudioFilePacketTableInfoOverride =
-1;
pub const kExtAudioFilePacketTableInfoOverride_UseFileValueIfValid:
ExtAudioFilePacketTableInfoOverride = -2;
pub type ExtAudioFilePropertyID = u32;
pub const kExtAudioFileProperty_FileDataFormat: ExtAudioFilePropertyID = 0x66666d74;
pub const kExtAudioFileProperty_FileChannelLayout: ExtAudioFilePropertyID = 0x66636c6f;
pub const kExtAudioFileProperty_ClientDataFormat: ExtAudioFilePropertyID = 0x63666d74;
pub const kExtAudioFileProperty_ClientChannelLayout: ExtAudioFilePropertyID = 0x63636c6f;
pub const kExtAudioFileProperty_CodecManufacturer: ExtAudioFilePropertyID = 0x636d616e;
pub const kExtAudioFileProperty_AudioConverter: ExtAudioFilePropertyID = 0x61636e76;
pub const kExtAudioFileProperty_AudioFile: ExtAudioFilePropertyID = 0x6166696c;
pub const kExtAudioFileProperty_FileMaxPacketSize: ExtAudioFilePropertyID = 0x666d7073;
pub const kExtAudioFileProperty_ClientMaxPacketSize: ExtAudioFilePropertyID = 0x636d7073;
pub const kExtAudioFileProperty_FileLengthFrames: ExtAudioFilePropertyID = 0x2366726d;
pub const kExtAudioFileProperty_ConverterConfig: ExtAudioFilePropertyID = 0x61636366;
pub const kExtAudioFileProperty_IOBufferSizeBytes: ExtAudioFilePropertyID = 0x696f6273;
pub const kExtAudioFileProperty_IOBuffer: ExtAudioFilePropertyID = 0x696f6266;
pub const kExtAudioFileProperty_PacketTable: ExtAudioFilePropertyID = 0x78707469;
pub const kExtAudioFileError_InvalidProperty: OSStatus = -66561;
pub const kExtAudioFileError_InvalidPropertySize: OSStatus = -66562;
pub const kExtAudioFileError_NonPCMClientFormat: OSStatus = -66563;
pub const kExtAudioFileError_InvalidChannelMap: OSStatus = -66564;
pub const kExtAudioFileError_InvalidOperationOrder: OSStatus = -66565;
pub const kExtAudioFileError_InvalidDataFormat: OSStatus = -66566;
pub const kExtAudioFileError_MaxPacketSizeUnknown: OSStatus = -66567;
pub const kExtAudioFileError_InvalidSeek: OSStatus = -66568;
pub const kExtAudioFileError_AsyncWriteTooLarge: OSStatus = -66569;
pub const kExtAudioFileError_AsyncWriteBufferOverflow: OSStatus = -66570;
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn ExtAudioFileOpenURL(
in_url: &CFURL,
out_ext_audio_file: NonNull<ExtAudioFileRef>,
) -> OSStatus;
}
#[cfg(feature = "AudioFile")]
#[inline]
pub unsafe extern "C-unwind" fn ExtAudioFileWrapAudioFileID(
in_file_id: AudioFileID,
in_for_writing: bool,
out_ext_audio_file: NonNull<ExtAudioFileRef>,
) -> OSStatus {
extern "C-unwind" {
fn ExtAudioFileWrapAudioFileID(
in_file_id: AudioFileID,
in_for_writing: Boolean,
out_ext_audio_file: NonNull<ExtAudioFileRef>,
) -> OSStatus;
}
unsafe { ExtAudioFileWrapAudioFileID(in_file_id, in_for_writing as _, out_ext_audio_file) }
}
extern "C-unwind" {
#[cfg(all(
feature = "AudioFile",
feature = "objc2-core-audio-types",
feature = "objc2-core-foundation"
))]
pub fn ExtAudioFileCreateWithURL(
in_url: &CFURL,
in_file_type: AudioFileTypeID,
in_stream_desc: NonNull<AudioStreamBasicDescription>,
in_channel_layout: *const AudioChannelLayout,
in_flags: u32,
out_ext_audio_file: NonNull<ExtAudioFileRef>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileDispose(in_ext_audio_file: ExtAudioFileRef) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-audio-types")]
pub fn ExtAudioFileRead(
in_ext_audio_file: ExtAudioFileRef,
io_number_frames: NonNull<u32>,
io_data: NonNull<AudioBufferList>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-audio-types")]
pub fn ExtAudioFileWrite(
in_ext_audio_file: ExtAudioFileRef,
in_number_frames: u32,
io_data: NonNull<AudioBufferList>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-audio-types")]
pub fn ExtAudioFileWriteAsync(
in_ext_audio_file: ExtAudioFileRef,
in_number_frames: u32,
io_data: *const AudioBufferList,
) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileSeek(in_ext_audio_file: ExtAudioFileRef, in_frame_offset: i64) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileTell(
in_ext_audio_file: ExtAudioFileRef,
out_frame_offset: NonNull<i64>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileGetPropertyInfo(
in_ext_audio_file: ExtAudioFileRef,
in_property_id: ExtAudioFilePropertyID,
out_size: *mut u32,
out_writable: *mut Boolean,
) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileGetProperty(
in_ext_audio_file: ExtAudioFileRef,
in_property_id: ExtAudioFilePropertyID,
io_property_data_size: NonNull<u32>,
out_property_data: NonNull<c_void>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn ExtAudioFileSetProperty(
in_ext_audio_file: ExtAudioFileRef,
in_property_id: ExtAudioFilePropertyID,
in_property_data_size: u32,
in_property_data: NonNull<c_void>,
) -> OSStatus;
}