This commit changes the following APIs to add an additional parameter
called pAllocationCallbacks. This is a pointer to a
ma_allocation_callbacks structure which is used to perform the actual
allocation/free.
Allocation callbacks can be set in ma_context_config for contexts and
ma_decoder_config for decoders. If it's left unset it will use
MA_MALLOC(), MA_REALLOC() and MA_FREE().
With this change, the ma_device_id union should now be a consistent
size across all platforms. This is important if cross-platform
programs want to save the device ID and need the size to be consistent.
The following APIs are removed:
* ma_sine_wave_read_f32()
* ma_sine_wave_read_f32_ex()
Use ma_sine_wave_read_pcm_frames() as a replacement. This allows you to
generate sine wave samples in any format, controlled by a parameter.
Resampling is now done through the ma_resampler API.
Note that with this commit the old sinc resampler has been removed
because it never worked properly and is going to replaced with a better
solution in the future. If you were using ma_src_algorithm_sinc you
should consider using ma_src_algorithm_linear with the linear.lpfCount
config variable set to MA_MAX_RESAMPLER_LPF_FILTERS.
For safety, ma_convert_frames() has an additional parameter called
frameCountOut which is the capacity of the output buffer. In addition,
the frameCountIn parameter has been moved next to the pIn parameter.
ma_convert_frames_ex() has been changed to take a pointer to a
ma_data_converter_config object. This provides more flexibility as to
the input and output formats. In addition, the frameCountOut parameter
has been added which has the same meaning as ma_convert_frames().
Previously this would result in a glitch, however in the interest of
avoiding as many sources of glitching as possible, changing the format
and/or channel count of a biquad filter (and by extension, anything
derived from it, such as low-pass filters) will now result in an error.