summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp')
-rw-r--r--src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp
index 4c8d04e92..6fbd56cec 100644
--- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp
+++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamermediacapture.cpp
@@ -99,8 +99,9 @@ void QGstreamerMediaCapture::setCamera(QPlatformCamera *camera)
if (gstCamera == control)
return;
- //auto state = gstPipeline.state();
- gstPipeline.setStateSync(GST_STATE_PAUSED);
+ auto state = gstPipeline.state();
+ if (state != GST_STATE_PAUSED)
+ gstPipeline.setStateSync(GST_STATE_PAUSED);
if (gstVideoTee.isNull()) {
gstVideoTee = QGstElement("tee", "videotee");
@@ -120,13 +121,14 @@ void QGstreamerMediaCapture::setCamera(QPlatformCamera *camera)
gstCamera = control;
if (gstCamera) {
- gstPipeline.add(gstCamera->gstElement());
+ QGstElement camera = gstCamera->gstElement();
+ gstPipeline.add(camera);
gstCamera->gstElement().link(gstVideoTee);
- gstCamera->gstElement().setStateSync(gstPipeline.state());
gstCamera->setCaptureSession(this);
- //gstCamera->setPipeline(gstPipeline); // needed?
+ camera.setState(GST_STATE_PAUSED);
}
- gstPipeline.setStateSync(GST_STATE_PLAYING);
+ if (state != GST_STATE_PAUSED)
+ gstPipeline.setState(state);
emit cameraChanged();
gstPipeline.dumpGraph("camera");