Fix bug in how emitAudioPacket() determines mono/stereo.

Compressed bytes were counted as if audio samples.
This commit is contained in:
Ken Cooke 2018-01-10 06:54:27 -08:00
parent c363a9281e
commit 660032d8fb
4 changed files with 6 additions and 8 deletions

View file

@ -439,7 +439,7 @@ void Agent::executeScript() {
encodedBuffer = audio; encodedBuffer = audio;
} }
AbstractAudioInterface::emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), audioSequenceNumber, AbstractAudioInterface::emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), audioSequenceNumber, false,
audioTransform, scriptedAvatar->getWorldPosition(), glm::vec3(0), audioTransform, scriptedAvatar->getWorldPosition(), glm::vec3(0),
packetType, _selectedCodecName); packetType, _selectedCodecName);
}); });

View file

@ -1079,7 +1079,7 @@ void AudioClient::handleAudioInput(QByteArray& audioBuffer) {
encodedBuffer = audioBuffer; encodedBuffer = audioBuffer;
} }
emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, emitAudioPacket(encodedBuffer.data(), encodedBuffer.size(), _outgoingAvatarAudioSequenceNumber, _isStereoInput,
audioTransform, avatarBoundingBoxCorner, avatarBoundingBoxScale, audioTransform, avatarBoundingBoxCorner, avatarBoundingBoxScale,
packetType, _selectedCodecName); packetType, _selectedCodecName);
_stats.sentPacket(); _stats.sentPacket();

View file

@ -19,7 +19,7 @@
#include "AudioConstants.h" #include "AudioConstants.h"
void AbstractAudioInterface::emitAudioPacket(const void* audioData, size_t bytes, quint16& sequenceNumber, void AbstractAudioInterface::emitAudioPacket(const void* audioData, size_t bytes, quint16& sequenceNumber, bool isStereo,
const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale,
PacketType packetType, QString codecName) { PacketType packetType, QString codecName) {
static std::mutex _mutex; static std::mutex _mutex;
@ -30,9 +30,6 @@ void AbstractAudioInterface::emitAudioPacket(const void* audioData, size_t bytes
Locker lock(_mutex); Locker lock(_mutex);
auto audioPacket = NLPacket::create(packetType); auto audioPacket = NLPacket::create(packetType);
// FIXME - this is not a good way to determine stereoness with codecs....
quint8 isStereo = bytes == AudioConstants::NETWORK_FRAME_BYTES_STEREO ? 1 : 0;
// write sequence number // write sequence number
auto sequence = sequenceNumber++; auto sequence = sequenceNumber++;
audioPacket->writePrimitive(sequence); audioPacket->writePrimitive(sequence);
@ -48,7 +45,8 @@ void AbstractAudioInterface::emitAudioPacket(const void* audioData, size_t bytes
audioPacket->writePrimitive(numSilentSamples); audioPacket->writePrimitive(numSilentSamples);
} else { } else {
// set the mono/stereo byte // set the mono/stereo byte
audioPacket->writePrimitive(isStereo); quint8 channelFlag = isStereo ? 1 : 0;
audioPacket->writePrimitive(channelFlag);
} }
// pack the three float positions // pack the three float positions

View file

@ -29,7 +29,7 @@ class AbstractAudioInterface : public QObject {
public: public:
AbstractAudioInterface(QObject* parent = 0) : QObject(parent) {}; AbstractAudioInterface(QObject* parent = 0) : QObject(parent) {};
static void emitAudioPacket(const void* audioData, size_t bytes, quint16& sequenceNumber, static void emitAudioPacket(const void* audioData, size_t bytes, quint16& sequenceNumber, bool isStereo,
const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale, const Transform& transform, glm::vec3 avatarBoundingBoxCorner, glm::vec3 avatarBoundingBoxScale,
PacketType packetType, QString codecName = QString("")); PacketType packetType, QString codecName = QString(""));