mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
82 lines
2.7 KiB
Plaintext
82 lines
2.7 KiB
Plaintext
The libtwolame API
|
|
==================
|
|
|
|
This is the interface for encoding PCM audio to MPEG Audio Layer 2.
|
|
|
|
It is 'very' similar to the libmp3lame API.
|
|
|
|
See simplefrontend/simplefrontend.c for a very simple application
|
|
using the API.
|
|
|
|
|
|
Steps to encode PCM to MP2
|
|
--------------------------
|
|
|
|
1. Grab a set of default options by calling:
|
|
|
|
twolame_options *encodeOptions;
|
|
encodeOptions = twolame_init();
|
|
|
|
|
|
2. Adjust those options to suit your requirements.
|
|
See twolame.h for a full list of options. eg.
|
|
|
|
twolame_set_out_samplerate(encodeOptions, 32000);
|
|
twolame_set_bitrate(encodeOptions, 160);
|
|
|
|
|
|
3. Initialise twolame library with these options by calling:
|
|
|
|
twolame_init_params(encodeOptions);
|
|
|
|
NOTE: The return value should be checked to see if the options were valid.
|
|
Currently only ever returns 0
|
|
|
|
|
|
4. Encode PCM audio to MP2 by calling:
|
|
|
|
int twolame_encode_buffer(
|
|
twolame_options *glopts, // the set of options you're using
|
|
const short int leftpcm[], // the left and right audio channels
|
|
const short int rightpcm[],
|
|
int num_samples, // the number of samples in each channel
|
|
unsigned char *mp2buffer, // a pointer to a buffer for the MP2 audio data
|
|
// NB User must allocate space!
|
|
int mp2buffer_size); // The size of the mp2buffer that the user allocated
|
|
int *mp2fill_size);
|
|
|
|
This function returns the number of bytes written into mp2buffer by the library MPEG.
|
|
One frame of MPEG audio will be returned for every 1152 samples of PCM audio.
|
|
Multiple calls can be made to this function.
|
|
It is the users responsibility to:
|
|
|
|
- allocate the mp2buffer
|
|
- read the pcmaudio from somewhere with new samples always staring from
|
|
the beginning of the buffer
|
|
- write the mp2buffer contents to somewhere (it is overwritten with each call)
|
|
|
|
|
|
5. Flush the encoder by calling:
|
|
|
|
int twolame_encode_flush(
|
|
twolame_options *glopts,
|
|
unsigned char *mp2buffer,
|
|
int mp2buffer_size);
|
|
|
|
When encoding is finished, unless there was exactly a multiple of 1152 samples/channel
|
|
sent to the encoder, there will be some remaining audio that is not encoded. This function
|
|
encodes this last bit of audio by padding out with zeros until there is 1152 samples per channel
|
|
in the PCM audio buffers and then encoding this.
|
|
|
|
This function returns the number of bytes written into mp2buffer by the library MPEG.
|
|
|
|
|
|
6. The user must "de-initialise" the encoder at the end by calling:
|
|
|
|
void twolame_close(twolame_options **glopts);
|
|
|
|
This function must be called to free all the memory and structures
|
|
associated with this set of encoding parameters.
|
|
POST: glopts = NULL
|
|
|