mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 06:19:02 +02:00
handle mirrored packets in AudioMixerClientData
This commit is contained in:
parent
45bb323723
commit
f726c5bc3a
2 changed files with 15 additions and 10 deletions
|
@ -55,7 +55,8 @@ QVector<AudioMixer::ZoneSettings> AudioMixer::_zoneSettings;
|
||||||
QVector<AudioMixer::ReverbSettings> AudioMixer::_zoneReverbSettings;
|
QVector<AudioMixer::ReverbSettings> AudioMixer::_zoneReverbSettings;
|
||||||
|
|
||||||
AudioMixer::AudioMixer(ReceivedMessage& message) :
|
AudioMixer::AudioMixer(ReceivedMessage& message) :
|
||||||
ThreadedAssignment(message) {
|
ThreadedAssignment(message)
|
||||||
|
{
|
||||||
|
|
||||||
// Always clear settings first
|
// Always clear settings first
|
||||||
// This prevents previous assignment settings from sticking around
|
// This prevents previous assignment settings from sticking around
|
||||||
|
@ -101,6 +102,7 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
||||||
);
|
);
|
||||||
|
|
||||||
connect(nodeList.data(), &NodeList::nodeKilled, this, &AudioMixer::handleNodeKilled);
|
connect(nodeList.data(), &NodeList::nodeKilled, this, &AudioMixer::handleNodeKilled);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioMixer::queueAudioPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer node) {
|
void AudioMixer::queueAudioPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer node) {
|
||||||
|
@ -115,7 +117,9 @@ void AudioMixer::queueMirroredAudioPacket(QSharedPointer<ReceivedMessage> messag
|
||||||
// make sure we have a mirrored node for the original sender of the packet
|
// make sure we have a mirrored node for the original sender of the packet
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
auto node = nodeList->addOrUpdateNode(message->getSourceID(), NodeType::Agent,
|
QUuid nodeID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID));
|
||||||
|
|
||||||
|
auto node = nodeList->addOrUpdateNode(nodeID, NodeType::Agent,
|
||||||
message->getSenderSockAddr(), message->getSenderSockAddr());
|
message->getSenderSockAddr(), message->getSenderSockAddr());
|
||||||
node->setIsMirror(true);
|
node->setIsMirror(true);
|
||||||
|
|
||||||
|
|
|
@ -118,12 +118,9 @@ void AudioMixerClientData::potentiallyMirrorPacket(ReceivedMessage& message) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// construct an NLPacket to send to the mirror that has the contents of the received packet
|
// construct an NLPacket to send to the mirror that has the contents of the received packet
|
||||||
std::unique_ptr<char[]> messageData { new char[message.getSize()] };
|
auto packet = NLPacket::create(mirroredType, message.getSize() + NUM_BYTES_RFC4122_UUID);
|
||||||
memcpy(messageData.get(), message.getMessage().data(), message.getSize());
|
packet->write(message.getSourceID().toRfc4122());
|
||||||
auto packet = NLPacket::fromReceivedPacket(std::move(messageData), message.getSize(),
|
packet->write(message.getMessage());
|
||||||
message.getSenderSockAddr());
|
|
||||||
|
|
||||||
packet->setType(mirroredType);
|
|
||||||
|
|
||||||
nodeList->sendPacket(std::move(packet), nodeList->getMirrorSocket());
|
nodeList->sendPacket(std::move(packet), nodeList->getMirrorSocket());
|
||||||
}
|
}
|
||||||
|
@ -220,8 +217,11 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
||||||
bool isMicStream = false;
|
bool isMicStream = false;
|
||||||
|
|
||||||
if (packetType == PacketType::MicrophoneAudioWithEcho
|
if (packetType == PacketType::MicrophoneAudioWithEcho
|
||||||
|
|| packetType == PacketType::MirroredMicrophoneAudioWithEcho
|
||||||
|| packetType == PacketType::MicrophoneAudioNoEcho
|
|| packetType == PacketType::MicrophoneAudioNoEcho
|
||||||
|| packetType == PacketType::SilentAudioFrame) {
|
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|
||||||
|
|| packetType == PacketType::SilentAudioFrame
|
||||||
|
|| packetType == PacketType::MirroredSilentAudioFrame) {
|
||||||
|
|
||||||
QWriteLocker writeLocker { &_streamsLock };
|
QWriteLocker writeLocker { &_streamsLock };
|
||||||
|
|
||||||
|
@ -256,7 +256,8 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
||||||
writeLocker.unlock();
|
writeLocker.unlock();
|
||||||
|
|
||||||
isMicStream = true;
|
isMicStream = true;
|
||||||
} else if (packetType == PacketType::InjectAudio) {
|
} else if (packetType == PacketType::InjectAudio
|
||||||
|
|| packetType == PacketType::MirroredInjectAudio) {
|
||||||
// this is injected audio
|
// this is injected audio
|
||||||
// grab the stream identifier for this injected audio
|
// grab the stream identifier for this injected audio
|
||||||
message.seek(sizeof(quint16));
|
message.seek(sizeof(quint16));
|
||||||
|
|
Loading…
Reference in a new issue