summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2021-08-26 11:15:07 +0200
committerLars Knoll <lars.knoll@qt.io>2021-09-13 11:57:47 +0200
commit81a3ea8ef3868818bdca2fb3fb7a76553f9b35ec (patch)
tree70d42333b097092043272f1564b8e2cec761c87b /src/multimedia/platform/gstreamer/common/qgstreameraudioinput.cpp
parent1c0dc886841338c8128fe1b3f1fac2438944db70 (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.cpp15
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