diff options
Diffstat (limited to 'src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp')
-rw-r--r-- | src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp index 99a44b70e..02a2214cf 100644 --- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp +++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercamera.cpp @@ -101,10 +101,7 @@ void QGstreamerCamera::setCamera(const QCameraDevice &camera) m_cameraDevice = camera; - bool havePipeline = !gstPipeline.isNull(); - - if (havePipeline) - gstPipeline.setStateSync(GST_STATE_PAUSED); + gstPipeline.beginConfig(); Q_ASSERT(!gstCamera.isNull()); @@ -128,10 +125,8 @@ void QGstreamerCamera::setCamera(const QCameraDevice &camera) gstCamera.setState(GST_STATE_PAUSED); - if (havePipeline) { - gstPipeline.dumpGraph("setCamera"); - gstPipeline.setState(GST_STATE_PLAYING); - } + gstPipeline.endConfig(); + gstPipeline.dumpGraph("setCamera"); updateCameraProperties(); } @@ -170,13 +165,9 @@ bool QGstreamerCamera::setCameraFormat(const QCameraFormat &format) { if (!m_cameraDevice.videoFormats().contains(format)) return false; - bool havePipeline = !gstPipeline.isNull(); - auto state = havePipeline ? gstPipeline.state() : GST_STATE_NULL; - if (havePipeline) - gstPipeline.setStateSync(GST_STATE_PAUSED); + gstPipeline.beginConfig(); setCameraFormatInternal(format); - if (havePipeline) - gstPipeline.setStateSync(state); + gstPipeline.endConfig(); return true; } |