#[repr(C)]pub struct AVAudioFile { /* private fields */ }AVAudioFile only.Expand description
An audio file opened for reading or writing.
Regardless of the file’s actual format, reading and writing the file is done via
AVAudioPCMBuffer objects, containing samples in an AVAudioCommonFormat,
referred to as the file’s “processing format.” Conversions are performed to and from
the file’s actual format.
Reads and writes are always sequential, but random access is possible by setting the framePosition property.
See also Apple’s documentation
Implementations§
Source§impl AVAudioFile
impl AVAudioFile
Sourcepub unsafe fn initForReading_error(
this: Allocated<Self>,
file_url: &NSURL,
) -> Result<Retained<Self>, Retained<NSError>>
pub unsafe fn initForReading_error( this: Allocated<Self>, file_url: &NSURL, ) -> Result<Retained<Self>, Retained<NSError>>
Open a file for reading.
Parameter fileURL: the file to open
Parameter outError: on exit, if an error occurs, a description of the error
This opens the file for reading using the standard format (deinterleaved floating point).
Sourcepub unsafe fn initForReading_commonFormat_interleaved_error(
this: Allocated<Self>,
file_url: &NSURL,
format: AVAudioCommonFormat,
interleaved: bool,
) -> Result<Retained<Self>, Retained<NSError>>
Available on crate feature AVAudioFormat only.
pub unsafe fn initForReading_commonFormat_interleaved_error( this: Allocated<Self>, file_url: &NSURL, format: AVAudioCommonFormat, interleaved: bool, ) -> Result<Retained<Self>, Retained<NSError>>
AVAudioFormat only.Open a file for reading, using a specified processing format.
Parameter fileURL: the file to open
Parameter format: the processing format to use when reading from the file
Parameter interleaved: whether to use an interleaved processing format
Parameter outError: on exit, if an error occurs, a description of the error
Sourcepub unsafe fn initForWriting_settings_error(
this: Allocated<Self>,
file_url: &NSURL,
settings: &NSDictionary<NSString, AnyObject>,
) -> Result<Retained<Self>, Retained<NSError>>
pub unsafe fn initForWriting_settings_error( this: Allocated<Self>, file_url: &NSURL, settings: &NSDictionary<NSString, AnyObject>, ) -> Result<Retained<Self>, Retained<NSError>>
Open a file for writing.
Parameter fileURL: the path at which to create the file
Parameter settings: the format of the file to create (See AVAudioRecorder.) For linear PCM,
only interleaved formats are supported for the saved file, non interleaved setting will be
ignored and a warning is shown.
Parameter outError: on exit, if an error occurs, a description of the error
The file type to create can be set through the corresponding settings key. If not set, it will be inferred from the file extension. Will overwrite a file at the specified URL if a file exists.
This opens the file for writing using the standard format (deinterleaved floating point).
Sourcepub unsafe fn initForWriting_settings_commonFormat_interleaved_error(
this: Allocated<Self>,
file_url: &NSURL,
settings: &NSDictionary<NSString, AnyObject>,
format: AVAudioCommonFormat,
interleaved: bool,
) -> Result<Retained<Self>, Retained<NSError>>
Available on crate feature AVAudioFormat only.
pub unsafe fn initForWriting_settings_commonFormat_interleaved_error( this: Allocated<Self>, file_url: &NSURL, settings: &NSDictionary<NSString, AnyObject>, format: AVAudioCommonFormat, interleaved: bool, ) -> Result<Retained<Self>, Retained<NSError>>
AVAudioFormat only.Open a file for writing.
Parameter fileURL: the path at which to create the file
Parameter settings: the format of the file to create (See AVAudioRecorder.) For linear PCM,
only interleaved formats are supported for the saved file, non interleaved setting will be
ignored and a warning is shown.
Parameter format: the processing format to use when writing to the file.
Parameter interleaved: whether to use an interleaved processing format
Parameter outError: on exit, if an error occurs, a description of the error
The file type to create can be set through the corresponding settings key. If not set, it will be inferred from the file extension. Will overwrite a file at the specified URL if a file exists.
Sourcepub unsafe fn close(&self)
pub unsafe fn close(&self)
Close the audio file.
The underlying file will be closed if open.
- It is normally unnecessary to close a file opened for reading (it will be automatically closed when the object is released)
- It is only necessary to close a file opened for writing in order to achieve specific control over when the file’s header is updated.
Note: Once closed, further file read or write operations will fail with kAudio_FileNotFoundError.
Sourcepub unsafe fn readIntoBuffer_error(
&self,
buffer: &AVAudioPCMBuffer,
) -> Result<(), Retained<NSError>>
Available on crate feature AVAudioBuffer only.
pub unsafe fn readIntoBuffer_error( &self, buffer: &AVAudioPCMBuffer, ) -> Result<(), Retained<NSError>>
AVAudioBuffer only.Read an entire buffer.
Parameter buffer: The buffer into which to read from the file. Its format must match the file’s
processing format.
Parameter outError: on exit, if an error occurs, a description of the error
Returns: YES for success.
Reading sequentially from framePosition, attempts to fill the buffer to its capacity. On return, the buffer’s length indicates the number of sample frames successfully read.
Sourcepub unsafe fn readIntoBuffer_frameCount_error(
&self,
buffer: &AVAudioPCMBuffer,
frames: AVAudioFrameCount,
) -> Result<(), Retained<NSError>>
Available on crate features AVAudioBuffer and AVAudioTypes only.
pub unsafe fn readIntoBuffer_frameCount_error( &self, buffer: &AVAudioPCMBuffer, frames: AVAudioFrameCount, ) -> Result<(), Retained<NSError>>
AVAudioBuffer and AVAudioTypes only.Read a portion of a buffer.
Parameter frames: The number of frames to read.
Parameter buffer: The buffer into which to read from the file. Its format must match the file’s
processing format.
Parameter outError: on exit, if an error occurs, a description of the error
Returns: YES for success.
Like readIntoBuffer:error:, but can be used to read fewer frames than buffer.frameCapacity.
Sourcepub unsafe fn writeFromBuffer_error(
&self,
buffer: &AVAudioPCMBuffer,
) -> Result<(), Retained<NSError>>
Available on crate feature AVAudioBuffer only.
pub unsafe fn writeFromBuffer_error( &self, buffer: &AVAudioPCMBuffer, ) -> Result<(), Retained<NSError>>
AVAudioBuffer only.Write a buffer.
Parameter buffer: The buffer from which to write to the file. Its format must match the file’s
processing format.
Parameter outError: on exit, if an error occurs, a description of the error
Returns: YES for success.
Writes sequentially. The buffer’s frameLength signifies how much of the buffer is to be written.
Sourcepub unsafe fn fileFormat(&self) -> Retained<AVAudioFormat>
Available on crate feature AVAudioFormat only.
pub unsafe fn fileFormat(&self) -> Retained<AVAudioFormat>
AVAudioFormat only.The on-disk format of the file.
Sourcepub unsafe fn processingFormat(&self) -> Retained<AVAudioFormat>
Available on crate feature AVAudioFormat only.
pub unsafe fn processingFormat(&self) -> Retained<AVAudioFormat>
AVAudioFormat only.The processing format of the file.
Sourcepub unsafe fn length(&self) -> AVAudioFramePosition
Available on crate feature AVAudioTypes only.
pub unsafe fn length(&self) -> AVAudioFramePosition
AVAudioTypes only.The number of sample frames in the file.
Note: this can be expensive to compute for the first time.
Sourcepub unsafe fn framePosition(&self) -> AVAudioFramePosition
Available on crate feature AVAudioTypes only.
pub unsafe fn framePosition(&self) -> AVAudioFramePosition
AVAudioTypes only.The position in the file at which the next read or write will occur.
Set framePosition to perform a seek before a read or write. A read or write operation advances the frame position by the number of frames read or written.
Sourcepub unsafe fn setFramePosition(&self, frame_position: AVAudioFramePosition)
Available on crate feature AVAudioTypes only.
pub unsafe fn setFramePosition(&self, frame_position: AVAudioFramePosition)
AVAudioTypes only.Setter for framePosition.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Example
Check that an instance of NSObject has the precise class NSObject.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load instead.Use Ivar::load instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T.
See Ivar::load_ptr for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T.
This is the reference-variant. Use Retained::downcast if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString to a NSMutableString,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass: for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject.
§Panics
This works internally by calling isKindOfClass:. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject and
NSProxy implement this method.
§Examples
Cast an NSString back and forth from NSObject.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();Try (and fail) to cast an NSObject to an NSString.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}Trait Implementations§
Source§impl AsRef<AVAudioFile> for AVAudioFile
impl AsRef<AVAudioFile> for AVAudioFile
Source§impl AsRef<AnyObject> for AVAudioFile
impl AsRef<AnyObject> for AVAudioFile
Source§impl AsRef<NSObject> for AVAudioFile
impl AsRef<NSObject> for AVAudioFile
Source§impl Borrow<AnyObject> for AVAudioFile
impl Borrow<AnyObject> for AVAudioFile
Source§impl Borrow<NSObject> for AVAudioFile
impl Borrow<NSObject> for AVAudioFile
Source§impl ClassType for AVAudioFile
impl ClassType for AVAudioFile
Source§const NAME: &'static str = "AVAudioFile"
const NAME: &'static str = "AVAudioFile"
Source§type ThreadKind = <<AVAudioFile as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<AVAudioFile as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for AVAudioFile
impl Debug for AVAudioFile
Source§impl Deref for AVAudioFile
impl Deref for AVAudioFile
Source§impl Hash for AVAudioFile
impl Hash for AVAudioFile
Source§impl Message for AVAudioFile
impl Message for AVAudioFile
Source§impl NSObjectProtocol for AVAudioFile
impl NSObjectProtocol for AVAudioFile
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass directly, or cast your objects with AnyObject::downcast_ref