diff options
Diffstat (limited to 'src/plugins/multimedia/ffmpeg/playbackengine/qffmpegsubtitlerenderer.cpp')
-rw-r--r-- | src/plugins/multimedia/ffmpeg/playbackengine/qffmpegsubtitlerenderer.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegsubtitlerenderer.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegsubtitlerenderer.cpp new file mode 100644 index 000000000..789c9b53b --- /dev/null +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegsubtitlerenderer.cpp @@ -0,0 +1,44 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "playbackengine/qffmpegsubtitlerenderer_p.h" + +#include "qvideosink.h" +#include "qdebug.h" + +QT_BEGIN_NAMESPACE + +namespace QFFmpeg { + +SubtitleRenderer::SubtitleRenderer(const TimeController &tc, QVideoSink *sink) + : Renderer(tc), m_sink(sink) +{ +} + +void SubtitleRenderer::setOutput(QVideoSink *sink, bool cleanPrevSink) +{ + setOutputInternal(m_sink, sink, [cleanPrevSink](QVideoSink *prev) { + if (prev && cleanPrevSink) + prev->setSubtitleText({}); + }); +} + +SubtitleRenderer::~SubtitleRenderer() +{ + if (m_sink) + m_sink->setSubtitleText({}); +} + +Renderer::RenderingResult SubtitleRenderer::renderInternal(Frame frame) +{ + if (m_sink) + m_sink->setSubtitleText(frame.isValid() ? frame.text() : QString()); + + return {}; +} + +} // namespace QFFmpeg + +QT_END_NAMESPACE + +#include "moc_qffmpegsubtitlerenderer_p.cpp" |