repairs to audio classes for Sound* to QScriptValue

This commit is contained in:
Stephen Birarda 2014-11-11 10:55:07 -08:00
parent d4b74e6ecf
commit ef2c181c98
7 changed files with 31 additions and 15 deletions

View file

@ -21,6 +21,14 @@
#include "AudioInjector.h"
QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in) {
return engine->newQObject(in);
}
void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out) {
out = qobject_cast<AudioInjector*>(object.toQObject());
}
AudioInjector::AudioInjector(QObject* parent) :
QObject(parent),
_sound(NULL),

View file

@ -50,4 +50,7 @@ private:
Q_DECLARE_METATYPE(AudioInjector*)
QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in);
void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out);
#endif // hifi_AudioInjector_h

View file

@ -13,6 +13,7 @@
void registerAudioMetaTypes(QScriptEngine* engine) {
qScriptRegisterMetaType(engine, injectorOptionsToScriptValue, injectorOptionsFromScriptValue);
qScriptRegisterMetaType(engine, soundToScriptValue, soundFromScriptValue);
}
AudioScriptingInterface& AudioScriptingInterface::getInstance() {
@ -23,7 +24,7 @@ AudioScriptingInterface& AudioScriptingInterface::getInstance() {
AudioScriptingInterface::AudioScriptingInterface() :
_localLoopbackInterface(NULL)
{
qRegisterMetaType<AudioInjectorOptions>("AudioInjectorOptions");
}
void AudioScriptingInterface::stopAllInjectors() {
@ -41,12 +42,9 @@ void AudioScriptingInterface::stopAllInjectors() {
}
}
AudioInjector* AudioScriptingInterface::playSound(Sound* sound, const AudioInjectorOptions* injectorOptions) {
AudioInjector* AudioScriptingInterface::playSound(Sound* sound, AudioInjectorOptions& injectorOptions) {
if (sound->isStereo()) {
const_cast<AudioInjectorOptions*>(injectorOptions)->stereo = true;
}
AudioInjector* injector = new AudioInjector(sound, *injectorOptions);
AudioInjector* injector = new AudioInjector(sound, injectorOptions);
QThread* injectorThread = new QThread();

View file

@ -32,7 +32,7 @@ public slots:
static float getLoudness(AudioInjector* injector);
AudioInjector* playSound(Sound* sound, const AudioInjectorOptions* injectorOptions = NULL);
AudioInjector* playSound(Sound* sound, AudioInjectorOptions& injectorOptions);
void stopInjector(AudioInjector* injector);
bool isInjectorPlaying(AudioInjector* injector);

View file

@ -29,6 +29,15 @@
#include "AudioEditBuffer.h"
#include "Sound.h"
QScriptValue soundToScriptValue(QScriptEngine* engine, Sound* const &in) {
return engine->newQObject(in);
}
void soundFromScriptValue(const QScriptValue &object, Sound* &out) {
out = qobject_cast<Sound*>(object.toQObject());
}
// procedural audio version of Sound
Sound::Sound(float volume, float frequency, float duration, float decay, QObject* parent) :
QObject(parent),

View file

@ -14,6 +14,7 @@
#include <QtCore/QObject>
#include <QtNetwork/QNetworkReply>
#include <QtScript/qscriptengine.h>
class Sound : public QObject {
Q_OBJECT
@ -44,4 +45,9 @@ private slots:
void replyError(QNetworkReply::NetworkError code);
};
Q_DECLARE_METATYPE(Sound*)
QScriptValue soundToScriptValue(QScriptEngine* engine, Sound* const &in);
void soundFromScriptValue(const QScriptValue &object, Sound* &out);
#endif // hifi_Sound_h

View file

@ -74,14 +74,6 @@ void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {
out = qobject_cast<AvatarData*>(object.toQObject());
}
QScriptValue injectorToScriptValue(QScriptEngine* engine, AudioInjector* const &in) {
return engine->newQObject(in);
}
void injectorFromScriptValue(const QScriptValue &object, AudioInjector* &out) {
out = qobject_cast<AudioInjector*>(object.toQObject());
}
QScriptValue inputControllerToScriptValue(QScriptEngine *engine, AbstractInputController* const &in) {
return engine->newQObject(in);
}