no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / dom / media / AudioDeviceInfo.cpp
blobb37efafa321eda2717d6f451ab8d61402e9135c3
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "AudioDeviceInfo.h"
8 NS_IMPL_ISUPPORTS(AudioDeviceInfo, nsIAudioDeviceInfo)
10 using namespace mozilla;
11 using namespace mozilla::CubebUtils;
13 AudioDeviceInfo::AudioDeviceInfo(cubeb_device_info* aInfo)
14 : AudioDeviceInfo(aInfo->devid, NS_ConvertUTF8toUTF16(aInfo->friendly_name),
15 NS_ConvertUTF8toUTF16(aInfo->group_id),
16 NS_ConvertUTF8toUTF16(aInfo->vendor_name), aInfo->type,
17 aInfo->state, aInfo->preferred, aInfo->format,
18 aInfo->default_format, aInfo->max_channels,
19 aInfo->default_rate, aInfo->max_rate, aInfo->min_rate,
20 aInfo->latency_lo, aInfo->latency_hi) {}
22 AudioDeviceInfo::AudioDeviceInfo(
23 AudioDeviceID aID, const nsAString& aName, const nsAString& aGroupId,
24 const nsAString& aVendor, uint16_t aType, uint16_t aState,
25 uint16_t aPreferred, uint16_t aSupportedFormat, uint16_t aDefaultFormat,
26 uint32_t aMaxChannels, uint32_t aDefaultRate, uint32_t aMaxRate,
27 uint32_t aMinRate, uint32_t aMaxLatency, uint32_t aMinLatency)
28 : mDeviceId(aID),
29 mName(aName),
30 mGroupId(aGroupId),
31 mVendor(aVendor),
32 mType(aType),
33 mState(aState),
34 mPreferred(aPreferred),
35 mSupportedFormat(aSupportedFormat),
36 mDefaultFormat(aDefaultFormat),
37 mMaxChannels(aMaxChannels),
38 mDefaultRate(aDefaultRate),
39 mMaxRate(aMaxRate),
40 mMinRate(aMinRate),
41 mMaxLatency(aMaxLatency),
42 mMinLatency(aMinLatency) {
43 MOZ_ASSERT(
44 mType == TYPE_UNKNOWN || mType == TYPE_INPUT || mType == TYPE_OUTPUT,
45 "Wrong type");
46 MOZ_ASSERT(mState == STATE_DISABLED || mState == STATE_UNPLUGGED ||
47 mState == STATE_ENABLED,
48 "Wrong state");
49 MOZ_ASSERT(
50 mPreferred == PREF_NONE || mPreferred == PREF_ALL ||
51 mPreferred & (PREF_MULTIMEDIA | PREF_VOICE | PREF_NOTIFICATION),
52 "Wrong preferred value");
53 MOZ_ASSERT(mSupportedFormat & (FMT_S16LE | FMT_S16BE | FMT_F32LE | FMT_F32BE),
54 "Wrong supported format");
55 MOZ_ASSERT(mDefaultFormat == FMT_S16LE || mDefaultFormat == FMT_S16BE ||
56 mDefaultFormat == FMT_F32LE || mDefaultFormat == FMT_F32BE,
57 "Wrong default format");
60 AudioDeviceID AudioDeviceInfo::DeviceID() const { return mDeviceId; }
61 const nsString& AudioDeviceInfo::Name() const { return mName; }
62 uint32_t AudioDeviceInfo::MaxChannels() const { return mMaxChannels; }
63 uint32_t AudioDeviceInfo::Type() const { return mType; }
64 uint32_t AudioDeviceInfo::State() const { return mState; }
65 const nsString& AudioDeviceInfo::GroupID() const { return mGroupId; }
67 bool AudioDeviceInfo::Preferred() const { return mPreferred; }
69 /* readonly attribute DOMString name; */
70 NS_IMETHODIMP
71 AudioDeviceInfo::GetName(nsAString& aName) {
72 aName = mName;
73 return NS_OK;
76 /* readonly attribute DOMString groupId; */
77 NS_IMETHODIMP
78 AudioDeviceInfo::GetGroupId(nsAString& aGroupId) {
79 aGroupId = mGroupId;
80 return NS_OK;
83 /* readonly attribute DOMString vendor; */
84 NS_IMETHODIMP
85 AudioDeviceInfo::GetVendor(nsAString& aVendor) {
86 aVendor = mVendor;
87 return NS_OK;
90 /* readonly attribute unsigned short type; */
91 NS_IMETHODIMP
92 AudioDeviceInfo::GetType(uint16_t* aType) {
93 *aType = mType;
94 return NS_OK;
97 /* readonly attribute unsigned short state; */
98 NS_IMETHODIMP
99 AudioDeviceInfo::GetState(uint16_t* aState) {
100 *aState = mState;
101 return NS_OK;
104 /* readonly attribute unsigned short preferred; */
105 NS_IMETHODIMP
106 AudioDeviceInfo::GetPreferred(uint16_t* aPreferred) {
107 *aPreferred = mPreferred;
108 return NS_OK;
111 /* readonly attribute unsigned short supportedFormat; */
112 NS_IMETHODIMP
113 AudioDeviceInfo::GetSupportedFormat(uint16_t* aSupportedFormat) {
114 *aSupportedFormat = mSupportedFormat;
115 return NS_OK;
118 /* readonly attribute unsigned short defaultFormat; */
119 NS_IMETHODIMP
120 AudioDeviceInfo::GetDefaultFormat(uint16_t* aDefaultFormat) {
121 *aDefaultFormat = mDefaultFormat;
122 return NS_OK;
125 /* readonly attribute unsigned long maxChannels; */
126 NS_IMETHODIMP
127 AudioDeviceInfo::GetMaxChannels(uint32_t* aMaxChannels) {
128 *aMaxChannels = mMaxChannels;
129 return NS_OK;
132 /* readonly attribute unsigned long defaultRate; */
133 NS_IMETHODIMP
134 AudioDeviceInfo::GetDefaultRate(uint32_t* aDefaultRate) {
135 *aDefaultRate = mDefaultRate;
136 return NS_OK;
139 /* readonly attribute unsigned long maxRate; */
140 NS_IMETHODIMP
141 AudioDeviceInfo::GetMaxRate(uint32_t* aMaxRate) {
142 *aMaxRate = mMaxRate;
143 return NS_OK;
146 /* readonly attribute unsigned long minRate; */
147 NS_IMETHODIMP
148 AudioDeviceInfo::GetMinRate(uint32_t* aMinRate) {
149 *aMinRate = mMinRate;
150 return NS_OK;
153 /* readonly attribute unsigned long maxLatency; */
154 NS_IMETHODIMP
155 AudioDeviceInfo::GetMaxLatency(uint32_t* aMaxLatency) {
156 *aMaxLatency = mMaxLatency;
157 return NS_OK;
160 /* readonly attribute unsigned long minLatency; */
161 NS_IMETHODIMP
162 AudioDeviceInfo::GetMinLatency(uint32_t* aMinLatency) {
163 *aMinLatency = mMinLatency;
164 return NS_OK;