mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 08:36:26 +02:00
perfom packet verification on same thread as NodeList hash
This commit is contained in:
parent
28abc6ab2a
commit
2e6350832c
2 changed files with 25 additions and 27 deletions
|
@ -302,29 +302,31 @@ void AudioMixer::prepareMixForListeningNode(Node* node) {
|
||||||
void AudioMixer::readPendingDatagram(const QByteArray& receivedPacket, const HifiSockAddr& senderSockAddr) {
|
void AudioMixer::readPendingDatagram(const QByteArray& receivedPacket, const HifiSockAddr& senderSockAddr) {
|
||||||
NodeList* nodeList = NodeList::getInstance();
|
NodeList* nodeList = NodeList::getInstance();
|
||||||
|
|
||||||
// pull any new audio data from nodes off of the network stack
|
if (nodeList->packetVersionAndHashMatch(receivedPacket)) {
|
||||||
PacketType mixerPacketType = packetTypeForPacket(receivedPacket);
|
// pull any new audio data from nodes off of the network stack
|
||||||
if (mixerPacketType == PacketTypeMicrophoneAudioNoEcho
|
PacketType mixerPacketType = packetTypeForPacket(receivedPacket);
|
||||||
|| mixerPacketType == PacketTypeMicrophoneAudioWithEcho
|
if (mixerPacketType == PacketTypeMicrophoneAudioNoEcho
|
||||||
|| mixerPacketType == PacketTypeInjectAudio
|
|| mixerPacketType == PacketTypeMicrophoneAudioWithEcho
|
||||||
|| mixerPacketType == PacketTypeSilentAudioFrame
|
|| mixerPacketType == PacketTypeInjectAudio
|
||||||
|| mixerPacketType == PacketTypeAudioStreamStats) {
|
|| mixerPacketType == PacketTypeSilentAudioFrame
|
||||||
|
|| mixerPacketType == PacketTypeAudioStreamStats) {
|
||||||
nodeList->findNodeAndUpdateWithDataFromPacket(receivedPacket);
|
|
||||||
} else if (mixerPacketType == PacketTypeMuteEnvironment) {
|
nodeList->findNodeAndUpdateWithDataFromPacket(receivedPacket);
|
||||||
QByteArray packet = receivedPacket;
|
} else if (mixerPacketType == PacketTypeMuteEnvironment) {
|
||||||
populatePacketHeader(packet, PacketTypeMuteEnvironment);
|
QByteArray packet = receivedPacket;
|
||||||
|
populatePacketHeader(packet, PacketTypeMuteEnvironment);
|
||||||
foreach (const SharedNodePointer& node, nodeList->getNodeHash()) {
|
|
||||||
if (node->getType() == NodeType::Agent && node->getActiveSocket() && node->getLinkedData() && node != nodeList->sendingNodeForPacket(receivedPacket)) {
|
foreach (const SharedNodePointer& node, nodeList->getNodeHash()) {
|
||||||
nodeList->writeDatagram(packet, packet.size(), node);
|
if (node->getType() == NodeType::Agent && node->getActiveSocket() && node->getLinkedData() && node != nodeList->sendingNodeForPacket(receivedPacket)) {
|
||||||
|
nodeList->writeDatagram(packet, packet.size(), node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// let processNodeData handle it.
|
||||||
|
nodeList->processNodeData(senderSockAddr, receivedPacket);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
|
||||||
// let processNodeData handle it.
|
|
||||||
nodeList->processNodeData(senderSockAddr, receivedPacket);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioMixer::sendStatsPacket() {
|
void AudioMixer::sendStatsPacket() {
|
||||||
|
|
|
@ -33,8 +33,6 @@ void AudioMixerDatagramProcessor::readPendingDatagrams() {
|
||||||
HifiSockAddr senderSockAddr;
|
HifiSockAddr senderSockAddr;
|
||||||
static QByteArray incomingPacket;
|
static QByteArray incomingPacket;
|
||||||
|
|
||||||
NodeList* nodeList = NodeList::getInstance();
|
|
||||||
|
|
||||||
// read everything that is available
|
// read everything that is available
|
||||||
while (_nodeSocket.hasPendingDatagrams()) {
|
while (_nodeSocket.hasPendingDatagrams()) {
|
||||||
incomingPacket.resize(_nodeSocket.pendingDatagramSize());
|
incomingPacket.resize(_nodeSocket.pendingDatagramSize());
|
||||||
|
@ -43,9 +41,7 @@ void AudioMixerDatagramProcessor::readPendingDatagrams() {
|
||||||
_nodeSocket.readDatagram(incomingPacket.data(), incomingPacket.size(),
|
_nodeSocket.readDatagram(incomingPacket.data(), incomingPacket.size(),
|
||||||
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
|
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
|
||||||
|
|
||||||
if (nodeList->packetVersionAndHashMatch(incomingPacket)) {
|
// emit the signal to tell AudioMixer it needs to process a packet
|
||||||
// emit the signal to tell AudioMixer it needs to process a packet
|
emit packetRequiresProcessing(incomingPacket, senderSockAddr);
|
||||||
emit packetRequiresProcessing(incomingPacket, senderSockAddr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue