mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 16:36:54 +02:00
got Preferences jitter buffer frames override working
This commit is contained in:
parent
6fc5c74c0b
commit
145b7f8a0e
6 changed files with 18 additions and 13 deletions
|
@ -48,7 +48,7 @@ void DatagramProcessor::processDatagrams() {
|
||||||
// only process this packet if we have a match on the packet version
|
// only process this packet if we have a match on the packet version
|
||||||
switch (packetTypeForPacket(incomingPacket)) {
|
switch (packetTypeForPacket(incomingPacket)) {
|
||||||
case PacketTypeMixedAudio:
|
case PacketTypeMixedAudio:
|
||||||
QMetaObject::invokeMethod(&application->_audio, "addReceivedAudioToBuffer", Qt::QueuedConnection,
|
QMetaObject::invokeMethod(&application->_audio, "addReceivedAudioToStream", Qt::QueuedConnection,
|
||||||
Q_ARG(QByteArray, incomingPacket));
|
Q_ARG(QByteArray, incomingPacket));
|
||||||
break;
|
break;
|
||||||
case PacketTypeAudioStreamStats:
|
case PacketTypeAudioStreamStats:
|
||||||
|
|
|
@ -82,7 +82,7 @@ const int CONSOLE_HEIGHT = 200;
|
||||||
|
|
||||||
Menu::Menu() :
|
Menu::Menu() :
|
||||||
_actionHash(),
|
_actionHash(),
|
||||||
_audioJitterBufferSamples(0),
|
_audioJitterBufferFrames(0),
|
||||||
_bandwidthDialog(NULL),
|
_bandwidthDialog(NULL),
|
||||||
_fieldOfView(DEFAULT_FIELD_OF_VIEW_DEGREES),
|
_fieldOfView(DEFAULT_FIELD_OF_VIEW_DEGREES),
|
||||||
_realWorldFieldOfView(DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES),
|
_realWorldFieldOfView(DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES),
|
||||||
|
@ -627,7 +627,7 @@ void Menu::loadSettings(QSettings* settings) {
|
||||||
lockedSettings = true;
|
lockedSettings = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_audioJitterBufferSamples = loadSetting(settings, "audioJitterBufferSamples", 0);
|
_audioJitterBufferFrames = loadSetting(settings, "audioJitterBufferFrames", 0);
|
||||||
_fieldOfView = loadSetting(settings, "fieldOfView", DEFAULT_FIELD_OF_VIEW_DEGREES);
|
_fieldOfView = loadSetting(settings, "fieldOfView", DEFAULT_FIELD_OF_VIEW_DEGREES);
|
||||||
_realWorldFieldOfView = loadSetting(settings, "realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES);
|
_realWorldFieldOfView = loadSetting(settings, "realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES);
|
||||||
_faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);
|
_faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);
|
||||||
|
@ -677,7 +677,7 @@ void Menu::saveSettings(QSettings* settings) {
|
||||||
lockedSettings = true;
|
lockedSettings = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
settings->setValue("audioJitterBufferSamples", _audioJitterBufferSamples);
|
settings->setValue("audioJitterBufferFrames", _audioJitterBufferFrames);
|
||||||
settings->setValue("fieldOfView", _fieldOfView);
|
settings->setValue("fieldOfView", _fieldOfView);
|
||||||
settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);
|
settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);
|
||||||
settings->setValue("maxVoxels", _maxVoxels);
|
settings->setValue("maxVoxels", _maxVoxels);
|
||||||
|
|
|
@ -85,8 +85,8 @@ public:
|
||||||
void triggerOption(const QString& menuOption);
|
void triggerOption(const QString& menuOption);
|
||||||
QAction* getActionForOption(const QString& menuOption);
|
QAction* getActionForOption(const QString& menuOption);
|
||||||
|
|
||||||
float getAudioJitterBufferSamples() const { return _audioJitterBufferSamples; }
|
float getAudioJitterBufferFrames() const { return _audioJitterBufferFrames; }
|
||||||
void setAudioJitterBufferSamples(float audioJitterBufferSamples) { _audioJitterBufferSamples = audioJitterBufferSamples; }
|
void setAudioJitterBufferFrames(float audioJitterBufferSamples) { _audioJitterBufferFrames = audioJitterBufferSamples; }
|
||||||
float getFieldOfView() const { return _fieldOfView; }
|
float getFieldOfView() const { return _fieldOfView; }
|
||||||
void setFieldOfView(float fieldOfView) { _fieldOfView = fieldOfView; }
|
void setFieldOfView(float fieldOfView) { _fieldOfView = fieldOfView; }
|
||||||
float getRealWorldFieldOfView() const { return _realWorldFieldOfView; }
|
float getRealWorldFieldOfView() const { return _realWorldFieldOfView; }
|
||||||
|
@ -257,7 +257,7 @@ private:
|
||||||
|
|
||||||
|
|
||||||
QHash<QString, QAction*> _actionHash;
|
QHash<QString, QAction*> _actionHash;
|
||||||
int _audioJitterBufferSamples; /// number of extra samples to wait before starting audio playback
|
int _audioJitterBufferFrames; /// number of extra samples to wait before starting audio playback
|
||||||
BandwidthDialog* _bandwidthDialog;
|
BandwidthDialog* _bandwidthDialog;
|
||||||
float _fieldOfView; /// in Degrees, doesn't apply to HMD like Oculus
|
float _fieldOfView; /// in Degrees, doesn't apply to HMD like Oculus
|
||||||
float _realWorldFieldOfView; // The actual FOV set by the user's monitor size and view distance
|
float _realWorldFieldOfView; // The actual FOV set by the user's monitor size and view distance
|
||||||
|
|
|
@ -149,7 +149,7 @@ void PreferencesDialog::loadPreferences() {
|
||||||
ui.faceshiftEyeDeflectionSider->setValue(menuInstance->getFaceshiftEyeDeflection() *
|
ui.faceshiftEyeDeflectionSider->setValue(menuInstance->getFaceshiftEyeDeflection() *
|
||||||
ui.faceshiftEyeDeflectionSider->maximum());
|
ui.faceshiftEyeDeflectionSider->maximum());
|
||||||
|
|
||||||
ui.audioJitterSpin->setValue(menuInstance->getAudioJitterBufferSamples());
|
ui.audioJitterSpin->setValue(menuInstance->getAudioJitterBufferFrames());
|
||||||
|
|
||||||
ui.realWorldFieldOfViewSpin->setValue(menuInstance->getRealWorldFieldOfView());
|
ui.realWorldFieldOfViewSpin->setValue(menuInstance->getRealWorldFieldOfView());
|
||||||
|
|
||||||
|
@ -239,8 +239,12 @@ void PreferencesDialog::savePreferences() {
|
||||||
|
|
||||||
Menu::getInstance()->setInvertSixenseButtons(ui.invertSixenseButtonsCheckBox->isChecked());
|
Menu::getInstance()->setInvertSixenseButtons(ui.invertSixenseButtonsCheckBox->isChecked());
|
||||||
|
|
||||||
Menu::getInstance()->setAudioJitterBufferSamples(ui.audioJitterSpin->value());
|
Menu::getInstance()->setAudioJitterBufferFrames(ui.audioJitterSpin->value());
|
||||||
Application::getInstance()->getAudio()->setJitterBufferSamples(ui.audioJitterSpin->value());
|
if (Menu::getInstance()->getAudioJitterBufferFrames() != 0) {
|
||||||
|
Application::getInstance()->getAudio()->overrideDesiredJitterBufferFramesTo(ui.audioJitterSpin->value());
|
||||||
|
} else {
|
||||||
|
Application::getInstance()->getAudio()->unoverrideDesiredJitterBufferFrames();
|
||||||
|
}
|
||||||
|
|
||||||
Application::getInstance()->resizeGL(Application::getInstance()->getGLWidget()->width(),
|
Application::getInstance()->resizeGL(Application::getInstance()->getGLWidget()->width(),
|
||||||
Application::getInstance()->getGLWidget()->height());
|
Application::getInstance()->getGLWidget()->height());
|
||||||
|
|
|
@ -285,9 +285,8 @@ void Stats::display(
|
||||||
|
|
||||||
char audioJitter[30];
|
char audioJitter[30];
|
||||||
sprintf(audioJitter,
|
sprintf(audioJitter,
|
||||||
"Buffer msecs %.1f",
|
"Buffer msecs %.1f",
|
||||||
(float) (audio->getNetworkBufferLengthSamplesPerChannel() + (float) audio->getJitterBufferSamples()) /
|
audio->getDesiredJitterBufferFrames() * BUFFER_SEND_INTERVAL_USECS / (float)USECS_PER_MSEC);
|
||||||
(float) audio->getNetworkSampleRate() * 1000.f);
|
|
||||||
drawText(30, glWidget->height() - 22, scale, rotation, font, audioJitter, color);
|
drawText(30, glWidget->height() - 22, scale, rotation, font, audioJitter, color);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ public:
|
||||||
|
|
||||||
/// turns off dyanmic jitter buffers and sets the desired jitter buffer frames to specified value
|
/// turns off dyanmic jitter buffers and sets the desired jitter buffer frames to specified value
|
||||||
void overrideDesiredJitterBufferFramesTo(int desired);
|
void overrideDesiredJitterBufferFramesTo(int desired);
|
||||||
|
void unoverrideDesiredJitterBufferFrames();
|
||||||
|
|
||||||
/// this function should be called once per second to ensure the seq num stats history spans ~30 seconds
|
/// this function should be called once per second to ensure the seq num stats history spans ~30 seconds
|
||||||
AudioStreamStats updateSeqHistoryAndGetAudioStreamStats();
|
AudioStreamStats updateSeqHistoryAndGetAudioStreamStats();
|
||||||
|
@ -124,6 +125,7 @@ protected:
|
||||||
AudioRingBuffer::ConstIterator _lastPopOutput;
|
AudioRingBuffer::ConstIterator _lastPopOutput;
|
||||||
|
|
||||||
bool _dynamicJitterBuffers;
|
bool _dynamicJitterBuffers;
|
||||||
|
bool _dynamicJitterBuffersOverride;
|
||||||
bool _useStDevForJitterCalc;
|
bool _useStDevForJitterCalc;
|
||||||
|
|
||||||
int _calculatedJitterBufferFramesUsingMaxGap;
|
int _calculatedJitterBufferFramesUsingMaxGap;
|
||||||
|
|
Loading…
Reference in a new issue