Revision control

Copy as Markdown

// Copyright (C) 2024 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 "qffmpegencoderthread_p.h"
#include <QtCore/qmetaobject.h>
#include <QtFFmpegMediaPluginImpl/private/qffmpegrecordingengine_p.h>
QT_BEGIN_NAMESPACE
namespace QFFmpeg {
EncoderThread::EncoderThread(RecordingEngine &recordingEngine) : m_recordingEngine(recordingEngine)
{
m_resolvedPromise.start();
}
void EncoderThread::setPaused(bool paused)
{
auto guard = lockLoopData();
m_paused = paused;
handlePausedChanged(paused);
}
void EncoderThread::setAutoStop(bool autoStop)
{
auto guard = lockLoopData();
m_autoStop = autoStop;
}
void EncoderThread::setEndOfSourceStream()
{
{
auto guard = lockLoopData();
m_endOfSourceStream.store(true, std::memory_order_release);
}
Q_EMIT endOfSourceStream();
}
bool EncoderThread::init()
{
{
// Guard to allow checkIfCanPushFrame to check init status
auto guard = lockLoopData();
m_initialized = true;
}
markResolved(true);
// Following will wait until recording engine confirms all encoders are resolved
m_encodingStarted = m_recordingEngine.waitForEncodingStart();
return true;
}
void EncoderThread::markResolved(bool succeeded)
{
m_resolvedPromise.addResult(succeeded);
m_resolvedPromise.finish();
}
} // namespace QFFmpeg
QT_END_NAMESPACE
#include "moc_qffmpegencoderthread_p.cpp"