diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-08-26 11:15:07 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-09-13 11:57:47 +0200 |
commit | 81a3ea8ef3868818bdca2fb3fb7a76553f9b35ec (patch) | |
tree | 70d42333b097092043272f1564b8e2cec761c87b /src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp | |
parent | 1c0dc886841338c8128fe1b3f1fac2438944db70 (diff) |
GStreamer: enable dynamic pipeline modification for capture session
Work in progress...
Change-Id: I4423745a9d229e509aa161cd6a0a28647f5579e9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp')
-rw-r--r-- | src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp b/src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp index 2249b8b34..cd1233c1d 100644 --- a/src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp +++ b/src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp @@ -100,11 +100,6 @@ void QGstreamerAudioInput::setMuted(bool muted) emit mutedChanged(muted); } -void QGstreamerAudioInput::setPipeline(const QGstPipeline &pipeline) -{ - gstPipeline = pipeline; -} - void QGstreamerAudioInput::setAudioDevice(const QAudioDevice &device) { if (device == m_audioDevice) @@ -112,24 +107,24 @@ void QGstreamerAudioInput::setAudioDevice(const QAudioDevice &device) qCDebug(qLcMediaAudioInput) << "setAudioInput" << device.description() << device.isNull(); m_audioDevice = device; - gstPipeline.beginConfig(); - QGstElement newSrc; auto *deviceInfo = static_cast<const QGStreamerAudioDeviceInfo *>(m_audioDevice.handle()); if (deviceInfo && deviceInfo->gstDevice) - newSrc = gst_device_create_element(deviceInfo->gstDevice , "audiosrc"); + newSrc = gst_device_create_element(deviceInfo->gstDevice, "audiosrc"); if (newSrc.isNull()) newSrc = QGstElement("autoaudiosrc", "audiosrc"); + // FIXME: most probably source can be disconnected outside of idle probe + audioSrc.staticPad("src").doInIdleProbe([&](){ + audioSrc.unlink(audioVolume); + }); audioSrc.setStateSync(GST_STATE_NULL); gstAudioInput.remove(audioSrc); audioSrc = newSrc; gstAudioInput.add(audioSrc); audioSrc.link(audioVolume); audioSrc.syncStateWithParent(); - - gstPipeline.endConfig(); } QAudioDevice QGstreamerAudioInput::audioInput() const |