add support for listing all audio devices and default device in JS

This commit is contained in:
ZappoMan 2014-03-24 09:15:03 -07:00
parent df9e1ff077
commit 7ef1fe3a74
6 changed files with 67 additions and 7 deletions

View file

@ -10,6 +10,27 @@
var inputDevices = AudioDevice.getInputDevices();
var defaultInputDevice = AudioDevice.getDefaultInputDevice();
print("Input Devices:");
for(var i = 0; i < inputDevices.length; i++) {
if (inputDevices[i] == defaultInputDevice) {
print(" " + inputDevices[i] + " << default");
} else {
print(" " + inputDevices[i]);
}
}
var outputDevices = AudioDevice.getInputDevices();
var defaultOutputDevice = AudioDevice.getDefaultInputDevice();
print("Output Devices:");
for(var i = 0; i < outputDevices.length; i++) {
if (outputDevices[i] == defaultOutputDevice) {
print(" " + outputDevices[i] + " << default");
} else {
print(" " + outputDevices[i]);
}
}
print("Audio Input Device: " + AudioDevice.getInputDevice());
AudioDevice.setInputDevice("Shure Digital");

View file

@ -271,6 +271,19 @@ void Audio::start() {
}
}
QString Audio::getDefaultDeviceName(QAudio::Mode mode) {
QAudioDeviceInfo deviceInfo = defaultAudioDeviceForMode(mode);
return deviceInfo.deviceName();
}
QVector<QString> Audio::getDeviceNames(QAudio::Mode mode) {
QVector<QString> deviceNames;
foreach(QAudioDeviceInfo audioDevice, QAudioDeviceInfo::availableDevices(mode)) {
deviceNames << audioDevice.deviceName().trimmed();
}
return deviceNames;
}
bool Audio::switchInputToAudioDevice(const QString& inputDeviceName) {
bool supportedFormat = false;

View file

@ -19,9 +19,12 @@
#include "InterfaceConfig.h"
#include <QAudio>
#include <QGLWidget>
#include <QtCore/QObject>
#include <QtCore/QVector>
#include <QtMultimedia/QAudioFormat>
#include <QVector>
#include <AbstractAudioInterface.h>
#include <AudioRingBuffer.h>
@ -29,7 +32,6 @@
#include "ui/Oscilloscope.h"
#include <QGLWidget>
static const int NUM_AUDIO_CHANNELS = 2;
@ -85,10 +87,10 @@ public slots:
bool switchInputToAudioDevice(const QString& inputDeviceName);
bool switchOutputToAudioDevice(const QString& outputDeviceName);
QString getInputAudioDeviceName() const { return _inputAudioDeviceName; }
QString getOutputAudioDeviceName() const { return _outputAudioDeviceName; }
QString getDeviceName(QAudio::Mode mode) const { return (mode == QAudio::AudioInput) ?
_inputAudioDeviceName : _outputAudioDeviceName; }
QString getDefaultDeviceName(QAudio::Mode mode);
QVector<QString> getDeviceNames(QAudio::Mode mode);
signals:
bool muteToggled();

View file

@ -36,9 +36,25 @@ bool AudioDeviceScriptingInterface::setOutputDevice(const QString& deviceName) {
}
QString AudioDeviceScriptingInterface::getInputDevice() {
return Application::getInstance()->getAudio()->getInputAudioDeviceName();
return Application::getInstance()->getAudio()->getDeviceName(QAudio::AudioInput);
}
QString AudioDeviceScriptingInterface::getOutputDevice() {
return Application::getInstance()->getAudio()->getOutputAudioDeviceName();
return Application::getInstance()->getAudio()->getDeviceName(QAudio::AudioOutput);
}
QString AudioDeviceScriptingInterface::getDefaultInputDevice() {
return Application::getInstance()->getAudio()->getDefaultDeviceName(QAudio::AudioInput);
}
QString AudioDeviceScriptingInterface::getDefaultOutputDevice() {
return Application::getInstance()->getAudio()->getDefaultDeviceName(QAudio::AudioOutput);
}
QVector<QString> AudioDeviceScriptingInterface::getInputDevices() {
return Application::getInstance()->getAudio()->getDeviceNames(QAudio::AudioInput);
}
QVector<QString> AudioDeviceScriptingInterface::getOutputDevices() {
return Application::getInstance()->getAudio()->getDeviceNames(QAudio::AudioOutput);
}

View file

@ -24,8 +24,15 @@ public:
public slots:
bool setInputDevice(const QString& deviceName);
bool setOutputDevice(const QString& deviceName);
QString getInputDevice();
QString getOutputDevice();
QString getDefaultInputDevice();
QString getDefaultOutputDevice();
QVector<QString> getInputDevices();
QVector<QString> getOutputDevices();
};
#endif /* defined(__hifi__AudioDeviceScriptingInterface__) */

View file

@ -144,6 +144,7 @@ void ScriptEngine::init() {
qScriptRegisterMetaType(&_engine, ParticleIDtoScriptValue, ParticleIDfromScriptValue);
qScriptRegisterSequenceMetaType<QVector<ParticleID> >(&_engine);
qScriptRegisterSequenceMetaType<QVector<glm::vec2> >(&_engine);
qScriptRegisterSequenceMetaType<QVector<QString> >(&_engine);
QScriptValue soundConstructorValue = _engine.newFunction(soundConstructor);
QScriptValue soundMetaObject = _engine.newQMetaObject(&Sound::staticMetaObject, soundConstructorValue);