4#ifndef QPIPEWIRE_AUDIOSOURCE_P_H
5#define QPIPEWIRE_AUDIOSOURCE_P_H
18#include <QtMultimedia/private/qaudio_platform_implementation_support_p.h>
19#include <QtMultimedia/private/qaudiosystem_p.h>
20#include <QtMultimedia/private/qaudiosystem_platform_stream_support_p.h>
21#include <QtMultimedia/private/qpipewire_audiostream_p.h>
22#include <QtCore/qsemaphore.h>
23#include <QtCore/qtclasshelpermacros.h>
31class QPipewireAudioSource;
44 std::optional<qsizetype> ringbufferSize,
45 QPipewireAudioSource *parent,
float volume,
46 std::optional<int32_t> hardwareBufferFrames);
50 bool open() {
return true; }
51 bool start(QIODevice *device);
53 bool start(AudioCallback &&);
65 void createStream(QPipewireAudioStream::StreamType);
66 std::optional<ObjectSerial> findSourceNodeSerial();
74 void stateChanged(pw_stream_state old, pw_stream_state state,
const char *error)
override;
77 void disconnectStream();
79 QSemaphore m_streamDisconnected;
83 QtPrivate::QAutoResetEvent m_xrunOccurred;
84 QMetaObject::Connection m_xrunNotification;
86 std::optional<AudioCallback> m_audioCallback;
88 QPipewireAudioSource *m_parent;
93class QPipewireAudioSource
final
94 :
public QPlatformAudioSourceImplementationWithCallback<QPipewireAudioSourceStream,
97 using BaseClass = QPlatformAudioSourceImplementationWithCallback<QPipewireAudioSourceStream,
98 QPipewireAudioSource>;
~QPipewireAudioSource() override
QPipewireAudioSource(QAudioDevice, const QAudioFormat &, QObject *parent)
Combined button and popup list for selecting options.
bool start(QIODevice *device)
void finalizeStream() override
void stop(ShutdownPolicy)
void handleDeviceRemoved() override
QPipewireAudioSourceStream(QAudioDevice, const QAudioFormat &, std::optional< qsizetype > ringbufferSize, QPipewireAudioSource *parent, float volume, std::optional< int32_t > hardwareBufferFrames)
bool start(AudioCallback &&)
void updateStreamIdle(bool idle) override
void xrunOccurred(int) override
QAudioFormat::SampleFormat SampleFormat
void stateChanged(pw_stream_state old, pw_stream_state state, const char *error) override
void processCallback() noexcept QT_MM_NONBLOCKING override
void processRingbuffer() noexcept QT_MM_NONBLOCKING override
QPipewireAudioSource SourceType