Commit Graph

1445 Commits

Author SHA1 Message Date
David Reid df94bce3e4 Update examples. 2020-02-03 20:20:43 +10:00
David Reid 647f3764ea Exclude some unnecessary functions when possible. 2020-02-03 20:03:11 +10:00
David Reid ddb901e377 Silence some unused function warnings. 2020-02-03 19:57:01 +10:00
David Reid a8fdb966f1 Enable some debug output for ALSA. 2020-02-02 21:11:50 +10:00
David Reid 3387e88836 API CHANGE: Add support for custom memory allocators.
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().
2020-02-02 20:30:57 +10:00
David Reid 71fe5ec59c Set up some infrastructure for SIMD optimized format conversion. 2020-02-02 16:58:24 +10:00
David Reid 9529bfa4a5 Remove some unused code. 2020-02-02 15:38:38 +10:00
David Reid b23bd7e2e9 Static-ify internal APIs. 2020-02-02 15:37:24 +10:00
David Reid a57a2a324f Static-ify more APIs. 2020-02-02 14:41:51 +10:00
David Reid 23b6b3074e Remove an unused function. 2020-02-02 14:28:15 +10:00
David Reid a7837316ac static-ify some APIs. 2020-02-02 14:27:44 +10:00
David Reid 862f66c1fb Update duplex test. 2020-02-02 14:13:42 +10:00
David Reid c67ef38bcc Replace ma_assert with MA_ASSERT. 2020-02-02 14:13:25 +10:00
David Reid e0676d0099 Replace ma_copy_memory with MA_COPY_MEMORY. 2020-02-02 14:11:56 +10:00
David Reid 312298d3bf Replace ma_zero_object with MA_ZERO_OBJECT. 2020-02-02 14:11:18 +10:00
David Reid 4ae1826353 Replace ma_zero_memory with MA_ZERO_MEMORY. 2020-02-02 14:09:18 +10:00
David Reid c3dd0bd870 Wire up the resampling configs for decoders. 2020-02-02 14:02:31 +10:00
David Reid 9c5461d38a Remove compile-time support checks in ma_device_id.
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.
2020-02-02 13:55:58 +10:00
David Reid 84d5040da9 API CHANGE: Remove the f32 sine wave APIs.
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.
2020-02-02 13:48:48 +10:00
David Reid 02a5cc0b8b Rearrange some code. 2020-02-02 13:46:37 +10:00
David Reid 6d63587a24 Rename ma_convert_pcm_frames() to ma_convert_pcm_frames_format().
This make it a bit more explicit that it is only converting sample
formats rather than the entire suite of format/channels/rate.
2020-02-02 13:43:01 +10:00
David Reid b458faeea5 API CHANGE: Remove ma_format_converter.
Use the following APIs as alternatives:

  * ma_pcm_*_to_*()
  * ma_pcm_convert()
  * ma_convert_pcm_frames()
2020-02-02 13:41:30 +10:00
David Reid dbaa24797a API CHANGE: Remove ma_channel_router.
This has been replaced with ma_channel_converter.
2020-02-02 13:35:48 +10:00
David Reid d594b07e6d API CHANGE: Remove ma_src.
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.
2020-02-02 13:29:03 +10:00
David Reid d92681c4bb Update project files. 2020-02-02 13:24:52 +10:00
David Reid 31f45081d0 Update emscripten tests build script. 2020-02-02 13:19:39 +10:00
David Reid 205e1b8725 API CHANGE: Remove ma_pcm_converter.
This has been replaced with ma_data_converter.
2020-02-02 13:19:10 +10:00
David Reid 64707cf432 API CHANGE: Refactor ma_convert_frames() and ma_convert_frames_ex().
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().
2020-02-02 13:16:14 +10:00
David Reid 6cdd4c81fb Integrate the new data converter into capture devices. 2020-02-02 11:54:22 +10:00
David Reid 9b34e686d5 Integrate the new data converter into playback devices. 2020-02-01 20:58:12 +10:00
David Reid b7efd842e1 Explicitly disable dynamic sample rate conversion for decoders. 2020-02-01 11:29:53 +10:00
David Reid 5974dd6375 Remove old research code.
This code has now been integrated into miniaudio.h.
2020-02-01 11:23:43 +10:00
David Reid bbe7ff9e2b Integrate the new data converter into the decoding API. 2020-02-01 11:22:03 +10:00
David Reid e90a2a8216 Change parameter order of biquad coefficients.
This is more intuitive because it puts the numerator coefficients
before the denominator coefficients.
2020-02-01 07:52:32 +10:00
David Reid 74844074f8 Add code for the new data conversion pipeline.
With this commit, nothing is wired up with the new code. This will be
coming in the next commits.
2020-02-01 07:40:45 +10:00
David Reid 4b163e7c3e Make a macro safer. 2020-02-01 07:03:18 +10:00
David Reid 826839eb33 HTTP to HTTPS. 2020-01-31 21:38:39 +10:00
David Reid 323d7a69a1 Hide a biquad implementation detail. 2020-01-31 21:33:35 +10:00
David Reid 48086c7081 Update dr_flac. 2020-01-31 18:40:09 +10:00
David Reid ab518977ec Remove unnecessary casts. 2020-01-30 21:25:50 +10:00
David Reid 96f747d3f3 Don't allow format and channels to change for biquad and LPF filters.
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.
2020-01-30 21:23:21 +10:00
David Reid cdb7bed14e Fix a null pointer dereference. 2020-01-30 19:14:10 +10:00
David Reid d0b82d3c3c Try fixing a potential thread safety issue. 2020-01-30 19:08:56 +10:00
David Reid 9dbcc39c6e Update biquad documentation. 2020-01-29 19:01:04 +10:00
David Reid c8b6fdaf2c Use fixed point arithmetic with s16 biquads. 2020-01-29 18:50:50 +10:00
David Reid 02df9b2e9a Update dr_wav, dr_flac and dr_mp3. 2020-01-29 18:00:12 +10:00
David Reid 68b960215f Update old comments. 2020-01-28 22:03:47 +10:00
David Reid b9c2509d78 Fix an overflow bug in the s16 biquad pipeline. 2020-01-28 21:54:15 +10:00
David Reid 040dcf8d2c Add documentation for low-pass filters. 2020-01-28 21:49:33 +10:00
David Reid b97c6fd35b Remove the old direct form 1 biquad code. 2020-01-28 21:19:14 +10:00