From 6ef4e145c59281a63178d9a26c10f63906b21f2a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Apr 2014 13:51:58 -0700 Subject: [PATCH 1/5] add better Sound error handling --- libraries/audio/src/Sound.cpp | 16 ++++++++++++---- libraries/audio/src/Sound.h | 6 +++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 001f863e03..3aae6b995d 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -73,15 +73,18 @@ Sound::Sound(const QUrl& sampleURL, QObject* parent) : // QNetworkAccess manager to grab the raw audio file at the given URL QNetworkAccessManager *manager = new QNetworkAccessManager(this); - connect(manager, SIGNAL(finished(QNetworkReply*)), - this, SLOT(replyFinished(QNetworkReply*))); qDebug() << "Requesting audio file" << sampleURL.toDisplayString(); - manager->get(QNetworkRequest(sampleURL)); + + QNetworkReply* soundDownload = manager->get(QNetworkRequest(sampleURL)); + connect(soundDownload, &QNetworkReply::finished, this, &Sound::replyFinished); + connect(soundDownload, SLOT(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError))); } -void Sound::replyFinished(QNetworkReply* reply) { +void Sound::replyFinished() { + QNetworkReply* reply = reinterpret_cast(sender()); + // replace our byte array with the downloaded data QByteArray rawAudioByteArray = reply->readAll(); @@ -110,6 +113,11 @@ void Sound::replyFinished(QNetworkReply* reply) { } } +void Sound::replyError(QNetworkReply::NetworkError code) { + QNetworkReply* reply = reinterpret_cast(sender()); + qDebug() << "Error downloading sound file at" << reply->url().toString() << "-" << reply->errorString(); +} + void Sound::downSample(const QByteArray& rawAudioByteArray) { // assume that this was a RAW file and is now an array of samples that are diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index e1613fec51..50b2bbadaa 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -13,8 +13,7 @@ #define hifi_Sound_h #include - -class QNetworkReply; +#include class Sound : public QObject { Q_OBJECT @@ -31,7 +30,8 @@ private: void interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray); private slots: - void replyFinished(QNetworkReply* reply); + void replyFinished(); + void replyError(QNetworkReply::NetworkError code); }; #endif // hifi_Sound_h From 3b8cf8c172dd4470edb579c3a1b2e32220dacee5 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Apr 2014 13:55:22 -0700 Subject: [PATCH 2/5] fix mixed signal and slot --- libraries/audio/src/Sound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 3aae6b995d..793fd51a56 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -78,7 +78,7 @@ Sound::Sound(const QUrl& sampleURL, QObject* parent) : QNetworkReply* soundDownload = manager->get(QNetworkRequest(sampleURL)); connect(soundDownload, &QNetworkReply::finished, this, &Sound::replyFinished); - connect(soundDownload, SLOT(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError))); + connect(soundDownload, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error(QNetworkReply::NetworkError))); } void Sound::replyFinished() { From aa5d7aa0b1963b236e2385378a4c2d92a6ac1f03 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Apr 2014 13:58:33 -0700 Subject: [PATCH 3/5] fix incorrectly named slot in Sound --- libraries/audio/src/Sound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 793fd51a56..bcae878259 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -78,7 +78,7 @@ Sound::Sound(const QUrl& sampleURL, QObject* parent) : QNetworkReply* soundDownload = manager->get(QNetworkRequest(sampleURL)); connect(soundDownload, &QNetworkReply::finished, this, &Sound::replyFinished); - connect(soundDownload, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error(QNetworkReply::NetworkError))); + connect(soundDownload, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(replyError(QNetworkReply::NetworkError))); } void Sound::replyFinished() { From 1a895b9342d410607c0ff92d382b181b9c84672d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Apr 2014 14:24:50 -0700 Subject: [PATCH 4/5] add property for display name to JS --- libraries/avatars/src/AvatarData.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index d1a63c9a58..250ae07b01 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -97,13 +97,14 @@ class AvatarData : public QObject { Q_PROPERTY(float audioLoudness READ getAudioLoudness WRITE setAudioLoudness) Q_PROPERTY(float audioAverageLoudness READ getAudioAverageLoudness WRITE setAudioAverageLoudness) + Q_PROPERTY(QString displayName READ getDisplayName WRITE setDisplayName) Q_PROPERTY(QString faceModelURL READ getFaceModelURLFromScript WRITE setFaceModelURLFromScript) Q_PROPERTY(QString skeletonModelURL READ getSkeletonModelURLFromScript WRITE setSkeletonModelURLFromScript) Q_PROPERTY(QString billboardURL READ getBillboardURL WRITE setBillboardFromURL) Q_PROPERTY(QStringList jointNames READ getJointNames) - Q_PROPERTY(QUuid sessionUUID READ getSessionUUID); + Q_PROPERTY(QUuid sessionUUID READ getSessionUUID) public: AvatarData(); virtual ~AvatarData(); From 92f2794ea80a552f50a36ac66e43f9cea5a71e1d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 18 Apr 2014 14:26:56 -0700 Subject: [PATCH 5/5] add a property to Sound to tell if empty --- libraries/audio/src/Sound.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 50b2bbadaa..ae2fd391a1 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -17,10 +17,14 @@ class Sound : public QObject { Q_OBJECT + + Q_PROPERTY(bool empty READ isEmpty) public: Sound(const QUrl& sampleURL, QObject* parent = NULL); Sound(float volume, float frequency, float duration, float decay, QObject* parent = NULL); + bool isEmpty() const { return _byteArray.isEmpty(); } + const QByteArray& getByteArray() { return _byteArray; } private: