30class QCoreAudioSourceStream
final :
public QtMultimediaPrivate::QPlatformAudioSourceStream
32 using QPlatformAudioSourceStream = QtMultimediaPrivate::QPlatformAudioSourceStream;
38 std::optional<
int> ringbufferSize, QDarwinAudioSource *parent,
39 float volume, std::optional<int32_t> hardwareBufferFrames);
40 Q_DISABLE_COPY_MOVE(QCoreAudioSourceStream)
41 ~QCoreAudioSourceStream();
45 bool start(QIODevice *);
47 bool start(AudioCallback &&);
53 using QPlatformAudioSourceStream::bytesReady;
54 using QPlatformAudioSourceStream::deviceIsRingbufferReader;
55 using QPlatformAudioSourceStream::processedDuration;
56 using QPlatformAudioSourceStream::ringbufferSizeInBytes;
57 using QPlatformAudioSourceStream::setVolume;
65 static OSStatus inputCallback(
void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags,
66 const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber,
67 UInt32 inNumberFrames, AudioBufferList *ioData);
69 OSStatus processInput(AudioUnitRenderActionFlags *ioActionFlags,
70 const AudioTimeStamp *timeStamp, UInt32 inBusNumber,
71 UInt32 inNumberFrames,
72 AudioBufferList *ioData)
noexcept QT_MM_NONBLOCKING;
74 OSStatus processRingbuffer(QSpan<
const std::byte> inputSpan,
75 UInt32 inNumberFrames)
noexcept QT_MM_NONBLOCKING;
76 OSStatus processAudioCallback(QSpan<
const std::byte> inputSpan)
noexcept QT_MM_NONBLOCKING;
79 bool addDisconnectListener(AudioObjectID id);
80 void removeDisconnectListener();
82 QCoreAudioUtils::DeviceDisconnectMonitor m_disconnectMonitor;
83 QFuture<
void> m_stopOnDisconnected;
86 QCoreAudioUtils::AudioUnitHandle m_audioUnit;
87 bool m_audioUnitRunning{};
89 std::optional<AudioCallback> m_audioCallback;
90 QDarwinAudioSource *m_parent;
92 AudioBufferList m_bufferList{};
96 std::vector<uint8_t> m_outputBuffer;
97 AudioBufferList m_outputBufferList{};
100class QDarwinAudioSource
final
101 :
public QtMultimediaPrivate::QPlatformAudioSourceImplementationWithCallback<
102 QCoreAudioSourceStream, QDarwinAudioSource>
104 using BaseClass = QtMultimediaPrivate::QPlatformAudioSourceImplementationWithCallback<
105 QCoreAudioSourceStream, QDarwinAudioSource>;
QCoreAudioSourceStream(QAudioDevice, const QAudioFormat &, std::optional< int > ringbufferSize, QDarwinAudioSource *parent, float volume, std::optional< int32_t > hardwareBufferFrames)