diff options
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qffmpegmediacapturesession.cpp | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegmediacapturesession.cpp b/src/plugins/multimedia/ffmpeg/qffmpegmediacapturesession.cpp index f2b1889ed..f02593d16 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegmediacapturesession.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegmediacapturesession.cpp @@ -162,24 +162,22 @@ void QFFmpegMediaCaptureSession::updateAudioSink() m_audioIODevice = m_audioSink->start(); if (m_audioIODevice) { - connect(m_audioInput, &QFFmpegAudioInput::newAudioBuffer, m_audioSink.get(), - [this](const QAudioBuffer &buffer) { - if (m_audioBufferSize < preferredAudioSinkBufferSize(*m_audioInput)) { - qCDebug(qLcFFmpegMediaCaptureSession) - << "Recreate audiosink due to small buffer size:" - << m_audioBufferSize; - - updateAudioSink(); - } - - const auto written = - m_audioIODevice->write(buffer.data<const char>(), buffer.byteCount()); - - if (written < buffer.byteCount()) - qCWarning(qLcFFmpegMediaCaptureSession) - << "Not all bytes written:" << written << "vs" - << buffer.byteCount(); - }); + auto writeToDevice = [this](const QAudioBuffer &buffer) { + if (m_audioBufferSize < preferredAudioSinkBufferSize(*m_audioInput)) { + qCDebug(qLcFFmpegMediaCaptureSession) + << "Recreate audiosink due to small buffer size:" << m_audioBufferSize; + + updateAudioSink(); + } + + const auto written = + m_audioIODevice->write(buffer.data<const char>(), buffer.byteCount()); + + if (written < buffer.byteCount()) + qCWarning(qLcFFmpegMediaCaptureSession) + << "Not all bytes written:" << written << "vs" << buffer.byteCount(); + }; + connect(m_audioInput, &QFFmpegAudioInput::newAudioBuffer, m_audioSink.get(), writeToDevice); } else { qWarning() << "Failed to start audiosink push mode"; } |