4#ifndef QGSTREAMERMEDIARECORDER_H
5#define QGSTREAMERMEDIARECORDER_H
18#include <mediacapture/qgstreamermediacapturesession_p.h>
19#include <common/qgstreamermetadata_p.h>
21#include <QtMultimedia/private/qplatformmediarecorder_p.h>
22#include <QtCore/qurl.h>
23#include <QtCore/qtimer.h>
40 void record(QMediaEncoderSettings &settings)
override;
54 explicit PauseControl(QPlatformMediaRecorder &encoder) : encoder(encoder) { }
56 GstPadProbeReturn processBuffer(
QGstPad pad, GstPadProbeInfo *info);
60 QPlatformMediaRecorder &encoder;
61 GstClockTime pauseOffsetPts = 0;
62 std::optional<GstClockTime> pauseStartPts;
63 std::optional<GstClockTime> firstBufferPts;
67 PauseControl audioPauseControl;
68 PauseControl videoPauseControl;
70 void handleSessionError(QMediaRecorder::Error code,
const QString &description);
73 QGstreamerMediaCaptureSession *m_session =
nullptr;
74 QMediaMetaData m_metaData;
75 QTimer signalDurationChangedTimer;
77 bool m_finalizing =
false;
QGstPad staticPad(const char *name) const
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
bool link(const QGstPad &sink) const
QGstElement gstElement() const
virtual QGstElement gstElement() const =0
QGstreamerVideoSink * gstreamerVideoSink() const
QGstElement gstElement() const
void setVideoSink(QVideoSink *sink)
void executeWhilePadsAreIdle(QSpan< QGstPad > pads, Functor &&f)
void finishStateChangeOnElements(QSpan< const QGstElement > elements)
void setStateOnElements(QSpan< const QGstElement > elements, GstState state)
QGstElement makeTee(const char *name)