Commit Graph

1396 Commits

Author SHA1 Message Date
David Reid b97c6fd35b Remove the old direct form 1 biquad code. 2020-01-28 21:19:14 +10:00
David Reid 8a44789840 Remove the unnecessary config member from ma_lpf.
This is never actually used internally and saves a bit of memory.
2020-01-28 20:42:59 +10:00
David Reid 42095a3e5a Add documentation for biquads. 2020-01-28 20:41:41 +10:00
David Reid e525d457c9 Change biquad filter to use transposed direct form 2.
This change reduces memory usage by removing half the number of delay
registers.

This commit also sets up some infrastructure for future work on a fixed
point implementation. Both the floating and fixed point implementations
will run on a 32-bit pipeline for now.
2020-01-28 20:14:55 +10:00
David Reid eedb7d3200 Add some documentation for channel conversion. 2020-01-27 20:17:01 +10:00
David Reid d37b23a729 Bug fixes to the new data converter. 2020-01-27 18:30:49 +10:00
David Reid 741edb82de Add some new APIs.
* ma_convert_pcm_frames()
  * ma_sine_wave_read_pcm_frames()
2020-01-27 18:18:24 +10:00
David Reid 5d3ed8687e Bug fixes to the linear resampler.
This changes the the lpfCutoffFrequency config variable from a uint32
to a double. This is required because we simplify the sample rate
fraction which cant result in cases where the cutoff frequency is too
aggressively rounded down due to dividing tiny integers.
2020-01-27 18:12:25 +10:00
David Reid 4f5eb2f8a1 Finish initial work on the new data converter. 2020-01-27 09:08:15 +10:00
David Reid b546607332 Begin work on integration of the new channel converter. 2020-01-26 19:01:43 +10:00
David Reid cbcf6f6cf3 Early work on new channel converter. 2020-01-26 18:37:10 +10:00
David Reid 5aff4af6a7 Update gitignore. 2020-01-26 16:42:56 +10:00
David Reid 68dc797469 Add early work on new data converter. 2020-01-26 16:42:27 +10:00
David Reid d27678a277 Fix bug in ma_linear_resampler_get_required_input_frame_count(). 2020-01-26 11:53:12 +10:00
David Reid 4241b9f6ae Add ma_linear_resampler_set_rate_ratio(). 2020-01-26 11:28:33 +10:00
David Reid ed6ad79e24 Don't use generic seeking with the linear resampler. 2020-01-26 11:24:02 +10:00
David Reid f704b62767 Update resampling documentation. 2020-01-26 11:21:09 +10:00
David Reid a633e0f51f Remove unused functions. 2020-01-26 09:55:10 +10:00
David Reid 01c41ed329 Add support for passing in NULL for input frames for linear resampler.
This is equivalent to passing in zeroes.
2020-01-26 09:19:24 +10:00
David Reid b092720bf3 Integrate the new linear resampler. 2020-01-26 09:05:50 +10:00
David Reid 13a5512879 Work in progress on the linear resampler. 2020-01-26 08:51:53 +10:00
David Reid 834a604df9 Remove some out of date documentation. 2020-01-23 22:06:06 +10:00
David Reid fc9026eadf Fix potential crash when ma_device not aligned to MA_SIMD_ALIGNMENT.
Public issue https://github.com/dr-soft/miniaudio/issues/128
2020-01-23 18:47:17 +10:00
David Reid 811e438d1b Add support for reinitialization of low-pass and biquad filters. 2020-01-20 19:01:42 +10:00
David Reid 5d0f21448e Remove MA_RESAMPLER_MIN_RATIO and MA_RESAMPLER_MAX_RATIO. 2020-01-19 21:29:43 +10:00
David Reid ad9d1e636b Remove old experimental resampler code. 2020-01-19 21:26:02 +10:00
David Reid a9e7d6d8c9 Add some documentation for the new resampler.
This commit also renames ma_resampler_process() to
ma_resampler_process_pcm_frames().
2020-01-19 21:23:57 +10:00
David Reid b770ea91d5 Add generic seeking to the resampler. 2020-01-19 19:18:43 +10:00
David Reid 867e1ee7e4 SRC: Implement ma_speex_resampler_get_expected_output_frame_count(). 2020-01-19 17:47:22 +10:00
David Reid f7ff9ee19e SRC: Fix linear ma_resampler_get_expected_output_frame_count(). 2020-01-19 17:24:20 +10:00
David Reid 959885a303 SRC/Speex: Add support for querying required input frame counts. 2020-01-19 14:23:35 +10:00
David Reid 3e8f261c6f Minor restructuring in preparation for some Speex work. 2020-01-19 11:27:58 +10:00
David Reid 6894d10d78 Warning fixes. 2020-01-19 11:18:22 +10:00
David Reid 31086c5de9 Fix bugs in ma_resampler_get_required_input_frame_count(). 2020-01-19 11:12:35 +10:00
David Reid 5df3c0ce15 SRC: Add APIs for querying required input and expected output 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()
2020-01-19 08:15:47 +10:00
David Reid 8fabcc44d8 Add support for passing in null for the input buffer to the resampler. 2020-01-18 18:44:35 +10:00
David Reid 6817dc84f8 Rearrange some function parameters. 2020-01-18 17:46:51 +10:00
David Reid f22ad84986 Add ma_resampler_uninit(). 2020-01-18 17:37:55 +10:00
David Reid 7b27cda74a Add support for s16 format to biquad and low-pass filters. 2020-01-18 17:23:36 +10:00
David Reid 705e54c69a Add support for s16 format to the linear resampler. 2020-01-18 17:12:30 +10:00
David Reid 1449edf49f Add support for the Speex resampler. 2020-01-18 16:38:22 +10:00
David Reid 7d37789418 Resampling and LPF work. 2020-01-18 14:36:12 +10:00
David Reid df2903a0bc Version 0.9.10 2020-01-15 21:18:53 +10:00
David Reid 11d752ad78 Untested work in progress on the improved resampler. 2020-01-14 21:50:01 +10:00
David Reid 44d2605adb Fix a typo. 2020-01-14 21:18:34 +10:00
David Reid 557ef169d4 WASAPI: Try fixing an automatic stream routing bug.
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
2020-01-14 21:11:54 +10:00
David Reid 3732a2c476 Use MA_NO_DECODING with the simple_playback_emscripten example.
The rationale for this is to test that the MA_NO_DECODING option is
compiling clean.
2020-01-14 20:47:37 +10:00
David Reid f8b635b972 Update backend notes for Emscripten.
Emscripten no longer supports the -std=c* and -ansi compiler flags.
2020-01-14 20:46:31 +10:00
David Reid 310135d756 Update release notes. 2020-01-14 18:43:42 +10:00
David Reid 5085eb8acc Fix compilation errors due to preprocessor if/endif mismatching. 2020-01-14 18:41:25 +10:00