6#include <QtCore/qdebug.h>
7#include <QtMultimedia/qaudiosink.h>
8#include <QtMultimedia/qaudiosource.h>
9#include <QtMultimedia/private/qplatformaudiodevices_p.h>
13QPlatformAudioEndpointBase::QPlatformAudioEndpointBase(QAudioDevice device,
14 const QAudioFormat &format, QObject *parent)
15 : QObject{ parent }, m_audioDevice{ std::move(device) }, m_format{ format }
17 Q_ASSERT(parent &&
"QPlatformAudioEndpointBase requires the QAudioSink/QAudioSource as parent");
20QPlatformAudioEndpointBase::~QPlatformAudioEndpointBase()
23void QPlatformAudioEndpointBase::setError(QAudio::Error err)
30bool QPlatformAudioEndpointBase::isFormatSupported(
const QAudioFormat &format)
const
32 return m_audioDevice.isFormatSupported(format);
35void QPlatformAudioEndpointBase::updateStreamState(QAudio::State state)
37 if (m_streamState == state)
40 m_streamState = state;
44void QPlatformAudioEndpointBase::updateStreamIdle(
bool idle, EmitStateSignal emitStateSignal)
46 if (idle == m_streamIsIdle)
48 m_streamIsIdle = idle;
50 if (emitStateSignal == EmitStateSignal::True)
54void QPlatformAudioEndpointBase::inferState()
61 using State = QtAudio::State;
63 State oldState = m_inferredState;
65 switch (m_streamState) {
66 case State::StoppedState:
67 m_inferredState = State::StoppedState;
69 case State::SuspendedState:
70 m_inferredState = State::SuspendedState;
72 case State::ActiveState:
73 m_inferredState = m_streamIsIdle ? State::IdleState : State::ActiveState;
76 case State::IdleState:
77 qCritical() <<
"Users should not be able to set the state to Idle!";
78 Q_UNREACHABLE_RETURN();
81 if (oldState != m_inferredState)
82 emit stateChanged(m_inferredState);
85QPlatformAudioSink::QPlatformAudioSink(QAudioDevice device,
const QAudioFormat &format,
87 : QPlatformAudioEndpointBase(std::move(device), format, parent)
91QPlatformAudioSink::~QPlatformAudioSink()
94QPlatformAudioSink *QPlatformAudioSink::get(
const QAudioSink &sink)
99QPlatformAudioSource::QPlatformAudioSource(QAudioDevice device,
const QAudioFormat &format,
101 : QPlatformAudioEndpointBase(std::move(device), format, parent)
105QPlatformAudioSource::~QPlatformAudioSource()
108QPlatformAudioSource *QPlatformAudioSource::get(
const QAudioSource &source)
115#include "moc_qaudiosystem_p.cpp"
Combined button and popup list for selecting options.