30class QAndroidAudioSinkStream
final :
public std::enable_shared_from_this<QAndroidAudioSinkStream>,
31 public QtMultimediaPrivate::QPlatformAudioSinkStream
33 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
34 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
35 using NativePeriodFrames = QtMultimediaPrivate::NativePeriodFrames;
39 std::optional<qsizetype> ringbufferSize,
40 QAndroidAudioSink *parent,
float volume,
41 std::optional<NativePeriodFrames> nativePeriodFrames,
43 Q_DISABLE_COPY_MOVE(QAndroidAudioSinkStream)
47 bool start(QIODevice *device);
49 bool start(AudioCallback cb);
53 void stop(ShutdownPolicy policy);
55 using QPlatformAudioSinkStream::bytesFree;
56 using QPlatformAudioSinkStream::processedDuration;
57 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
58 using QPlatformAudioSinkStream::setVolume;
67 QSpan<std::byte> getHostSpan(
void *audioData,
int numFrames)
const noexcept QT_MM_NONBLOCKING;
68 aaudio_data_callback_result_t processRingbuffer(QSpan<std::byte> audioSpan,
69 int numFrames)
noexcept QT_MM_NONBLOCKING;
70 aaudio_data_callback_result_t processCallback(QSpan<std::byte> audioSpan)
noexcept QT_MM_NONBLOCKING;
71 void handleError(aaudio_result_t error);
73 QAndroidAudioSink *m_parent{
nullptr };
74 std::shared_ptr<QAndroidAudioSinkStream> m_self;
76 std::optional<AudioCallback> m_audioCallback;
78 AudioEndpointRole m_role;
80 std::unique_ptr<QtAAudio::Stream> m_stream;
82 std::optional<QAudioFormat> m_hostFormat;
QAndroidAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QAndroidAudioSink *parent, float volume, std::optional< NativePeriodFrames > nativePeriodFrames, AudioEndpointRole)