History

add a sendAvatarAudioStream option to Agent for mixer load testing, closes #2291

Stephen Birarda committed 12 years ago

Commit 3b653ca1 parent e249b294 files · +62 −11Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 4 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+19−8
@@ -28,8 +28,6 @@ · 27 unmodified lines
2828 #include "LocalVoxels.h"
2929 #include "ScriptEngine.h"
3030
31−const unsigned int VISUAL_DATA_CALLBACK_USECS = (1.0 / 60.0) * 1000 * 1000;
32−
3331 int ScriptEngine::_scriptNumber = 1;
3432 VoxelsScriptingInterface ScriptEngine::_voxelsScriptingInterface;
3533 ParticlesScriptingInterface ScriptEngine::_particlesScriptingInterface;
@@ -54,6 +52,7 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, bool wantMenuItems, co · 18 unmodified lines
5452 _avatarIdentityTimer(NULL),
5553 _avatarBillboardTimer(NULL),
5654 _timerFunctionMap(),
55+ _avatarAudioBuffer(NULL),
5756 _controllerScriptingInterface(controllerScriptingInterface),
5857 _avatarData(NULL),
5958 _wantMenuItems(wantMenuItems),
@@ -77,9 +76,6 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, bool wantMenuItems, co · 17 unmodified lines
7776 _scriptNumber++;
7877 }
7978
80−ScriptEngine::~ScriptEngine() {
81−}
82−
8379 void ScriptEngine::setIsAvatar(bool isAvatar) {
8480 _isAvatar = isAvatar;
8581
@@ -169,8 +165,8 @@ void ScriptEngine::init() { · 83 unmodified lines
169165 _engine.globalObject().setProperty("TREE_SCALE", treeScaleValue);
170166
171167 // let the VoxelPacketSender know how frequently we plan to call it
172− _voxelsScriptingInterface.getVoxelPacketSender()->setProcessCallIntervalHint(VISUAL_DATA_CALLBACK_USECS);
173− _particlesScriptingInterface.getParticlePacketSender()->setProcessCallIntervalHint(VISUAL_DATA_CALLBACK_USECS);
168+ _voxelsScriptingInterface.getVoxelPacketSender()->setProcessCallIntervalHint(SCRIPT_DATA_CALLBACK_USECS);
169+ _particlesScriptingInterface.getParticlePacketSender()->setProcessCallIntervalHint(SCRIPT_DATA_CALLBACK_USECS);
174170
175171 }
176172
@@ -228,7 +224,7 @@ void ScriptEngine::run() { · 51 unmodified lines
228224 qint64 lastUpdate = usecTimestampNow();
229225
230226 while (!_isFinished) {
231− int usecToSleep = usecTimestamp(&startTime) + (thisFrame++ * VISUAL_DATA_CALLBACK_USECS) - usecTimestampNow();
227+ int usecToSleep = usecTimestamp(&startTime) + (thisFrame++ * SCRIPT_DATA_CALLBACK_USECS) - usecTimestampNow();
232228 if (usecToSleep > 0) {
233229 usleep(usecToSleep);
234230 }
@@ -268,6 +264,21 @@ void ScriptEngine::run() { · 33 unmodified lines
268264 avatarPacket.append(_avatarData->toByteArray());
269265
270266 nodeList->broadcastToNodes(avatarPacket, NodeSet() << NodeType::AvatarMixer);
267+
268+ if (_avatarAudioBuffer && _numAvatarAudioBufferSamples > 0) {
269+ // if have an avatar audio stream then send it out to our audio-mixer
270+ QByteArray audioPacket = byteArrayWithPopulatedHeader(PacketTypeMicrophoneAudioNoEcho);
271+ QDataStream packetStream(&audioPacket, QIODevice::Append);
272+
273+ // use the orientation and position of this avatar for the source of this audio
274+ packetStream.writeRawData(reinterpret_cast<const char*>(&_avatarData->getPosition()), sizeof(glm::vec3));
275+ glm::quat headOrientation = _avatarData->getHeadOrientation();
276+ packetStream.writeRawData(reinterpret_cast<const char*>(&headOrientation), sizeof(glm::quat));
277+ packetStream.writeRawData(reinterpret_cast<const char*>(_avatarAudioBuffer),
278+ _numAvatarAudioBufferSamples * sizeof(int16_t));
279+
280+ nodeList->broadcastToNodes(audioPacket, NodeSet() << NodeType::AudioMixer);
281+ }
271282 }
272283
273284 qint64 now = usecTimestampNow();