Paul Adenot
4b4d18a70f
AAudio: remove unused header
2023-11-10 11:31:35 +01:00
Paul Adenot
ce3645e65c
Reset thread id when a new stream is created, in OpenSL backend
...
This is not 100% correct, but prevents crashing on an assert in the very
common case of opening multiple streams back to back with logging
enabled.
2023-11-10 11:31:35 +01:00
Paul Adenot
72ded59b4d
Fix output buffer conversion: handle differing channel count between input and output
2023-11-10 11:31:35 +01:00
aeiouaeiouaeiouaeiouaeiouaeiou
a0e8b8e49a
CI: update actions/checkout to v4
2023-11-10 23:12:31 +13:00
Paul Adenot
d07ea5aa66
Fix mistake break audio input on OpenSL ES
2023-11-08 14:42:49 +01:00
Andreas Pehrson
785a3ca155
In test_duplex loop back all input frames
...
The break removed here makes sense for input-only, where breaking has no
side effects. In a loopback duplex case like here it makes the callback
exit early, before having written all frames. This can be caused by
clipping on the input side (as observed on MacOS) and creates a
distortion that sounds terrible.
2023-11-07 12:04:32 +13:00
Paul Adenot
5f0d17373b
AAudio: ensure input buffer is large enough when reading input data
2023-10-26 11:43:35 +02:00
Paul Adenot
75d5e6a040
Return an error if failing to open a recorder and it's not a sample-rate not supported issue
2023-10-24 11:11:47 +02:00
Paul Adenot
f1bfefbbd4
Actually use the return value in initialize_with_format callback call.
2023-09-26 15:23:21 +13:00
Paul Adenot
f9c118ddc0
Use uint64_t for the samplerate in opensl_stream_get_position to avoid overflow
2023-09-15 16:14:22 +02:00
Paul Adenot
3f86a06fce
Generate compile_commands.json while building
2023-08-25 20:09:58 +02:00
Paul Adenot
46f10c2eea
Handle input side
2023-08-25 20:09:58 +02:00
Paul Adenot
ed468c2a47
Refactor conversion and format setting logic
2023-08-25 20:09:58 +02:00
Paul Adenot
cd4effa91a
OpenSLES and related file: clang-format
2023-08-25 20:09:58 +02:00
Paul Adenot
510266b364
OpenSLES: clang-format
2023-08-25 20:09:58 +02:00
Paul Adenot
4dfcbd32fd
OpenSLES: Fix most clang-tidy warnings
2023-08-25 20:09:58 +02:00
Paul Adenot
714ac6e8db
OpenSLES: when floats IO aren't supported, perform a conversion
2023-08-25 20:09:58 +02:00
Paul Adenot
13872fb5f1
OpenSLES: use cubeb logging facilities
2023-08-25 20:09:58 +02:00
Paul Adenot
33ade008b5
OpenSLES: compile as C++
2023-08-25 20:09:58 +02:00
Paul Adenot
ac8474a592
AAudio: Don't unlock a mutex owned by a lock_guard
2023-08-03 14:13:06 +02:00
Paul Adenot
b9af56cee7
Don't attempt to use an unavailable cubeb_stream in aaudio_stream_init.
2023-07-31 11:50:04 +02:00
Paul Adenot
41344b3abb
Update googletest to current master
...
This is what is recommended by upstream.
2023-07-26 14:02:22 +02:00
Paul Adenot
af4769f18a
Run clang-format
2023-07-26 14:02:22 +02:00
Paul Adenot
cfd7bf22d6
Compile in C++17, like Gecko
2023-07-26 14:02:22 +02:00
Paul Adenot
31d6a2b0f2
AAudio: Fix log level when stopping a stream
2023-07-26 14:02:22 +02:00
Paul Adenot
eef055ab21
AAudio: When a device is disconnected, reinitialize the stream with the same parameters
2023-07-26 14:02:22 +02:00
Paul Adenot
29d266e628
AAudio: Split init/destroy/start functions into an internal and external interface
...
This will allow calling those functions properly from an internal thread, and
simplify lock management. This will happen in a subsequent patch.
The initial parameter passed to cubeb_stream_init are now stored on the
cubeb_stream struct to be able to reinitialized properly (again in a subsequent
patch).
Since all those calls need have a lock held, the lock is passed as argument to
ensure thread safety. This ensures the caller of the internal functions has
taken the lock, and at the same time allows not unlocking/relocking the mutex if
a series of call is performed (that will be the case in a subsequent patch,
during reinitialization).
The boolean that marks that a stream is in use is modified in the external
interface, called by the user. A stream is marked as being in use when the user
initialize it, and is marked as not being in use when the user destroys it.
2023-07-26 14:02:22 +02:00
Paul Adenot
8ee7b799e2
AAudio: switch to using cubeb logging facilities
2023-07-26 14:02:22 +02:00
Paul Adenot
c31bcf3159
Fix clang-tidy warnings in cubeb_log.cpp
2023-07-26 14:02:22 +02:00
Paul Adenot
dfc128b053
AAudio: fix clang-tidy issues
2023-07-26 14:02:22 +02:00
Matthew Gregan
68084e902e
wasapi: Flag cubeb_stream as inactive when stopped, avoid reconfiguring inactive streams from render thread.
2023-07-26 13:57:06 +02:00
Matthew Gregan
779f024958
wasapi: Take stream_reset_lock earlier in render thread reconfig path.
2023-07-26 13:57:06 +02:00
Paul Adenot
48689ae7a7
Remove incorrect code to adjust output queue capacity
2023-05-17 13:38:27 +02:00
Paul Adenot
da01c85243
Run clang-format-15 on the codebase -- fix a single difference
2023-05-17 10:57:17 +02:00
Paul Adenot
5e12bb870d
Allow specifying a particular clang-format binary (version), and pin the CI to version 15
2023-05-17 10:57:17 +02:00
Michael M
febf49d089
wasapi: make render thread exist for the lifetime of the stream object
...
- Converts cubeb_stream into a reference-counted object, and gets rid of
emergency_bailout logic
- When reconfiguring, only restart a stream if it was already started
- Removes timeout inside the render thread, as we can't guarantee events
while a stream is stopped
Subsequently rebased by Paul Adenot <padenot@mozilla.com>
2023-05-17 10:57:17 +02:00
Paul Adenot
1ba9237364
Skip a couple more tests when a backend can't use audio input
2023-04-26 14:28:46 +02:00
Paul Adenot
88900545d4
Only run test_overload.cpp when using the WASAPI backend
2023-04-26 14:28:46 +02:00
Paul Adenot
0e7f41d6ef
Don't run test_loopback and test_duplex on backends that can't open audio input
2023-04-26 14:28:46 +02:00
Paul Adenot
d478bff5fb
Don't wait in winmm_stream_destroy when the return value of the data callback is an error.
2023-04-26 14:28:46 +02:00
Paul Adenot
47720cbc03
Don't continue calling the data callback in the winmm backend if the user has returned a negative value
2023-04-26 14:28:46 +02:00
Paul Adenot
2e0fe89106
Prevent running test that make use of audio input streams on backends that don't implement it
2023-04-26 14:28:46 +02:00
Paul Adenot
9517d4e837
Install virtual audio devices on Windows runners, enable microphone permission globally
2023-04-26 14:28:46 +02:00
Paul Adenot
d3820eb365
clang-format cubeb_winmm.c
2023-04-26 14:28:46 +02:00
Paul Adenot
aa05a1380e
Attempt enabling test on gh action windows, also run the winmm backend
2023-04-26 14:28:46 +02:00
Paul Adenot
af5e9f1211
Add some logging messages to winmm to ease debugging and make the logging test pass
2023-04-26 14:28:46 +02:00
Paul Adenot
31fb25d7eb
Handle a negative return value from the user callback
2023-04-26 14:28:46 +02:00
Paul Adenot
6442216760
Change the WinMM backend so that it doesn't call the user callback during initialization
2023-04-26 14:28:46 +02:00
aeiouaeiouaeiouaeiouaeiouaeiou
3981f4a7ec
Re-enable the test job on macOS CI
2023-04-23 12:54:56 +12:00
Paul Adenot
3ecf0c8f83
Sync back BMO#1825328
...
https://bugzilla.mozilla.org/show_bug.cgi?id=1825328 landed in Firefox
without going through upstream. It's necessary to build in an
environment where gtests are all compiled in the same executable.
Original patch by serge-sans-paille <sguelton@mozilla.com>.
2023-04-20 14:07:44 +02:00