BASS_Encode_OGG_StartFile
Sets up an Ogg Vorbis encoder on a channel, writing the output to a file.
HENCODE BASS_Encode_OGG_StartFile(
DWORD handle,
char *options,
DWORD flags,
char *filename
);
Parameters
handle | The channel handle... a HSTREAM, HMUSIC, or HRECORD.
|
options | Encoder options... NULL = use defaults. The following OGGENC style options are supported: -b / --bitrate, -m / --min-bitrate, -M / --max-bitrate, -q / --quality, -s / --serial, -t / --title, -a / --artist, -G / --genre, -d / --date, -l / --album, -N / --tracknum, -c / --comment. Anything else that is included will be ignored. See the OGGENC documentation for details on the aforementioned options and defaults.
|
flags | A combination of these flags.
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, but if data is queud more quickly than the encoder can process it, that could result in lost data.
| BASS_ENCODE_LIMIT | Limit the encoding rate to real-time speed, by introducing a delay when the rate is too high. With BASS 2.4.6 or above, this flag is ignored when the encoder is fed in a playback buffer update cycle (including BASS_Update and BASS_ChannelUpdate calls), to avoid possibly causing playback buffer underruns. Except for in those instances, this flag is applied automatically when the encoder is feeding a Shoutcast or Icecast server.
| BASS_ENCODE_CAST_NOLIMIT | Don't limit the encoding rate to real-time speed when feeding a Shoutcast or Icecast server. This flag overrides the BASS_ENCODE_LIMIT flag.
| BASS_ENCODE_PAUSE | Start the encoder in a paused state.
| BASS_ENCODE_AUTOFREE | Automatically free the encoder when the source channel is freed. If queuing is enabled, any remaining queued data will be sent to the encoder before it is freed.
| BASS_UNICODE | options and filename are in UTF-16 form. Otherwise options should be UTF-8 on all platforms, and filename should be ANSI on Windows and UTF-8 on other platforms.
|
|
filename | Output filename... NULL = no output file.
|
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_FORMAT | The channel's sample format is not supported by the encoder.
|
BASS_ERROR_CREATE | The file could not be created.
|
BASS_ERROR_MEM | There is insufficient memory.
|
BASS_ERROR_NOTAVAIL | This function is not available on platforms/architectures without an FPU.
|
BASS_ERROR_UNKNOWN | Some other mystery problem!
|
Remarks
BASS_Encode_StartUser is used internally to apply the encoder to the source channel, so the remarks in its documentation also apply to this function.
Tags/comments should be in UTF-8 form. This function will take care of that when the BASS_UNICODE flag is used, but otherwise you will need to make sure that any tags included in options are UTF-8 (not ISO-8859-1/etc).
Platform-specific
Ogg Vorbis encoding involves extensive floating-point operations, so it is not supported on platforms/architectures that do not have an FPU, eg. older ARM platforms/architectures.
See also
BASS_Encode_OGG_Start
BASS_Encode_IsActive, BASS_Encode_SetNotify, BASS_Encode_SetPaused, BASS_Encode_Stop, BASS_Encode_Write, BASS_CONFIG_ENCODE_PRIORITY