4#include "recordingengine/qffmpegrecordingengineutils_p.h"
5#include "recordingengine/qffmpegencoderthread_p.h"
6#include "private/qplatformaudiobufferinput_p.h"
7#include "private/qplatformvideoframeinput_p.h"
16 if (
auto videoFrameInput = qobject_cast<QPlatformVideoFrameInput *>(source))
18 else if (
auto audioBufferInput = qobject_cast<QPlatformAudioBufferInput *>(source))
24 doWithMediaFrameInput(source, [&](
auto source) {
25 using Source = std::remove_pointer_t<
decltype(source)>;
27 source->setEncoderInterface(encoderInterface);
32 QMetaObject::invokeMethod(source, &Source::encoderUpdated, Qt::QueuedConnection);
34 emit source->encoderUpdated();
40 doWithMediaFrameInput(source, [&](
auto source) {
41 using Source = std::remove_pointer_t<
decltype(source)>;
42 QObject::connect(encoder, &EncoderThread::canPushFrameChanged, source,
43 &Source::encoderUpdated);
57 QObject::disconnect(source,
nullptr, encoder,
nullptr);
static void doWithMediaFrameInput(QObject *source, F &&f)
void setEncoderInterface(QObject *source, QMediaInputEncoderInterface *)
std::conditional_t< QT_FFMPEG_AVIO_WRITE_CONST, const uint8_t *, uint8_t * > AvioWriteBufferType
void setEncoderUpdateConnection(QObject *source, EncoderThread *encoder)
void disconnectEncoderFromSource(EncoderThread *encoder)
Combined button and popup list for selecting options.