mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-26 05:38:39 -05:00
Update RtAudio to v5.20 (#927)
This commit is contained in:
parent
0831aa262c
commit
cab1227acd
57
external/rtaudio/README.md
vendored
57
external/rtaudio/README.md
vendored
@ -1,10 +1,10 @@
|
||||
# RtAudio
|
||||
|
||||
[![Build Status](https://travis-ci.org/thestk/rtaudio.svg?branch=master)](https://travis-ci.org/thestk/rtaudio)
|
||||
![Build Status](https://github.com/thestk/rtaudio/actions/workflows/ci.yml/badge.svg)
|
||||
|
||||
A set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X (CoreAudio and JACK), and Windows (DirectSound, ASIO and WASAPI) operating systems.
|
||||
|
||||
By Gary P. Scavone, 2001-2019 (and many other developers!)
|
||||
By Gary P. Scavone, 2001-2021 (and many other developers!)
|
||||
|
||||
This distribution of RtAudio contains the following:
|
||||
|
||||
@ -28,6 +28,30 @@ RtAudio is a set of C++ classes that provides a common API (Application Programm
|
||||
|
||||
RtAudio incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance. See the \ref apinotes section for information specific to each of the supported audio APIs.
|
||||
|
||||
## Building
|
||||
|
||||
Several build systems are available. These are:
|
||||
|
||||
- autotools (`./autogen.sh; make` from git, or `./configure; make` from tarball release)
|
||||
- CMake (`mkdir build; cd build; ../cmake; make`)
|
||||
- meson (`meson build; cd build; ninja`)
|
||||
|
||||
See `install.txt` for more instructions about how to select the audio backend API. By
|
||||
default all detected APIs will be enabled.
|
||||
|
||||
We recommend using the autotools-based build for packaging purposes. Please note that
|
||||
RtAudio is designed as a single `.cpp` and `.h` file so that it is easy to copy directly
|
||||
into a project. In that case you need to define the appropriate flags for the desired
|
||||
backend APIs.
|
||||
|
||||
## FAQ
|
||||
|
||||
### Why does audio only come to one ear when I choose 1-channel output?
|
||||
|
||||
RtAudio doesn't automatically turn 1-channel output into stereo output with copied values
|
||||
to each channel, it really only opens one channel. So, if this is the behaviour you want,
|
||||
you have to do this copying in your audio stream callback.
|
||||
|
||||
## Further Reading
|
||||
|
||||
For complete documentation on RtAudio, see the doc directory of the distribution or surf to http://www.music.mcgill.ca/~gary/rtaudio/.
|
||||
@ -35,31 +59,4 @@ For complete documentation on RtAudio, see the doc directory of the distribution
|
||||
|
||||
## Legal and ethical:
|
||||
|
||||
The RtAudio license is similar to the MIT License.
|
||||
|
||||
RtAudio: a set of realtime audio i/o C++ classes
|
||||
Copyright (c) 2001-2019 Gary P. Scavone
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation files
|
||||
(the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Any person wishing to distribute modifications to the Software is
|
||||
asked to send the modifications to the original developer so that
|
||||
they can be incorporated into the canonical version. This is,
|
||||
however, not a binding provision of this license.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
The RtAudio license is similar to the MIT License. Please see [LICENSE](LICENSE).
|
||||
|
833
external/rtaudio/RtAudio.cpp
vendored
833
external/rtaudio/RtAudio.cpp
vendored
File diff suppressed because it is too large
Load Diff
270
external/rtaudio/RtAudio.h
vendored
270
external/rtaudio/RtAudio.h
vendored
@ -11,7 +11,7 @@
|
||||
RtAudio WWW site: http://www.music.mcgill.ca/~gary/rtaudio/
|
||||
|
||||
RtAudio: realtime audio i/o C++ classes
|
||||
Copyright (c) 2001-2019 Gary P. Scavone
|
||||
Copyright (c) 2001-2021 Gary P. Scavone
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation files
|
||||
@ -46,7 +46,7 @@
|
||||
#ifndef __RTAUDIO_H
|
||||
#define __RTAUDIO_H
|
||||
|
||||
#define RTAUDIO_VERSION "5.1.0"
|
||||
#define RTAUDIO_VERSION "5.2.0"
|
||||
|
||||
#if defined _WIN32 || defined __CYGWIN__
|
||||
#if defined(RTAUDIO_EXPORT)
|
||||
@ -226,12 +226,12 @@ class RTAUDIO_DLL_PUBLIC RtAudioError : public std::runtime_error
|
||||
UNSPECIFIED, /*!< The default, unspecified error type. */
|
||||
NO_DEVICES_FOUND, /*!< No devices found on system. */
|
||||
INVALID_DEVICE, /*!< An invalid device ID was specified. */
|
||||
MEMORY_ERROR, /*!< An error occured during memory allocation. */
|
||||
MEMORY_ERROR, /*!< An error occurred during memory allocation. */
|
||||
INVALID_PARAMETER, /*!< An invalid parameter was specified to a function. */
|
||||
INVALID_USE, /*!< The function was called incorrectly. */
|
||||
DRIVER_ERROR, /*!< A system driver error occured. */
|
||||
SYSTEM_ERROR, /*!< A system error occured. */
|
||||
THREAD_ERROR /*!< A thread error occured. */
|
||||
DRIVER_ERROR, /*!< A system driver error occurred. */
|
||||
SYSTEM_ERROR, /*!< A system error occurred. */
|
||||
THREAD_ERROR /*!< A thread error occurred. */
|
||||
};
|
||||
|
||||
//! The constructor.
|
||||
@ -299,30 +299,21 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
struct DeviceInfo {
|
||||
bool probed; /*!< true if the device capabilities were successfully probed. */
|
||||
std::string name; /*!< Character string device identifier. */
|
||||
unsigned int outputChannels; /*!< Maximum output channels supported by device. */
|
||||
unsigned int inputChannels; /*!< Maximum input channels supported by device. */
|
||||
unsigned int duplexChannels; /*!< Maximum simultaneous input/output channels supported by device. */
|
||||
bool isDefaultOutput; /*!< true if this is the default output device. */
|
||||
bool isDefaultInput; /*!< true if this is the default input device. */
|
||||
unsigned int outputChannels{}; /*!< Maximum output channels supported by device. */
|
||||
unsigned int inputChannels{}; /*!< Maximum input channels supported by device. */
|
||||
unsigned int duplexChannels{}; /*!< Maximum simultaneous input/output channels supported by device. */
|
||||
bool isDefaultOutput{false}; /*!< true if this is the default output device. */
|
||||
bool isDefaultInput{false}; /*!< true if this is the default input device. */
|
||||
std::vector<unsigned int> sampleRates; /*!< Supported sample rates (queried from list of standard rates). */
|
||||
unsigned int preferredSampleRate; /*!< Preferred sample rate, e.g. for WASAPI the system sample rate. */
|
||||
RtAudioFormat nativeFormats; /*!< Bit mask of supported data formats. */
|
||||
|
||||
// Default constructor.
|
||||
DeviceInfo()
|
||||
:probed(false), outputChannels(0), inputChannels(0), duplexChannels(0),
|
||||
isDefaultOutput(false), isDefaultInput(false), preferredSampleRate(0), nativeFormats(0) {}
|
||||
unsigned int preferredSampleRate{}; /*!< Preferred sample rate, e.g. for WASAPI the system sample rate. */
|
||||
RtAudioFormat nativeFormats{}; /*!< Bit mask of supported data formats. */
|
||||
};
|
||||
|
||||
//! The structure for specifying input or ouput stream parameters.
|
||||
//! The structure for specifying input or output stream parameters.
|
||||
struct StreamParameters {
|
||||
unsigned int deviceId; /*!< Device index (0 to getDeviceCount() - 1). */
|
||||
unsigned int nChannels; /*!< Number of channels. */
|
||||
unsigned int firstChannel; /*!< First channel index on device (default = 0). */
|
||||
|
||||
// Default constructor.
|
||||
StreamParameters()
|
||||
: deviceId(0), nChannels(0), firstChannel(0) {}
|
||||
unsigned int deviceId{}; /*!< Device index (0 to getDeviceCount() - 1). */
|
||||
unsigned int nChannels{}; /*!< Number of channels. */
|
||||
unsigned int firstChannel{}; /*!< First channel index on device (default = 0). */
|
||||
};
|
||||
|
||||
//! The structure for specifying stream options.
|
||||
@ -383,14 +374,10 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
RtAudio with Jack, each instance must have a unique client name.
|
||||
*/
|
||||
struct StreamOptions {
|
||||
RtAudioStreamFlags flags; /*!< A bit-mask of stream flags (RTAUDIO_NONINTERLEAVED, RTAUDIO_MINIMIZE_LATENCY, RTAUDIO_HOG_DEVICE, RTAUDIO_ALSA_USE_DEFAULT). */
|
||||
unsigned int numberOfBuffers; /*!< Number of stream buffers. */
|
||||
RtAudioStreamFlags flags{}; /*!< A bit-mask of stream flags (RTAUDIO_NONINTERLEAVED, RTAUDIO_MINIMIZE_LATENCY, RTAUDIO_HOG_DEVICE, RTAUDIO_ALSA_USE_DEFAULT). */
|
||||
unsigned int numberOfBuffers{}; /*!< Number of stream buffers. */
|
||||
std::string streamName; /*!< A stream name (currently used only in Jack). */
|
||||
int priority; /*!< Scheduling priority of callback thread (only used with flag RTAUDIO_SCHEDULE_REALTIME). */
|
||||
|
||||
// Default constructor.
|
||||
StreamOptions()
|
||||
: flags(0), numberOfBuffers(0), priority(0) {}
|
||||
int priority{}; /*!< Scheduling priority of callback thread (only used with flag RTAUDIO_SCHEDULE_REALTIME). */
|
||||
};
|
||||
|
||||
//! A static function to determine the current RtAudio version.
|
||||
@ -527,7 +514,7 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
lowest allowable value is used. The actual value used is
|
||||
returned via the structure argument. The parameter is API dependent.
|
||||
\param errorCallback A client-defined function that will be invoked
|
||||
when an error has occured.
|
||||
when an error has occurred.
|
||||
*/
|
||||
void openStream( RtAudio::StreamParameters *outputParameters,
|
||||
RtAudio::StreamParameters *inputParameters,
|
||||
@ -616,7 +603,7 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
};
|
||||
|
||||
// Operating system dependent thread functionality.
|
||||
#if defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) || defined(__WINDOWS_WASAPI__)
|
||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||
|
||||
#ifndef NOMINMAX
|
||||
#define NOMINMAX
|
||||
@ -628,18 +615,22 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
typedef uintptr_t ThreadHandle;
|
||||
typedef CRITICAL_SECTION StreamMutex;
|
||||
|
||||
#elif defined(__LINUX_ALSA__) || defined(__LINUX_PULSE__) || defined(__UNIX_JACK__) || defined(__LINUX_OSS__) || defined(__MACOSX_CORE__)
|
||||
#else
|
||||
|
||||
// Using pthread library for various flavors of unix.
|
||||
#include <pthread.h>
|
||||
|
||||
typedef pthread_t ThreadHandle;
|
||||
typedef pthread_mutex_t StreamMutex;
|
||||
|
||||
#else // Setup for "dummy" behavior
|
||||
#endif
|
||||
|
||||
// Setup for "dummy" behavior if no apis specified.
|
||||
#if !(defined(__WINDOWS_DS__) || defined(__WINDOWS_ASIO__) || defined(__WINDOWS_WASAPI__) \
|
||||
|| defined(__LINUX_ALSA__) || defined(__LINUX_PULSE__) || defined(__UNIX_JACK__) \
|
||||
|| defined(__LINUX_OSS__) || defined(__MACOSX_CORE__))
|
||||
|
||||
#define __RTAUDIO_DUMMY__
|
||||
typedef int ThreadHandle;
|
||||
typedef int StreamMutex;
|
||||
|
||||
#endif
|
||||
|
||||
@ -647,19 +638,15 @@ class RTAUDIO_DLL_PUBLIC RtAudio
|
||||
// between the private RtAudio stream structure and global callback
|
||||
// handling functions.
|
||||
struct CallbackInfo {
|
||||
void *object; // Used as a "this" pointer.
|
||||
ThreadHandle thread;
|
||||
void *callback;
|
||||
void *userData;
|
||||
void *errorCallback;
|
||||
void *apiInfo; // void pointer for API specific callback information
|
||||
bool isRunning;
|
||||
bool doRealtime;
|
||||
int priority;
|
||||
|
||||
// Default constructor.
|
||||
CallbackInfo()
|
||||
:object(0), callback(0), userData(0), errorCallback(0), apiInfo(0), isRunning(false), doRealtime(false), priority(0) {}
|
||||
void *object{}; // Used as a "this" pointer.
|
||||
ThreadHandle thread{};
|
||||
void *callback{};
|
||||
void *userData{};
|
||||
void *errorCallback{};
|
||||
void *apiInfo{}; // void pointer for API specific callback information
|
||||
bool isRunning{false};
|
||||
bool doRealtime{false};
|
||||
int priority{};
|
||||
};
|
||||
|
||||
// **************************************************************** //
|
||||
@ -686,9 +673,9 @@ class S24 {
|
||||
S24() {}
|
||||
|
||||
S24& operator = ( const int& i ) {
|
||||
c3[0] = (i & 0x000000ff);
|
||||
c3[1] = (i & 0x0000ff00) >> 8;
|
||||
c3[2] = (i & 0x00ff0000) >> 16;
|
||||
c3[0] = (unsigned char)(i & 0x000000ff);
|
||||
c3[1] = (unsigned char)((i & 0x0000ff00) >> 8);
|
||||
c3[2] = (unsigned char)((i & 0x00ff0000) >> 16);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -895,20 +882,20 @@ public:
|
||||
|
||||
RtApiCore();
|
||||
~RtApiCore();
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::MACOSX_CORE; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
unsigned int getDefaultOutputDevice( void );
|
||||
unsigned int getDefaultInputDevice( void );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::MACOSX_CORE; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
unsigned int getDefaultOutputDevice( void ) override;
|
||||
unsigned int getDefaultInputDevice( void ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
bool callbackEvent( AudioDeviceID deviceId,
|
||||
const AudioBufferList *inBufferList,
|
||||
const AudioBufferList *outBufferList );
|
||||
@ -918,7 +905,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
static const char* getErrorCode( OSStatus code );
|
||||
};
|
||||
|
||||
@ -932,18 +919,18 @@ public:
|
||||
|
||||
RtApiJack();
|
||||
~RtApiJack();
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::UNIX_JACK; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::UNIX_JACK; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
bool callbackEvent( unsigned long nframes );
|
||||
|
||||
private:
|
||||
@ -951,7 +938,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
|
||||
bool shouldAutoconnect_;
|
||||
};
|
||||
@ -966,18 +953,20 @@ public:
|
||||
|
||||
RtApiAsio();
|
||||
~RtApiAsio();
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_ASIO; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::WINDOWS_ASIO; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
unsigned int getDefaultOutputDevice( void ) override;
|
||||
unsigned int getDefaultInputDevice( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
bool callbackEvent( long bufferIndex );
|
||||
|
||||
private:
|
||||
@ -988,7 +977,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1001,20 +990,20 @@ public:
|
||||
|
||||
RtApiDs();
|
||||
~RtApiDs();
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_DS; }
|
||||
unsigned int getDeviceCount( void );
|
||||
unsigned int getDefaultOutputDevice( void );
|
||||
unsigned int getDefaultInputDevice( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::WINDOWS_DS; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
unsigned int getDefaultOutputDevice( void ) override;
|
||||
unsigned int getDefaultInputDevice( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
void callbackEvent( void );
|
||||
|
||||
private:
|
||||
@ -1026,7 +1015,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1041,15 +1030,13 @@ public:
|
||||
RtApiWasapi();
|
||||
virtual ~RtApiWasapi();
|
||||
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::WINDOWS_WASAPI; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
unsigned int getDefaultOutputDevice( void );
|
||||
unsigned int getDefaultInputDevice( void );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::WINDOWS_WASAPI; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
private:
|
||||
bool coInitialized_;
|
||||
@ -1058,7 +1045,7 @@ private:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int* bufferSize,
|
||||
RtAudio::StreamOptions* options );
|
||||
RtAudio::StreamOptions* options ) override;
|
||||
|
||||
static DWORD WINAPI runWasapiThread( void* wasapiPtr );
|
||||
static DWORD WINAPI stopWasapiThread( void* wasapiPtr );
|
||||
@ -1076,18 +1063,18 @@ public:
|
||||
|
||||
RtApiAlsa();
|
||||
~RtApiAlsa();
|
||||
RtAudio::Api getCurrentApi() { return RtAudio::LINUX_ALSA; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi() override { return RtAudio::LINUX_ALSA; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
void callbackEvent( void );
|
||||
|
||||
private:
|
||||
@ -1097,7 +1084,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1108,28 +1095,27 @@ class RtApiPulse: public RtApi
|
||||
{
|
||||
public:
|
||||
~RtApiPulse();
|
||||
RtAudio::Api getCurrentApi() { return RtAudio::LINUX_PULSE; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi() override { return RtAudio::LINUX_PULSE; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
void callbackEvent( void );
|
||||
|
||||
private:
|
||||
|
||||
std::vector<RtAudio::DeviceInfo> devices_;
|
||||
void saveDeviceInfo( void );
|
||||
void collectDeviceInfo( void );
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1142,18 +1128,18 @@ public:
|
||||
|
||||
RtApiOss();
|
||||
~RtApiOss();
|
||||
RtAudio::Api getCurrentApi() { return RtAudio::LINUX_OSS; }
|
||||
unsigned int getDeviceCount( void );
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device );
|
||||
void closeStream( void );
|
||||
void startStream( void );
|
||||
void stopStream( void );
|
||||
void abortStream( void );
|
||||
RtAudio::Api getCurrentApi() override { return RtAudio::LINUX_OSS; }
|
||||
unsigned int getDeviceCount( void ) override;
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int device ) override;
|
||||
void closeStream( void ) override;
|
||||
void startStream( void ) override;
|
||||
void stopStream( void ) override;
|
||||
void abortStream( void ) override;
|
||||
|
||||
// This function is intended for internal use only. It must be
|
||||
// public because it is called by the internal callback handler,
|
||||
// which is not a member of RtAudio. External use of this function
|
||||
// will most likely produce highly undesireable results!
|
||||
// will most likely produce highly undesirable results!
|
||||
void callbackEvent( void );
|
||||
|
||||
private:
|
||||
@ -1161,7 +1147,7 @@ public:
|
||||
bool probeDeviceOpen( unsigned int device, StreamMode mode, unsigned int channels,
|
||||
unsigned int firstChannel, unsigned int sampleRate,
|
||||
RtAudioFormat format, unsigned int *bufferSize,
|
||||
RtAudio::StreamOptions *options );
|
||||
RtAudio::StreamOptions *options ) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1173,20 +1159,20 @@ class RtApiDummy: public RtApi
|
||||
public:
|
||||
|
||||
RtApiDummy() { errorText_ = "RtApiDummy: This class provides no functionality."; error( RtAudioError::WARNING ); }
|
||||
RtAudio::Api getCurrentApi( void ) { return RtAudio::RTAUDIO_DUMMY; }
|
||||
unsigned int getDeviceCount( void ) { return 0; }
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int /*device*/ ) { RtAudio::DeviceInfo info; return info; }
|
||||
void closeStream( void ) {}
|
||||
void startStream( void ) {}
|
||||
void stopStream( void ) {}
|
||||
void abortStream( void ) {}
|
||||
RtAudio::Api getCurrentApi( void ) override { return RtAudio::RTAUDIO_DUMMY; }
|
||||
unsigned int getDeviceCount( void ) override { return 0; }
|
||||
RtAudio::DeviceInfo getDeviceInfo( unsigned int /*device*/ ) override { RtAudio::DeviceInfo info; return info; }
|
||||
void closeStream( void ) override {}
|
||||
void startStream( void ) override {}
|
||||
void stopStream( void ) override {}
|
||||
void abortStream( void ) override {}
|
||||
|
||||
private:
|
||||
|
||||
bool probeDeviceOpen( unsigned int /*device*/, StreamMode /*mode*/, unsigned int /*channels*/,
|
||||
unsigned int /*firstChannel*/, unsigned int /*sampleRate*/,
|
||||
RtAudioFormat /*format*/, unsigned int * /*bufferSize*/,
|
||||
RtAudio::StreamOptions * /*options*/ ) { return false; }
|
||||
RtAudio::StreamOptions * /*options*/ ) override { return false; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user