mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
show jitter buffer length in samples and ms on screen
This commit is contained in:
parent
871e8fdb4b
commit
1987fc0250
1 changed files with 10 additions and 26 deletions
|
@ -28,8 +28,9 @@ const float AMPLITUDE_RATIO_AT_90 = 0.5;
|
||||||
const short RING_BUFFER_FRAMES = 10;
|
const short RING_BUFFER_FRAMES = 10;
|
||||||
const short RING_BUFFER_SIZE_SAMPLES = RING_BUFFER_FRAMES * BUFFER_LENGTH_SAMPLES;
|
const short RING_BUFFER_SIZE_SAMPLES = RING_BUFFER_FRAMES * BUFFER_LENGTH_SAMPLES;
|
||||||
|
|
||||||
const short JITTER_BUFFER_LENGTH_MSECS = 10;
|
|
||||||
const int SAMPLE_RATE = 22050;
|
const int SAMPLE_RATE = 22050;
|
||||||
|
const float JITTER_BUFFER_LENGTH_MSECS = 26.0;
|
||||||
|
const short JITTER_BUFFER_SAMPLES = JITTER_BUFFER_LENGTH_MSECS * (SAMPLE_RATE / 1000.0);
|
||||||
|
|
||||||
const short NUM_AUDIO_SOURCES = 2;
|
const short NUM_AUDIO_SOURCES = 2;
|
||||||
const short ECHO_SERVER_TEST = 1;
|
const short ECHO_SERVER_TEST = 1;
|
||||||
|
@ -279,14 +280,13 @@ void *receiveAudioViaUDP(void *args) {
|
||||||
if (!bufferSampleOverlap) {
|
if (!bufferSampleOverlap) {
|
||||||
if (needsJitterBuffer) {
|
if (needsJitterBuffer) {
|
||||||
// we need to inject a jitter buffer
|
// we need to inject a jitter buffer
|
||||||
short jitterBufferSamples = JITTER_BUFFER_LENGTH_MSECS * (SAMPLE_RATE / 1000.0);
|
|
||||||
|
|
||||||
// add silence for jitter buffer and then the received packet
|
// add silence for jitter buffer and then the received packet
|
||||||
memset(copyToPointer, 0, jitterBufferSamples * sizeof(int16_t));
|
memset(copyToPointer, 0, JITTER_BUFFER_SAMPLES * sizeof(int16_t));
|
||||||
memcpy(copyToPointer + jitterBufferSamples, receivedData, PACKET_LENGTH_BYTES);
|
memcpy(copyToPointer + JITTER_BUFFER_SAMPLES, receivedData, PACKET_LENGTH_BYTES);
|
||||||
|
|
||||||
// the end of the write is the pointer to the buffer + packet + jitter buffer
|
// the end of the write is the pointer to the buffer + packet + jitter buffer
|
||||||
ringBuffer->endOfLastWrite = ringBuffer->buffer + PACKET_LENGTH_SAMPLES + jitterBufferSamples;
|
ringBuffer->endOfLastWrite = ringBuffer->buffer + PACKET_LENGTH_SAMPLES + JITTER_BUFFER_SAMPLES;
|
||||||
ringBuffer->nextOutput = ringBuffer->buffer;
|
ringBuffer->nextOutput = ringBuffer->buffer;
|
||||||
} else {
|
} else {
|
||||||
// no jitter buffer, no overlap
|
// no jitter buffer, no overlap
|
||||||
|
@ -465,7 +465,6 @@ void Audio::render(int screenWidth, int screenHeight)
|
||||||
|
|
||||||
// Show a Cyan bar with the most recently measured jitter stdev
|
// Show a Cyan bar with the most recently measured jitter stdev
|
||||||
|
|
||||||
|
|
||||||
int jitterPels = (float) data->jitter/ ((1000.0*(float)BUFFER_LENGTH_SAMPLES/(float)SAMPLE_RATE)) * (float)frameWidth;
|
int jitterPels = (float) data->jitter/ ((1000.0*(float)BUFFER_LENGTH_SAMPLES/(float)SAMPLE_RATE)) * (float)frameWidth;
|
||||||
|
|
||||||
glColor3f(0,1,1);
|
glColor3f(0,1,1);
|
||||||
|
@ -478,27 +477,12 @@ void Audio::render(int screenWidth, int screenHeight)
|
||||||
|
|
||||||
sprintf(out,"%3.1f\n", data->jitter);
|
sprintf(out,"%3.1f\n", data->jitter);
|
||||||
drawtext(startX + jitterPels - 5, topY-10, 0.08, 0, 1, 0, out, 0,1,1);
|
drawtext(startX + jitterPels - 5, topY-10, 0.08, 0, 1, 0, out, 0,1,1);
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(out, "%3.1fms\n", JITTER_BUFFER_LENGTH_MSECS);
|
||||||
|
drawtext(startX - 10, bottomY + 20, 0.1, 0, 1, 0, out, 1, 0, 0);
|
||||||
|
|
||||||
//glVertex2f(nextOutputX, topY);
|
sprintf(out, "%hd samples\n", JITTER_BUFFER_SAMPLES);
|
||||||
//glVertex2f(nextOutputX, bottomY);
|
drawtext(startX - 10, bottomY + 35, 0.1, 0, 1, 0, out, 1, 0, 0);
|
||||||
|
|
||||||
/*
|
|
||||||
float nextOutputX = startX + (nextOutputSampleOffset / RING_BUFFER_SIZE_SAMPLES) * scaleLength;
|
|
||||||
float endLastWriteSampleOffset = data->ringBuffer->endOfLastWrite - data->ringBuffer->buffer;
|
|
||||||
|
|
||||||
if (data->ringBuffer->endOfLastWrite == NULL) {
|
|
||||||
endLastWriteSampleOffset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
float endLastWriteX = startX + (endLastWriteSampleOffset / RING_BUFFER_SIZE_SAMPLES) * scaleLength;
|
|
||||||
glColor3f(0, 1, 0);
|
|
||||||
glVertex2f(endLastWriteX, topY);
|
|
||||||
glVertex2f(endLastWriteX, bottomY);
|
|
||||||
|
|
||||||
glEnd();
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue