Fix tx audio packet

audioplugins
Phil Taylor 2021-02-20 20:19:18 +00:00
rodzic 6e53e1e683
commit 258b56fc58
2 zmienionych plików z 37 dodań i 11 usunięć

Wyświetl plik

@ -18,7 +18,7 @@
// Variable size packets + payload
#define CIV_SIZE 0x15
#define TXAUDIO_SIZE 0x15
#define TXAUDIO_SIZE 0x18
#define DATA_SIZE 0x15
// 0x10 length control packet (connect/disconnect/idle.)
@ -56,7 +56,25 @@ typedef union ping_packet {
};
char packet[PING_SIZE];
} *ping_packet_t, *data_packet_t, data_packet;
} *ping_packet_t, * data_packet_t, data_packet;
// 0x18 length txaudio packet
typedef union txaudio_packet {
struct
{
quint32 len; // 0x00
quint16 type; // 0x04
quint16 seq; // 0x06
quint32 sentid; // 0x08
quint32 rcvdid; // 0x0c
quint16 ident; // 0x10
quint16 sendseq; // 0x12
quint16 unused; // 0x14
quint16 datalen; // 0x16
};
char packet[TXAUDIO_SIZE];
} *txaudio_packet_t;
// 0x18 length txaudio packet

Wyświetl plik

@ -648,23 +648,31 @@ void udpAudio::sendTxAudio()
if (txaudio->chunkAvailable) {
QByteArray audio;
txaudio->getNextAudioChunk(audio);
int counter = 0;
while (counter < audio.length()) {
QByteArray partial = audio.mid(counter, 1364);
ping_packet p;
int counter = 1;
int len = 0;
while (len < audio.length()) {
QByteArray partial = audio.mid(len, 1364);
txaudio_packet p;
memset(p.packet, 0x0, sizeof(p)); // We can't be sure it is initialized with 0x00!
p.len = sizeof(p);
p.len = sizeof(p)+partial.length();
p.sentid = myId;
p.rcvdid = remoteId;
p.reply = (char)0x80;
p.datalen = partial.length();
p.sendseq = qToBigEndian(sendAudioSeq); // THIS IS BIG ENDIAN!
if (counter % 2 == 0)
{
p.ident = 0x0680;
}
else {
p.ident = 0x0681;
}
p.datalen = (quint16)qToBigEndian((quint16)partial.length());
p.sendseq = (quint16)qToBigEndian(sendAudioSeq); // THIS IS BIG ENDIAN!
QByteArray tx = QByteArray::fromRawData((const char*)p.packet, sizeof(p));
tx.append(partial);
counter = counter + partial.length();
len = len + partial.length();
//qDebug() << "Sending audio packet length: " << tx.length();
sendTrackedPacket(tx);
sendAudioSeq++;
counter++;
}
}
}