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");
20void QPlatformAudioEndpointBase::setError(QAudio::Error err)
27bool QPlatformAudioEndpointBase::isFormatSupported(
const QAudioFormat &format)
const
29 return m_audioDevice.isFormatSupported(format);
32void QPlatformAudioEndpointBase::updateStreamState(QAudio::State state)
34 if (m_streamState == state)
37 m_streamState = state;
41void QPlatformAudioEndpointBase::updateStreamIdle(
bool idle, EmitStateSignal emitStateSignal)
43 if (idle == m_streamIsIdle)
45 m_streamIsIdle = idle;
47 if (emitStateSignal == EmitStateSignal::True)
51void QPlatformAudioEndpointBase::inferState()
58 using State = QtAudio::State;
60 State oldState = m_inferredState;
62 switch (m_streamState) {
63 case State::StoppedState:
64 m_inferredState = State::StoppedState;
66 case State::SuspendedState:
67 m_inferredState = State::SuspendedState;
69 case State::ActiveState:
70 m_inferredState = m_streamIsIdle ? State::IdleState : State::ActiveState;
73 case State::IdleState:
74 qCritical() <<
"Users should not be able to set the state to Idle!";
75 Q_UNREACHABLE_RETURN();
78 if (oldState != m_inferredState)
79 emit stateChanged(m_inferredState);
82QPlatformAudioSink::QPlatformAudioSink(QAudioDevice device,
const QAudioFormat &format,
84 : QPlatformAudioEndpointBase(std::move(device), format, parent)
88QPlatformAudioSink *QPlatformAudioSink::get(
const QAudioSink &sink)
93QPlatformAudioSource::QPlatformAudioSource(QAudioDevice device,
const QAudioFormat &format,
95 : QPlatformAudioEndpointBase(std::move(device), format, parent)
99QPlatformAudioSource *QPlatformAudioSource::get(
const QAudioSource &source)
106#include "moc_qaudiosystem_p.cpp"