PortAudio - Release Notes |
Link to PortAudio Home Page
All source code and documentation now under CVS.Ran most of the code through AStyle to cleanup ragged indentation caused by using different editors. Used this command:
astyle --style=ansi -c -o --convert-tabs --indent-preprocessor *.c
Added "pa_common/pa_convert.c" for Mac OS X. Start of new conversion utilities.ASIO
Mac OS X
- New Pa_ASIO_Adaptor_Init function to init Callback adpatation variables,
- Cleanup of Pa_ASIO_Callback_Input
- Break apart device loading to debug random failure in Pa_ASIO_QueryDeviceInfo
- Deallocate all resources in PaHost_Term for cases where Pa_CloseStream is not called properly
- New Pa_ASIO_loadDriver that calls CoInitialize on each thread on Windows. Allows use by multiple threads.
- Correct error code management in PaHost_Term, removed various compiler warning
- Add Mac includes for <Devices.h> and <Timer.h>
- Pa_ASIO_QueryDeviceInfo bug correction, memory allocation checking, better error handling
Windows MME
- Major cleanup and improvements.
- Fixed device queries for numChannels and sampleRates,
- Audio input works if using same CoreAudio device (some HW devices make separate CoreAudio devices).
- Added paInt16, paInt8, format using new "pa_common/pa_convert.c" file.
- Return error if opened in mono mode cuz not supported.
- Check for getenv("PA_MIN_LATEWNCY_MSEC") to set latency externally.
- Use getrusage() instead of gettimeofday() for CPU Load calculation.
Windows DirectSound
- Fixed bug that caused TIMEOUT in Pa_StopStream(). Added check for past_StopSoon() in Pa_TimeSlice(). Thanks Julien Maillard.
- Detect Win XP versus NT, use lower latency.
- Fix DBUG typo;
- removed init of CurrentCount which was not compiling on Borland
- general cleanup, factored streamData alloc and cpu usage initialization
- stopped counting WAVE_MAPPER when there were no audio cards plugged in
Unix OSS
- Detect Win XP and Win 2K properly when determining latency.
- Use high real-time priority if app is running with root priveledges. Lowers latency.
- Added watch dog thread that prevents real-time thread from hogging CPU and hanging the computer.
- Check error return from read() and write().
- Check CPU endianness instead of assuming Little Endian.
Unix OSS
- Set num channels back to two after device query for ALSA. This fixed a bug in V16 that sometimes caused a failure when querying for the sample rates. Thanks Stweart Greenhill.
Macintosh Sound Manager
- Use NewSndCallBackUPP() for CARBON compatibility.
Added Alpha implementations for ASIO, SGI, and BeOS!
CPULoad is now calculated based on the time spent to generate a known number of frames. This is more accurate than a simple percentage of real-time. Implemented in pa_unix_oss, pa_win_wmme and pa_win_ds. Fix dither and shift for recording PaUInt8 format data. Added "patest_maxsines.c" which tests Pa_GetCPULoad().
Windows WMME
- sDevicePtrs now allocated using GlobalAlloc(). This prevents a crash in Pa_Terminate() on Win2000. Thanks Mike Berry for finding this. Thanks Mike Berry.
- Pass process instead of thread to SetPriorityClass(). This fixes a bug that caused the priority to not be increased. Thanks to Alberto di Bene for spotting this.
Windows DirectSound
- Casts for compiling with __MWERKS__ CodeWarrior.
UNIX OSS
- Derived from Linux OSS implementation.
- Numerous patches from Heiko Purnhagen, Stephen Brandon, etc.
- Improved query mechanism which often bailed out unnecessarily.
- Removed sNumDevices and potential related bugs,
- Use getenv("PA_MIN_LATENCY_MSEC") in code to set desired latency. User can set by entering:
export PA_MIN_LATENCY_MSEC=40Macintosh Sound Manager
- Pass unused event to WaitNextEvent instead of NULL to prevent Mac OSX crash. Thanks Dominic Mazzoni.
- Use requested number of input channels.
- New Linux OSS Beta
Windows WMME
- sDevicePtrs now allocated based on sizeof(pointer). Was allocating too much space.
- Check for excessive numbers of channels. Some drivers reported bogus numbers.
- Apply Mike Berry's changes for CodeWarrior on PC including condition including of memory.h, and explicit typecasting on memory allocation.
Macintosh Sound Manager
- ScanInputDevices was setting sDefaultOutputDeviceID instead of sDefaultInputDeviceID.
- Device Scan was crashing for anything other than siBadSoundInDevice, but some Macs may return other errors! Caused failure to init on some G4s under OS9.
- Fix TIMEOUT in record mode.
- Change CARBON_COMPATIBLE to TARGET_API_MAC_CARBON
- Added implementation for Windows MultiMedia Extensions (WMME) by Ross and Phil
- Changed Pa_StopStream() so that it waits for the buffers to drain.
- Added Pa_AbortStream() that stops immediately without waiting.
- Added new test: patest_stop.c to test above two mods.
- Fixed Pa_StreamTime() so that it returns current play position instead of the write position. Added "patest_sync.c" to demo audio/video sync.
- Improved stability of Macintosh implementation. Added timeouts to prevent hangs.
- Added Pa_GetSampleSize( PaSampleFormat format );
- Changes some "int"s to "long"s so that PA works properly on Macintosh which often compiles using 16 bit ints.
- Added Implementation Guide
- Mac now scans for and queries all devices. But it does not yet support selecting any other than the default device.
- Blocking I/O calls renamed to separate them from the PortAudio API.
- Cleaned up indentation problems with tabs versus spaces.
- Now attempts to correct bogus sample rate info returned from DirectSound device queries.