diff options
author | Bryce Van Dyk <[email protected]> | 2017-10-31 06:41:30 +1300 |
---|---|---|
committer | Matthew Gregan <[email protected]> | 2018-01-23 08:50:28 +1300 |
commit | 0a15b9ebf5fa97485d6cbcfe67c0169954d0af77 (patch) | |
tree | 4c1c3aad117b5c54d141ecc0465ac867afb33277 | |
parent | 94d1c0db7c723312e17d1aeded6ae832926350ec (diff) | |
download | cubeb-0a15b9ebf5fa97485d6cbcfe67c0169954d0af77.tar.gz cubeb-0a15b9ebf5fa97485d6cbcfe67c0169954d0af77.zip |
Add stream preferences enum to stream params, add a loopback pref.
-rw-r--r-- | include/cubeb/cubeb.h | 10 | ||||
-rw-r--r-- | src/cubeb_audiounit.cpp | 4 | ||||
-rw-r--r-- | src/cubeb_wasapi.cpp | 8 |
3 files changed, 16 insertions, 6 deletions
diff --git a/include/cubeb/cubeb.h b/include/cubeb/cubeb.h index 6d3f195..ac582cf 100644 --- a/include/cubeb/cubeb.h +++ b/include/cubeb/cubeb.h @@ -213,6 +213,15 @@ typedef enum { CUBEB_LAYOUT_MAX } cubeb_channel_layout; +/** Miscellaneous stream preferences. */ +typedef enum { + CUBEB_STREAM_PREF_NONE = 0x00, /**< No stream preferences are requested. */ + CUBEB_STREAM_PREF_LOOPBACK = 0x01 /**< Request a loopback stream. Should be + specified on the input params and an + output device to loopback from should + be passed in place of an input device. */ +} cubeb_stream_prefs; + /** Stream format initialization parameters. */ typedef struct { cubeb_sample_format format; /**< Requested sample format. One of @@ -220,6 +229,7 @@ typedef struct { uint32_t rate; /**< Requested sample rate. Valid range is [1000, 192000]. */ uint32_t channels; /**< Requested channel count. Valid range is [1, 8]. */ cubeb_channel_layout layout; /**< Requested channel layout. This must be consistent with the provided channels. */ + cubeb_stream_prefs prefs; /**< Requested preferences. */ } cubeb_stream_params; /** Audio device description */ diff --git a/src/cubeb_audiounit.cpp b/src/cubeb_audiounit.cpp index c1e95ef..779ce93 100644 --- a/src/cubeb_audiounit.cpp +++ b/src/cubeb_audiounit.cpp @@ -135,8 +135,8 @@ struct cubeb_stream { cubeb_device_changed_callback device_changed_callback = nullptr; owned_critical_section device_changed_callback_lock; /* Stream creation parameters */ - cubeb_stream_params input_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; - cubeb_stream_params output_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; + cubeb_stream_params input_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; + cubeb_stream_params output_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; device_info input_device; device_info output_device; /* User pointer of data_callback */ diff --git a/src/cubeb_wasapi.cpp b/src/cubeb_wasapi.cpp index faafee9..e491db6 100644 --- a/src/cubeb_wasapi.cpp +++ b/src/cubeb_wasapi.cpp @@ -193,12 +193,12 @@ struct cubeb_stream { /* Mixer pameters. We need to convert the input stream to this samplerate/channel layout, as WASAPI does not resample nor upmix itself. */ - cubeb_stream_params input_mix_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; - cubeb_stream_params output_mix_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; + cubeb_stream_params input_mix_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; + cubeb_stream_params output_mix_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; /* Stream parameters. This is what the client requested, * and what will be presented in the callback. */ - cubeb_stream_params input_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; - cubeb_stream_params output_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED }; + cubeb_stream_params input_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; + cubeb_stream_params output_stream_params = { CUBEB_SAMPLE_FLOAT32NE, 0, 0, CUBEB_LAYOUT_UNDEFINED, CUBEB_STREAM_PREF_NONE }; /* The input and output device, or NULL for default. */ std::unique_ptr<const wchar_t[]> input_device; std::unique_ptr<const wchar_t[]> output_device; |