Libswresample (lswr) is a library that handles audio resampling, sample format conversion and mixing. More...
Libswresample (lswr) is a library that handles audio resampling, sample format conversion and mixing.
Interaction with lswr is done through SwrContext, which is allocated with swr_alloc() or swr_alloc_set_opts(). It is opaque, so all parameters must be set with the AVOptions API.
For example the following code will setup conversion from planar float sample format to interleaved signed 16-bit integer, downsampling from 48kHz to 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing matrix):
Once all values have been set, it must be initialized with swr_init(). If you need to change the conversion parameters, you can change the parameters as described above, or by using swr_alloc_set_opts(), then call swr_init() again.
The conversion itself is done by repeatedly calling swr_convert(). Note that the samples may get buffered in swr if you provide insufficient output space or if sample rate conversion is done, which requires "future" samples. Samples that do not require future input can be retrieved at any time by using swr_convert() (in_count can be set to 0). At the end of conversion the resampling buffer can be flushed by calling swr_convert() with NULL in and 0 in_count.
The delay between input and output, can at any time be found by using swr_get_delay().
The following code demonstrates the conversion loop assuming the parameters from above and caller-defined functions get_input() and handle_output():
When the conversion is finished, the conversion context and everything associated with it must be freed with swr_free(). There will be no memory leak if the data is not completely flushed before swr_free().
Maximum number of channels.
Definition at line 102 of file swresample.h.
Referenced by audiogen(), auto_matrix(), config_props(), conv_fltp_to_s16_nch_neon(), filter_frame(), main(), query_formats(), sane_layout(), setup_array(), swr_convert(), swr_init(), swr_inject_silence(), and swri_rematrix_init().
Force resampling even if equal sample rate.
Definition at line 105 of file swresample.h.
Referenced by swr_init(), and swr_set_compensation().
not part of API/ABI
not part of API/ABI
Definition at line 109 of file swresample.h.
Resampling Engines.
SW Resampler.
SoX Resampler.
not part of API/ABI
Definition at line 127 of file swresample.h.
Resampling Filter Types.
Cubic.
Blackman Nuttall Windowed Sinc.
Kaiser Windowed Sinc.
Definition at line 134 of file swresample.h.
Get the AVClass for swrContext.
It can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options.
Definition at line 173 of file swresample.c.
Referenced by opt_default(), resample_child_class_next(), and show_help_default().
Allocate SwrContext.
If you use this function you will need to set the parameters (manually or with swr_alloc_set_opts()) before calling swr_init().
Definition at line 178 of file swresample.c.
Referenced by init_dict(), main(), open_audio(), opt_default(), and swr_alloc_set_opts().
Initialize context after user parameters have been set.
Definition at line 243 of file swresample.c.
Referenced by audio_decode_frame(), config_output(), config_props(), main(), open_audio(), and swr_set_compensation().
Allocate SwrContext if needed and set/reset common parameters.
This function does not require s to be allocated with swr_alloc(). On the other hand, swr_alloc() can use swr_alloc_set_opts() to set the parameters on the allocated context.
Definition at line 187 of file swresample.c.
Referenced by audio_decode_frame(), config_output(), config_props(), and main().
Free the given SwrContext and set the pointer to NULL.
Definition at line 221 of file swresample.c.
Referenced by audio_decode_frame(), main(), opt_default(), stream_component_close(), and uninit().
Convert audio.
in and in_count can be set to 0 to flush the last few samples out at the end.
If more input is provided than output space then the input will be buffered. You can avoid this buffering by providing more output space than input. Convertion will run directly without copying whenever possible.
Convert the next timestamp from input to output timestamps are in 1/(in_sample_rate * out_sample_rate) units.
Definition at line 902 of file swresample.c.
Referenced by filter_frame(), and request_frame().
Activate resampling compensation.
Definition at line 882 of file swresample.c.
Referenced by audio_decode_frame(), and swr_next_pts().
Set a customized input channel mapping.
Definition at line 166 of file swresample.c.
Referenced by config_props().
Set a customized remix matrix.
Definition at line 60 of file rematrix.c.
Referenced by config_props().
Drops the specified number of output samples.
Definition at line 836 of file swresample.c.
Referenced by swr_next_pts().
Injects the specified number of silence samples.
Definition at line 846 of file swresample.c.
Referenced by swr_inject_silence(), and swr_next_pts().
Gets the delay the next input sample will experience relative to the next output sample.
Swresample can buffer data if more input has been provided than available output space, also converting between sample rates needs a delay. This function returns the sum of all such delays. The exact delay is not necessarily an integer value in either input or output sample rate. Especially when downsampling by a large value, the output sample rate may be a poor choice to represent the delay, similarly for upsampling and the input sample rate.
Definition at line 874 of file swresample.c.
Referenced by main(), swr_next_pts(), and write_audio_frame().
Return the LIBSWRESAMPLE_VERSION_INT constant.
Definition at line 149 of file swresample.c.
Return the swr build-time configuration.
Definition at line 155 of file swresample.c.
Return the swr license.
Definition at line 160 of file swresample.c.