mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 21:36:47 +02:00
support for lost packets
This commit is contained in:
parent
125aa6b337
commit
ceffa219b3
2 changed files with 6 additions and 3 deletions
|
@ -172,7 +172,7 @@ int InboundAudioStream::parseStreamProperties(PacketType type, const QByteArray&
|
||||||
return sizeof(quint16);
|
return sizeof(quint16);
|
||||||
} else {
|
} else {
|
||||||
// mixed audio packets do not have any info between the seq num and the audio data.
|
// mixed audio packets do not have any info between the seq num and the audio data.
|
||||||
numAudioSamples = packetAfterSeqNum.size() / sizeof(int16_t);
|
numAudioSamples = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,6 +189,10 @@ int InboundAudioStream::parseAudioData(PacketType type, const QByteArray& packet
|
||||||
}
|
}
|
||||||
|
|
||||||
int InboundAudioStream::writeDroppableSilentSamples(int silentSamples) {
|
int InboundAudioStream::writeDroppableSilentSamples(int silentSamples) {
|
||||||
|
if (_decoder) {
|
||||||
|
_decoder->trackLostFrames(silentSamples);
|
||||||
|
}
|
||||||
|
|
||||||
// calculate how many silent frames we should drop.
|
// calculate how many silent frames we should drop.
|
||||||
int samplesPerFrame = _ringBuffer.getNumFrameSamples();
|
int samplesPerFrame = _ringBuffer.getNumFrameSamples();
|
||||||
int desiredJitterBufferFramesPlusPadding = _desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING;
|
int desiredJitterBufferFramesPlusPadding = _desiredJitterBufferFrames + DESIRED_JITTER_BUFFER_FRAMES_PADDING;
|
||||||
|
|
|
@ -43,7 +43,6 @@ bool HiFiCodec::isSupported() const {
|
||||||
class HiFiEncoder : public Encoder, public AudioEncoder {
|
class HiFiEncoder : public Encoder, public AudioEncoder {
|
||||||
public:
|
public:
|
||||||
HiFiEncoder(int sampleRate, int numChannels) : AudioEncoder(sampleRate, numChannels) {
|
HiFiEncoder(int sampleRate, int numChannels) : AudioEncoder(sampleRate, numChannels) {
|
||||||
qDebug() << __FUNCTION__ << "sampleRate:" << sampleRate << "numChannels:" << numChannels;
|
|
||||||
_encodedSize = (AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * sizeof(int16_t) * numChannels) / 4; // codec reduces by 1/4th
|
_encodedSize = (AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * sizeof(int16_t) * numChannels) / 4; // codec reduces by 1/4th
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +57,6 @@ private:
|
||||||
class HiFiDecoder : public Decoder, public AudioDecoder {
|
class HiFiDecoder : public Decoder, public AudioDecoder {
|
||||||
public:
|
public:
|
||||||
HiFiDecoder(int sampleRate, int numChannels) : AudioDecoder(sampleRate, numChannels) {
|
HiFiDecoder(int sampleRate, int numChannels) : AudioDecoder(sampleRate, numChannels) {
|
||||||
qDebug() << __FUNCTION__ << "sampleRate:" << sampleRate << "numChannels:" << numChannels;
|
|
||||||
_decodedSize = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * sizeof(int16_t) * numChannels;
|
_decodedSize = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * sizeof(int16_t) * numChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +69,7 @@ public:
|
||||||
QByteArray encodedBuffer;
|
QByteArray encodedBuffer;
|
||||||
QByteArray decodedBuffer;
|
QByteArray decodedBuffer;
|
||||||
decodedBuffer.resize(_decodedSize);
|
decodedBuffer.resize(_decodedSize);
|
||||||
|
// NOTE: we don't actually use the results of this decode, we just do it to keep the state of the codec clean
|
||||||
AudioDecoder::process((const int16_t*)encodedBuffer.constData(), (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, false);
|
AudioDecoder::process((const int16_t*)encodedBuffer.constData(), (int16_t*)decodedBuffer.data(), AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL, false);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in a new issue