32class QCoreAudioSinkStream
final :
public std::enable_shared_from_this<QCoreAudioSinkStream>,
33 public QtMultimediaPrivate::QPlatformAudioSinkStream
35 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
36 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
42 std::optional<qsizetype> ringbufferSize, QCoreAudioSink *parent,
43 float volume, std::optional<QtMultimediaPrivate::NativePeriodFrames> nativePeriodFrames,
45 Q_DISABLE_COPY_MOVE(QCoreAudioSinkStream)
46 ~QCoreAudioSinkStream();
49 bool start(QIODevice *device);
51 bool start(AudioCallback cb);
52 void stop(ShutdownPolicy policy);
59 using QPlatformAudioSinkStream::bytesFree;
60 using QPlatformAudioSinkStream::processedDuration;
61 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
62 using QPlatformAudioSinkStream::setVolume;
70 OSStatus processRingbuffer(uint32_t numberOfFrames,
71 AudioBufferList *ioData)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
72 OSStatus processAudioCallback(uint32_t numberOfFrames,
73 AudioBufferList *ioData)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
77 bool startAudioUnit();
82 bool setDisconnectListener(AudioObjectID id);
84 QCoreAudioUtils::DeviceDisconnectMonitor m_disconnectMonitor;
85 QFuture<
void> m_stopOnDisconnected;
88 std::unique_ptr<QIODevice> m_reader;
89 QCoreAudioUtils::AudioUnitHandle m_audioUnit;
91 QCoreAudioSink *m_parent;
93 std::optional<AudioCallback> m_audioCallback;
100 std::optional<QtMultimediaPrivate::QAVAudioSessionManager::ActivationToken> m_sessionActivation;
104class QCoreAudioSink
final
105 :
public QtMultimediaPrivate::QPlatformAudioSinkImplementation<QCoreAudioSinkStream,
108 using BaseClass = QtMultimediaPrivate::QPlatformAudioSinkImplementation<QCoreAudioSinkStream,
112 QCoreAudioSink(QAudioDevice device,
const QAudioFormat &format, QObject *parent);
122 using BaseClass::updateStreamState;
127 QtMultimediaPrivate::QAVAudioSessionRecovery<QCoreAudioSink> m_recovery{ *
this };
QCoreAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QCoreAudioSink *parent, float volume, std::optional< QtMultimediaPrivate::NativePeriodFrames > nativePeriodFrames, AudioEndpointRole)