From 5b272bfd6adc0468e29f244e156084c393034c54 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Sun, 5 Jan 2014 17:09:57 -0800 Subject: [PATCH 1/3] fix random UUID creation for injected audio --- libraries/audio/src/AudioInjector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index c7ca388139..722c2a6dbd 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -57,7 +57,7 @@ void AudioInjector::injectAudio() { currentPacketPosition += rfcSessionUUID.size(); // pick a random UUID to use for this stream - QUuid randomStreamUUID; + QUuid randomStreamUUID = QUuid::createUuid(); QByteArray rfcStreamUUID = randomStreamUUID.toRfc4122(); memcpy(currentPacketPosition, rfcStreamUUID, rfcStreamUUID.size()); currentPacketPosition += rfcStreamUUID.size(); From a06f18328ca60327d083fd9732a24f14d4439484 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Sun, 5 Jan 2014 17:40:37 -0800 Subject: [PATCH 2/3] add downsampling so RAW audio for sound assumed to be 48Khz --- libraries/audio/src/Sound.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 02f8aaef9c..36d2b9563a 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -27,5 +27,25 @@ Sound::Sound(const QUrl& sampleURL, QObject* parent) : void Sound::replyFinished(QNetworkReply* reply) { // replace our byte array with the downloaded data - _byteArray = reply->readAll(); + QByteArray rawAudioByteArray = reply->readAll(); + + // assume that this was a RAW file and is now an array of samples that are + // signed, 16-bit, 48Khz, mono + + // we want to convert it to the format that the audio-mixer wants + // which is signed, 16-bit, 24Khz, mono + + _byteArray.resize(rawAudioByteArray.size() / 2); + + int numSourceSamples = rawAudioByteArray.size() / sizeof(int16_t); + int16_t* sourceSamples = (int16_t*) rawAudioByteArray.data(); + int16_t* destinationSamples = (int16_t*) _byteArray.data(); + + for (int i = 1; i < numSourceSamples; i += 2) { + if (i + 1 >= numSourceSamples) { + destinationSamples[(i - 1) / 2] = (rawAudioByteArray[i - 1] / 2) + (rawAudioByteArray[i] / 2); + } else { + destinationSamples[(i - 1) / 2] = (sourceSamples[i - 1] / 4) + (sourceSamples[i] / 2) + (sourceSamples[i + 1] / 4); + } + } } \ No newline at end of file From 32be6199fd0f283d447e754e654e116eff31a5ac Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Sun, 5 Jan 2014 17:41:33 -0800 Subject: [PATCH 3/3] fix reference to downloaded byte array samples --- 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 36d2b9563a..5f233e2c63 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -43,7 +43,7 @@ void Sound::replyFinished(QNetworkReply* reply) { for (int i = 1; i < numSourceSamples; i += 2) { if (i + 1 >= numSourceSamples) { - destinationSamples[(i - 1) / 2] = (rawAudioByteArray[i - 1] / 2) + (rawAudioByteArray[i] / 2); + destinationSamples[(i - 1) / 2] = (sourceSamples[i - 1] / 2) + (sourceSamples[i] / 2); } else { destinationSamples[(i - 1) / 2] = (sourceSamples[i - 1] / 4) + (sourceSamples[i] / 2) + (sourceSamples[i + 1] / 4); }