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().
* ma_resampler_get_required_input_frame_count()
* ma_resampler_get_expected_output_frame_count()
These have not yet been implemented for the Speex backend.
This commit also adds an APIs for setting changing the rate:
* ma_resampler_set_rate()
* ma_resampler_set_rate_ratio()
Automatic stream routing should only be used when the ma_device object
is initialized with a device ID of NULL. When it's non-NULL (i.e. an
explicit device) it should not perform automatic stream routing. It
looks like the WASAPI backend is not respecting this requirements and
is enabling automatic stream routing in all cases.
Public issue #127