dmitrykos [Mon, 10 Dec 2018 08:50:31 +0000 (10:50 +0200)]
wasapi: get channels count and sample rate from a mix format (IAudioClient::GetMixFormat) for a PaDeviceInfo to circumvent rare cases when WASAPI does not accept format provided PKEY_AudioEngine_DeviceFormat due to a wrong channel count (bug and solution reported by Etienne Dechamps (edechamps), discussion: http://app.assembla.com/spaces/portaudio/git/merge_requests/7024281), new PaWasapi_GetDeviceMixFormat API to get mix format provided by IAudioClient::GetMixFormat
dmitrykos [Sun, 21 Oct 2018 10:21:28 +0000 (13:21 +0300)]
wasapi: fixed MonoToStereo converter could write beyond the allowed memory region if sample format is packed 24-bit integer, fixed DEF file by adding missing WASAPI API
wasapi: support Exclusive mode on UWP (use new function PaWasapi_SetDefaultInterfaceId to set device's interface id to make Exclusive mode work);
- support for explicit 8.24 format (24-bit inside 32-bit container) by specifying paCustomFormat (see IMPORTANT notes in the header file);
- new flag paWinWasapiExplicitSampleFormat to force explicit format and avoid fallback to a closest working;
- new function PaWasapi_GetDeviceCurrentFormat to get device format of the opened stream;
- support PaWasapi_ThreadPriorityXXX API on UWP to boot thread priority;
- improved selection of the closest format in Exclusive mode.
dmitrykos [Sat, 30 Jun 2018 09:21:59 +0000 (12:21 +0300)]
wasapi: new PaWasapi_GetAudioClient() API to get pointer to IAudioClient from PaStream, workaround to get real Windows version in order to be able to create correct version of IAudioClient interface (Windows 10 was reported as Windows 8 when using just GetVersion())
wasapi: new WASAPI specific API PaWasapi_UpdateDeviceList() which allows to update WASAPI device list dynamically without a need to call Pa_Terminate() and then Pa_Initialize()
wasapi: correction to PaWasapi_UpdateDeviceList() API by making it unavailable by default unless PA_WASAPI_MAX_CONST_DEVICE_COUNT is explicitly defined
wasapi: new WASAPI specific API PaWasapi_UpdateDeviceList() which allows to update WASAPI device list dynamically without a need to call Pa_Terminate() and then Pa_Initialize().
This new implementation overcomes current limitation of Pa_GetDeviceCount() API which gives constant device count by making WASAPI device list constant (32 devices by default) where 32 device slots can either be filled with a real device info or be empty for a future device changes.
Constant device list size can be altered by PA_WASAPI_MAX_CONST_DEVICE_COUNT define during a compile time. If PA_WASAPI_MAX_CONST_DEVICE_COUNT is set to 0 then PaWasapi_UpdateDeviceList() will be unavailable as well as dynamic device list update functionality.
This implementation also detects the audio device format change if user alters it via Windows Audio Controller GUI.
This implementation also makes WASAPI backend ready for a future implementation of device list updates via PortAudio public API. See internal PaError UpdateDeviceList().
dmitrykos [Mon, 29 May 2017 19:44:36 +0000 (22:44 +0300)]
wasapi: corrected GetWindowsVersion() to return Windows 10 (was max Windows 8)
wasapi: use IAudioClient3 for Windows 10 for best compatibility
wasapi: fix compilation when Windows 10 SDK (10.0.15063.0) is used by removing SignalObjectAndWait() definition which creates duplicates with the system defined SignalObjectAndWait() (since 10.0.15063.0 it is supported by the OS again)
Ross Bencina [Sun, 25 Sep 2016 07:34:16 +0000 (17:34 +1000)]
Fix formatting of version API doxygen comments in portaudio.h. Add additional documentation details, see also, and version information (e.g. `Available as of 19.5.0`).
Phil Burk [Sat, 24 Sep 2016 15:53:28 +0000 (08:53 -0700)]
pa_mac_core: fix whitespace and missing semicolon
It compiled without the semicolon because it was followed by a VDBUG,
which was followed by a semicolon. The VDBUG was disabled so its
semicolon finished the line above.
Ross Bencina [Fri, 23 Sep 2016 08:49:00 +0000 (18:49 +1000)]
Doxygen document tweaks: * Link to our Wiki for latest MinGW build information. * Fix for latest doxygen: non-displaying links on main page (add space before <br>). * Remove broken link to java binding docs (not compiled). * Update link to mailing list.
Nick Appleton [Thu, 15 Sep 2016 12:52:44 +0000 (22:52 +1000)]
address all problems picked up by cmakelint except for line-length related comments. don't use min() in paex_record_file as it is a macro specific to windows.
only build x86 plain converters in Visual Studio due because of assembly syntax. add library dependencies for asio to get MinGW builds linking. disable WASAPI when using MinGW as I cannot get it to work.
dmitrykos [Mon, 29 Aug 2016 06:54:49 +0000 (09:54 +0300)]
wasapi: return E_NOINTERFACE in PaActivateAudioInterfaceCompletionHandler::QueryInterface, use C-style API for calling interface functions (in order to be unified with the rest of WASAPI code)
dmitrykos [Sun, 14 Aug 2016 16:01:20 +0000 (19:01 +0300)]
wasapi: more cleanup - normalized WIN32_WINRT to PA_WINRT, removed excessive declarations from SignalObjectAndWait, ActivateAudioInterfaceCompletionHandler set of functions
dmitrykos [Sun, 14 Aug 2016 07:52:36 +0000 (10:52 +0300)]
wasapi: use Windows common Sleep() API instead of PA_Sleep()
use GetTickCount64() API which is awailable for Windows Store app instead of _ftime_s()
remove WAVEFORMAT and WAVEFORMATEX declaration and use the corresponding Windows include file instead
dmitrykos [Wed, 3 Aug 2016 19:39:41 +0000 (22:39 +0300)]
wasapi: ported to WinRT (UWP)
os: compatibility fixes for compilation of PortAudio as Windows Store library (only WASAPI hostapi is compatible with Windows Store APIs)
philburk [Mon, 4 Jan 2016 17:22:00 +0000 (17:22 +0000)]
Add support for 10.11 SDK so PortAudio can compile on Mac.
Also allow deprecated APIs until we can remove them.
Note that this commit only includes the source files that were changed.
The next commit will include the files that are generated by autoreconf.
So look at this commit to see what really changed.
dmitrykos [Tue, 20 Oct 2015 16:02:39 +0000 (16:02 +0000)]
wasapi: workaround to avoid PaWasapi_Initialize() failure when enumerating devices and device fails to report min/default periods with IAudioClient::GetDevicePeriod(): ignore error and assign WASAPI common known period values for min/default
dmitrykos [Mon, 19 Oct 2015 11:03:31 +0000 (11:03 +0000)]
wasapi: support for setting the WASAPI's AudioClientProperties options via PaWasapiStreamInfo struct (__IAudioClient2_INTERFACE_DEFINED__ must be defined by Windows SDK (for Windows 8 and up) to have effect from these new options, otherwise it will be noop)