diff --git a/src/blackcore/afv/audio/input.cpp b/src/blackcore/afv/audio/input.cpp index 6374cfab7..391f00219 100644 --- a/src/blackcore/afv/audio/input.cpp +++ b/src/blackcore/afv/audio/input.cpp @@ -28,7 +28,7 @@ namespace BlackCore void CAudioInputBuffer::start() { open(QIODevice::WriteOnly | QIODevice::Unbuffered); - m_timerId = startTimer(5, Qt::PreciseTimer); + // m_timerId = startTimer(5, Qt::PreciseTimer); } void CAudioInputBuffer::stop() @@ -50,11 +50,13 @@ namespace BlackCore qint64 CAudioInputBuffer::writeData(const char *data, qint64 len) { - // QByteArray buffer(data, static_cast(len)); - // m_buffer.append(buffer); m_buffer.append(data, static_cast(len)); - - qDebug() << QDateTime::currentMSecsSinceEpoch() << "[writeData] " << len << "buffer " << m_buffer.size(); + while (m_buffer.size() > 1920) + { + qDebug() << QDateTime::currentMSecsSinceEpoch() << "CAudioInputBuffer::writeData " << m_buffer.size(); + emit frameAvailable(m_buffer.left(1920)); + m_buffer.remove(0, 1920); + } return len; } @@ -88,20 +90,24 @@ namespace BlackCore { if (m_started) { return; } - QAudioFormat waveFormat; + QAudioFormat inputFormat; - waveFormat.setSampleRate(m_sampleRate); - waveFormat.setChannelCount(1); - waveFormat.setSampleSize(16); - waveFormat.setSampleType(QAudioFormat::SignedInt); - waveFormat.setByteOrder(QAudioFormat::LittleEndian); - waveFormat.setCodec("audio/pcm"); - - QAudioFormat inputFormat = waveFormat; + inputFormat.setSampleRate(m_sampleRate); + inputFormat.setChannelCount(1); + inputFormat.setSampleSize(16); + inputFormat.setSampleType(QAudioFormat::SignedInt); + inputFormat.setByteOrder(QAudioFormat::LittleEndian); + inputFormat.setCodec("audio/pcm"); if (!inputDevice.isFormatSupported(inputFormat)) { - qWarning() << "Default format not supported - trying to use nearest"; - inputFormat = inputDevice.nearestFormat(inputFormat); + qWarning() << "Default INPUT format not supported - trying to use nearest"; + qWarning() << "Default format not supported - trying to use nearest:"; + qWarning() << "Sample rate: " << inputFormat.sampleRate(); + qWarning() << "Sample size: " << inputFormat.sampleSize(); + qWarning() << "Sample type: " << inputFormat.sampleType(); + qWarning() << "Byte order: " << inputFormat.byteOrder(); + qWarning() << "Codec: " << inputFormat.codec(); + qWarning() << "Channel count: " << inputFormat.channelCount(); } m_audioInput.reset(new QAudioInput(inputDevice, inputFormat)); diff --git a/src/blackcore/afv/audio/output.cpp b/src/blackcore/afv/audio/output.cpp index 04a972d71..a38dc3019 100644 --- a/src/blackcore/afv/audio/output.cpp +++ b/src/blackcore/afv/audio/output.cpp @@ -61,7 +61,16 @@ namespace BlackCore m_maxSampleOutput = 0; } - memcpy(data, buffer.constData(), maxlen); + // if (maxlen > buffer.size()) { maxlen = buffer.size(); } + // memcpy(data, buffer.constData(), maxlen > buffer.size() ? buffer.size() : maxlen); + qint16 *p = reinterpret_cast(data); + int index = 0; + for (int n = 0; n < count; n++) + { + p[index++] = buffer[n]; + if (channelCount == 2) p[index++] = buffer[n]; + } + return maxlen; } @@ -90,8 +99,15 @@ namespace BlackCore if (!device.isFormatSupported(outputFormat)) { - qWarning() << "Default format not supported - trying to use nearest"; + qWarning() << "Default OUTPUT format not supported - trying to use nearest"; outputFormat = device.nearestFormat(outputFormat); + qWarning() << "Default format not supported - trying to use nearest:"; + qWarning() << "Sample rate: " << outputFormat.sampleRate(); + qWarning() << "Sample size: " << outputFormat.sampleSize(); + qWarning() << "Sample type: " << outputFormat.sampleType(); + qWarning() << "Byte order: " << outputFormat.byteOrder(); + qWarning() << "Codec: " << outputFormat.codec(); + qWarning() << "Channel count: " << outputFormat.channelCount(); } m_audioOutputCom1.reset(new QAudioOutput(device, outputFormat));