mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 1152401 - Augment AudioDeviceInfo with a cubeb device id. r=padenot
MozReview-Commit-ID: 7QOcM5ITrxv --HG-- extra : rebase_source : 41071cfbccfc22b0c8a3b2d6a5405d4fbf23c16d
This commit is contained in:
parent
300cdedf50
commit
2f416390fe
@ -7,7 +7,31 @@
|
||||
|
||||
NS_IMPL_ISUPPORTS(AudioDeviceInfo, nsIAudioDeviceInfo)
|
||||
|
||||
AudioDeviceInfo::AudioDeviceInfo(const nsAString& aName,
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::CubebUtils;
|
||||
|
||||
AudioDeviceInfo::AudioDeviceInfo(cubeb_device_info* aInfo)
|
||||
:AudioDeviceInfo(aInfo->devid,
|
||||
NS_ConvertUTF8toUTF16(aInfo->friendly_name),
|
||||
NS_ConvertUTF8toUTF16(aInfo->group_id),
|
||||
NS_ConvertUTF8toUTF16(aInfo->vendor_name),
|
||||
aInfo->type,
|
||||
aInfo->state,
|
||||
aInfo->preferred,
|
||||
aInfo->format,
|
||||
aInfo->default_format,
|
||||
aInfo->max_channels,
|
||||
aInfo->default_rate,
|
||||
aInfo->max_rate,
|
||||
aInfo->min_rate,
|
||||
aInfo->latency_lo,
|
||||
aInfo->latency_hi)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
AudioDeviceInfo::AudioDeviceInfo(AudioDeviceID aID,
|
||||
const nsAString& aName,
|
||||
const nsAString& aGroupId,
|
||||
const nsAString& aVendor,
|
||||
uint16_t aType,
|
||||
@ -20,8 +44,9 @@ AudioDeviceInfo::AudioDeviceInfo(const nsAString& aName,
|
||||
uint32_t aMaxRate,
|
||||
uint32_t aMinRate,
|
||||
uint32_t aMaxLatency,
|
||||
uint32_t aMinLatency)
|
||||
: mName(aName)
|
||||
uint32_t aMinLatency)
|
||||
: mDeviceId(aID)
|
||||
, mName(aName)
|
||||
, mGroupId(aGroupId)
|
||||
, mVendor(aVendor)
|
||||
, mType(aType)
|
||||
@ -54,6 +79,32 @@ AudioDeviceInfo::AudioDeviceInfo(const nsAString& aName,
|
||||
mDefaultFormat == FMT_F32BE, "Wrong default format");
|
||||
}
|
||||
|
||||
Maybe<AudioDeviceID>
|
||||
AudioDeviceInfo::GetDeviceID()
|
||||
{
|
||||
if (mDeviceId) {
|
||||
return Some(mDeviceId);
|
||||
}
|
||||
return Nothing();
|
||||
}
|
||||
|
||||
const nsString& AudioDeviceInfo::FriendlyName()
|
||||
{
|
||||
return mName;
|
||||
}
|
||||
uint32_t AudioDeviceInfo::MaxChannels()
|
||||
{
|
||||
return mMaxChannels;
|
||||
}
|
||||
uint32_t AudioDeviceInfo::Type()
|
||||
{
|
||||
return mType;
|
||||
}
|
||||
uint32_t AudioDeviceInfo::State()
|
||||
{
|
||||
return mState;
|
||||
}
|
||||
|
||||
/* readonly attribute DOMString name; */
|
||||
NS_IMETHODIMP
|
||||
AudioDeviceInfo::GetName(nsAString& aName)
|
||||
|
@ -7,47 +7,61 @@
|
||||
#define MOZILLA_AudioDeviceInfo_H
|
||||
|
||||
#include "nsIAudioDeviceInfo.h"
|
||||
#include "CubebUtils.h"
|
||||
#include "nsString.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
|
||||
// This is mapped to the cubeb_device_info.
|
||||
class AudioDeviceInfo final : public nsIAudioDeviceInfo
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_THREADSAFE_ISUPPORTS
|
||||
NS_DECL_NSIAUDIODEVICEINFO
|
||||
|
||||
explicit AudioDeviceInfo(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);
|
||||
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);
|
||||
// It is possible to not know the device identifier here. It depends on which
|
||||
// ctor this instance has been constructed with.
|
||||
mozilla::Maybe<AudioDeviceID> GetDeviceID();
|
||||
const nsString& FriendlyName();
|
||||
uint32_t MaxChannels();
|
||||
uint32_t Type();
|
||||
uint32_t State();
|
||||
private:
|
||||
virtual ~AudioDeviceInfo() = default;
|
||||
|
||||
nsString mName;
|
||||
nsString mGroupId;
|
||||
nsString mVendor;
|
||||
uint16_t mType;
|
||||
uint16_t mState;
|
||||
uint16_t mPreferred;
|
||||
uint16_t mSupportedFormat;
|
||||
uint16_t mDefaultFormat;
|
||||
uint32_t mMaxChannels;
|
||||
uint32_t mDefaultRate;
|
||||
uint32_t mMaxRate;
|
||||
uint32_t mMinRate;
|
||||
uint32_t mMaxLatency;
|
||||
uint32_t mMinLatency;
|
||||
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
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "MediaInfo.h"
|
||||
#include "mozilla/AbstractThread.h"
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
#include "mozilla/dom/AudioDeviceInfo.h"
|
||||
#include "mozilla/ipc/FileDescriptor.h"
|
||||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
@ -684,7 +685,8 @@ void GetDeviceCollection(nsTArray<RefPtr<AudioDeviceInfo>>& aDeviceInfos,
|
||||
for (unsigned int i = 0; i < collection.count; ++i) {
|
||||
auto device = collection.device[i];
|
||||
RefPtr<AudioDeviceInfo> info =
|
||||
new AudioDeviceInfo(NS_ConvertUTF8toUTF16(device.friendly_name),
|
||||
new AudioDeviceInfo(device.devid,
|
||||
NS_ConvertUTF8toUTF16(device.friendly_name),
|
||||
NS_ConvertUTF8toUTF16(device.group_id),
|
||||
NS_ConvertUTF8toUTF16(device.vendor_name),
|
||||
ConvertCubebType(device.type),
|
||||
|
@ -8,9 +8,12 @@
|
||||
#define CubebUtils_h_
|
||||
|
||||
#include "cubeb/cubeb.h"
|
||||
#include "mozilla/dom/AudioDeviceInfo.h"
|
||||
#include "nsString.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
|
||||
class AudioDeviceInfo;
|
||||
|
||||
namespace mozilla {
|
||||
namespace CubebUtils {
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
#include "AudioPacketizer.h"
|
||||
#include "AudioSegment.h"
|
||||
#include "AudioDeviceInfo.h"
|
||||
#include "CamerasChild.h"
|
||||
#include "cubeb/cubeb.h"
|
||||
#include "CubebUtils.h"
|
||||
|
Loading…
Reference in New Issue
Block a user