diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-10-25 19:17:08 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-10-26 14:47:44 +0000 |
commit | f7034c363337d0a76c0df298778aa6a556a13e8e (patch) | |
tree | 59eb74d94eee5208aab0662fb2653fe59a21709b | |
parent | 53b5e437ac2f18b0593e1a281a05b8b7efd97724 (diff) |
Add draining delay of audiosink buffer in mediaplayer
After finishing of audio frames play we should wait for
the rest of sound in the buffer.
Pick-to: 6.5
Change-Id: I874e2a70b2b9bfaa5e0842a5f347ba4f09870d92
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
(cherry picked from commit c9cfd64ebab07ba14bc4fa9d93a3008b49f87bd7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp | 13 | ||||
-rw-r--r-- | src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h | 1 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp index a92cc4eb0..d43593c35 100644 --- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer.cpp @@ -71,8 +71,17 @@ Renderer::RenderingResult AudioRenderer::renderInternal(Frame frame) return {}; if (!m_bufferedData.isValid()) { - if (!frame.isValid()) - return {}; + if (!frame.isValid()) { + if (m_drained) + return {}; + + m_drained = true; + const auto time = currentBufferLoadingTime(); + + qCDebug(qLcAudioRenderer) << "Draining AudioRenderer, time:" << time; + + return { time.count() == 0, time }; + } updateSynchronization(frame); m_bufferedData = m_resampler->resample(frame.avFrame()); diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h index 557fe87e8..97eb7cb89 100644 --- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h @@ -69,6 +69,7 @@ private: QIODevice *m_ioDevice = nullptr; bool m_deviceChanged = false; + bool m_drained = false; }; } // namespace QFFmpeg |