Multiple audio support: removed useless start/stop immediate methods from AudioOutput

This commit is contained in:
f4exb 2018-03-24 03:50:09 +01:00
parent 90843df58d
commit 937bc19375
2 changed files with 3 additions and 93 deletions

View File

@ -37,7 +37,7 @@ AudioOutput::~AudioOutput()
QMutexLocker mutexLocker(&m_mutex); QMutexLocker mutexLocker(&m_mutex);
for (AudioFifos::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) for (std::list<AudioFifo*>::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it)
{ {
delete *it; delete *it;
} }
@ -116,77 +116,6 @@ bool AudioOutput::start(int device, int rate)
return true; return true;
} }
bool AudioOutput::startImmediate(int device, int rate)
{
if (QIODevice::isOpen())
{
qInfo("AudioOutput::startImmediate: already open");
return true;
}
QMutexLocker mutexLocker(&m_mutex);
QAudioDeviceInfo devInfo;
if (device < 0)
{
devInfo = QAudioDeviceInfo::defaultOutputDevice();
qWarning("AudioOutput::startImmediate: using default device %s", qPrintable(devInfo.defaultOutputDevice().deviceName()));
}
else
{
QList<QAudioDeviceInfo> devicesInfo = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
if (device < devicesInfo.size())
{
devInfo = devicesInfo[device];
qWarning("AudioOutput::startImmediate: using audio device #%d: %s", device, qPrintable(devInfo.defaultOutputDevice().deviceName()));
}
else
{
devInfo = QAudioDeviceInfo::defaultOutputDevice();
qWarning("AudioOutput::startImmediate: audio device #%d does not exist. Using default device %s", device, qPrintable(devInfo.defaultOutputDevice().deviceName()));
}
}
//QAudioDeviceInfo devInfo(QAudioDeviceInfo::defaultOutputDevice());
m_audioFormat.setSampleRate(rate);
m_audioFormat.setChannelCount(2);
m_audioFormat.setSampleSize(16);
m_audioFormat.setCodec("audio/pcm");
m_audioFormat.setByteOrder(QAudioFormat::LittleEndian);
m_audioFormat.setSampleType(QAudioFormat::SignedInt);
if (!devInfo.isFormatSupported(m_audioFormat))
{
m_audioFormat = devInfo.nearestFormat(m_audioFormat);
qWarning("AudioOutput::startImmediate: %d Hz S16_LE audio format not supported. New rate: %d", rate, m_audioFormat.sampleRate());
}
else
{
qInfo("AudioOutput::startImmediate: audio format OK");
}
if (m_audioFormat.sampleSize() != 16)
{
qWarning("AudioOutput::startImmediate: Audio device ( %s ) failed", qPrintable(devInfo.defaultOutputDevice().deviceName()));
return false;
}
m_audioOutput = new QAudioOutput(devInfo, m_audioFormat);
QIODevice::open(QIODevice::ReadOnly);
m_audioOutput->start(this);
if (m_audioOutput->state() != QAudio::ActiveState)
{
qWarning("AudioOutput::startImmediate: cannot start");
}
return true;
}
void AudioOutput::stop() void AudioOutput::stop()
{ {
qDebug("AudioOutput::stop"); qDebug("AudioOutput::stop");
@ -207,21 +136,6 @@ void AudioOutput::stop()
} }
} }
void AudioOutput::stopImmediate()
{
if (!QIODevice::isOpen())
{
qInfo("AudioOutput::stopImmediate");
}
else
{
qDebug("AudioOutput::stopImmediate");
QMutexLocker mutexLocker(&m_mutex);
QIODevice::close();
delete m_audioOutput;
}
}
void AudioOutput::addFifo(AudioFifo* audioFifo) void AudioOutput::addFifo(AudioFifo* audioFifo)
{ {
QMutexLocker mutexLocker(&m_mutex); QMutexLocker mutexLocker(&m_mutex);
@ -274,7 +188,7 @@ qint64 AudioOutput::readData(char* data, qint64 maxLen)
// sum up a block from all fifos // sum up a block from all fifos
for (AudioFifos::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) for (std::list<AudioFifo*>::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it)
{ {
// use outputBuffer as temp - yes, one memcpy could be saved // use outputBuffer as temp - yes, one memcpy could be saved
uint samples = (*it)->read((quint8*) data, framesPerBuffer, 1); uint samples = (*it)->read((quint8*) data, framesPerBuffer, 1);

View File

@ -37,9 +37,6 @@ public:
bool start(int device, int rate); bool start(int device, int rate);
void stop(); void stop();
bool startImmediate(int device, int rate);
void stopImmediate();
void addFifo(AudioFifo* audioFifo); void addFifo(AudioFifo* audioFifo);
void removeFifo(AudioFifo* audioFifo); void removeFifo(AudioFifo* audioFifo);
@ -52,8 +49,7 @@ private:
uint m_audioUsageCount; uint m_audioUsageCount;
bool m_onExit; bool m_onExit;
typedef std::list<AudioFifo*> AudioFifos; std::list<AudioFifo*> m_audioFifos;
AudioFifos m_audioFifos;
std::vector<qint32> m_mixBuffer; std::vector<qint32> m_mixBuffer;
QAudioFormat m_audioFormat; QAudioFormat m_audioFormat;