diff options
Diffstat (limited to 'src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp')
-rw-r--r-- | src/plugins/multimedia/gstreamer/mediacapture/qgstreamermediacapture.cpp | 16 |
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); |