mirror of
https://github.com/holub/mame
synced 2025-07-08 19:31:59 +03:00

* Tested and works on Windows, macOS, and Linux. * Fixes compatibility with macOS Ventura and bugfixes WASAPI and WDM-KS on Windows.
76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
#ifndef INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
|
#define INCLUDED_PORTAUDIO_HOSTAPI_HXX
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
#include "portaudio.h"
|
|
|
|
#include "portaudiocpp/System.hxx"
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
// Forward declaration(s):
|
|
namespace portaudio
|
|
{
|
|
class Device;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
// Declaration(s):
|
|
namespace portaudio
|
|
{
|
|
|
|
|
|
//////
|
|
/// @brief HostApi represents a host API (usually type of driver) in the System.
|
|
///
|
|
/// A single System can support multiple HostApi's each one typically having
|
|
/// a set of Devices using that HostApi (usually driver type). All Devices in
|
|
/// the HostApi can be enumerated and the default input/output Device for this
|
|
/// HostApi can be retrieved.
|
|
//////
|
|
class HostApi
|
|
{
|
|
public:
|
|
typedef System::DeviceIterator DeviceIterator;
|
|
|
|
// query info: id, name, numDevices
|
|
PaHostApiTypeId typeId() const;
|
|
PaHostApiIndex index() const;
|
|
const char *name() const;
|
|
int deviceCount() const;
|
|
|
|
// iterate devices
|
|
DeviceIterator devicesBegin();
|
|
DeviceIterator devicesEnd();
|
|
|
|
// default devices
|
|
Device &defaultInputDevice() const;
|
|
Device &defaultOutputDevice() const;
|
|
|
|
// comparison operators
|
|
bool operator==(const HostApi &rhs) const;
|
|
bool operator!=(const HostApi &rhs) const;
|
|
|
|
private:
|
|
const PaHostApiInfo *info_;
|
|
Device **devices_;
|
|
|
|
private:
|
|
friend class System;
|
|
|
|
explicit HostApi(PaHostApiIndex index);
|
|
~HostApi();
|
|
|
|
HostApi(const HostApi &); // non-copyable
|
|
HostApi &operator=(const HostApi &); // non-copyable
|
|
};
|
|
|
|
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
#endif // INCLUDED_PORTAUDIO_HOSTAPI_HXX
|