mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1367646 - Update WebRTC with cubeb_device_collection changes. r+jesup r=jesup,kinetik
MozReview-Commit-ID: 3llJO2vWPJh --HG-- extra : rebase_source : 70ef5201d310b1b034c24070c572e26a001e24a5
This commit is contained in:
parent
9224fdaf13
commit
4b414a3c6c
@ -38,7 +38,7 @@ namespace mozilla {
|
||||
nsTArray<int>* AudioInputCubeb::mDeviceIndexes;
|
||||
int AudioInputCubeb::mDefaultDevice = -1;
|
||||
nsTArray<nsCString>* AudioInputCubeb::mDeviceNames;
|
||||
cubeb_device_collection* AudioInputCubeb::mDevices = nullptr;
|
||||
cubeb_device_collection AudioInputCubeb::mDevices = { nullptr, 0 };
|
||||
bool AudioInputCubeb::mAnyInUse = false;
|
||||
StaticMutex AudioInputCubeb::sMutex;
|
||||
|
||||
@ -52,7 +52,7 @@ void AudioInputCubeb::UpdateDeviceList()
|
||||
return;
|
||||
}
|
||||
|
||||
cubeb_device_collection *devices = nullptr;
|
||||
cubeb_device_collection devices = { nullptr, 0 };
|
||||
|
||||
if (CUBEB_OK != cubeb_enumerate_devices(cubebContext,
|
||||
CUBEB_DEVICE_TYPE_INPUT,
|
||||
@ -71,27 +71,27 @@ void AudioInputCubeb::UpdateDeviceList()
|
||||
// For some reason the "fake" device for automation is marked as DISABLED,
|
||||
// so white-list it.
|
||||
mDefaultDevice = -1;
|
||||
for (uint32_t i = 0; i < devices->count; i++) {
|
||||
for (uint32_t i = 0; i < devices.count; i++) {
|
||||
LOG(("Cubeb device %u: type 0x%x, state 0x%x, name %s, id %p",
|
||||
i, devices->device[i]->type, devices->device[i]->state,
|
||||
devices->device[i]->friendly_name, devices->device[i]->device_id));
|
||||
if (devices->device[i]->type == CUBEB_DEVICE_TYPE_INPUT && // paranoia
|
||||
(devices->device[i]->state == CUBEB_DEVICE_STATE_ENABLED ||
|
||||
(devices->device[i]->state == CUBEB_DEVICE_STATE_DISABLED &&
|
||||
devices->device[i]->friendly_name &&
|
||||
strcmp(devices->device[i]->friendly_name, "Sine source at 440 Hz") == 0)))
|
||||
i, devices.device[i].type, devices.device[i].state,
|
||||
devices.device[i].friendly_name, devices.device[i].device_id));
|
||||
if (devices.device[i].type == CUBEB_DEVICE_TYPE_INPUT && // paranoia
|
||||
(devices.device[i].state == CUBEB_DEVICE_STATE_ENABLED ||
|
||||
(devices.device[i].state == CUBEB_DEVICE_STATE_DISABLED &&
|
||||
devices.device[i].friendly_name &&
|
||||
strcmp(devices.device[i].friendly_name, "Sine source at 440 Hz") == 0)))
|
||||
{
|
||||
auto j = mDeviceNames->IndexOf(devices->device[i]->device_id);
|
||||
auto j = mDeviceNames->IndexOf(devices.device[i].device_id);
|
||||
if (j != nsTArray<nsCString>::NoIndex) {
|
||||
// match! update the mapping
|
||||
(*mDeviceIndexes)[j] = i;
|
||||
} else {
|
||||
// new device, add to the array
|
||||
mDeviceIndexes->AppendElement(i);
|
||||
mDeviceNames->AppendElement(devices->device[i]->device_id);
|
||||
mDeviceNames->AppendElement(devices.device[i].device_id);
|
||||
j = mDeviceIndexes->Length()-1;
|
||||
}
|
||||
if (devices->device[i]->preferred & CUBEB_DEVICE_PREF_VOICE) {
|
||||
if (devices.device[i].preferred & CUBEB_DEVICE_PREF_VOICE) {
|
||||
// There can be only one... we hope
|
||||
NS_ASSERTION(mDefaultDevice == -1, "multiple default cubeb input devices!");
|
||||
mDefaultDevice = j;
|
||||
@ -101,9 +101,7 @@ void AudioInputCubeb::UpdateDeviceList()
|
||||
LOG(("Cubeb default input device %d", mDefaultDevice));
|
||||
StaticMutexAutoLock lock(sMutex);
|
||||
// swap state
|
||||
if (mDevices) {
|
||||
cubeb_device_collection_destroy(cubebContext, mDevices);
|
||||
}
|
||||
cubeb_device_collection_destroy(cubebContext, &mDevices);
|
||||
mDevices = devices;
|
||||
}
|
||||
|
||||
|
@ -179,11 +179,7 @@ public:
|
||||
|
||||
static void CleanupGlobalData()
|
||||
{
|
||||
if (mDevices) {
|
||||
// This doesn't require anything more than support for free()
|
||||
cubeb_device_collection_destroy(CubebUtils::GetCubebContext(), mDevices);
|
||||
mDevices = nullptr;
|
||||
}
|
||||
cubeb_device_collection_destroy(CubebUtils::GetCubebContext(), &mDevices);
|
||||
delete mDeviceIndexes;
|
||||
mDeviceIndexes = nullptr;
|
||||
delete mDeviceNames;
|
||||
@ -234,7 +230,7 @@ public:
|
||||
#else
|
||||
int dev_index = DeviceIndex(aDeviceIndex);
|
||||
if (dev_index != -1) {
|
||||
aID = mDevices->device[dev_index]->devid;
|
||||
aID = mDevices.device[dev_index].devid;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -249,11 +245,11 @@ public:
|
||||
aStrGuidUTF8[0] = '\0';
|
||||
#else
|
||||
int32_t devindex = DeviceIndex(aIndex);
|
||||
if (!mDevices || devindex < 0) {
|
||||
if (mDevices.count == 0 || devindex < 0) {
|
||||
return 1;
|
||||
}
|
||||
SprintfLiteral(aStrNameUTF8, "%s%s", aIndex == -1 ? "default: " : "",
|
||||
mDevices->device[devindex]->friendly_name);
|
||||
mDevices.device[devindex].friendly_name);
|
||||
aStrGuidUTF8[0] = '\0';
|
||||
#endif
|
||||
return 0;
|
||||
@ -271,9 +267,9 @@ public:
|
||||
{
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
// OpenSL ES does not support enumerating devices.
|
||||
MOZ_ASSERT(!mDevices);
|
||||
MOZ_ASSERT(mDevices.count == 0);
|
||||
#else
|
||||
MOZ_ASSERT(mDevices);
|
||||
MOZ_ASSERT(mDevices.count > 0);
|
||||
#endif
|
||||
|
||||
if (mInUseCount == 0) {
|
||||
@ -325,7 +321,7 @@ private:
|
||||
static nsTArray<int>* mDeviceIndexes;
|
||||
static int mDefaultDevice; // -1 == not set
|
||||
static nsTArray<nsCString>* mDeviceNames;
|
||||
static cubeb_device_collection *mDevices;
|
||||
static cubeb_device_collection mDevices;
|
||||
static bool mAnyInUse;
|
||||
static StaticMutex sMutex;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user