mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 14:03:55 +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;
|
||||
|
||||
AudioMixer::AudioMixer(ReceivedMessage& message) :
|
||||
ThreadedAssignment(message) {
|
||||
ThreadedAssignment(message)
|
||||
{
|
||||
|
||||
// Always clear settings first
|
||||
// This prevents previous assignment settings from sticking around
|
||||
|
@ -101,6 +102,7 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
|||
);
|
||||
|
||||
connect(nodeList.data(), &NodeList::nodeKilled, this, &AudioMixer::handleNodeKilled);
|
||||
|
||||
}
|
||||
|
||||
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
|
||||
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());
|
||||
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
|
||||
std::unique_ptr<char[]> messageData { new char[message.getSize()] };
|
||||
memcpy(messageData.get(), message.getMessage().data(), message.getSize());
|
||||
auto packet = NLPacket::fromReceivedPacket(std::move(messageData), message.getSize(),
|
||||
message.getSenderSockAddr());
|
||||
|
||||
packet->setType(mirroredType);
|
||||
auto packet = NLPacket::create(mirroredType, message.getSize() + NUM_BYTES_RFC4122_UUID);
|
||||
packet->write(message.getSourceID().toRfc4122());
|
||||
packet->write(message.getMessage());
|
||||
|
||||
nodeList->sendPacket(std::move(packet), nodeList->getMirrorSocket());
|
||||
}
|
||||
|
@ -220,8 +217,11 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
|||
bool isMicStream = false;
|
||||
|
||||
if (packetType == PacketType::MicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::MirroredMicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::MicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::SilentAudioFrame) {
|
||||
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::SilentAudioFrame
|
||||
|| packetType == PacketType::MirroredSilentAudioFrame) {
|
||||
|
||||
QWriteLocker writeLocker { &_streamsLock };
|
||||
|
||||
|
@ -256,7 +256,8 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
|||
writeLocker.unlock();
|
||||
|
||||
isMicStream = true;
|
||||
} else if (packetType == PacketType::InjectAudio) {
|
||||
} else if (packetType == PacketType::InjectAudio
|
||||
|| packetType == PacketType::MirroredInjectAudio) {
|
||||
// this is injected audio
|
||||
// grab the stream identifier for this injected audio
|
||||
message.seek(sizeof(quint16));
|
||||
|
|
Loading…
Reference in a new issue