summaryrefslogtreecommitdiffstats
path: root/dom/media/AudioDeviceInfo.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dom/media/AudioDeviceInfo.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/dom/media/AudioDeviceInfo.h b/dom/media/AudioDeviceInfo.h
new file mode 100644
index 0000000000..f08f8681c5
--- /dev/null
+++ b/dom/media/AudioDeviceInfo.h
@@ -0,0 +1,59 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOZILLA_AudioDeviceInfo_H
+#define MOZILLA_AudioDeviceInfo_H
+
+#include "nsIAudioDeviceInfo.h"
+#include "CubebUtils.h"
+#include "mozilla/Maybe.h"
+
+// This is mapped to the cubeb_device_info.
+class AudioDeviceInfo final : public nsIAudioDeviceInfo {
+ public:
+ NS_DECL_THREADSAFE_ISUPPORTS
+ NS_DECL_NSIAUDIODEVICEINFO
+
+ using AudioDeviceID = mozilla::CubebUtils::AudioDeviceID;
+
+ AudioDeviceInfo(const AudioDeviceID aID, const nsAString& aName,
+ const nsAString& aGroupId, const nsAString& aVendor,
+ uint16_t aType, uint16_t aState, uint16_t aPreferred,
+ uint16_t aSupportedFormat, uint16_t aDefaultFormat,
+ uint32_t aMaxChannels, uint32_t aDefaultRate,
+ uint32_t aMaxRate, uint32_t aMinRate, uint32_t aMaxLatency,
+ uint32_t aMinLatency);
+ explicit AudioDeviceInfo(cubeb_device_info* aInfo);
+
+ AudioDeviceID DeviceID() const;
+ const nsString& Name() const;
+ uint32_t DefaultRate() const { return mDefaultRate; }
+ uint32_t MaxChannels() const;
+ uint32_t Type() const;
+ uint32_t State() const;
+ const nsString& GroupID() const;
+ bool Preferred() const;
+
+ private:
+ virtual ~AudioDeviceInfo() = default;
+
+ const AudioDeviceID mDeviceId;
+ const nsString mName;
+ const nsString mGroupId;
+ const nsString mVendor;
+ const uint16_t mType;
+ const uint16_t mState;
+ const uint16_t mPreferred;
+ const uint16_t mSupportedFormat;
+ const uint16_t mDefaultFormat;
+ const uint32_t mMaxChannels;
+ const uint32_t mDefaultRate;
+ const uint32_t mMaxRate;
+ const uint32_t mMinRate;
+ const uint32_t mMaxLatency;
+ const uint32_t mMinLatency;
+};
+
+#endif // MOZILLA_AudioDeviceInfo_H