Ross Bencina
4dea694220
rename pa_linux_alsa.c local function GropeDevice() to more descriptive DetermineDeviceInfos(). update related comments.
2019-05-12 22:18:05 +10:00
Ross Bencina
22a233161f
set dir=0 prior to passing its address in to ALSA function in _PA_LOCAL_IMPL(snd_pcm_hw_params_get_buffer_size_max) as is done elsewhere in the code. mark all places in the code where dir is not set dir=0 prior to passing in to ALSA function (i.e. where the previous value returned by ALSA is used. Are these omissions or is it intentional to use the rounding mode of the previous call?
2019-05-12 22:01:29 +10:00
Ross Bencina
4864792140
fix uninitialized dir variable in pa_linux_alsa.c GropeDevice() by removing it. pass NULL as parameter to ALSA functions instead. see ticket #263 .
2019-05-12 21:38:30 +10:00
Phil Burk
c5d2c51bd6
Merge branch 'removeasio' into 'master'
...
asio: remove unnecessary ASIO SDK files
+1: Phil Burk
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7559751
2019-04-26 16:48:28 +00:00
Phil Burk
ab665735ad
asio: remove unnecessary ASIO SDK files
...
These files should be obtained directly from Steinberg.
2019-04-26 09:43:52 -07:00
Dmitry Kostjuchenko
eb6b5e2598
Merge branch 'winrt' into 'master'
...
WASAPI: Add paWinWasapiAutoConvert flag, which sets AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM | AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY for Shared mode streams.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7481081
2019-04-05 07:42:43 +00:00
dmitrykos
c40b969e1b
wasapi: some cleanup of Jörn Heusipp's patch
2019-04-05 10:38:44 +03:00
Jörn Heusipp
aa0748a5b5
wasapi: Add paWinWasapiAutoConvert flag, which sets AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM | AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY for Shared mode streams.
...
AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM is required in order to allow for sample rates other than the system mixer configured sample rate. Otherwise, WASAPI is limited to a single system configured sample rate in Shared mode, which is a severe limitation compared to other APIs supported by PortAudio.
AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY is recommended to be used additionally.
See <https://docs.microsoft.com/en-us/windows/desktop/coreaudio/audclnt-streamflags-xxx-constants > for documentation.
GetClosestFormat is modified to exit early when paWinWasapiAutoConvert is set in Shared mode because we trust the WASAPI conversions to succeed.
We restrict these changes to Windows 7 (and later) because documentation does not clearly state the minimum required Windows version. Windows Vista was not available for testing.
This patch has been in production in OpenMPT (<https://openmpt.org/ >) since version 1.27.01.00 (2017-09-27). PortAudio WASAPI Shared mode is the default output device type in OpenMPT for Windows 7 (and later) and also for Wine setups.
2019-04-05 10:02:17 +03:00
Dmitry Kostjuchenko
d7229de83b
Merge branch 'winrt' into 'master'
...
WASAPI: Fix failing with unsupported format error if PaWasapiStreamCategory is other than default
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7376301
2019-04-05 06:53:39 +00:00
dmitrykos
d99940b26e
wasapi: set IAudioClient2+ properties before GetClosestFormat() in order to avoid failing with unsupported format error if PaWasapiStreamCategory is other than default, for example eAudioCategorySpeech
2019-03-09 12:43:14 +02:00
Dmitry Kostjuchenko
7bfa11f463
Merge branch 'winrt' into 'master'
...
WASAPI: Improved audio output stability in Exclusive mode for some UAC2 DACs
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7327181
2019-02-23 21:04:57 +00:00
dmitrykos
96f81c0ec1
wasapi: Improved audio output stability in Exclusive mode for some UAC2 DACs with custom USB Audio driver by calculating buffer periodicity being equal (or almost equal) to the requested user frames (Capturing is excluded from this implementation as it has not yet been tested but can be included if tests show the improvement), cleanup/refactor some code to make it better readable
2019-02-23 23:02:38 +02:00
Dmitry Kostjuchenko
b7870b08f7
Merge branch 'winrt' into 'master'
...
WASAPI: new API PaWasapi_SetStreamStateHandler(), header cleanup and minor fix
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7129721
2018-12-24 12:22:35 +00:00
dmitrykos
83ab55b62d
wasapi: new API PaWasapi_SetStreamStateHandler() to be able to catch WASAPI error inside the rendering thread loop (and handle it gracefully, for example restart the stream), protect from dangling pointer during device list update, cleanup header
2018-12-24 14:20:29 +02:00
Etienne Dechamps
76e31c2a24
Merge branch 'winbuild' into 'master'
...
Improvements to CMake build system on Windows
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7040151
2018-12-15 15:06:22 +00:00
Etienne Dechamps
95e86c307b
Install pa_win_waveformat.h with MME, DirectSound and WASAPI.
...
pa_win_wmme.h, pa_win_ds.h and pa_win_wasapi.h all include
pa_win_waveformat.h. If the latter is not installed, none of these
headers are usable.
2018-12-15 15:04:20 +00:00
Etienne Dechamps
0baa1e2e31
Treat DirectSound just like any other standard Windows SDK library.
...
Currently the CMake build system goes through complicated logic to
find the DirectX SDK. This is completely unnecessary, because modern
versions of the Windows SDK include dsound.h and dsound.lib in the
standard paths, so it can be treated just like the other Windows OS
libraries and we can safely assume it is available.
This commit simplifies the logic and will allow the vcpkg portaudio
port to align with portaudio stream, by getting rid of this patch:
95f9ce56f3/ports/portaudio/find_dsound.patch
I have verified that PortAudio CMake still builds with this commit
with the following toolchains:
- Windows Visual Studio 2017 native CMake support
- mingw-w64 on Windows (msys2)
- mingw-w64 cross-compiling from Debian Unstable
2018-12-15 15:04:20 +00:00
Dmitry Kostjuchenko
dfd780389b
Merge branch 'winrt' into 'master'
...
WASAPI: relax latency check in Exclusive mode when switching from Event to Poll mode
+1: Etienne Dechamps
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7097201
2018-12-12 21:39:57 +00:00
dmitrykos
7572245aec
wasapi: relax check for a latency range when deciding to switch from Event to Poll mode to have 1-21 ms range fine tuneable, add check for a min period when correcting period for UAC1 devices to avoid failure to initialize audio client due to invalid period error
2018-12-12 23:29:44 +02:00
Dmitry Kostjuchenko
b22a83a600
Merge branch 'winrt' into 'master'
...
WASAPI: fix rare case when Shared Mode format obtained by PKEY_AudioEngine_DeviceFormat not accepted by WASAPI
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7085071
2018-12-10 08:52:59 +00:00
dmitrykos
d74ea7b610
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
2018-12-10 10:50:31 +02:00
Dmitry Kostjuchenko
0cdb346fdc
Merge branch 'winrt' into 'master'
...
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
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6928491
2018-10-21 10:24:52 +00:00
dmitrykos
57b98d5a8c
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
2018-10-21 13:21:28 +03:00
Nicholas Appleton
05994e022d
Merge branch 'cmake_mingw_additions' into 'master'
...
commit Rainer's work and make some minor modifications to the top-level cmakelists to make visual studio happy
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/4858113
2018-10-21 04:14:22 +00:00
Nick Appleton
365163674b
update cmake documentation
2018-10-12 22:43:17 +11:00
Nicholas Appleton
294881a1b9
fix typo
2018-10-04 20:09:08 +10:00
Nick Appleton
495b303bbd
Merge branch 'cmake_mingw_additions' of https://git.assembla.com/portaudio into cmake_mingw_additions
2018-10-02 21:55:27 +10:00
Nick Appleton
d3e00091c7
create and install cmake export targets to make it easier for people to include portaudio in larger projects:
2018-10-02 21:54:44 +10:00
Nicholas Appleton
ea11061b20
commit Rainer's work and make some minor modifications to the top-level cmakelists to make visual studio happy
2018-10-02 21:54:44 +10:00
Nick Appleton
396c189c01
create and install cmake export targets to make it easier for people to include portaudio in larger projects:
2018-10-02 21:53:41 +10:00
Dmitry Kostjuchenko
4f6fd67c3f
Merge branch 'winrt' into 'master'
...
WASAPI: Fixed callback not called for Input stream if 1 channel format is requested.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6838604
2018-09-23 17:46:21 +00:00
dmitrykos
eb4a7d25dc
wasapi: fixed callback not called for Input stream if 1 channel format is requested
2018-09-23 20:44:21 +03:00
Dmitry Kostjuchenko
c0d239712d
Merge branch 'winrt' into 'master'
...
WASAPI: Fixed crash on NULL.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6794444
2018-09-10 20:11:26 +00:00
dmitrykos
5dec767af1
wasapi: fixed crash on NULL
2018-09-10 23:09:44 +03:00
Dmitry Kostjuchenko
b2f6d82342
Merge branch 'winrt' into 'master'
...
WASAPI: Fixed input device can not be opened in Exclusive mode (regression of previous commit).
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6794374
2018-09-10 19:57:42 +00:00
dmitrykos
fe2c8e1f42
wasapi: fixed input device can not be opened in Exclusive mode (regression of previous commit)
2018-09-10 22:55:27 +03:00
Dmitry Kostjuchenko
9a8922da23
Merge branch 'winrt' into 'master'
...
WASAPI: Support for Exclusive mode on UWP, private API extension, fixes.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6785374
2018-09-06 17:52:14 +00:00
dmitrykos
c3fee03ff1
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.
2018-09-06 20:45:22 +03:00
Phil Burk
8a8078a9ba
Merge branch 'ticket_274_xcode' into 'master'
...
configure: support SDK 10.13 in XCode
fixed #274
+1: Ryan Ollos
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6183813
2018-08-19 21:16:00 +00:00
Dmitry Kostjuchenko
69d1b1e3cc
Merge branch 'winrt' into 'master'
...
WASAPI: Fixed compilation error of PaWasapi_GetAudioClient().
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6638133
2018-07-19 18:47:52 +00:00
dmitrykos
d7a4cb482d
wasapi: fixed compilation error of PaWasapi_GetAudioClient()
2018-07-19 21:42:21 +03:00
Dmitry Kostjuchenko
64ad96ea3c
Merge branch 'winrt' into 'master'
...
New PaWasapi_GetAudioClient() API and workaround to get real Windows version and thus use correct AudioClient interface version.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6574173
2018-07-01 10:04:04 +00:00
dmitrykos
a802290e83
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())
2018-06-30 12:21:59 +03:00
Phil Burk
8dc6d59877
Merge branch 'ticket_275_pass_void' into 'master'
...
Add void argument to Pa_GetVersionInfo()
+1: Anonymous
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6415893
2018-05-26 04:49:10 +00:00
DaShun
c5e8f1dca7
Add asio lib.
2018-04-17 11:36:55 +08:00
Dmitry Kostjuchenko
3215043f0d
Merge branch 'winrt' into 'master'
...
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()
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/6241053
2018-04-02 19:16:19 +00:00
dmitrykos
d3e65ce690
wasapi: correction to PaWasapi_UpdateDeviceList() API by making it unavailable by default unless PA_WASAPI_MAX_CONST_DEVICE_COUNT is explicitly defined
2018-04-02 22:15:49 +03:00
Dmitry Kostjuchenko
9923e1dc31
Merge branch 'winrt' into 'master'
...
WinRT: fixed failure to initialize WASAPI when Capture device is not provided by OS, and additional minor corrections.
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/5913713
2018-04-02 18:55:13 +00:00
dmitrykos
eb62287494
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().
2018-04-02 21:50:16 +03:00
Phil Burk
6e3f6b702f
configure: support SDK 10.13 in XCode
...
Updated configure.in
then ran autoconf to regenerate the configure script.
Fixes #274
2018-03-18 15:30:36 -07:00