42 return videoOutput.error();
48 : gstPipeline(
"pipeline"), gstVideoOutput(videoOutput)
58 gst_pipeline_use_clock(gstPipeline.
pipeline(), gst_system_clock_obtain());
62 gstPipeline.
setState(GST_STATE_PLAYING);
84 if (gstCamera == control)
94 gstPipeline.
remove(gstVideoTee);
97 camera.setStateSync(GST_STATE_NULL);
109 gstVideoTee.
set(
"allow-not-linked",
true);
120 gstVideoTee.
setState(GST_STATE_PLAYING);
121 camera.setState(GST_STATE_PLAYING);
131 return m_imageCapture;
137 if (m_imageCapture == control)
140 if (m_imageCapture) {
144 imageCaptureSink = {};
148 m_imageCapture = control;
149 if (m_imageCapture) {
165 if (m_mediaEncoder == control)
170 m_mediaEncoder = control;
180 return m_mediaEncoder;
186 auto caps = gst_pad_get_current_caps(gstVideoTee.
sink().
pad());
188 encoderVideoCapsFilter =
QGstElement(
"capsfilter",
"encoderVideoCapsFilter");
192 gstPipeline.
add(encoderVideoCapsFilter);
194 encoderVideoCapsFilter.
src().
link(videoSink);
196 encoderVideoCapsFilter.
setState(GST_STATE_PLAYING);
197 encoderVideoSink = encoderVideoCapsFilter.
sink();
201 auto caps = gst_pad_get_current_caps(gstAudioTee.
sink().
pad());
203 encoderAudioCapsFilter =
QGstElement(
"capsfilter",
"encoderAudioCapsFilter");
207 gstPipeline.
add(encoderAudioCapsFilter);
209 encoderAudioCapsFilter.
src().
link(audioSink);
211 encoderAudioCapsFilter.
setState(GST_STATE_PLAYING);
212 encoderAudioSink = encoderAudioCapsFilter.
sink();
218 if (!encoderVideoCapsFilter.
isNull()) {
221 gstPipeline.
remove(encoderVideoCapsFilter);
223 encoderVideoCapsFilter = {};
226 if (!encoderAudioCapsFilter.
isNull()) {
229 gstPipeline.
remove(encoderAudioCapsFilter);
231 encoderAudioCapsFilter = {};
234 encoderAudioSink = {};
235 encoderVideoSink = {};
240 if (gstAudioInput ==
input)
246 if (gstAudioOutput) {
253 gstPipeline.
remove(gstAudioTee);
263 gstAudioTee.
set(
"allow-not-linked",
true);
267 if (gstAudioOutput) {
273 gstAudioTee.
setState(GST_STATE_PLAYING);
287 if (gstAudioOutput ==
output)
290 if (gstAudioOutput && gstAudioInput) {
298 if (gstAudioOutput && gstAudioInput) {
313#include "moc_qgstreamermediacapture_p.cpp"
void remove(const QGstElement &element)
void add(const QGstElement &element)
GstStateChangeReturn setState(GstState state)
QGstPad getRequestPad(const char *name) const
bool setStateSync(GstState state)
void releaseRequestPad(const QGstPad &pad) const
QGstPad staticPad(const char *name) const
bool link(const QGstElement &next)
void set(const char *property, const char *str)
bool link(const QGstPad &sink) const
GstStateChangeReturn setState(GstState state)
GstPipeline * pipeline() const
void dumpGraph(const char *fileName)
void setInStoppedState(bool stopped)
QGstElement gstElement() const
QGstElement gstElement() const
QGstElement gstElement() const
void setCaptureSession(QPlatformMediaCaptureSession *session)
void setPipeline(const QGstPipeline &pipeline)
QGstreamerVideoSink * gstreamerVideoSink() const
QGstElement gstElement() const
void setVideoSink(QVideoSink *sink)
static QMaybe< QGstreamerVideoOutput * > create(QObject *parent=nullptr)
void setParent(QObject *parent)
Makes the object a child of parent.
The QVideoSink class represents a generic sink for video data.
Combined button and popup list for selecting options.
GLsizei GLsizei GLchar * source
GLsizei GLenum GLboolean sink
GLenum GLenum GLenum input
QT_BEGIN_NAMESPACE typedef uchar * output