summaryrefslogtreecommitdiff
path: root/libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h')
-rw-r--r--libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h271
1 files changed, 0 insertions, 271 deletions
diff --git a/libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h b/libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h
deleted file mode 100644
index b22e35263d..0000000000
--- a/libs/backends/wavesaudio/wavesapi/devicemanager/WCMRAudioDeviceManager.h
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- Copyright (C) 2014 Waves Audio Ltd.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-//----------------------------------------------------------------------------------
-//
-//
-//! \file WCMRAudioDeviceManager.h
-//!
-//! WCMRAudioDeviceManager and related class declarations
-//!
-//---------------------------------------------------------------------------------*/
-#ifndef __WCMRAudioDeviceManager_h_
- #define __WCMRAudioDeviceManager_h_
-
-/* Copy to include
-#include "WCMRAudioDeviceManager.h"
-*/
-
-#define AUTO_FUNC_DEBUG
-#define DEBUG_MSG(a)
-#define ASSERT_ERROR(a, b)
-#define TRACE_MSG(a)
-
-#include <string>
-#include <vector>
-#include <map>
-#include "WCRefManager.h"
-#include "BasicTypes/WUTypes.h"
-#include "WUErrors.h"
-#include "WCThreadSafe.h"
-
-#define WCUNUSEDPARAM(a)
-
-class WCMRAudioDevice;
-class WCMRAudioDeviceManager;
-
-typedef unsigned int DeviceID;
-
-struct DeviceInfo
-{
- DeviceID m_DeviceId;
- std::string m_DeviceName;
- std::vector<int> m_AvailableSampleRates;
- std::vector<int> m_AvailableBufferSizes;
- unsigned int m_MaxInputChannels;
- unsigned int m_MaxOutputChannels;
-
- DeviceInfo():
- m_DeviceId(-1), m_DeviceName("Unknown"), m_MaxInputChannels(0), m_MaxOutputChannels(0)
- {};
-
- DeviceInfo(unsigned int deviceID, const std::string & deviceName):
- m_DeviceId(deviceID), m_DeviceName(deviceName), m_MaxInputChannels(0), m_MaxOutputChannels(0)
- {};
-};
-
-typedef std::vector<DeviceInfo*> DeviceInfoVec;
-typedef DeviceInfoVec::iterator DeviceInfoVecIter;
-typedef DeviceInfoVec::const_iterator DeviceInfoVecConstIter;
-
-/// for notification... A client must derive it's class from us.
-class WCMRAudioDeviceManagerClient
-{
- public:
- enum NotificationReason
- {
- DeviceListChanged,
- Dropout,
- RequestReset,
- RequestResync,
- SamplingRateChanged, //param has new SR, or -1 if not known
- SamplingRateChangedSilent, //To indicate sampling rate changed but no need to notify user
- BufferSizeChanged,
- ClockSourceChanged,
- DeviceStoppedStreaming,
- DeviceStartsStreaming,
- DeviceDroppedSamples,
- DeviceConnectionLost,
- DeviceGenericError,
- DeviceStatusChanged,
- DeviceStatisticsUpdated,
- DeviceDebugInfo, //param has c string
- DeviceProgressInfo, //param has c string
- MIDIData,
- MIDINodeUp,
- MIDINodeDown,
- DeviceSampleRateMisMatch,
- SystemSamplingRateChangedInfoOnly,
- LostClockSource,
- IODeviceDisconnected,
- ChannelCountModified,
- MasterUp,
- MasterDown,
- AudioDropFound,
- ReflasherEvent,
- AGDeviceSamplingRateChangedInfoOnly,
- IODeviceNameChanged,
- SetDisplayNameFromIOModule,
- IOMStateChanged, ///< This is used when IOM state is changed.
- AudioCallback // VKamyshniy: param is AudioCallbackDataData*
- };
-
- WCMRAudioDeviceManagerClient () {}
- virtual ~WCMRAudioDeviceManagerClient () {}
-
- // VKamyshniy: This is a structure to call the client's AudioDeviceManagerNotification
- // every AudioCallback time
- struct AudioCallbackData
- {
- const float *acdInputBuffer;
- float *acdOutputBuffer;
- size_t acdFrames;
- int64_t acdSampleTime;
- uint64_t acdCycleStartTimeNanos;
- };
-
- virtual void AudioDeviceManagerNotification (NotificationReason WCUNUSEDPARAM(reason), void *WCUNUSEDPARAM(pParam)) {}
-};
-
-
-class WCMRAudioDevice : public WCRefManager
-{
-public:
-
- enum ConnectionStates
- {
- DeviceAvailable,
- DeviceDisconnected,
- DeviceErrors
- };
-
- WCMRAudioDevice (WCMRAudioDeviceManager *pManager);///<Constructor
- virtual ~WCMRAudioDevice ();///<Destructor
-
- virtual const std::string& DeviceName() const;///<Name?
- virtual const std::vector<std::string>& InputChannels();///<Current Input Channel List? - note that this may change with change in sampling rate.
- virtual const std::vector<std::string>& OutputChannels();///<Current Output Channel List? - note that this may change with change in sampling rate.
-
- virtual const std::vector<int>& SamplingRates();///<Supported Sampling Rate List?
- virtual int CurrentSamplingRate(); ///<Current Sampling rate.?
- virtual WTErr SetCurrentSamplingRate(int newRate);///<Change Current Sampling Rate : This is a requset, might not be successful at run time!
-
- virtual const std::vector<int>& BufferSizes();///<Supported Buffer Size List? - note that this may change with change in sampling rate.
- virtual int CurrentBufferSize();///<Current Buffer Size.? - note that this may change with change in sampling rate.
- virtual WTErr SetCurrentBufferSize (int newSize);///<Change Current Buffer Size : This is a requset, might not be successful at run time!
-
- virtual int CurrentBlockSize();
-
- virtual ConnectionStates ConnectionStatus();///< Connection Status - device available, gone, disconnected
-
- virtual bool Active();///<Active status - mainly significant for ASIO, as certain ops can only be performed on active devices!
- virtual WTErr SetActive (bool newState);///<Prepare/Activate device.
-
- virtual bool Streaming();///<Streaming Status?
- virtual WTErr SetStreaming (bool newState);///<Start/Stop Streaming - should reconnect connections when streaming starts!
-
- virtual WTErr ResetDevice ();
-
- virtual bool IsProcessActive();
-
- virtual WTErr DoIdle();///<Do Idle Processing
-
- virtual const std::vector<float>& InputLevels();///<Retrieve Input Levels (for VU display)?
-
- virtual const std::vector<float>& OutputLevels();///<Retrieve Output Levels (for VU display)?
-
- void GetMonitorInfo (int *pLeftChannel = NULL, int *pRightChannel = NULL, float *pGain = NULL);///<Retrieve current monitor channel pair and gain - optional, will not be available with AG
- virtual WTErr SetMonitorChannels (int leftChannel, int rightChannel);///<Set monitor channels. - optional, will not be available with AG
- virtual WTErr SetMonitorGain (float newGain);///<Set monitor gain. - optional, will not be available with AG
-
- virtual WTErr ShowConfigPanel (void *pParam);///< Show Control Panel - in case of ASIO this will work only with Active device!
- virtual WTErr SendCustomCommand (int customCommand, void *pCommandParam); ///< Send a custom command to the audiodevice...
-
- virtual uint32_t GetLatency (bool isInput); ///Get latency.
-
- virtual WTErr UpdateDeviceInfo () = 0;
-
-protected:
- WCMRAudioDeviceManager *m_pMyManager; ///< The manager who's managing this device, can be used for sending notifications!
-
- std::string m_DeviceName; ///< Name of the device.
- std::vector<std::string> m_InputChannels; ///< List of input channel names.
- std::vector<std::string> m_OutputChannels; ///< List of output channel names.
- std::vector<int> m_SamplingRates; ///< List of available sampling rates.
- std::vector<int> m_BufferSizes; ///< List of available buffer sizes.
-
- int m_CurrentSamplingRate; ///< Currently selected sampling rate.
- int m_CurrentBufferSize; ///< Currently selected buffer size.
-
- ConnectionStates m_ConnectionStatus; ///< Status of device connection
- bool m_IsActive; ///< Flag for teh active status.
- bool m_IsStreaming; ///< Flag for streaming status.
- std::vector<float> m_InputLevels; ///< List of input levels.
- std::vector<float> m_OutputLevels; ///< List of output levels.
-
- int m_LeftMonitorChannel; ///< The device channel to use for monitoring left channel data.
- int m_RightMonitorChannel; ///< The device channel to use for monitoring right channel data.
- float m_MonitorGain; ///< Amount of gain to apply for monitoring signal.
-};
-
-
-// This enum is for choosing filter for audio devices scan
-typedef enum eAudioDeviceFilter
-{
- eAllDevices = 0, // Choose all audio devices
- eInputOnlyDevices, // Choose only input audio devices
- eOutputOnlyDevices, // Choose only output audio devices
- eFullDuplexDevices, // Choose audio devices that have both input and output channels on the same device
- eMatchedDuplexDevices, // Match(aggregate) audio devices that have both input and output channels but are considered different audio devices (For mac)
- eAudioDeviceFilterNum // Number of enums
-} eAudioDeviceFilter;
-
-
-class WCMRAudioDeviceManager : public WCRefManager
-{
-public://< Public functions for the class.
-
- WCMRAudioDeviceManager(WCMRAudioDeviceManagerClient *pTheClient, eAudioDeviceFilter eCurAudioDeviceFilter); ///< constructor
- virtual ~WCMRAudioDeviceManager(void); ///< Destructor
-
- //interfaces
- WCMRAudioDevice* InitNewCurrentDevice(const std::string & deviceName);
- void DestroyCurrentDevice();
- const DeviceInfoVec DeviceInfoList () const;
- WTErr GetDeviceInfoByName(const std::string & nameToMatch, DeviceInfo & devInfo) const;
- WTErr GetDeviceSampleRates(const std::string & nameToMatch, std::vector<int>& sampleRates) const;
- WTErr GetDeviceBufferSizes(const std::string & nameToMatch, std::vector<int>& bufferSizes) const;
-
- //virtual void EnableVerboseLogging(bool /*bEnable*/, const std::string& /*logFilePath*/) { };
-
- //notify backend
- void NotifyClient (WCMRAudioDeviceManagerClient::NotificationReason forReason, void *pParam = NULL);
-
-protected:
-
- mutable wvNS::wvThread::ThreadMutex m_AudioDeviceInfoVecMutex; // mutex to lock device info list
- DeviceInfoVec m_DeviceInfoVec;
-
- eAudioDeviceFilter m_eAudioDeviceFilter;
- WCMRAudioDevice* m_CurrentDevice;
-
-private:
- // override in derived classes
- // made private to avoid pure virtual function call
- virtual WCMRAudioDevice* initNewCurrentDeviceImpl(const std::string & deviceName) = 0;
- virtual void destroyCurrentDeviceImpl() = 0;
- virtual WTErr getDeviceSampleRatesImpl(const std::string & deviceName, std::vector<int>& sampleRates) const = 0;
- virtual WTErr getDeviceBufferSizesImpl(const std::string & deviceName, std::vector<int>& bufferSizes) const = 0;
- virtual WTErr generateDeviceListImpl() = 0;
- virtual WTErr updateDeviceListImpl() = 0;
-
- WCMRAudioDeviceManagerClient *m_pTheClient; ///< The device manager's client, used to send notifications.
-};
-
-#endif //#ifndef __WCMRAudioDeviceManager_h_