BASS_Encode_GetCARef
Retrieves a CoreAudio codec encoder's ExtAudioFileRef object.
void *BASS_Encode_GetCARef(
HENCODE handle
);
Parameters
Return value
If successful, then the encoder's ExtAudioFileRef object is returned, otherwise NULL is returned. Use BASS_ErrorGetCode to get the error code.
Error codes
BASS_ERROR_HANDLE | handle is not valid.
|
BASS_ERROR_NOTAVAIL | The encoder is not using a CoreAudio codec.
|
Remarks
This function allows those that are familiar with the Extended Audio File Services interface to configure a CoreAudio codec. Configuration changes need to be made before any data is encoded, so the encoder should be created in a paused state (BASS_ENCODE_PAUSE) to ensure that.
Platform-specific
This function is only available on macOS and iOS.
Example
Tell the codec the expected duration.
#include <AudioToolbox/ExtendedAudioFile.h>
...
encoder=BASS_Encode_StartCAFile(channel, 'mp4f', 'aac ', 0, 128000, "output.mp4"); // start the encoder
ExtAudioFileRef eaf=BASS_Encode_GetCARef(encoder); // get the encoder's ExtAudioFileRef
AudioFileID afid;
UInt32 s=sizeof(afid);
if (!ExtAudioFileGetProperty(eaf, kExtAudioFileProperty_AudioFile, &s, &afid)) { // get associated AudioFileID
Float64 duration=expected_duration_in_seconds;
AudioFileSetProperty(afid, kAudioFilePropertyReserveDuration, sizeof(duration), &duration); // set expected duration
}
BASS_Encode_SetPaused(encoder, FALSE); // start encoding
See also
BASS_Encode_StartCA, BASS_Encode_StartCAFile