BASS_Encode_StartCAFile
Sets up an encoder on a channel, using a CoreAudio codec and sending the output to a file.
HENCODE BASS_Encode_StartCAFile(
DWORD handle,
DWORD ftype,
DWORD atype,
DWORD flags,
DWORD bitrate,
char *filename
);
Parameters
| handle | The channel handle... a HSTREAM, HMUSIC, or HRECORD.
|
| ftype | File format identifier.
|
| atype | Audio data format identifier.
|
| flags | A combination of these flags.
BASS_ENCODE_FP_8BIT, BASS_ENCODE_FP_16BIT, BASS_ENCODE_FP_24BIT, BASS_ENCODE_FP_32BIT | Convert floating-point sample data to 8/16/24/32 bit integer before encoding. These flags are ignored if the channel is not floating-point and the BASS_CONFIG_FLOATDSP option is not enabled.
| | BASS_ENCODE_FP_AUTO | Convert floating-point sample data back to the channel's format (8/16 bit integer) if the data is only floating-point due to the BASS_CONFIG_FLOATDSP option being enabled.
| | BASS_ENCODE_DITHER | Apply dither (TPDF) when converting floating-point sample data to integer
| | BASS_ENCODE_MONO | Convert to mono before encoding.
| | BASS_ENCODE_QUEUE | Queue data to feed the encoder asynchronously. This prevents the data source (DSP system or BASS_Encode_Write call) getting blocked by the encoder, and can improve performance through multithreading, but if data is queued more quickly than the encoder can process it then that could result in lost data.
| | BASS_ENCODE_QUEUE_WAIT | This is the same as BASS_ENCODE_QUEUE except that it will wait for space in the queue rather than drop data (so the data source may get blocked).
| | BASS_ENCODE_PAUSE | Start the encoder in a paused state.
| | BASS_ENCODE_AUTOFREE | Automatically free the encoder when the source channel is freed. If it has queued data, the encoder will be freed asynchronously once that has been processed.
| | BASS_UNICODE | filename is in UTF-16 form. Otherwise it is UTF-8.
|
|
| bitrate | The bitrate in bits per second... 0 = the codec's default bitrate.
|
| filename | The output filename.
|
Return value
The encoder handle is returned if the encoder is successfully started, else 0 is returned. Use BASS_ErrorGetCode to get the error code.
Error codes
| BASS_ERROR_HANDLE | handle is not valid.
|
| BASS_ERROR_FILEFORM | ftype is not valid.
|
| BASS_ERROR_CODEC | atype is not valid or supported with ftype.
|
| BASS_ERROR_NOTAVAIL | bitrate is not supported by the codec.
|
| BASS_ERROR_FORMAT | The channel's sample format is not supported by the codec.
|
| BASS_ERROR_CREATE | The file could not be created.
|
| BASS_ERROR_MEM | There is insufficient memory.
|
| BASS_ERROR_UNKNOWN | Some other mystery problem!
|
Remarks
This function is identical to BASS_Encode_StartCA, except that it writes the encoded data to a file instead of a callback function.
Platform-specific
This function is only available on macOS and iOS.
Example
Start encoding a channel to an ALAC file (output.m4a).
BASS_Encode_StartCAFile(channel, 'm4af', 'alac', 0, 0, "output.m4a");
BASS_ChannelPlay(channel, 0); // start the channel playing & encoding
Start encoding a channel to a 128 kb/s AAC MP4 file (output.mp4).
BASS_Encode_StartCAFile(channel, 'mp4f', 'aac ', 0, 128000, "output.mp4");
BASS_ChannelPlay(channel, 0); // start the channel playing & encoding
See also
BASS_Encode_GetCARef, BASS_Encode_IsActive, BASS_Encode_SetPaused, BASS_Encode_Start, BASS_Encode_StartCA, BASS_Encode_Stop, BASS_Encode_Write, BASS_CONFIG_ENCODE_PRIORITY