summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-10-25 19:17:08 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-10-26 14:47:44 +0000
commitf7034c363337d0a76c0df298778aa6a556a13e8e (patch)
tree59eb74d94eee5208aab0662fb2653fe59a21709b
parent53b5e437ac2f18b0593e1a281a05b8b7efd97724 (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.cpp13
-rw-r--r--src/plugins/multimedia/ffmpeg/playbackengine/qffmpegaudiorenderer_p.h1
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