30class QAndroidAudioSinkStream
final :
public std::enable_shared_from_this<QAndroidAudioSinkStream>,
31 QtMultimediaPrivate::QPlatformAudioSinkStream
33 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
34 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
38 std::optional<qsizetype> ringbufferSize,
39 QAndroidAudioSink *parent,
float volume,
40 std::optional<int32_t> hardwareBufferFrames,
42 Q_DISABLE_COPY_MOVE(QAndroidAudioSinkStream)
46 bool start(QIODevice *device);
48 bool start(AudioCallback cb);
52 void stop(ShutdownPolicy policy);
54 using QPlatformAudioSinkStream::bytesFree;
55 using QPlatformAudioSinkStream::processedDuration;
56 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
57 using QPlatformAudioSinkStream::setVolume;
66 QSpan<std::byte> getHostSpan(
void *audioData,
int numFrames)
const noexcept QT_MM_NONBLOCKING;
67 aaudio_data_callback_result_t processRingbuffer(
void *audioData,
68 int numFrames)
noexcept QT_MM_NONBLOCKING;
69 aaudio_data_callback_result_t processCallback(
void *audioData,
70 int numFrames)
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<NativeSampleFormat> m_nativeSampleFormat;
85class QAndroidAudioSink
final
86 :
public QtMultimediaPrivate::QPlatformAudioSinkImplementation<QAndroidAudioSinkStream,
89 using BaseClass = QtMultimediaPrivate::QPlatformAudioSinkImplementation<QAndroidAudioSinkStream,
93 QAndroidAudioSink(QAudioDevice device,
const QAudioFormat &format, QObject *parent);
QAndroidAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QAndroidAudioSink *parent, float volume, std::optional< int32_t > hardwareBufferFrames, AudioEndpointRole)