summaryrefslogtreecommitdiffstats
path: root/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp')
-rw-r--r--src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp
index 4a1c7f6b5..be34995ee 100644
--- a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp
+++ b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp
@@ -38,11 +38,19 @@ static void unlinkTeeFromPad(QGstElement tee, QGstPad sink)
tee.releaseRequestPad(source);
}
+QMaybe<QPlatformMediaCaptureSession *> QGstreamerMediaCapture::create()
+{
+ auto videoOutput = QGstreamerVideoOutput::create();
+ if (!videoOutput)
+ return videoOutput.error();
+
+ return new QGstreamerMediaCapture(videoOutput.value());
+}
-QGstreamerMediaCapture::QGstreamerMediaCapture()
- : gstPipeline("pipeline")
+QGstreamerMediaCapture::QGstreamerMediaCapture(QGstreamerVideoOutput *videoOutput)
+ : gstPipeline("pipeline"), gstVideoOutput(videoOutput)
{
- gstVideoOutput = new QGstreamerVideoOutput(this);
+ gstVideoOutput->setParent(this);
gstVideoOutput->setIsPreview();
gstVideoOutput->setPipeline(gstPipeline);
@@ -181,6 +189,7 @@ void QGstreamerMediaCapture::linkEncoder(QGstPad audioSink, QGstPad videoSink)
auto caps = gst_pad_get_current_caps(gstVideoTee.sink().pad());
encoderVideoCapsFilter = QGstElement("capsfilter", "encoderVideoCapsFilter");
+ Q_ASSERT(encoderVideoCapsFilter);
encoderVideoCapsFilter.set("caps", QGstMutableCaps(caps));
gstPipeline.add(encoderVideoCapsFilter);
@@ -195,6 +204,7 @@ void QGstreamerMediaCapture::linkEncoder(QGstPad audioSink, QGstPad videoSink)
auto caps = gst_pad_get_current_caps(gstAudioTee.sink().pad());
encoderAudioCapsFilter = QGstElement("capsfilter", "encoderAudioCapsFilter");
+ Q_ASSERT(encoderAudioCapsFilter);
encoderAudioCapsFilter.set("caps", QGstMutableCaps(caps));
gstPipeline.add(encoderAudioCapsFilter);