diff options
author | khng300 <[email protected]> | 2020-10-10 01:09:39 +0800 |
---|---|---|
committer | GitHub <[email protected]> | 2020-10-09 19:09:39 +0200 |
commit | 226d383c136b8586b69b74f420a5afc8b243cf49 (patch) | |
tree | 25f6a752bed0e3e796216461d730112d624f0169 /CMakeLists.txt | |
parent | dce06b123d69db3acafeeea811d845d491630216 (diff) | |
download | cubeb-226d383c136b8586b69b74f420a5afc8b243cf49.tar.gz cubeb-226d383c136b8586b69b74f420a5afc8b243cf49.zip |
OSS (FreeBSD/illumos) backend (#600)
* ossaudio (FreeBSD currently) backend
The ossaudio backend was rewritten from the sunaudio
backend.
* Fix leaking of mixer_fd in oss_enumerate_devices
* Both input/output can be detected at the same DSP
* Update on device detection during enumeration
* Remove spurious calls to SNDCTL_CARDINFO
* Fix string allocation detection in oss_enumerate_devices
* On FreeBSD, try to open and probe the device's capability in oss_enumerate_devices
* Rewrite oss_io_routine() to implement correctly for all stream directions
* Add preferred device detection for FreeBSD
* Emits stable devid from oss_enumerate_devices on FreeBSD
* Fix SNDCTL_DSP_GETI/OSPACE calls in oss_stream_init
* Use /dev/sndstat instead on FreeBSD for oss_enumerate_devices
* Unify both play and record nfr and take the minimum value between them
* Fix allocating both input/output buffers to input/output-only streams
* Fix clipping issue
* Fix misuse of input_device and output_device in oss_stream_init
* Fix builds on Illumos
* Code refactoring on oss_enumerate_devices
* Improve oss_io_routine for the case when the stream is in both direction
* Use fragsize instead of total buffer size for number of frames
* Probe OSS audio availability in cubeb_init when backend is not specified
* Fix scan-build10 report on src/cubeb_oss.c:285
* Add __DragonFly__ pp macro testing along-side __FreeBSD__
* Move oss_init in default_init[] table right below alsa to respect POLA
* Fix use-after-free of s->mutex in oss_stream_destroy
* Fix inconsistent indentation
* Remove blocks_written from cubeb_stream
* Add LL integer suffix to make 0x80000000 more clear
* Add parsing of /dev/sndstat for hw.snd.verbose > 0 in FreeBSD
* Do device setup in the order of channels, format and speed, according to developer/callorder.html of OSS v4.x API reference
* Add proper latency_frame support for oss_stream_init
* Mark close brackets and close braces NUL in oss_sndstat_line_parse
* Search close brackets and close braces from the end of line in oss_sndstat_line_parse
* Use 32 frames for each fragments in oss_calc_frag_params
* Drop unnecessary #include <sys/sysctl.h>
* Add support for cubeb_channel_layout
* Compilation and scan-build fixes:
* Fix warnings in oss_chn_from_cubeb
* Include cubeb_mixer.h to have cubeb_channel_layout_nb_channels
* Fix potential resource leakage in input_stream_layout->layout does not
match input_stream_params->channels. (The same for
output_stream_layout)
* Classify cubeb_stream_params::layout and cubeb_stream_params::channels
mismatch as CUBEB_ERROR_INVALID_PARAMETER
* AUDIODEVICE can now override /dev/dsp
AUDIODEVICE was chosen to match the sndio backend.
* Change environment variable AUDIODEVICE to AUDIO_DEVICE in oss backend
* Change the format of cubeb_device_info's friendly_name
This avoids name collision when setting media.cubeb.output_device in
about:config of Firefox. However, I think it makes more sense on
Firefox's side to use device_id instead.
* Fix warning of a missing %d in LOG() in oss_io_routine
* Do not enable OSS compilation when SOUND_VERSION < 0x040000
* Add mutex to serialize access to cubeb_strings in cubeb_oss's cubeb_context
* Change the calculation of fragsize/nfr to match stream latency, with 2 fragments available. By HPS
* Now reuse the same thread for audiostream
* Redo the duplex logic
* Restructure the use of buffers
* Fix problems dealing with draining
* Revert "Fix problems dealing with draining"
This reverts commit 30301ba101f8acadd1ff985cbf7eef48cef5ee36.
* Revert "Restructure the use of buffers"
This reverts commit 9823ca889ca407a202e7588229514b4b8cd99ec7.
* Revert "Revert "Restructure the use of buffers""
This reverts commit 10dc869b852daea5ede3173ebaf76414562fbe93.
* Revert "Revert "Fix problems dealing with draining""
This reverts commit 9d19b1094428ed960ef7683df9bee9fe769d78ac.
* Make sure there are at least s->nfr available before calling data_cb
* Kill a signed/unsigned comparison
* Add The FreeBSD Foundation copyright line for recent commits
* Fix race condition when restarting a stream by HPS
Originally, when stopping a stream and immediately starting the stream
again, the start call might be lost.
* Do not signal the doorbell_cv again when a stream is already stopped
This is redundant.
* Revert "Do not signal the doorbell_cv again when a stream is already stopped"
This reverts commit fbdf753fc720923336a979997ff85eeb9666b83b.
* Make state changes look more similar to pulse backend
This also allows drained/short-input stream to be resumed without
stopping it first.
* Remove a spurious s->running = false
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 349ba8e..5aeb622 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,6 +199,18 @@ if(USE_OPENSL) target_link_libraries(cubeb PRIVATE OpenSLES) endif() +check_include_files(sys/soundcard.h HAVE_SYS_SOUNDCARD_H) +if(HAVE_SYS_SOUNDCARD_H) + try_compile(USE_OSS "${PROJECT_BINARY_DIR}/compile_tests" + ${PROJECT_SOURCE_DIR}/cmake/compile_tests/oss_is_v4.c) + if(USE_OSS) + target_sources(cubeb PRIVATE + src/cubeb_oss.c) + target_compile_definitions(cubeb PRIVATE USE_OSS) + target_link_libraries(cubeb PRIVATE pthread) + endif() +endif() + check_include_files(android/log.h USE_AUDIOTRACK) if(USE_AUDIOTRACK) target_sources(cubeb PRIVATE |