gavl
|
Audio format converter. More...
Typedefs | |
typedef struct gavl_audio_converter_s | gavl_audio_converter_t |
Opaque audio converter structure. More... | |
Functions | |
GAVL_PUBLIC gavl_audio_converter_t * | gavl_audio_converter_create () |
Creates an audio converter. More... | |
GAVL_PUBLIC void | gavl_audio_converter_destroy (gavl_audio_converter_t *cnv) |
Destroys an audio converter and frees all associated memory. More... | |
GAVL_PUBLIC gavl_audio_options_t * | gavl_audio_converter_get_options (gavl_audio_converter_t *cnv) |
gets options of an audio converter More... | |
GAVL_PUBLIC int | gavl_audio_converter_init (gavl_audio_converter_t *cnv, const gavl_audio_format_t *input_format, const gavl_audio_format_t *output_format) |
Initialize an audio converter. More... | |
GAVL_PUBLIC int | gavl_audio_converter_init_resample (gavl_audio_converter_t *cnv, const gavl_audio_format_t *format) |
Initialize an audio converter just for resampling. More... | |
GAVL_PUBLIC int | gavl_audio_converter_reinit (gavl_audio_converter_t *cnv) |
Reinitialize an audio converter. More... | |
GAVL_PUBLIC void | gavl_audio_convert (gavl_audio_converter_t *cnv, const gavl_audio_frame_t *input_frame, gavl_audio_frame_t *output_frame) |
Convert audio. More... | |
GAVL_PUBLIC int | gavl_audio_converter_set_resample_ratio (gavl_audio_converter_t *cnv, double ratio) |
Set samplerate converstion ratio. More... | |
GAVL_PUBLIC void | gavl_audio_converter_resample (gavl_audio_converter_t *cnv, gavl_audio_frame_t *input_frame, gavl_audio_frame_t *output_frame, double ratio) |
Convert audio. More... | |
Audio format converter.
This is a generic converter, which converts audio frames from one arbitrary format to another. It does:
Quality levels below 3 mainly result if poor but fast resampling methods. Quality levels above 3 will enable high quality resampling methods, dithering and floating point mixing.
Create an audio converter with gavl_audio_converter_create. If you want to configure it, get the options pointer with gavl_audio_converter_get_options and change the options (See Audio conversion options). Call gavl_audio_converter_init to initialize the converter for the input and output formats. Audio frames are then converted with gavl_audio_convert.
When you are done, you can either reinitialize the converter or destroy it with gavl_audio_converter_destroy.
typedef struct gavl_audio_converter_s gavl_audio_converter_t |
Opaque audio converter structure.
You don't want to know what's inside.
GAVL_PUBLIC gavl_audio_converter_t * gavl_audio_converter_create | ( | ) |
Creates an audio converter.
GAVL_PUBLIC void gavl_audio_converter_destroy | ( | gavl_audio_converter_t * | cnv | ) |
Destroys an audio converter and frees all associated memory.
cnv | An audio converter |
GAVL_PUBLIC gavl_audio_options_t * gavl_audio_converter_get_options | ( | gavl_audio_converter_t * | cnv | ) |
gets options of an audio converter
cnv | An audio converter |
After you called this, you can use the gavl_audio_options_set_*() functions to change the options. Options will become valid with the next call to gavl_audio_converter_init or gavl_audio_converter_reinit
GAVL_PUBLIC int gavl_audio_converter_init | ( | gavl_audio_converter_t * | cnv, |
const gavl_audio_format_t * | input_format, | ||
const gavl_audio_format_t * | output_format | ||
) |
Initialize an audio converter.
cnv | An audio converter |
input_format | Input format |
output_format | Output format |
This function can be called multiple times with one instance
GAVL_PUBLIC int gavl_audio_converter_init_resample | ( | gavl_audio_converter_t * | cnv, |
const gavl_audio_format_t * | format | ||
) |
Initialize an audio converter just for resampling.
cnv | An audio converter |
format | Input and output format. (They are the same except for output samplerate ratio will vary) |
This function can be called multiple times with one instance
Since 1.1.0.
GAVL_PUBLIC int gavl_audio_converter_reinit | ( | gavl_audio_converter_t * | cnv | ) |
Reinitialize an audio converter.
cnv | An audio converter |
This function can be called if the input and output formats didn't change but the options did.
GAVL_PUBLIC void gavl_audio_convert | ( | gavl_audio_converter_t * | cnv, |
const gavl_audio_frame_t * | input_frame, | ||
gavl_audio_frame_t * | output_frame | ||
) |
Convert audio.
cnv | An audio converter |
input_frame | Input frame |
output_frame | Output frame |
Be careful when resampling: gavl will assume, that your output frame is big enough. Minimum size is input_frame_size * output_samplerate / input_samplerate + 10
GAVL_PUBLIC int gavl_audio_converter_set_resample_ratio | ( | gavl_audio_converter_t * | cnv, |
double | ratio | ||
) |
Set samplerate converstion ratio.
cnv | An resample only audio converter created with gavl_audio_converter_init_resample |
ratio | desired src_ratio Max ratio = 256, Min ratio = 1/256 as defined by libsamplerate You should set this function before you call gavl_audio_converter_resample for the very first time. If you call this function continually before subsequent calls to gavl_audio_converter_resample, the internal libsamplrate will step sample rate conversion up to the new ratio on your output audio frame in gavl_audio_converter_resample. If you do NOT call this function before gavl_audio_converter_resample libsamplerate will linearly ramp the previous src_ratio to the new ratio for the given output audio frame in gavl_audio_converter_resample.Since 1.1.0. |
GAVL_PUBLIC void gavl_audio_converter_resample | ( | gavl_audio_converter_t * | cnv, |
gavl_audio_frame_t * | input_frame, | ||
gavl_audio_frame_t * | output_frame, | ||
double | ratio | ||
) |
Convert audio.
cnv | An audio converter |
input_frame | Input frame |
output_frame | Output frame |
ratio | src_ratio (output_frame.samplerate = ratio * input_frame.samplerate) |
Be careful when resampling: gavl will assume, that your output frame is big enough. Minimum size for output_frame_size = input_frame_size * ratio (where ratio can be max 256.0 as defined by libsamplerate)
Since 1.1.0.