4#include <QtMultimedia/qaudiodevice.h>
5#include <QtMultimedia/qaudioinput.h>
7#include <QtCore/qloggingcategory.h>
40 audioSrc(
std::move(autoaudiosrc)),
41 audioVolume(
std::move(volume))
43 gstAudioInput.add(audioSrc, audioVolume);
46 gstAudioInput.addGhostPad(audioVolume,
"src");
51 const auto *customDeviceInfo =
54 if (customDeviceInfo) {
56 <<
"requesting custom audio src element: " << customDeviceInfo->id;
65 <<
"Cannot create audio source element:" << customDeviceInfo->id;
72 newSrc.set(
"device",
id.constData());
75 qWarning() <<
"Cannot create pulsesrc";
80 newSrc.set(
"device",
id.constData());
83 qWarning() <<
"Cannot create alsasrc";
87 if (deviceInfo && deviceInfo->gstDevice) {
93 qCWarning(qLcMediaAudioInput) <<
"Invalid audio device";
95 <<
"Failed to create a gst element for the audio device, using a default audio source";
116 if (
device == m_audioDevice)
124 qUnlinkGstElements(audioSrc, audioVolume);
125 gstAudioInput.stopAndRemoveElements(audioSrc);
126 audioSrc = std::move(newSrc);
127 gstAudioInput.add(audioSrc);
128 qLinkGstElements(audioSrc, audioVolume);
129 audioSrc.syncStateWithParent();
135 return m_audioDevice;
IOBluetoothDevice * device
The QAudioDevice class provides an information about audio devices and their functionality.
QString description
\qmlproperty string QtMultimedia::audioDevice::description
QByteArray id
\qmlproperty string QtMultimedia::audioDevice::id
const QAudioDevicePrivate * handle() const
bool isNull() const
Returns whether this QAudioDevice object holds a valid device definition.
static QGstBin createFromPipelineDescription(const QByteArray &pipelineDescription, const char *name=nullptr, bool ghostUnlinkedPads=false)
static QGstElement createFromDevice(const QGstDeviceHandle &, const char *name=nullptr)
bool setStateSync(GstState state, std::chrono::nanoseconds timeout=std::chrono::seconds(1))
static QGstElement createFromFactory(const char *factory, const char *name=nullptr)
QGstPipeline getPipeline() const
void set(const char *property, const char *str)
void modifyPipelineWhileNotRunning(Functor &&fn)
Combined button and popup list for selecting options.
std::enable_if_t<(std::is_base_of_v< QGstElement, Ts > &&...), void qLinkGstElements)(const Ts &...ts)
QString errorMessageCannotFindElement(std::string_view element)
#define Q_LOGGING_CATEGORY(name,...)
#define qCWarning(category,...)
#define qCDebug(category,...)
#define QT_CONFIG(feature)