Significant changes
- Fix a bug where FlexASIO waits until the worst possible time to provide the next output buffer, increasing output latency by one buffer length. See #40.
- Added support for
ASIOOutputReady()
, enabling compatible ASIO Host Applications to achieve a one buffer length reduction in output latency. See #4. - Speed up the beginning of streaming by providing initial buffers to PortAudio (instead of silence). See #40.
- Fix a bug where FlexASIO underestimates output latency by one buffer length. See #40.
- Fix a bug where FlexASIO provides slightly wrong ASIO timestamp information to the Host Application. See #40.
- Change the
directProcess
ASIO flag fromfalse
totrue
in buffer switch callbacks. This can potentially improve performance with some ASIO Host Applications. See #40. - Various performance improvements that provide more time budget for processing events, making audio glitches (discontinuities) from missed deadlines less likely, especially with small buffer sizes.
Minor changes
- Many improvements to the
FlexASIOTest
test program:- Add the
--input-channels
and--output-channels
options. - Preload the input file before streaming, and write the output file after streaming, to avoid performance issues caused by sound file I/O.
- Add a
--log-mode
option to customize the way the log is output. FlexASIOTest.exe
has been refactored into a small wrapper around a DLL containing the testing logic,ASIOTest.dll
.- Fill the first buffer before calling
ASIOStart()
instead of waiting until the first buffer switch. - Optionally call
ASIOOutputReady()
when an output buffer is filled. - Add
--buffer-switch-delay-ms
option for adding an artificial delay to buffer switch callbacks. - Exit cleanly when receiving a CTRL+C signal during streaming.
- Call
ASIOStop()
even when streaming failed. - Do not wait for a buffer switch if
--buffer-switch-count
is zero.
- Add the
- Ship PDB files in the installer (again) to allow troubleshooting tools (Process Explorer, Process Monitor, Windows Performance Analyzer, WinDbg, etc.) to understand FlexASIO stacks.