mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 16:38:27 +02:00
use new packet creation for client audio
This commit is contained in:
parent
5a57e9861c
commit
672c5a8414
1 changed files with 15 additions and 20 deletions
|
@ -712,8 +712,6 @@ void AudioMixer::run() {
|
||||||
QElapsedTimer timer;
|
QElapsedTimer timer;
|
||||||
timer.start();
|
timer.start();
|
||||||
|
|
||||||
char clientMixBuffer[MAX_PACKET_SIZE];
|
|
||||||
|
|
||||||
int usecToSleep = AudioConstants::NETWORK_FRAME_USECS;
|
int usecToSleep = AudioConstants::NETWORK_FRAME_USECS;
|
||||||
|
|
||||||
const int TRAILING_AVERAGE_FRAMES = 100;
|
const int TRAILING_AVERAGE_FRAMES = 100;
|
||||||
|
@ -791,8 +789,8 @@ void AudioMixer::run() {
|
||||||
// if the stream should be muted, send mute packet
|
// if the stream should be muted, send mute packet
|
||||||
if (nodeData->getAvatarAudioStream()
|
if (nodeData->getAvatarAudioStream()
|
||||||
&& shouldMute(nodeData->getAvatarAudioStream()->getQuietestFrameLoudness())) {
|
&& shouldMute(nodeData->getAvatarAudioStream()->getQuietestFrameLoudness())) {
|
||||||
QByteArray packet = nodeList->byteArrayWithPopulatedHeader(PacketTypeNoisyMute);
|
auto mutePacket = NodeListPacket::create(PacketType::NoisyMute);
|
||||||
nodeList->writeDatagram(packet, node);
|
nodeList->sendPacket(mutePacket, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node->getType() == NodeType::Agent && node->getActiveSocket()
|
if (node->getType() == NodeType::Agent && node->getActiveSocket()
|
||||||
|
@ -800,41 +798,38 @@ void AudioMixer::run() {
|
||||||
|
|
||||||
int streamsMixed = prepareMixForListeningNode(node.data());
|
int streamsMixed = prepareMixForListeningNode(node.data());
|
||||||
|
|
||||||
char* mixDataAt;
|
std::unique_ptr<NodeListPacket> mixPacket;
|
||||||
|
|
||||||
if (streamsMixed > 0) {
|
if (streamsMixed > 0) {
|
||||||
// pack header
|
int mixPacketBytes = sizeof(quint16) + AudioConstants::NETWORK_FRAME_BYTES_STEREO;
|
||||||
int numBytesMixPacketHeader = nodeList->populatePacketHeader(clientMixBuffer, PacketTypeMixedAudio);
|
mixPacket = NodeListPacket::create(PacketType::MixedAudio);
|
||||||
mixDataAt = clientMixBuffer + numBytesMixPacketHeader;
|
|
||||||
|
PacketPayload mixPacketPayload = mixPacket->getPayload();
|
||||||
|
|
||||||
// pack sequence number
|
// pack sequence number
|
||||||
quint16 sequence = nodeData->getOutgoingSequenceNumber();
|
quint16 sequence = nodeData->getOutgoingSequenceNumber();
|
||||||
memcpy(mixDataAt, &sequence, sizeof(quint16));
|
mixPacketPayload.write(&sequence, sizeof(quint16));
|
||||||
mixDataAt += sizeof(quint16);
|
|
||||||
|
|
||||||
// pack mixed audio samples
|
// pack mixed audio samples
|
||||||
memcpy(mixDataAt, _mixSamples, AudioConstants::NETWORK_FRAME_BYTES_STEREO);
|
mixPacketPayload.write(mixSamples, AudioConstants::NETWORK_FRAME_BYTES_STEREO);
|
||||||
mixDataAt += AudioConstants::NETWORK_FRAME_BYTES_STEREO;
|
|
||||||
} else {
|
} else {
|
||||||
// pack header
|
int silentPacketBytes = sizeof(quint16) + sizeof(quint16);
|
||||||
int numBytesPacketHeader = nodeList->populatePacketHeader(clientMixBuffer, PacketTypeSilentAudioFrame);
|
mixPacket = NodeListPacket::create(PacketType::SilentAudioFrame);
|
||||||
mixDataAt = clientMixBuffer + numBytesPacketHeader;
|
|
||||||
|
|
||||||
// pack sequence number
|
// pack sequence number
|
||||||
quint16 sequence = nodeData->getOutgoingSequenceNumber();
|
quint16 sequence = nodeData->getOutgoingSequenceNumber();
|
||||||
memcpy(mixDataAt, &sequence, sizeof(quint16));
|
mixPacketPayload.write(&sequence, sizeof(quint16));
|
||||||
mixDataAt += sizeof(quint16);
|
|
||||||
|
|
||||||
// pack number of silent audio samples
|
// pack number of silent audio samples
|
||||||
quint16 numSilentSamples = AudioConstants::NETWORK_FRAME_SAMPLES_STEREO;
|
quint16 numSilentSamples = AudioConstants::NETWORK_FRAME_SAMPLES_STEREO;
|
||||||
memcpy(mixDataAt, &numSilentSamples, sizeof(quint16));
|
mixPacketPayload.write(&numSilentSamples, sizeof(quint16));
|
||||||
mixDataAt += sizeof(quint16);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send audio environment
|
// Send audio environment
|
||||||
sendAudioEnvironmentPacket(node);
|
sendAudioEnvironmentPacket(node);
|
||||||
|
|
||||||
// send mixed audio packet
|
// send mixed audio packet
|
||||||
nodeList->writeDatagram(clientMixBuffer, mixDataAt - clientMixBuffer, node);
|
nodeList->sendPacket(mixPacket, node);
|
||||||
nodeData->incrementOutgoingMixedAudioSequenceNumber();
|
nodeData->incrementOutgoingMixedAudioSequenceNumber();
|
||||||
|
|
||||||
// send an audio stream stats packet if it's time
|
// send an audio stream stats packet if it's time
|
||||||
|
|
Loading…
Reference in a new issue