Daniel Schürmann
b37657be70
Remove superfluid void cast
2020-11-27 08:40:45 +01:00
Daniel Schürmann
ccc88607b6
Don't crash if alsa_snd_pcm_poll_descriptors fails
2020-11-12 00:25:34 +01:00
Phil Burk
88c71a6ec4
Merge pull request #338 from hoolrory/ticket_218_2
...
Replace usage of deprecated component manager APIs on 10.6+
2020-10-28 17:32:30 -07:00
Dmitry Kostjuchenko
f1cd56e05b
Merge pull request #341 from PortAudio/winrt
...
wasapi: Fixed compilation with MinGW32 (original mingw32, not mingw-w64).
2020-10-26 22:29:00 +02:00
dmitrykos
b3592b0749
wasapi: Fixed compilation with MinGW (mingw32): gcc version 6.3.0 (MinGW.org GCC-6.3.0-1), include /mingw-include folder explicitly (when compiling with mingw-w64 the /mingw-include folder must not be included).
2020-10-26 21:28:37 +02:00
Dmitry Kostjuchenko
e86babdcb2
Merge pull request #340 from PortAudio/winrt
...
wasapi: Support multiple devices in the device list on Windows UWP/WiRT platform.
2020-10-26 16:49:44 +02:00
dmitrykos
a5fb8d94aa
wasapi: Support multiple devices in the device list on Windows UWP/WinRT platform. All UWP/WinRT functions are now prefixed as PaWasapiWinrt_ to be clearly visible, therefore PaWasapi_SetDefaultInterfaceId() was renamed to PaWasapiWinrt_SetDefaultDeviceId(). Expanded Important notes regarding UWP/WinRT platform and how to make the fully-functional device list with the corresponding pseudo-code example for easier understanding of the functionality.
2020-10-26 16:40:25 +02:00
Hool, Rory
b1a0902852
Replace usage of deprecated component manager APIs on 10.6+
...
These APIs are deprecated in 10.8+ and are disabled on 11.0(10.16)+ https://developer.apple.com/documentation/coreservices/carbon_core/component_manager?language=objc
> "This application, or a library it uses, is using the deprecated Component Manager for hosting Audio Components. This is not supported when rebuilding against the 10.16 or later SDK. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h."
2020-10-22 13:53:56 -04:00
Dmitry Kostjuchenko
da20219f27
Merge pull request #312 from PortAudio/alsa_ignore_all_plugins
...
alsa: Option to ignore all ALSA plugin devices.
2020-10-22 10:34:51 +03:00
dmitrykos
6bb858643b
alsa: Introduce possibility to ignore all ALSA plugin devices by setting the environment variable PA_ALSA_IGNORE_ALL_PLUGINS to non-0. Fixed logic of guarding assertion in BuildDeviceList() when only one or none PCM device is available (may occur if PA_ALSA_IGNORE_ALL_PLUGINS is set to non-0 or when device has no any audio device available, including plugin devices).
2020-10-15 11:05:05 +03:00
Dmitry Kostjuchenko
6a90e596b6
Merge pull request #325 from PortAudio/winrt
...
wasapi: Refactored device list creation, if faulty audio device is re…
2020-10-10 00:43:32 +03:00
dmitrykos
522f982158
wasapi: Refactored device list creation, if faulty audio device is reported as active by WASAPI then it will not break device list creation, silenced warnings when compiling for UWP platform.
2020-10-10 00:42:20 +03:00
Dmitry Kostjuchenko
3913a95a9b
Merge pull request #324 from PortAudio/winrt
...
wasapi: Replace tabs with 4-spaces to comply with PortAudio code styl…
2020-10-09 00:59:40 +03:00
dmitrykos
aa6ff975af
wasapi: Replace tabs with 4-spaces to comply with PortAudio code style guidelines ( http://github.com/PortAudio/portaudio/wiki/ImplementationStyleGuidelines ).
2020-10-09 00:57:23 +03:00
Ross Bencina
19f638da5a
wdmks: ensure that pins that failed creation by PinNew() are set to NULL. Note that PaUtil_AllocateMemory currently calls GlobalAlloc without the GMEM_ZEROINIT flag, so there was no guarantee that filter->pins[pinId] was zero.
2020-10-08 12:03:47 +11:00
dmitrykos
dcc2f7fa48
wasapi: Fix paInvalidSampleRate (and any other) error code is replaced with paInvalidDevice if audio client failed to be created due to some reason.
2020-10-03 23:21:11 +03:00
dmitrykos
697fcddce5
wasapi: Improve stability of playback in Polling Shared mode with a low host latency requsted (22 ms):
...
- Implement workaround for system timer coarse granularity causing underruns by using timeBeginPeriod/timeEndPeriod APIs inside the Event and Poll thread handlers.
- Update next sleep time of the Poll rendering loop dynamically depending on time taken for processing/rendering of audio data into the available host buffer to avoid underruns and fit processing time into periodic polling time slots.
- Add support for time slots logging in Poll mode if PA_WASAPI_LOG_TIME_SLOTS is defined. Fixed audible glitches by preloading the whole host buffer before stream is started.
- Fix audible glitches on stream start by preloading the whole host buffer before stream is started.
2020-10-03 22:55:36 +03:00
Svein Seldal
9ebe293dc5
Implement fix for glitching WASAPI playback #303
2020-09-27 18:28:19 +02:00
Ross Bencina
f828ad5fdc
Merge branch 'alsa_uninitialized_dir_fixes' into 'master'
...
Fix additional cases of uninitialized dir variable in pa_linux_alsa.c
+1: Phil Burk
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7613051
2020-08-06 00:25:37 +00:00
Ross Bencina
b107f0853a
Merge branch 'ticket_263_alsa_uninitialized_var_2' into 'master'
...
Fix uninitialized dir variable in pa_linux_alsa.c (Version 2)
+1: Ross Bencina, Phil Burk
Merged-on: https://assembla.com/code/portaudio/git/merge_requests/7612921
2020-08-06 00:23:46 +00:00
dmitrykos
799a6834a5
wasapi: Fixed OSVERSIONINFO initialization (patch provided by Carlo Bramini).
2020-03-26 20:05:53 +02:00
Ross Bencina
f269bf93e6
follow up fix related to 933b05c331 (ticket #263 uninitialized dir variable): fix the three other places where dir parameter wasn't set prior to entry to a snd_pcm_*_get_* function. There is some ambiguity about (a) whether this is intentional (i.e. use the rounding dir returned by previous *_get_* call, the PA source code does not indicate), and (b) whether it is meaningful (i.e. whether *_get_* functions actually use the value upon input -- the ALSA docs are not clear. regarding (a): I don't think it's intentional, i think it was just oversight. In any case thr risk is low: the underlying values of period_size, periods_max, periods_min, are all integer and should not be rounded, get_rate_min/get_rate_max are used only for debug reporting (I've set them to 0,0 for a minimal change from the current code, but -1,1 makes more sense).
2019-05-14 07:36:24 +10:00
Ross Bencina
933b05c331
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-14 07:00:47 +10: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
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
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
dmitrykos
eb4a7d25dc
wasapi: fixed callback not called for Input stream if 1 channel format is requested
2018-09-23 20:44:21 +03:00
dmitrykos
5dec767af1
wasapi: fixed crash on NULL
2018-09-10 23:09:44 +03: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
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
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
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