kopia lustrzana https://gitlab.com/eliggett/wfview
Increase late audio timeout to 100ms
rodzic
09ea7a2c26
commit
92288aa768
|
@ -31,12 +31,6 @@ audioHandler::~audioHandler()
|
||||||
audioOutput = Q_NULLPTR;
|
audioOutput = Q_NULLPTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audioTimer != Q_NULLPTR) {
|
|
||||||
audioTimer->stop();
|
|
||||||
delete audioTimer;
|
|
||||||
audioTimer = Q_NULLPTR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (resampler != Q_NULLPTR) {
|
if (resampler != Q_NULLPTR) {
|
||||||
speex_resampler_destroy(resampler);
|
speex_resampler_destroy(resampler);
|
||||||
|
@ -145,13 +139,6 @@ bool audioHandler::init(audioSetup setupIn)
|
||||||
|
|
||||||
if (setup.isinput) {
|
if (setup.isinput) {
|
||||||
audioInput = new QAudioInput(setup.port, format, this);
|
audioInput = new QAudioInput(setup.port, format, this);
|
||||||
//audioInput->setNotifyInterval(setup.blockSize);
|
|
||||||
qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Starting audio timer";
|
|
||||||
|
|
||||||
//audioTimer = new QTimer();
|
|
||||||
//audioTimer->setTimerType(Qt::PreciseTimer);
|
|
||||||
//connect(audioTimer, &QTimer::timeout, this, &audioHandler::getNextAudioChunk);
|
|
||||||
//connect(audioInput, SIGNAL(notify()), this, SLOT(getNextAudioChunk()),Qt::DirectConnection);
|
|
||||||
|
|
||||||
connect(audioInput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));
|
connect(audioInput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));
|
||||||
}
|
}
|
||||||
|
@ -212,8 +199,6 @@ void audioHandler::start()
|
||||||
audioDevice = audioInput->start();
|
audioDevice = audioInput->start();
|
||||||
connect(audioInput, &QAudioInput::destroyed, audioDevice, &QIODevice::deleteLater, Qt::UniqueConnection);
|
connect(audioInput, &QAudioInput::destroyed, audioDevice, &QIODevice::deleteLater, Qt::UniqueConnection);
|
||||||
connect(audioDevice, &QIODevice::readyRead, this, &audioHandler::getNextAudioChunk);
|
connect(audioDevice, &QIODevice::readyRead, this, &audioHandler::getNextAudioChunk);
|
||||||
//audioTimer->start(setup.blockSize);
|
|
||||||
//qInfo(logAudio()) << (setup.isinput ? "Input" : "Output") << "Notify interval set to" << audioInput->notifyInterval() << "requested" << setup.blockSize;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Buffer size must be set before audio is started.
|
// Buffer size must be set before audio is started.
|
||||||
|
@ -244,7 +229,6 @@ void audioHandler::stop()
|
||||||
|
|
||||||
if (audioInput != Q_NULLPTR && audioInput->state() != QAudio::StoppedState) {
|
if (audioInput != Q_NULLPTR && audioInput->state() != QAudio::StoppedState) {
|
||||||
// Stop audio output
|
// Stop audio output
|
||||||
//audioTimer->stop();
|
|
||||||
audioInput->stop();
|
audioInput->stop();
|
||||||
}
|
}
|
||||||
audioDevice = Q_NULLPTR;
|
audioDevice = Q_NULLPTR;
|
||||||
|
@ -439,7 +423,7 @@ void audioHandler::incomingAudio(audioPacket inPacket)
|
||||||
currentLatency = livePacket.time.msecsTo(QTime::currentTime()) + (format.durationForBytes(audioOutput->bufferSize()-audioOutput->bytesFree())/1000);
|
currentLatency = livePacket.time.msecsTo(QTime::currentTime()) + (format.durationForBytes(audioOutput->bufferSize()-audioOutput->bytesFree())/1000);
|
||||||
if (audioDevice != Q_NULLPTR) {
|
if (audioDevice != Q_NULLPTR) {
|
||||||
audioDevice->write(livePacket.data);
|
audioDevice->write(livePacket.data);
|
||||||
if (lastReceived.msecsTo(QTime::currentTime()) > 50) {
|
if (lastReceived.msecsTo(QTime::currentTime()) > 100) {
|
||||||
qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Time since last audio packet" << lastReceived.msecsTo(QTime::currentTime()) << "Expected around" << setup.blockSize << "Processing time" << startProcessing.msecsTo(QTime::currentTime());
|
qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Time since last audio packet" << lastReceived.msecsTo(QTime::currentTime()) << "Expected around" << setup.blockSize << "Processing time" << startProcessing.msecsTo(QTime::currentTime());
|
||||||
}
|
}
|
||||||
lastReceived = QTime::currentTime();
|
lastReceived = QTime::currentTime();
|
||||||
|
@ -633,7 +617,7 @@ void audioHandler::getNextAudioChunk()
|
||||||
livePacket.data = outPacket; // Copy output packet back to input buffer.
|
livePacket.data = outPacket; // Copy output packet back to input buffer.
|
||||||
}
|
}
|
||||||
emit haveAudioData(livePacket);
|
emit haveAudioData(livePacket);
|
||||||
if (lastReceived.msecsTo(QTime::currentTime()) > 50) {
|
if (lastReceived.msecsTo(QTime::currentTime()) > 100) {
|
||||||
qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Time since last audio packet" << lastReceived.msecsTo(QTime::currentTime()) << "Expected around" << setup.blockSize << "Processing time" << startProcessing.msecsTo(QTime::currentTime());
|
qDebug(logAudio()) << (setup.isinput ? "Input" : "Output") << "Time since last audio packet" << lastReceived.msecsTo(QTime::currentTime()) << "Expected around" << setup.blockSize << "Processing time" << startProcessing.msecsTo(QTime::currentTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -712,5 +696,4 @@ void audioHandler::stateChanged(QAudio::State state)
|
||||||
void audioHandler::clearUnderrun()
|
void audioHandler::clearUnderrun()
|
||||||
{
|
{
|
||||||
isUnderrun = false;
|
isUnderrun = false;
|
||||||
underTimer->stop();
|
|
||||||
}
|
}
|
|
@ -8,10 +8,10 @@
|
||||||
#include <QtEndian>
|
#include <QtEndian>
|
||||||
#include <QtMath>
|
#include <QtMath>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTimer>
|
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
/* QT Audio Headers */
|
/* QT Audio Headers */
|
||||||
#include <QAudioOutput>
|
#include <QAudioOutput>
|
||||||
|
@ -115,7 +115,6 @@ private:
|
||||||
QAudioOutput* audioOutput=Q_NULLPTR;
|
QAudioOutput* audioOutput=Q_NULLPTR;
|
||||||
QAudioInput* audioInput=Q_NULLPTR;
|
QAudioInput* audioInput=Q_NULLPTR;
|
||||||
QIODevice* audioDevice=Q_NULLPTR;
|
QIODevice* audioDevice=Q_NULLPTR;
|
||||||
QTimer* audioTimer = Q_NULLPTR;
|
|
||||||
QAudioFormat format;
|
QAudioFormat format;
|
||||||
QAudioDeviceInfo deviceInfo;
|
QAudioDeviceInfo deviceInfo;
|
||||||
SpeexResamplerState* resampler = Q_NULLPTR;
|
SpeexResamplerState* resampler = Q_NULLPTR;
|
||||||
|
|
Ładowanie…
Reference in New Issue