30class QOhosAudioSinkStream
final :
public std::enable_shared_from_this<QOhosAudioSinkStream>,
31 public QtMultimediaPrivate::QPlatformAudioSinkStream
33 using QPlatformAudioSinkStream = QtMultimediaPrivate::QPlatformAudioSinkStream;
34 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
38 std::optional<qsizetype> ringbufferSize,
39 QOhosAudioSink *parent,
float volume,
40 std::optional<QtMultimediaPrivate::NativePeriodFrames> hardwareBufferFrames,
41 AudioEndpointRole role);
42 Q_DISABLE_COPY_MOVE(QOhosAudioSinkStream)
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;
65 QSpan<std::byte> getHostSpan(
void *audioData, int32_t numBytes)
const noexcept Q_DECL_NONBLOCKING_FUNCTION;
66 OH_AudioData_Callback_Result processRingbuffer(QSpan<std::byte> audioSpan,
67 int32_t numBytes)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
68 OH_AudioData_Callback_Result processCallback(QSpan<std::byte> audioSpan)
noexcept Q_DECL_NONBLOCKING_FUNCTION;
70 QOhosAudioSink *m_parent{
nullptr };
71 std::shared_ptr<QOhosAudioSinkStream> m_self;
73 std::optional<AudioCallback> m_audioCallback;
74 AudioEndpointRole m_role;
76 std::unique_ptr<QtOHAudio::Stream> m_stream;
77 std::optional<QAudioFormat> m_hostFormat;
QOhosAudioSinkStream(QAudioDevice device, const QAudioFormat &format, std::optional< qsizetype > ringbufferSize, QOhosAudioSink *parent, float volume, std::optional< QtMultimediaPrivate::NativePeriodFrames > hardwareBufferFrames, AudioEndpointRole role)