Commit graph portaudio/src
Author SHA1 Message Date
dmitrykos
999ca47aeb wasapi: Check for the supported Windows version explicitly in PaWasapi_Initialize() and avoid relying on existence on avrt.dll for detecting the compatible platform (user could provide avrt.dll stub that will break initialization of the library if OS version does not support WASAPI backend). 2021-08-05 20:23:39 +03:00
John Melas
16884fc201
Unify all stringizing macros to new PA_STRINGIZE macro in pa_util.h (#605) 2021-07-01 10:19:21 +10:00
John Melas
038a696aec
pa_win_wmme.c: replace LPCTSTR with LPCWSTR (#597) 2021-06-23 10:15:57 +10:00
Trent Piepho
d859f7d5df
Have PaUtil_GetTime() use monotonic time on Unix (#559)
The currently used clock, CLOCK_REALTIME, will have discontinuous jumps, forward
and backward, when the system clock is adjusted.  This is bad for synchronizing
audio.  CLOCK_MONOTONIC does not have jumps, and never moves backward, but does
have the continuous adjustments done by NTP to increase clock accuracy.

Since kernel 2.6.25 ALSA has use CLOCK_MONOTONIC by default for timestamps
(commit b751eef1 from Dec 13 2007).  This change means the timestamps provided
in the PA callbacks can be compared to PaUtil_GetTime(), which currently does
not work.

The function used on MacOS, mach_absolute_time(), behaves like CLOCK_MONOTONIC.

If the system does not have CLOCK_MONOTONIC, fallback to CLOCK_REALTIME, which
is what alsa-lib does for such systems.  Which at this point would need to be
very old.

* Use clock monotonic for condition variable

This is necessary to match PaUtil_GetTime() also using the monotonic
clock.  Otherwise the wait time, derived from that function, will be
completely incorrect.

This will also fix an obscure flaw if the system clock is adjust while
waiting for the stream to open, it might not wait at all and fail or
wait (effectively) forever instead of timing out, depend on the
adjustment direction.
2021-06-08 17:52:32 -07:00
John Melas
52a78c72f3
Unify windows error processing into a single PaWinUtil_SetLastSystemErrorInfo function (#495) 2021-06-09 10:43:40 +10:00
Phil Burk
8124f82f5c
alsa: init stream variable in pa_linux_alsa.c (#584)
Prevent compiler warnings.

Alternative to #567
2021-06-08 17:19:44 -07:00
Phil Burk
2bd663ca75
pa_mac_core.c: init streamLatency and others (#591)
Prevent compiler warnings.
2021-06-08 17:06:48 -07:00
Trent Piepho
9413fa051f
Alsa: Use hires timestamps (#560)
ALSA added nanosecond timestamps in library version 0.9.1.  Use these
instead of microsecond timestamps for reporting audio timestamps as well
as underrun/overrun times.

alsa-lib version 0.9.1 was released on Mar 11 2003.  I had fallback code
to use non-hires timestamps, but after 18 years it didn't seem
necessary, and I removed it from this commit.
2021-06-02 18:03:42 -07:00
MonkeybreadSoftware
840489460f
alsa: Increase snprintf buffer size to fix warning (#566)
Avoid compiler warning suggesting the buffer is too small:

../PortAudioLib/portaudio/src/hostapi/alsa/pa_linux_alsa.c: In function 'BuildDeviceList.constprop':
../PortAudioLib/portaudio/src/hostapi/alsa/pa_linux_alsa.c:1304:45: warning: '%s' directive output may be truncated writing up to 49 bytes into a region of size between 46 and 50 [-Wformat-truncation=]
             snprintf( buf, sizeof (buf), "%s%s,%d", hwPrefix, alsaCardName, devIdx );
                                             ^~                ~~~~~~~~~~~~
../PortAudioLib/portaudio/src/hostapi/alsa/pa_linux_alsa.c:1304:42: note: directive argument in the range [0, 2147483647]
             snprintf( buf, sizeof (buf), "%s%s,%d", hwPrefix, alsaCardName, devIdx );
                                          ^~~~~~~~~
../PortAudioLib/portaudio/src/hostapi/alsa/pa_linux_alsa.c:1304:13: note: 'snprintf' output between 3 and 65 bytes into a destination of size 50
             snprintf( buf, sizeof (buf), "%s%s,%d", hwPrefix, alsaCardName, devIdx );
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-05-13 10:36:10 +10:00
Be
febd58ebba
MME: fix comparison of IO buffer sizes in CalculateBufferSettings() (#571)
Pull in fix from Audacity: https://bugzilla.audacityteam.org/show_bug.cgi?id=1969

The problem was some kind of typo, comparing pointers instead of the values of pointers.
2021-05-13 10:17:10 +10:00
Dmitry Kostjuchenko
39bfe6c63d
Merge pull request #552 from PortAudio/winrt
wasapi: Fixed compilation with MinGW (W64)
2021-04-29 09:27:50 +03:00
John Melas
aa053464eb
[macOS] drop support for 10.5 (#511)
* drop support for 10.5

* more documentation fixes

Co-authored-by: John Melas <john@jmelas.gr>
2021-04-28 17:38:18 -07:00
dmitrykos
c6178e8592 wasapi: Fixed compilation with MinGW (W64) when targeting 32-bit platform 2021-04-15 11:39:02 +03:00
Ross Bencina
147dd72254
Improve JACK regex pattern escape code (see ticket #534). Improves previously merged PR #405 master commit eec7bb7 by performing string conversion directly in to the target buffer, thus avoiding one allocation and one strncpy per client/device name. (#536) 2021-03-31 17:17:30 -07:00
Be
eec7bb7397
JACK PipeWire fixes (escape regex chars) (#504)
This patch fixes a problem caused by special regex characters
appearing in the device names when using the Jack interface to PipeWire.

It is uncommon for JACK ports to have any characters that need to
be escaped in a regex. jackd simply calls the audio interface
"system". However PipeWire uses the device name from ALSA for the
JACK port names. If this contains any special regex characters,
BuildDeviceList would find the device but determine it has 0
input channels and 0 output channels. In my case, I have an RME
Babyface Pro which puts its serial number in parentheses:

$ aplay -l
card 0: Pro70785713 [Babyface Pro (70785713)], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
2021-03-19 10:51:31 -07:00
Phil Burk
3f7bee79a6 Bump version to 19.7.0 2021-03-07 07:33:41 -08:00
petris
793c7ffc18 WASAPI final whitespace fix 2021-02-24 17:34:47 -08:00
Ross Bencina
79932a5919
Clean up whitespace in src/hostapi/coreaudio in preparation for .editorconfig. (#502)
* Clean up whitespace in src/hostapi/coreaudio in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure only one EOL at EOF.
2021-02-18 12:11:14 +11:00
Francesco Lamonica
9ef2c28bb8 fixed VS2010 compilation 2021-02-16 23:15:53 +01:00
dmitrykos
712685c71a wasapi: Fixed compilation for UWP platform, minor cleanup and refactoring. 2021-02-16 12:43:58 +02:00
dmitrykos
7926e3a8ee wasapi: Fixed glitchy audio in case of Exclusive mode, 24-bit packed format and USB DAC (other audio devices using the same audio format could be affected too). 2021-02-16 12:15:00 +02:00
Phil Burk
0ac93f8634 coreaudio: remove pa_mac_core_old.c
It has not been used for years.

Fixes #493
2021-02-12 08:13:07 -08:00
MichalPetryka
73291bb1f5
Cleanup newlines at EOF in oss (#491) 2021-02-11 14:02:46 +11:00
MichalPetryka
94e4cf69c3
Cleanup newlines at EOF in dsound (#490) 2021-02-11 14:02:22 +11:00
Phil Burk
fa42d1284e macos: consider major version 11
Change version logic to allow for major 11 or later.

Partial fix for #492
2021-02-10 17:11:52 -08:00
Peter Ross
38eba25bcc WASAPI: Add PaWaspi_GetIMMDevice function
The IMMDevice pointer enables access to audio device capabiltiies not exposed by PortAudio.
https://docs.microsoft.com/en-us/windows/win32/api/mmdeviceapi/nn-mmdeviceapi-immdevice
2021-02-10 08:10:21 +11:00
Ed Maste
607b7d94d0
OSS: support 32-bit signed format AFMT_S32_NE (#462)
It may not be provided by all OSS implementations, so wrap the cases in
`#ifdef AFMT_S32_NE`.
2021-02-04 13:11:03 +11:00
MichalPetryka
9a5c7cb346
Cleanup newlines at EOF in skeleton (#480) 2021-02-04 12:20:11 +11:00
MichalPetryka
74fa59a036
Cleanup newlines at EOF in src/os/win (#481) 2021-02-04 12:19:45 +11:00
MichalPetryka
b5a55169b9
Cleanup newlines at EOF in src/common (#482) 2021-02-04 12:19:23 +11:00
MichalPetryka
67dc808f69
Cleanup newlines at EOF in src/hostapi/asio (#483) 2021-02-04 12:18:29 +11:00
Ross Bencina
d36033d5da
Clean up whitespace in src/hostapi/wasapi in preparation for .editorconfig. Indent by 4 spaces. Strip trailing whitespace. (#477) 2021-02-04 12:17:29 +11:00
Ross Bencina
bfb9b7f7e7
Clean up whitespace in src/hostapi/wdmks in preparation for .editorconfig. Indent by 4 spaces. Strip trailing whitespace. (#476) 2021-02-04 12:17:16 +11:00
Ross Bencina
3686f2f053
Clean up whitespace in src/hostapi/alsa in preparation for .editorconfig. Indent by 4 spaces. (#475) 2021-02-04 12:17:00 +11:00
Davide Gerhard
813b281826 pa_mac_core.c: add missing definition to fix build on older systems
thanks to @kencu
2021-01-31 09:08:05 -08:00
luz paz
52b1026c1f Fix user-facing and non-user-facing typos
Found via `codespell v2.1.dev0`  
`codespell -q 3 -L chello,gord,guid,numer,pres,uint,wirth`
2021-01-27 17:40:26 -08:00
John Melas
b50bca981e
use variadic arguments in DEFINE_GUID also for MSVC (#374)
The fix for DEFINE_GUID that was recently added in pa_win_wdmks.c is also needed for the MSVC compiler.
Latest versions of the compiler support the /Zc:preprocessor option which is conforming to C99 and later standards
https://docs.microsoft.com/en-us/cpp/build/reference/zc-preprocessor?view=msvc-160
so it generates the exact same error as Clang (too many arguments error).

Co-authored-by: John Melas <john@jmelas.gr>
2021-01-28 12:29:24 +11:00
Ross Bencina
b251bdd7f8
Clean up whitespace in src/os/unix in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF. (#410) 2021-01-21 23:27:43 +11:00
Ross Bencina
4c673d1f2b
Clean up whitespace in src/os/win in preparation for .editorconfig. (#409)
* Clean up whitespace in src/os/win in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF.
2021-01-21 23:23:00 +11:00
Ross Bencina
fac71001ee
Clean up whitespace in src/common in preparation for .editorconfig. (#408)
* Clean up whitespace in src/common in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace.
2021-01-21 23:06:08 +11:00
Ross Bencina
af9f4e3e19
Clean up whitespace in pa_win_wmme.c in preparation for .editorconfig (#413)
* Clean up whitespace in pa_win_wmme.c in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF.

* vertically align trailing comments on 4 space boundary
2021-01-21 22:46:49 +11:00
Ross Bencina
fd4cebf2cb
Clean up whitespace in src\hostapi\dsound in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF. (#412) 2021-01-21 22:32:05 +11:00
Ross Bencina
f476839ab8
Clean up whitespace in pa_asio.cpp in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF. (#411) 2021-01-21 22:17:17 +11:00
Ross Bencina
20a971df57
Clean up whitespace in src/hostapi/{asihpi, jack, oss, skeleton} in preparation for .editorconfig. (#414)
* Clean up whitespace in src/hostapi/{asihpi, jack, oss, skeleton} in preparation for .editorconfig. Convert tabs to 4 spaces. Indent by 4 spaces. Strip trailing whitespace. Ensure EOL at EOF.

* Additional formatting cleanups.
2021-01-21 21:58:54 +11:00
John Melas
51e075d3dc alignment fixes 2021-01-20 18:21:30 -08:00
John Melas
9a1fa58773 remove todo comments 2021-01-20 18:21:30 -08:00
John Melas
ac76dea010 pass input size in AudioConverterFillComplexBuffer as number of packets 2021-01-20 18:21:30 -08:00
John Melas
61c402f941 fix ringBufferIOProc 2021-01-20 18:21:30 -08:00
John Melas
1d3a239fd0 remove support for OS X 10.4, rename functions pa_ -> PaMacCore_ 2021-01-20 18:21:30 -08:00
John Melas
f4ca438599 formatting and #ifdef comment 2021-01-20 18:21:30 -08:00