mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 04:43:31 +02:00
switch to replicator/replicant and add new node types
This commit is contained in:
parent
a085a55107
commit
8ebf1db9a8
8 changed files with 42 additions and 44 deletions
|
@ -94,11 +94,11 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
|||
packetReceiver.registerListener(PacketType::KillAvatar, this, "handleKillAvatarPacket");
|
||||
|
||||
packetReceiver.registerListenerForTypes({
|
||||
PacketType::MirroredMicrophoneAudioNoEcho,
|
||||
PacketType::MirroredMicrophoneAudioWithEcho,
|
||||
PacketType::MirroredInjectAudio,
|
||||
PacketType::MirroredSilentAudioFrame,
|
||||
PacketType::MirroredNegotiateAudioFormat
|
||||
PacketType::ReplicatedMicrophoneAudioNoEcho,
|
||||
PacketType::ReplicatedMicrophoneAudioWithEcho,
|
||||
PacketType::ReplicatedInjectAudio,
|
||||
PacketType::ReplicatedSilentAudioFrame,
|
||||
PacketType::ReplicatedNegotiateAudioFormat
|
||||
},
|
||||
this, "queueMirroredAudioPacket"
|
||||
);
|
||||
|
@ -114,8 +114,8 @@ void AudioMixer::queueAudioPacket(QSharedPointer<ReceivedMessage> message, Share
|
|||
getOrCreateClientData(node.data())->queuePacket(message, node);
|
||||
}
|
||||
|
||||
void AudioMixer::queueMirroredAudioPacket(QSharedPointer<ReceivedMessage> message) {
|
||||
// make sure we have a mirrored node for the original sender of the packet
|
||||
void AudioMixer::queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> message) {
|
||||
// make sure we have a replicated node for the original sender of the packet
|
||||
auto nodeList = DependencyManager::get<NodeList>();
|
||||
|
||||
QUuid nodeID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID));
|
||||
|
|
|
@ -63,7 +63,7 @@ private slots:
|
|||
void handleKillAvatarPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
|
||||
void queueAudioPacket(QSharedPointer<ReceivedMessage> packet, SharedNodePointer sendingNode);
|
||||
void queueMirroredAudioPacket(QSharedPointer<ReceivedMessage> packet);
|
||||
void queueReplicatedAudioPacket(QSharedPointer<ReceivedMessage> packet);
|
||||
void removeHRTFsForFinishedInjector(const QUuid& streamID);
|
||||
void start();
|
||||
|
||||
|
|
|
@ -69,21 +69,21 @@ void AudioMixerClientData::processPackets() {
|
|||
case PacketType::InjectAudio:
|
||||
case PacketType::AudioStreamStats:
|
||||
case PacketType::SilentAudioFrame:
|
||||
case PacketType::MirroredMicrophoneAudioNoEcho:
|
||||
case PacketType::MirroredMicrophoneAudioWithEcho:
|
||||
case PacketType::MirroredInjectAudio:
|
||||
case PacketType::MirroredSilentAudioFrame: {
|
||||
case PacketType::ReplicatedMicrophoneAudioNoEcho:
|
||||
case PacketType::ReplicatedMicrophoneAudioWithEcho:
|
||||
case PacketType::ReplicatedInjectAudio:
|
||||
case PacketType::ReplicatedSilentAudioFrame: {
|
||||
QMutexLocker lock(&getMutex());
|
||||
parseData(*packet);
|
||||
|
||||
potentiallyMirrorPacket(*packet);
|
||||
replicatePacket(*packet);
|
||||
|
||||
break;
|
||||
}
|
||||
case PacketType::NegotiateAudioFormat:
|
||||
case PacketType::MirroredNegotiateAudioFormat:
|
||||
case PacketType::ReplicatedNegotiateAudioFormat:
|
||||
negotiateAudioFormat(*packet, node);
|
||||
potentiallyMirrorPacket(*packet);
|
||||
replicatePacket(*packet);
|
||||
break;
|
||||
case PacketType::RequestsDomainListData:
|
||||
parseRequestsDomainListData(*packet);
|
||||
|
@ -106,26 +106,26 @@ void AudioMixerClientData::processPackets() {
|
|||
assert(_packetQueue.empty());
|
||||
}
|
||||
|
||||
void AudioMixerClientData::potentiallyMirrorPacket(ReceivedMessage& message) {
|
||||
void AudioMixerClientData::replicatePacket(ReceivedMessage& message) {
|
||||
auto nodeList = DependencyManager::get<NodeList>();
|
||||
if (!nodeList->getMirrorSocket().isNull()) {
|
||||
PacketType mirroredType;
|
||||
|
||||
if (message.getType() == PacketType::MicrophoneAudioNoEcho) {
|
||||
mirroredType = PacketType::MirroredMicrophoneAudioNoEcho;
|
||||
mirroredType = PacketType::ReplicatedMicrophoneAudioNoEcho;
|
||||
} else if (message.getType() == PacketType::MicrophoneAudioWithEcho) {
|
||||
mirroredType = PacketType::MirroredMicrophoneAudioNoEcho;
|
||||
mirroredType = PacketType::ReplicatedMicrophoneAudioNoEcho;
|
||||
} else if (message.getType() == PacketType::InjectAudio) {
|
||||
mirroredType = PacketType::MirroredInjectAudio;
|
||||
mirroredType = PacketType::ReplicatedInjectAudio;
|
||||
} else if (message.getType() == PacketType::SilentAudioFrame) {
|
||||
mirroredType = PacketType::MirroredSilentAudioFrame;
|
||||
mirroredType = PacketType::ReplicatedSilentAudioFrame;
|
||||
} else if (message.getType() == PacketType::NegotiateAudioFormat) {
|
||||
mirroredType = PacketType::MirroredNegotiateAudioFormat;
|
||||
mirroredType = PacketType::ReplicatedNegotiateAudioFormat;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
// construct an NLPacket to send to the mirror that has the contents of the received packet
|
||||
// construct an NLPacket to send to the replicant that has the contents of the received packet
|
||||
auto packet = NLPacket::create(mirroredType, message.getSize() + NUM_BYTES_RFC4122_UUID);
|
||||
packet->write(message.getSourceID().toRfc4122());
|
||||
packet->write(message.getMessage());
|
||||
|
@ -225,11 +225,11 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
|||
bool isMicStream = false;
|
||||
|
||||
if (packetType == PacketType::MicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::MirroredMicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::ReplicatedMicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::MicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::ReplicatedMicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::SilentAudioFrame
|
||||
|| packetType == PacketType::MirroredSilentAudioFrame) {
|
||||
|| packetType == PacketType::ReplicatedSilentAudioFrame) {
|
||||
|
||||
QWriteLocker writeLocker { &_streamsLock };
|
||||
|
||||
|
@ -265,7 +265,7 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
|||
|
||||
isMicStream = true;
|
||||
} else if (packetType == PacketType::InjectAudio
|
||||
|| packetType == PacketType::MirroredInjectAudio) {
|
||||
|| packetType == PacketType::ReplicatedInjectAudio) {
|
||||
// this is injected audio
|
||||
// grab the stream identifier for this injected audio
|
||||
message.seek(sizeof(quint16));
|
||||
|
@ -303,10 +303,10 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) {
|
|||
// seek to the beginning of the packet so that the next reader is in the right spot
|
||||
message.seek(0);
|
||||
|
||||
if (packetType == PacketType::MirroredMicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::MirroredMicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::MirroredSilentAudioFrame
|
||||
|| packetType == PacketType::MirroredInjectAudio) {
|
||||
if (packetType == PacketType::ReplicatedMicrophoneAudioWithEcho
|
||||
|| packetType == PacketType::ReplicatedMicrophoneAudioNoEcho
|
||||
|| packetType == PacketType::ReplicatedSilentAudioFrame
|
||||
|| packetType == PacketType::ReplicatedInjectAudio) {
|
||||
message.seek(NUM_BYTES_RFC4122_UUID);
|
||||
}
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ private:
|
|||
QReadWriteLock _streamsLock;
|
||||
AudioStreamMap _audioStreams; // microphone stream from avatar is stored under key of null UUID
|
||||
|
||||
void potentiallyMirrorPacket(ReceivedMessage& packet);
|
||||
void replicatePacket(ReceivedMessage& packet);
|
||||
|
||||
using IgnoreZone = AABox;
|
||||
class IgnoreZoneMemo {
|
||||
|
|
|
@ -281,9 +281,6 @@ public:
|
|||
void setMirrorSocket(const HifiSockAddr& mirrorSocket) { _mirrorSocket = mirrorSocket; }
|
||||
const HifiSockAddr& getMirrorSocket() { return _mirrorSocket; }
|
||||
|
||||
void setMasterSocket(const HifiSockAddr& masterSocket) { _masterSocket = masterSocket; }
|
||||
const HifiSockAddr& getMasterSocket() { return _masterSocket; }
|
||||
|
||||
public slots:
|
||||
void reset();
|
||||
void eraseAllNodes();
|
||||
|
@ -394,7 +391,6 @@ protected:
|
|||
|
||||
|
||||
HifiSockAddr _mirrorSocket;
|
||||
HifiSockAddr _masterSocket;
|
||||
|
||||
private slots:
|
||||
void flagTimeForConnectionStep(ConnectionStep connectionStep, quint64 timestamp);
|
||||
|
|
|
@ -25,6 +25,8 @@ namespace NodeType {
|
|||
const NodeType_t AssetServer = 'A';
|
||||
const NodeType_t MessagesMixer = 'm';
|
||||
const NodeType_t EntityScriptServer = 'S';
|
||||
const NodeType_t ReplicantAudioMixer = 'a';
|
||||
const NodeType_t ReplicantAvatarMixer = 'w';
|
||||
const NodeType_t Unassigned = 1;
|
||||
|
||||
void init();
|
||||
|
|
|
@ -40,9 +40,9 @@ const QSet<PacketType> NON_SOURCED_PACKETS = QSet<PacketType>()
|
|||
<< PacketType::ICEServerHeartbeatACK << PacketType::ICEPing << PacketType::ICEPingReply
|
||||
<< PacketType::ICEServerHeartbeatDenied << PacketType::AssignmentClientStatus << PacketType::StopNode
|
||||
<< PacketType::DomainServerRemovedNode << PacketType::UsernameFromIDReply << PacketType::OctreeFileReplacement
|
||||
<< PacketType::MirroredMicrophoneAudioNoEcho << PacketType::MirroredMicrophoneAudioWithEcho
|
||||
<< PacketType::MirroredInjectAudio << PacketType::MirroredSilentAudioFrame
|
||||
<< PacketType::MirroredNegotiateAudioFormat;
|
||||
<< PacketType::ReplicatedMicrophoneAudioNoEcho << PacketType::ReplicatedMicrophoneAudioWithEcho
|
||||
<< PacketType::ReplicatedInjectAudio << PacketType::ReplicatedSilentAudioFrame
|
||||
<< PacketType::ReplicatedNegotiateAudioFormat;
|
||||
|
||||
PacketVersion versionForPacketType(PacketType packetType) {
|
||||
switch (packetType) {
|
||||
|
|
|
@ -115,12 +115,12 @@ public:
|
|||
AdjustAvatarSorting,
|
||||
OctreeFileReplacement,
|
||||
CollisionEventChanges,
|
||||
MirroredNegotiateAudioFormat,
|
||||
MirroredMicrophoneAudioNoEcho,
|
||||
MirroredMicrophoneAudioWithEcho,
|
||||
MirroredInjectAudio,
|
||||
MirroredSilentAudioFrame,
|
||||
LAST_PACKET_TYPE = MirroredSilentAudioFrame,
|
||||
ReplicatedNegotiateAudioFormat,
|
||||
ReplicatedMicrophoneAudioNoEcho,
|
||||
ReplicatedMicrophoneAudioWithEcho,
|
||||
ReplicatedInjectAudio,
|
||||
ReplicatedSilentAudioFrame,
|
||||
LAST_PACKET_TYPE = ReplicatedSilentAudioFrame,
|
||||
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue