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;
41 std::optional<qsizetype> ringbufferSize,
42 QAndroidAudioSink *parent,
float volume,
43 std::optional<NativePeriodFrames> nativePeriodFrames,
45 Q_DISABLE_COPY_MOVE(QAndroidAudioSinkStream)
49 bool start(QIODevice *device);
51 bool start(AudioCallback cb);
55 void stop(ShutdownPolicy policy);
57 using QPlatformAudioSinkStream::bytesFree;
58 using QPlatformAudioSinkStream::processedDuration;
59 using QPlatformAudioSinkStream::ringbufferSizeInBytes;
60 using QPlatformAudioSinkStream::setVolume;
69 QSpan<std::byte> getHostSpan(
void *audioData,
int numFrames)
const noexcept Q_DECL_NONBLOCKING_FUNCTION;
70 aaudio_data_callback_result_t processRingbuffer(QSpan<std::byte> audioSpan,
71 int numFrames)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
72 aaudio_data_callback_result_t processCallback(QSpan<std::byte> audioSpan)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
73 void handleError(aaudio_result_t error);
75 QAndroidAudioSink *m_parent{
nullptr };
76 std::shared_ptr<QAndroidAudioSinkStream> m_self;
78 std::optional<AudioCallback> m_audioCallback;
80 AudioEndpointRole m_role;
82 std::unique_ptr<QtAAudio::Stream> m_stream;
84 std::optional<QAudioFormat> m_hostFormat;
QAndroidAudioSinkStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QAndroidAudioSink *parent, float volume, std::optional< NativePeriodFrames > nativePeriodFrames, AudioEndpointRole)