This page answers the question “what has changed in version pa_stable_v19_20110326.tgz compared to pa_stable_v19_20071207”
There’s a full log from SVN below. Some highlights have been cherry picked into the following lists. If you think something important has been missed, please let us know and we’ll update the list.
You can get a list of the tickets that were closed during this period, here:
http://www.portaudio.com/trac/query?status=closed&changetime=12%2F6%2F07..03%2F26%2F11&col=id&col=summary&col=status&col=type&col=priority&col=milestone&col=component&order=priority
These items are just cherry picked from the SVN log below as looking interesting. They aren’t an exhaustive list. If you want more details you can search for the description text from these bullet points to find the log entry further down the page, then click on the revision number to get the diff for that change.
Full changelog from svn :
r1647 | philburk | 2011-03-26 04:34:07 +1100
Add README for configure.
r1646 | philburk | 2011-03-26 03:59:27 +1100
Remove include for pa_unix_oss.h to fix “make install” on Linux.
r1645 | philburk | 2011-03-17 09:33:34 +1100
Ran autoreconf to update config.guess and other configure files.
r1644 | philburk | 2011-03-13 11:49:28 +1100
Added patest_mono and patest_two_rates to Makefile.in
Verified both and updated README.txt
r1643 | philburk | 2011-03-13 11:18:45 +1100
Ran autoconf to update configure file to fix INCLUDES bug.
r1642 | dmitrykos | 2011-03-09 04:20:07 +1100
wasapi:
– fixed warning of incompatible type usage when ring-buffer is used for blocking interface
– fixed compilation using MSYS with MinGW compiler
Improve latency measurement in loopback so it handles DC steps better.
r1640 | philburk | 2011-03-07 11:52:47 +1100
Convert patest_two_rates.c to V19.
Make paloopback over/underflow report easier to understand.
r1639 | philburk | 2011-03-06 11:35:24 +1100
Add include string.h to loopback test.
Use full duplex if input and output device the same.
Check for format conversion buffer overflow in case of huge framesPerBuffer.
r1638 | rossb | 2011-03-04 18:53:36 +1100
added newline to print statement
print arguments at startup
changes to get qa building on Windows with msvc. had to move variable declarations to the top of functions
moved skeleton to end of win32 initializers list so it isn’t considered default
support building skeleton host api on windows
paqa: removed non standard and unused #include . updated definitions of pi to double precision
fixed build breakage of patest_wmme_ac3.c on windows
use LoadLibraryA instead of LoadLibrary to support unicode build
Add test for paInt8 to loopback test.
Add separate input and output latency setting options.
Add timeout when waiting for stream to finish.
r1629 | philburk | 2011-03-03 09:12:23 +1100
Fix random code insertion caused by buggy editor on Linux.
Report actual buffer sizes.
r1628 | philburk | 2011-03-03 08:03:45 +1100
Add latency control in loopback to fix Linux latency problems.
r1627 | philburk | 2011-03-03 04:49:46 +1100
Raise pop threshold for loopback test.
r1626 | philburk | 2011-03-03 04:03:23 +1100
Applied patches for Debian Linux for ticket 166.
r1625 | philburk | 2011-03-02 13:42:57 +1100
Set default latency in an attempt to reduce full duplex glitching.
r1624 | philburk | 2011-03-02 12:53:02 +1100
Add test for sample format conversion.
r1623 | philburk | 2011-03-02 10:02:52 +1100
Check for clipping even when loopback devices specified.
r1622 | philburk | 2011-03-02 09:48:50 +1100
Add check for clipping and noise in loopback test.
r1621 | philburk | 2011-03-01 20:36:31 +1100
Remove unused variable in loopback.
r1620 | philburk | 2011-03-01 20:22:48 +1100
Add loopback target to Makefile.
Fixes to loopback test for ALSA.
r1619 | philburk | 2011-03-01 19:34:46 +1100
tweak changeme.txt to test SVN on Ubuntu
r1618 | philburk | 2011-03-01 13:32:04 +1100
ANother attempt at fixing configure make.
r1617 | philburk | 2011-03-01 13:25:32 +1100
Try to fix oddly broken Makefile.in
r1616 | philburk | 2011-03-01 13:12:46 +1100
ANother C99 fix for loopback.
r1615 | philburk | 2011-03-01 13:02:46 +1100
Fix C99 error with modern for loops.
r1614 | philburk | 2011-03-01 12:54:20 +1100
Added paloopback test to the automated build.
r1613 | philburk | 2011-03-01 11:49:52 +1100
Ass semicolon to fix “label at end of compound statement” error
caused by pthread_cleanup_pop macro.
r1612 | philburk | 2011-03-01 10:56:48 +1100
Added patest_write_sine_nonint to Makefile.
Check for paNonInterleaved on Mac and return paSampleFormatNotSupported.
Fix pa_minlat.c. Linux was complaining about not checking fgets return value.
r1611 | philburk | 2011-03-01 09:27:39 +1100
Add a test for non-interleaved blocking writes.
This is to address ticket 83.
r1610 | philburk | 2011-02-27 12:31:56 +1100
Speed up loopback test by testing each sample rate then each buffer size, not full matrix.
r1609 | philburk | 2011-02-27 11:06:07 +1100
Cleanup tests. Lots of small tweaks.
Delete the debug_ tests because they are V18 and are not needed.
We can just hack a V19 test if we need to debug.
r1608 | dmitrykos | 2011-02-22 09:41:06 +1100
wasapi: fixed the bug when on stream stop/start/stop/start sequence callback could be called with number of samples smaller than requested by user in Pa_OpenStream
fixed build by reverting 1604 revision where ‘pa_ringbuffer.o’ dependency was added to Makefile.in, modified configure.in for WASAPI build and added explicit ‘pa_ringbuffer.o’ dependency there instead
Ticket #132
doc tweak
fixed compilation when Makefile is used by adding missing pa_ringbuffer.o object file
moved src/common/pa_skeleton.c to src/hostapi/skeleton/pa_hostapi_skeleton.c. updated all build files accordingly.
added braces to clarify precedence in latency calculation expression
renamed some latency variables to make it clear they are in frames not seconds
fixed stream info inputLatency and outputLatency calculations. PaUtil_GetBufferProcessorOutputLatency returns latency in , code assumed it was in seconds.
fixed stream info inputLatency and outputLatency calculations. PaUtil_GetBufferProcessorOutputLatency returns latency in , code assumed it was in seconds.
fixed stream info inputLatency and outputLatency calculations. PaUtil_GetBufferProcessorOutputLatency returns latency in , code assumed it was in seconds.
alsa:
- implemented dynamic ALSA loading, you shall define PA_ALSA_DYNAMIC when compiling PortAudio library, by default PortAudio will use compile time linkage;
- added PA_ALSA_PATHNAME define to redefine ALSA library path and filename to some other name and location, has effect only together with PA_ALSA_DYNAMIC;
- added extension function which allows to set ALSA library path and filename during application run-time overwriting default set by PA_ALSA_PATHNAME during compilation;
- added API compatibility with Android OS , some missing ALSA functions are replaced with stubs , to compile on Android you need to add ALSA headers to compiler’s searchable path.
alsa:
- fixed callback thread to exit normally if error condition was satisfied during stream processing , it was possible cause of crash if error happened inside the thread
- modified processing thread to timeout during poll() within around 2 seconds instead of 64 milliseconds, this will help to fix problems on systems with low processing power and possible CPU overloading, like portable ARM devices
- timeout of poll() will not cause stream to stop but will cause Alsa stream restart, poll timeout will now set ‘xrun’ event to 1
corrected typos as per jf_menards’s patch in ticket #58
added #include portaudio.h to pa_mac_core.h so it is consistent with all other host-api specific headers. closes ticket #7
wasapi: – releasing Input/Output buffer if error occurred inside the processing routine
wasapi:
– fixed blocking interface, Input and Output
– improved Exclusive Input device latency tunning
– applied path provided by Jean-François Charron which improves handling of COM objects in multi-threaded environment and initialization stage which could under certain conditions return paNoError event when initialization failed
removed reference to todo list from main doxygen page
removed/cleaned up doxygen @todo items. moved to TRAC
cleanup: changed if() to switch()
clarified documentation for PaTime and Pa_GetStreamTime
removed old doxygen @todo comments
removed obsolete doxygen @todo comments
referenced trac ticket #113 in doxy todo item
referenced trac tickets #35 and #112 in pa_converters.c todo items
removed doxygen TODO items from pa_asio implementation. migrated them to new trac tasks: #103, #104, #105, #106, #107, #108, #109, #110, #111
corrected doc comment
simplify doc tweak
wasapi: allow mono input/output streams be created when Blocking interface is used. Thanks to Chris for providing the patch.
test svn access
wasapi: fixed audio device not released to other applications if WASAPI Exclusive stream is stopped but not yet closed. Bug does not affect Shared mode streams. Fixed possible object’s leakage in situation when WASAPI thread encountered an error and stopped and user decided to start stream again without prior closing it.
wasapi: fixed audio gain is decreased by 2 when audio stream is opened for capturing and 1 channel selected, this bug occurs only if non-Stereo input source used .
corrected Int24_To_Int16_Dither and implemented Int24_To_Int8_Dither, Float32_To_Int24 to use all ‘double’ types for optimal code generation
disable dither conversion when host input format is 32 bit and user format is 24 bit. the converter for this is unimplemented anyway, and the host won’t ever be sending us better than 24 bit data, so no need to dither it.
coreaudio: fixed incorrect value type used with OSAtomicOr32 API which results in value truncation on systems where ‘long’ is 64 bits
doc tweaks
First checkin of new loopback unit test for PortAudio.
r1555 | richard_ash | 2010-11-13 04:16:21 +1100
Commit fix for crash during full-duplex operation with PulseAudio. Reported by Al Dimond, fix proposed by Ross Bencina, acked by Dmitry Kostjuchenko. This fixes a bug with Dmitry’s zero-copy optimisations. Fix works in Audacity , so comitting upstream.
r1554 | rossb | 2010-11-08 10:57:36 +1100
updated documentation main page and added api overview page to documentation
wasapi:
– using WAVE_FORMAT_PCM for mono/stereo 8/16-bit stream configuration to avoid possible driver refusal upon audio client creation
– modified default speaker mask for 5.1 and 7.1 configuration to _SURROUND versions, added default speaker configuration for 2.1, 4.1, 6.1 cases
wasapi: fixed audio stream failing to open on Windows 7 in Exclusive mode if suggestedLatency parameter is 0 and user framesPerBuffer is less than 3 milliseconds
Ignore the generated .pc file so it doesn’t show up in SVN status output
r1550 | richard_ash | 2010-10-30 07:09:54 +1100
Remove frome the list of directories created by configure a directory that no
longer has any contents and is not needed any more. Original patch by Benjamin Drung
r1549 | rossb | 2010-10-24 21:21:35 +1100
clarified some doc comments in pa_ringbuffer.h including one typo that said instead or
patch from Rafaël Carré: clear SHARED_FLAGS in configure.in when —disable-shared is used to avoid libtool setting -shared and breaking the build.
patch from Richard Ash: updated Makefile.in to set SHELL variable expected by newer versions of libtool
wasapi: fixed capturing if Polling mode is used, ProcessInputBuffer was broken erroneously returning AUDCLNT_S_BUFFER_EMPTY and thus breaking Input thread.
wasapi: improved audio quality stability in Shared mode if framesPerBuffer value is lower than 10 milliseconds, now even 1 frame provides stable quality. Exclusive mode is also affected by this improvement.
Fixes issue where ringbuffer elements were of size 1, which might have lead to split data. This does not resolve the issue for ringbuffer use in blio.
alsa: fixed Segmentation fault due to dangling pointer left by snd_lib_error_set_handler() call which set callback pointer to ALSA during PaAlsa_Initialize call. Segmentation fault happens only if application dynamically unloaded PortAudio while still using ALSA through other means, then next ALSA error which causes invocation of ALSA error handling callbacks would cause Segmentation fault. Bug reported in: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=563192, and re-announced by Phil Burk on 15.10.2010.
improved documentation of paNoInterleaved flag
jack: fixed segmentation fault caused by PA Jack implementation if Pa_Initialize is called after Pa_Terminate due to bad pointer usage by realloc() call which was previously freed() in Pa_Terminate call. Many thanks to RJ Ryan for reporting, debugging and providing the solution for this bug.
alsa: avoid SetApproximateSampleRate() excessive log messages when Pa_IsFormatSupported API method is used to test for supported sample rates and some of them are not supported by device
fixed missing return statements from latency listener procs
wasapi:
– fixed compile under MinGW64 compiler
– cleaned portability typedefs, thanks to MinGW64 project added KS headers which also work well for MinGW32
wdmks:
– made it possible to use additional WDM/KS info for WMME/DS back-ends by defining PAWIN_USE_WDMKS_DEVICE_INFO for compilation by MinGW32/64 compilers if you include modified headers located in ‘\src\hostapi\wasapi\mingw-include’
Replaced broken PaStreamCallbackTimeInfo calculations with calculation based on CoreAudio ioProc timestamps. Notes: 1. inputBufferAdcTime is not computed correctly for all cases . 2. This patch needs to be reviewed for the case where device and AUHAL sample rates differ and if input and output sample rates differ. See FIXMES
tweaked buffer settings in wmme low level parameters example
wasapi:
– fixed alignment missing for host buffer if overall buffer size was set to less than 3ms that results in device timeout
– advanced Event driven mode and extended the range of host buffer size which can operate in this mode up up to 20.66 ms, e.g. your device buffer size will vary in range 3 – 20.66 ms, if goes above then Poll driven mode is switched on automatically
wasapi:
– fixed compilation by MinGW, was failing due to double ambiguous jack describing enums used in KS
ds:
– fixed compile by MinGW, was failing due to missing casts to LPVOID * and usage of UINT instead of DWORD by PaWinDsStream::previousPlayCursor
alsa:
– trying to fix specific case of stream failing to open when min/max period is specifying fixed value with +/-1 difference, we try choosing middle then which seems to be aligned to 2
alsa:
– improved host buffer size calculation: taking into account obligatory double buffering utilising formula (userFrames + MAX), aligning host buffer with user buffer size, additional testing of host buffer size to avoid failure on snd_pcm_hw_params_set_period_size_near, additional logging for more convenient debugging
alsa:
– fixed seg.fault when using non-interleaved host i/o, now paNonInterleaved flag is provided to PaUtil_InitializeBufferProcessor to signal processor about host format being non-interleaved
jack:
– fixed assertion in PA processor logics by informing processor that host format is non-interleaved in PaUtil_InitializeBufferProcessor
– fixed rare timeout on WaitCondition reported earlier by increasing timeout from 1 second to 10 minutes
wasapi:
– added functionality to enumerate jacks and their description
– added example which demonstrates jacks enumeration technique
Thanks Reid Bishop for providing the idea for this extended functionality and patch with implementation.
wasapi: – fixed frames preloading for buffer mode – paUtilFixedHostBufferSize
wasapi: – fixed occasional bug which is related to stream start failure due to exceeding buffer size when preloading data for output stream in exclusive mode
wasapi:
– fixed usage of uninitialized variable
added pragma to auto-link winmm.lib when compiling with msvc
wasapi:
– reimplemented full-duplex processing to address changes to latency calculations
– fixed Pa_GetStreamInfo for WASAPI device if stream is opened as full-duplex
optimized PA processor for case when host and user buffer match by type and size, now host buffer pointer will be passed to user space directly, additional copying of audio input/output data is thus avoided.
asio: apply paNonInterleaved flag on host formats for callback mode .
wasapi:
– fixed memory corruption if format is set to non-interlieved and mono <> stereo mini-mixer is used for to convert mono to stereo
– made WASAPI fully passing patest_wire.c for shared and exclusive modes
– if WASAPI device failed to open due to unsupported format it will not crash top PA layer anymore
– improved full-duplex mode for shared/exclusive
– exclusive mode will now work with 1 channel audio always, even if it is not supported by WASAPI natively
reverted changes from revisions 1516-1517 due to incorrectly made changes to processor’s core which result in corrupted audio in some specific situations
wasapi:
– fixed Exclusive/Event mode if latency used exceeds 100ms resulting in bad audio
– fixed Exclusive mode if overall stream latency exceeds 1400-2000ms resulting in E_OUTOFMEMORY even under Vista, now PA WASAPI will gradually decrease overall latency until acceptable level
– applied device period aligning if period was corrected
– improved robustness of audio client creation
wasapi:
– reimplemented suggestedLatency and framesPerBuffer parameters in Pa_OpenStream call to opearate by the following formula – ‘hostBufferFrames = userFramesPerBuffer + max(userFramesPerBuffer, )’ as discussed on PA mailing-lists
– it is now possible to achieve 5.33ms latency in Polling & Exclusive mode
– Polling method for output will benefit from direct WASAPI buffer pointer exposure to a user space through a callback
r1517 | dmitrykos | 2010-06-30 06:58:15 +1000
fixed processor optimization from previous release for non-interleaved host buffers case
implemented optimization for NonAdaptingProcess processor: avoid copying of input/output from temp user buffer to host buffer by providing host buffer pointer directly to user, e.g. achieving processing of host buffer in place
wasapi:
– made framesPerBuffer and suggestedLatency behavior as per PA specification, e.g. framesPerBuffer set main device period, suggestedLatency is a surplus if not 0
– fixed bug with Input in situation when WASAPI operates in native not-WOW64 process and using event mechanism would provide less frames to a user callback than expected
alsa: reverted broken specification according device latency being not dependent on user buffer size, now framesPerBuffer parameter and suggestedLatency set overall stream latency
wasapi: fixed very rare bug causing a dead looping if WASAPI input stream is being aborted
wasapi: fixed full-duplex failure due to incorrect check made on I/O host buffer sizes
wasapi: fixed host-WASAPI related bug when selected 24-bit Input does not produce any audio, while 16 and 32-bits do, now if 24-bits selected by user PA WASAPI asks 32-bits from WASAPI device and PA converters provide 24-bit data which is converted from 32-bit host buffer.
unix: fixed compile failure due to warning about unused variable when compilation takes place with -Werror switch
oss: fixed compile for systems missing ‘pthread_cancel’ series of functions, this allows to compile PortAudio under Android platform with OSS as audio host back-end
alsa:
– fixed latency setting dependence on user buffer size, now it is completely independent and user is able to set lowest possible/audible latency
– fixed fixed min. latency for non-MMAPed devices, they do behave similar to MMAPed devices now without a limitation
wasapi:
– implemented support for full-duplex mode (it always uses polling WASAPI behavior, if latency <15msec needed then event interface must be done)
– fixed mono-to-stereo converter for input stream
– mono-to-stereo converter will also automatically operate in shared mode
alsa: – if polling loop is timed out PaAlsaStream_WaitForFrames will not report any frames available
wasapi:
– implemented support of non-Interlieved buffers for WASAPI blocking interface for input and output
– blocking methods will now use PA sample converters
alsa: – releasing memory of non-MMAPed buffer on stream closure by Pa_CloseStream
alsa:
– reverted buffer size hardcoding for non-MMAPed devices to avoid crash on wrong buffer size usage
– optimized non-MMAPed device operation to avoid malloc/free usage on every processing call avoiding significant performance penalty
alsa:
– fixed deadlock in PaAlsaStream_WaitForFrames if device is paused, poll() results are now checked for 0 and if 64 times exceeded an error is returned
– removed hardcoded low-limit of latency for non-MMAPed devices, it is an obligation for user to set an acceptable/desired latency value
– tuned XRUN recovery sequence for MMAPed devices
fixed compile for DirectSound implementation under MSYS, missing DSSPEAKER_7POINT1_SURROUND define
wasapi:
– re-enabled Event-driven mode for Windows 7 x64 platform if application runs as WOW64 process
wasapi:
– fixed Event-driven mode, broken in 1496 rev.
wasapi:
– using WOW64 workaround for any WOW64 process regardless of Windows version due to report of same bug under Windows 7 x64
wasapi:
– fixed object leak if stream is stopped and restarted without closing
– improved IAudioClient event handle management on stream restart
wasapi:
– fixed occasional crash-bug which may be caused by a lightweight application that starts stream, checks if stream is running and if not terminates the stream: WASAPI implementation wasn’t taking such behavior into account and stream termination could happen during a thread start causing a crash on bad pointer usage
– fixed Pa_IsStreamActive and similar not correctly reporting stopped stream if that was stopped from within a callback function by returning paComplete
corrected comments to Int24_To_Int16_Dither
implemented ‘Int24_To_Int16_Dither’ converter to allow 24-bit audio be played
wasapi:
– new method PaWasapi_GetFramesPerHostBuffer which allows to get number of input/output frames per host buffer, this method helps to find out maximal values for PaWasapiHostProcessorCallback
– documentation fixes
wasapi:
– added calling thread id checks to match Pa_Initialize/Pa_Uninitialize in the same calling thread, if not the case then console warning will be thrown and CoUninitialize will not be called
wasapi:
– fixed Windows 7/Server 2008 R2 and Future detection, this fixes minimal/maximal device periods correction
– added CO_E_NOTINITIALIZED to text errors with action to take for user in case it happens
wasapi:
– improved device buffer alignment calculation allowing to set as precise device latency as possible
wasapi:
– fixed crash in Pa_OpenStream call if WASAPI device did not open or something failed
– improved the way WASAPI device is opening, such error as AUDCLNT_E_BUFFER_SIZE_ERROR which comes due to incorrectly small device period is fixed for Vista systems as well, latency will be corrected to device minimum .
– if suggestedLatency is set to 0 in Pa_OpenStream call then WASAPI device will select device default latency
– improved on-screen logging of WASAPI devices available during WASAPI initialization phase
fixed ASIO thiscall resolver for GCC 4.+: CALL_THISCALL_1_DOUBLE was failing due to strong optimization of GCC compiler, added EDX in clobbered register list to warn GCC that resolver uses it explicitly
wasapi:
– fixed AUDCLNT_E_INVALID_DEVICE_PERIOD under Windows 7 if latency is set to lower than minimal device period
– fixed AUDCLNT_E_INVALID_DEVICE_PERIOD under Windows 7 if latency for Exclusive mode is higher than 500ms, for Shared mode higher than 2000ms
excluded x86-64 platform from ASIO ‘thiscall’ resolver as x64 ABI does not have ‘thiscall’ calling convention anymore
wasapi:
– fixed int24 Mono to Stereo mixer
pa_converters:
– avoid using 64-bit integer math for Int24_To_Float32 and Int24_To_Int32 under x64 Posix platforms , now using explicit PaInt32 type
wasapi:
– fixed bug when Exclusive mode was wrongly opening Stereo stream if Mono stream was requested , resulted in distorted sound
– implemented workaround for WASAPI limitation – in Exclusive mode Mono stream is not supported: now PA creates internal audio device in Stereo mode, and after callback call Mono data is mixed into Stereo output, this workaround is not supported for Blocking mode. all this is done transparent for user, automatically.
maccore: fixed MacOSX “Snow Leopard” 10.6+ deadlock on sample-rate change submitted by Olivier Tristan
and Stephane Letz with the following details:
“When using paMacCoreChangeDeviceParameters option of PaMacCore_SetupStreamInfo, if the sample rate used in PortAudio do not match the one on the hardware, it automatically switches the hardware samplerate. This functionality stopped working on 10.6 and was blocking the application when trying to change the hardware samplerate It now works fine on 10.6 as it used to on previous OSX version.”
r1482 | dmitrykos | 2010-03-17 21:37:29 +1100
wasapi: small corrections to improve CoInitialize/CoUninitialize sequence
updated ‘configure’ file, many thanks to Stelios Bounanos for generating it
wasapi: removed excessive argument checks in stream management functions
wasapi: improved parameter checks for blocking API
wasapi: fixed extension functions: PaWasapi_GetDeviceDefaultFormat / PaWasapi_GetDeviceRole – device index was misinterpreted and as a result returning value was mismatched
implemented optional log output to Visual Studio Output window if PA_ENABLE_MSVC_DEBUG_OUTPUT is defined, this simplifies debugging of external process if Visual Studio is attached to process
wasapi: fixed portaudio.vcproj
wasapi: finished changes of include names for case-sensitive build env.
wasapi: renaming file
wasapi: renaming file
wasapi: renaming file
wasapi: renaming file
wasapi: renaming file
wasapi:
- fixed configure.in to compile WASAPI module under MSYS
- fixed include name cases for case-sensitive build environments
- defined LPCGUID for some MinGW compilers which are missing it
- fixed strict-aliasing rules break on line of getting device EndpointFormFactor in case ‘-Wstrict-aliasing’ is specified or corresponding GCC optimization flag is used
wasapi:
- improved debug log output: function name which returned error will be displayed as well
- fixed non-critical compiler warnings
wasapi: fixed initialization stage of PaWasapi_Initialize() which was returning error if WASAPI wasn’t found , this was causing PA’s whole initialization to fail completely
+ wasapi:
– converted PA WASAPI module to pure C
– implemented compilation support for GCC [MinGW/MinGW64] compiler, special notes regarding MinGW compilation are included in ‘readme.txt’ file
+ wasapi: corrected PaWasapi_Initialize() behavior in case of OS back-end failure: WASAPI will not be added to a list of available APIs now (instead of throwing error to InitializeHostApis() that causes PA initialization break), error is thrown only on low-memory condition
wasapi:
- removed dependency from strsafe.h
- fixed crash in InitializeHostApis() if PaWasapi_Initialize() failed due to internal WASAPI error
fixed dummy compilation of pa_win_wasapi.cpp using MinGW compilers by adding missing Avrt type
+ wasapi: Event-driven/Full-Duplex/Exclusive mode will be calling user-provided callbacks simultaneously when both input/output buffers are ready for IO
changed buffer sizes
added test for wmme low level latency params
wasapi: improved paFramesPerBufferUnspecified handling in case device does not provide default period, paInvalidSampleRate will be returned if sampleRate parameter is 0 for Pa_IsFormatSupported/Pa_OpenStream
wasapi: fixed capturing callback not called if paWinWasapiPolling flag specified, or WOW64 workaround is used, same bug was causing div/0 crash
windows WASAPI fixes/improvements:
- fixed dependency of framesPerBuffer parameter in Pa_OpenStream and latency ;
- paFramesPerBufferUnspecified is now supported for Pa_OpenStream;
- sound distortion fixed for Shared mode if framesPerBuffer is lower than device limit and when latency was set to 0;
- fixed timeout for Exclusive mode due to buffer misalignment;
- improved precision of DAC/ADC time for running stream;
- avoided memory leaks on failure of Pa_OpenStream;
- NULL checks on stream pointer for all external methods;
- correct host buffer mode for paWinWasapiPolling mode to deliver fixed number of frames to user space;
- implemented workaround for Vista x64 WOW64 bug if Event-mode is used for Shared mode : will fall back to safe Polling method automatically.
improved PaWasapi_ThreadPriorityBoost by providing enum PaWasapiThreadPriority with explicit thread priority values for convenience. it is possible to override default thread priority setting for Event/Poll-driven modes by specifying new flag paWinWasapiThreadPriority and setting priority value through PaWasapiStreamInfo::threadPriority member.
fixed crash on NULL pointer usage if hostApiSpecificStreamInfo was NULL in Pa_OpenStream method
provided ability not to depend on ksguid.lib when using WDMKS as it may not be provided for x64 SDK by default, define PA_WDMKS_NO_KSGUID_LIB to use static declarations, x64 MSVC project corrected to define PA_WDMKS_NO_KSGUID_LIB for x64 compilations. added WASAPI symbols to portaudio.def.
finished WASAPI implementation:
– Callback/Blocking interface
– Playback/Capture
– Shared/Exclusive mode
to compile you must have installed recent Windows SDK and min Visual Studio 2005 SP1. WASAPI is enabled by default, to disable you must define PA_NO_WASAPI prior compilation.
justtesting
justtesting
fix for undefined DirectSoundFullDuplex8 when PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE wasn’t defined. thanks Dmitry
Added code to PortAudio/DirectSound to use DX8 DirectSoundFullDuplexCreate API for full duplex streams where available. Define PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE in your project to enable this feature.
implemented paPrimeOutputBuffersUsingStreamCallback for DirectSound . invoke some buffer reset code to from StartStream instead of OpenStream which should give cleaner startup behavior if the stream is started and stopped multiple times. fixed leaks under error in InitOutputBuffer and fixed leak of primary buffer
reset oscillator phase at start of each test cycle so that the onsets sound the same
removed hardwired device number from previous commit
DirectSound don’t crash when starting a blocking io stream. blocking io still not implemented though.
added test case to patest_stop_playout.c which catches issues with host buffers looping/not being cleared if the callback returns paComplete
reworked DirectSound stream completion to correctly flush the buffer processor and zero DS buffers when the callback returns paComplete or paAbort. resolves ticket #86. use test patest_stop_playout.c to verify.
clean up resources better if DirectSound OpenStream fails
fixes to DirectSound implementation to work in unicode builds
use a win32 Event object to signal timer process completio to Pa_StopStream in DirectSound implementation. resolves race condition when stopping direct sounds streams.
added msvc link pragma to require ksguid.lib
made buffer in PaUtil_DebugPrint local rather than static to avoid multithreaded issues
ifdefs for correct windows mobile compilation
added cast to IsDebuggerPresentPtr, fixes compilation of asio on some systems
updated configure with a simple run of autoconf. seems to work on mac.
derive ds output channel count from speaker configuration when pnpInterface is unavailable . Thanks to Dmitry Kostjuchenko for the patch.
fix for bad x64 DWORD_PTR define
Fixed bug where wmme device channel count would be incorrect for default device resulting in distorted sound if user tries to open device with more channels than device can handle. Thanks to Dmitry Kostjuchenko for the patch.
Update to Makefile.in and Configure.in from Stelios Bounanos: Pretty-print help strings, Support multiple APIs on win32 with mingw, Output a configuration summary at the end, Remove ASIO build configuration from OSX
Patch from Dmitry Kostjuchenko: Fixes x64 issue with mis-casting DWORD_PTRs to DWORDs, support proper conversion of device names in UNICODE builds, use of CreateThread instead of _beginthreadex with cygwin.
added empty memory barrier macros for WINCE thanks to Dmitry Kostjuchenko
added and removed dummy property listener as this may be required by OS X 10.6. Also, returned no error on property timeout.
cleanup of property change checking and error handling
added return char
removed some redundant code
added new test for hardware samplerate changes. This is mostly targetted to the mac, but could be adapted to other platforms as well.
fixes for hardware samplerate changes
added assert back as suggested by Dmitry Kostjuchenko
fix for ringbuffer problem on 64-bit macs. Also, this should make it possible to migrate away from using the long datatype on pa_ringbuffer.
added two includes which should not be necessary but seem to help compiling in snow leopard
patch to use mach absolute time on mac OS X since apple advises against gettimeofday in IOProcs. Patch due to Ross Bencina.
Fixed dither for 64-bit targets.
r1417 | rossb | 2009-09-09 22:48:17 +1000
added instructions for building without ASIO support to the msvc readme
removed reaper asio driver blacklisting
Fix latency calculation in PA ALSA
r1414 | aknudsen | 2009-05-25 03:02:10 +1000
Add PA ALSA extension to allow setting number of retries when busy
r1413 | aknudsen | 2009-05-25 03:00:36 +1000
Clarify hostapi ordering somewhat
r1412 | aknudsen | 2009-05-25 02:54:22 +1000
Apply Kevin Kofler’s non-mmap patch
r1411 | rossb | 2009-05-15 00:37:37 +1000
fix for half duplex and build issues from Toni Wilen.
added pragma to autolink libwinmm with msvc to get timeGetTime symbol when only using ASIO. thanks Yann
fixed a bug in WAVEFORMATEX casts, and warnings on sprintf
fixed inputBufferAdcTime calculation for AdaptingInputOnlyProcess. patch from Yann.
fixed bug in asio blocking i/o stream initialization which would cause crash . enabled timeout code in read/writestream. patch from sven fischer
added notes to pa_test_ac3.c that the test stream file must include the correct spdif preamble on every ac3 frame
always disable wmme clip and dither if an spdif passthrough wave format is requested
minor code logic cleanup
added patest_wmme_ac3.cp test for wmme ac3 spdif passthrough
wmme host api: take account of paWinMmeWaveFormatDolbyAc3Spdif and paWinMmeWaveFormatWmaSpdif flags in Pa_IsFormatSupported
initial support for ac3+wma spdif passthrough for pa_win_wmme. see flags in pa_win_wmme.h. flags currently work for OpenStream but are ignored for IsFormatSupported
doccomment for PaAsio_SetStreamSampleRate()
factored asio sample rate setting code into separate functions. added PaAsio_SetStreamSampleRate() function.
cleaned up logic related to theAsioStream singleton pointer (now gets set in OpenStream and cleared in CloseStream. added callback-completion waiting to StopStream . cleaned up isStopped/isActive logic
r1396 | philburk | 2008-11-04 06:31:30 +1100
remove extra parameter from debug statement to prevent pointer error
fixed bug as suggested by Michael allen. This fixes issues with blocking IO on the mac when using different number of channels for input and output.
ticket#84
ticket#84
ticket #84. Fix for Cygwin. Added a #define called CREATE_THREAD. Cygwin will call CreateThread, whereas other dev environments will generate code to call beginthreadex. endthreadex was handled in the same way.
r1391 | gordongidluck | 2008-09-15 01:24:58 +1000
ticket#84. Ran into a problem with conversion from CreateFile to beginthreadex. Changing it back for now.
r1390 | gordongidluck | 2008-09-15 00:29:34 +1000
change CreateThread to beginthreadex
r1389 | gordongidluck | 2008-09-15 00:27:40 +1000
changed CreateThread to _beginthreadex and ExitThread to endthreadex
r1388 | gordongidluck | 2008-09-15 00:18:17 +1000
change CreateThread to _beginthreadex
Add TIME to version text.
Supports multiple threads using ASIO by adding CoInitialize and CoUninitialize() calls.
OSS: clear trigger direction bits at correct time
r1384 | rossb | 2008-05-15 14:35:30 +1000 | 1 line
always use __vsnprintf with MSC
removed obsolete darwin compiling instructions
tweak svn test
r1381 | aknudsen | 2008-03-31 08:02:09 +1100
Order Unix host api initializers depending on whether we’re on Linux
Avoid warnings about unused labels
moved trunk into place
moved trunk out of way. should disable accidental commits
Choose ALSA before OSS on Linux
a test to test all sample format converters in pa_converters.c step towards resolving ticket #35
added FIXME for ringbuffer element size in Core Audio
fixed uninitialized variable warning in patest_prime.c
Commit new configure that is up-to-date with latest changes to configure.in .
r1369 | jpgrayson | 2008-03-07 04:10:28 +1100
Fix line endings.
Touch up other whitespace.
r1368 | rossb | 2008-03-01 11:38:27 +1100
patch from magnus jonsson to print error instead of crash in tests when there is no default input device. changes to paqa_errs are related to ticket #61
added pa_ringbuffer to portaudio.dsp for pa_asio
msvc memory barrier intrinsics from peter grayson
added pa_ringbuffer to portaudio.vcproj for pa_asio
added pa_ringbuffer to configure.in for pa_asio
Blocking i/o implementation by Sven Fischer. adds pa_asio dependency on pa_ringbuffer.c. Added i386 memory barriers for MSVC and BORLAND
Ensure stream validity in PaAlsa_GetStream*Card
Fixed bug in SCons setup
r1360 | jpgrayson | 2008-02-24 06:10:38 +1100
Fix asio build for Mac and Windows.
r1359 | rossb | 2008-02-23 20:46:25 +1100
corrected README
- Small fixes to build system.
- Fix some typos in configure.in affecting Mac ASIO build and C++ binding builds. Remove unused LT_RELEASE variable from configure.in and Makefile.in.
-
- Split really long PA_LDFLAGS assignment. Substitute make built-in $ for “rm -f”.
-
- Use variable for lib-stamp command; this reduces output noise at make-time. Use simple variable expansion when assigning OBJS.
-
r1357 | rossb | 2008-02-22 18:58:10 +1100
fix for make uninstall breakage from pete ross
patch from Eliot Blennerhassett to use new stream read write functions that first appeared in HPI version 3.05.05. resolves ticket #51
- Apply patch to adds NetBSD support to scons build.
— Thanks to Jorge Maciá.
r1354 | jpgrayson | 2008-02-22 07:42:43 +1100
Modify scons build system to now work on MacOSX . Thanks Jorge Maciá.
r1353 | jpgrayson | 2008-02-22 07:34:00 +1100
- Applied initial part of darwin build fix patch from Jorge Maciá.
- Move mac-specific hostapi stuff from pa_mac_hostapis.c into more generic pa_unix_hostapis.c. Remove deprecated pa_mac_hostapis.c.
-
— Update configure script to use pa_unix_hostapis.c for darwin builds.
r1352 | jpgrayson | 2008-02-22 03:42:04 +1100
Support Sun’s cc compiler on solaris. Thanks Pete Ross.
r1351 | jpgrayson | 2008-02-22 03:40:18 +1100
More robust make recursion. Thanks Pete Ross.
r1350 | jpgrayson | 2008-02-22 03:08:28 +1100
- Partial patch for NetBSD support
— Add configure-time test for libossaudio library.
r1349 | jpgrayson | 2008-02-22 03:07:31 +1100
- Partial patch for NetBSD support.
- Change DEVICE_NAME_BASE when building for NetBSD. Only use SNDCTL_DSP_GETODELAY ioctl() if it is available.
-
r1348 | rossb | 2008-02-21 16:31:26 +1100
cosmetic cleanups to bracket placement in pa_asio.c
more ringbuffer comment docs and cleanups from Sven Fischer
added support for multi-byte elements in pa_ringbuffer.c/h thanks to Sven Fischer
fixed strings.h → string.h : thanks Jorge Acereda
fixed bug not clearing global asioDrivers variable introduced in prevous checkin r1343
added explicit management of the asioDrivers instance creation and destruction. this fixes a leak where the asioDrivers instance was never destroyed.
revised ASIO-README.txt
Fixed ticket #3. removed code which zeroed timeInfo→currentTime in the buffer processor.
added casts of result of alloca() for LCC compatibility, thanks Sven Fischer
resolved ticket #4 deleted V19-devel-readme.txt and moved relevant information from it into doxygen comments. improved doxygen documentation. wrapped config flags in pa_trace.h with #ifndef to allow them to be overridden using compiler flags.
replaced bzero() with memset() thanks pete ross
resolved ticket #4 deleted V19-devel-readme.txt and moved relevant information from it into doxygen comments. improved doxygen documentation. wrapped config flags in pa_trace.h with #ifndef to allow them to be overridden using compiler flags.
patch from Peter Ross to fixe cygwin/mingw ./configure builds
added explanatory comment re DS API behavior
added check for ppc and powerpc and comment that check for PPC is probably not needed in membar code. Also linebreak. Thanks Peter Grayson.
fix for msvc compiler warning, make literal explicitly single precision float. thanks peter grayson
From Peter Grayson: fix pkg-config when using ALSA
removed memory barriers from section of code that is instead protected by mutex
Patch to make universal binary optional.
simplified/cleaned configure code dealing with mac universal binaries.
Fixed issue that caused CFLAGS from environment to be ignored in default case. also removed unnecessary assignemnt of CXXFLAGS.
Fixed typo that would have caused trouble in Mac OS X 10.4 builds.
Normalized whitespace and semicolon usage in configure.in.
Patch by Jorge Maciá: Add error descriptions
r1324 | bjornroche | 2008-01-27 13:03:30 +1100
added -Werror flag back to all mac builds. This required slight tweak to pa_endianness to avoid unused variable warning.
backout configure change accidentally added in last commit. I may be about to add it back, but it should not have been part of the previous commit.
some error checking.
fixed potential isues with accessing freed memory in Core Audio code when dealing with xruns
separated memory barrier code from ringbuffer for greater modularity
added —enable-mac-debug flag to control -g and -DNDEBUG flags in mac build only.
tweaked handling of xruns in core audio slightly. should be cleaner this way
added necessary include file to pa_mac_core_utilities.c
applied patch to fix ticket 64 — added list of listeners for xruns in CoreAudio.
some assertion cleanup
Fix call to PaUtil_SetLastHostErrorInfo in OSS
Patch from Stelios Bounanos: set host error info more consistently in OSS
fix for xrun detection suggested by Jorge Acereda Macia for Core Audio
fixed code inside asserts as suggested by Jorge Acerda Macia.
OSS: Don’t stat before trying to open device
Export extensions in shared library also when using autotools …..
pa_devs.c changed reference from Pa_CountDevices to Pa_GetDeviceCount
Tweaked error handling in PaOssStream_Stop