Commit graph

333 commits

Author SHA1 Message Date
dmitrykos
23aed33a71 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 (paInt24) PA WASAPI asks 32-bits (paFloat32) from WASAPI device and PA converters provide 24-bit data which is converted from 32-bit host buffer. 2010-06-10 09:09:19 +00:00
dmitrykos
509e9cc3e1 unix: fixed compile failure due to warning about unused variable when compilation takes place with -Werror switch 2010-06-10 08:05:29 +00:00
dmitrykos
01f740b882 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 2010-06-06 17:36:33 +00:00
dmitrykos
c8414a679e alsa:
- fixed latency setting dependence on user buffer size, now it is completely independent and user is able to set lowest possible/audible latency (approx. 3-4ms)
 - fixed fixed min. latency for non-MMAPed devices, they do behave similar to MMAPed devices now without a limitation
2010-06-03 20:09:33 +00:00
dmitrykos
d2568e4ae7 wasapi:
- implemented support for full-duplex mode (it always uses polling(pull) 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 (if WASAPI driver does not support mono for output, or only stereo for input)
2010-06-01 17:26:37 +00:00
dmitrykos
d031474d95 alsa: - if polling loop is timed out (paTimedOut) PaAlsaStream_WaitForFrames will not report any frames available 2010-06-01 12:45:09 +00:00
dmitrykos
3e700ec6d2 wasapi:
- implemented support of non-Interlieved buffers (paNonInterleaved) for WASAPI blocking interface for input and output
 - blocking methods will now use PA sample converters
2010-05-31 09:46:49 +00:00
dmitrykos
ddfac9891b alsa: - releasing memory of non-MMAPed buffer on stream closure by Pa_CloseStream 2010-05-31 06:00:16 +00:00
dmitrykos
770a597583 alsa:
- reverted buffer size (2048) hardcoding for non-MMAPed devices to avoid crash on wrong buffer size usage (whole area requires more work)
 - optimized non-MMAPed device operation to avoid malloc(memset)/free usage on every processing call avoiding significant performance penalty
2010-05-30 22:14:00 +00:00
dmitrykos
768ce2169e alsa:
- fixed deadlock in PaAlsaStream_WaitForFrames if device is paused, poll() results are now checked for 0 and if 64 times exceeded an error (paTimedOut) 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
2010-05-30 07:28:41 +00:00
dmitrykos
b565ab5bdd fixed compile for DirectSound implementation under MSYS, missing DSSPEAKER_7POINT1_SURROUND define 2010-05-20 17:28:23 +00:00
dmitrykos
9bb962b93b wasapi:
- re-enabled Event-driven mode for Windows 7 x64 platform if application runs as WOW64 process
2010-05-18 17:23:56 +00:00
dmitrykos
876f5f777c wasapi:
- fixed Event-driven mode, broken in 1496 rev.
2010-05-18 15:02:41 +00:00
dmitrykos
a6485e63cf wasapi:
- using WOW64 workaround (fall-back to a Poll-driven mode) for any WOW64 process regardless of Windows version due to report of same bug under Windows 7 x64
2010-05-17 21:15:13 +00:00
dmitrykos
e7bf9ce49d wasapi:
- fixed object (IAudioRenderClient/IAudioCaptureClient) leak if stream is stopped and restarted without closing
 - improved IAudioClient event handle management on stream restart (not deleting/creating event handle but rather keeping it until stream is closed)
2010-05-17 18:37:00 +00:00
dmitrykos
083b34a10f 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 (with structure deallocation) 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 (playback/capture) by returning paComplete
2010-05-12 18:08:45 +00:00
dmitrykos
6421f964d7 corrected comments to Int24_To_Int16_Dither 2010-04-17 07:43:00 +00:00
dmitrykos
bd2bfe985e implemented 'Int24_To_Int16_Dither' converter to allow 24-bit audio be played (before was silence for WMME and DirectSound) 2010-04-16 19:08:00 +00:00
dmitrykos
50986ea63b wasapi:
- new method PaWasapi_GetFramesPerHostBuffer which allows to get number of input/output frames per host (WASAPI) buffer, this method helps to find out maximal values for PaWasapiHostProcessorCallback
 - documentation fixes
2010-04-16 08:31:19 +00:00
dmitrykos
43146e690e 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 (preferring leak over uninitializing user-side COM)
2010-04-15 17:44:13 +00:00
dmitrykos
8186129234 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
2010-04-15 17:15:14 +00:00
dmitrykos
14d09847a3 wasapi:
- improved device buffer alignment calculation allowing to set as precise device latency as possible
2010-04-12 21:15:50 +00:00
dmitrykos
7d037383bc wasapi:
- fixed crash in Pa_OpenStream call if WASAPI device did not open or something failed (happened on stream handle cleanup due to double attempt to free same pointer)
 - 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 (and all other, including future) systems as well, latency will be corrected to device minimum (usually 3ms).
 - if suggestedLatency is set to 0 in Pa_OpenStream call then WASAPI device will select device default latency (in Exclusive mode it is 10ms, in Shared 20ms)
 - improved on-screen logging of WASAPI devices available during WASAPI initialization phase
2010-04-12 20:55:34 +00:00
dmitrykos
0b75c266df 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 2010-04-11 16:13:46 +00:00
dmitrykos
94c7f9a355 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
2010-04-11 16:04:21 +00:00
dmitrykos
6afe78328f excluded x86-64 platform from ASIO 'thiscall' resolver as x64 ABI does not have 'thiscall' calling convention anymore 2010-04-07 21:07:55 +00:00
dmitrykos
d714962621 wasapi:
- fixed int24 Mono to Stereo mixer (affects Mono streams starting in Exclusive mode)
pa_converters: 
 - avoid using 64-bit integer math for Int24_To_Float32 and Int24_To_Int32 under x64 Posix platforms (long is 64-bit there), now using explicit PaInt32 type
2010-03-25 23:27:27 +00:00
dmitrykos
14a79e0e89 wasapi:
- fixed bug when Exclusive mode was wrongly opening Stereo stream if Mono stream was requested (note: WASAPI device usually does not support Mono in Exclusive mode), 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.
2010-03-24 19:08:38 +00:00
dmitrykos
4f26695b77 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 (infinite wait) It now works fine on 10.6 as it used to on previous OSX version."
2010-03-18 11:26:47 +00:00
dmitrykos
4ba123be9a wasapi: small corrections to improve CoInitialize/CoUninitialize sequence (taken from DS implementation) 2010-03-17 10:37:29 +00:00
dmitrykos
5cf34acdbd updated 'configure' file, many thanks to Stelios Bounanos for generating it 2010-03-16 12:23:13 +00:00
dmitrykos
bf5addedfe wasapi: removed excessive argument checks in stream management functions 2010-03-14 17:25:48 +00:00
dmitrykos
f65b1391e5 wasapi: improved parameter checks for blocking API 2010-03-13 19:13:06 +00:00
dmitrykos
1657fc17d6 wasapi: fixed extension functions: PaWasapi_GetDeviceDefaultFormat / PaWasapi_GetDeviceRole - device index was misinterpreted and as a result returning value was mismatched 2010-03-13 18:53:40 +00:00
dmitrykos
e4c126aab1 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 2010-03-10 21:47:01 +00:00
dmitrykos
b728aecfc0 wasapi: fixed portaudio.vcproj (wrong filename) 2010-03-10 15:03:22 +00:00
dmitrykos
f7a1faa129 wasapi: finished changes of include names for case-sensitive build env. 2010-03-09 15:33:20 +00:00
dmitrykos
adf6d82720 wasapi: renaming file 2010-03-09 15:27:21 +00:00
dmitrykos
15c1e916d4 wasapi: renaming file 2010-03-09 15:26:45 +00:00
dmitrykos
2b64a28af4 wasapi: renaming file 2010-03-09 15:26:05 +00:00
dmitrykos
e945e73ff7 wasapi: renaming file 2010-03-09 15:25:18 +00:00
dmitrykos
dca668d9a4 wasapi: renaming file 2010-03-09 15:24:25 +00:00
dmitrykos
50c880c015 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
2010-03-09 12:29:36 +00:00
dmitrykos
b5e74653c1 wasapi:
- improved debug log output: function name which returned error will be displayed as well
- fixed non-critical compiler warnings
2010-03-08 10:33:58 +00:00
dmitrykos
779ef401ac wasapi: fixed initialization stage of PaWasapi_Initialize() which was returning error if WASAPI wasn't found (for example under Windows XP), this was causing PA's whole initialization to fail completely 2010-03-04 11:02:06 +00:00
dmitrykos
dcf2adaab7 +++ wasapi:
- converted PA WASAPI module to pure C
 - implemented compilation support for GCC [MinGW(32-bit)/MinGW64(64-bit)] compiler, special notes regarding MinGW compilation are included in 'readme.txt' file
2010-03-03 22:57:16 +00:00
dmitrykos
33e54c8adf +++ 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 (default behavior) 2010-03-02 19:08:13 +00:00
dmitrykos
84cdf84588 wasapi:
- removed dependency from strsafe.h
- fixed crash in InitializeHostApis() if PaWasapi_Initialize() failed due to internal WASAPI error (error code was returned as paNoError in such case)
2010-03-02 17:42:36 +00:00
dmitrykos
885ae2d3f3 fixed dummy compilation of pa_win_wasapi.cpp using MinGW(GCC) compilers by adding missing Avrt type 2010-03-02 12:17:03 +00:00
dmitrykos
bb8331b47d +++ wasapi: Event-driven/Full-Duplex/Exclusive mode will be calling user-provided callbacks simultaneously when both input/output buffers are ready for IO 2010-02-26 08:57:44 +00:00