17#include <private/qaudiosystem_p.h>
20#include <AudioUnit/AudioUnit.h>
21#include <CoreAudio/CoreAudioTypes.h>
22#include <AudioToolbox/AudioToolbox.h>
24#include <QtCore/QIODevice>
25#include <QtCore/QWaitCondition>
26#include <QtCore/QMutex>
27#include <QtCore/QTimer>
56 AudioStreamBasicDescription m_streamDescription;
57 AudioBufferList *m_bufferList;
65 bool feed(AudioBufferList&
dst, UInt32& packetCount);
69 UInt32 m_totalPackets;
81 AudioStreamBasicDescription
const& inputFormat,
82 AudioStreamBasicDescription
const& outputFormat,
91 AudioUnitRenderActionFlags *ioActionFlags,
92 const AudioTimeStamp *inTimeStamp,
94 UInt32 inNumberFrames);
103 void flush(
bool all =
false);
131 AudioConverterRef m_audioConverter;
132 AudioStreamBasicDescription m_inputFormat;
133 AudioStreamBasicDescription m_outputFormat;
137 const static OSStatus as_empty =
'qtem';
140 static OSStatus converterCallback(AudioConverterRef inAudioConverter,
141 UInt32 *ioNumberDataPackets,
142 AudioBufferList *ioData,
143 AudioStreamPacketDescription **outDataPacketDescription,
190 void deviceStoppped();
201 void audioThreadStart();
202 void audioThreadStop();
204 void audioDeviceStop();
205 void audioDeviceActive();
206 void audioDeviceFull();
207 void audioDeviceError();
213 static OSStatus inputCallback(
void *inRefCon,
214 AudioUnitRenderActionFlags *ioActionFlags,
215 const AudioTimeStamp *inTimeStamp,
217 UInt32 inNumberFrames,
218 AudioBufferList *ioData);
223 int m_periodSizeBytes;
224 int m_internalBufferSize;
228 AudioUnit m_audioUnit;
229#if defined(Q_OS_MACOS)
230 AudioDeviceID m_audioDeviceId;
237 AudioStreamBasicDescription m_streamFormat;
238 AudioStreamBasicDescription m_deviceFormat;
IOBluetoothDevice * device
The QAudioDevice class provides an information about audio devices and their functionality.
AudioBufferList * audioBufferList() const
int frameCount(int buffer=0) const
qint64 bufferSize(int buffer=0) const
int packetCount(int buffer=0) const
bool feed(AudioBufferList &dst, UInt32 &packetCount)
qint64 renderFromDevice(AudioUnit audioUnit, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames)
qint64 readBytes(char *data, qint64 len)
~QDarwinAudioSourceBuffer()
void flush(bool all=false)
void setFlushDevice(QIODevice *device)
bool isSequential() const
Returns true if this device is sequential; otherwise returns false.
qint64 writeData(const char *data, qint64 len)
Writes up to maxSize bytes from data to the device.
qsizetype bufferSize() const
void setVolume(qreal volume)
qint64 processedUSecs() const
qsizetype bytesReady() const
QAudio::Error error() const
void setBufferSize(qsizetype value)
void setFormat(const QAudioFormat &format)
QAudioFormat format() const
QAudio::State state() const
\inmodule QtCore \reentrant
void unlock() noexcept
Unlocks the mutex.
void lock() noexcept
Locks the mutex.
QObject * parent() const
Returns a pointer to the parent object.
bool wait(QMutex *, QDeadlineTimer=QDeadlineTimer(QDeadlineTimer::Forever))
State
\value ActiveState Audio data is being processed, this state is set after start() is called and while...
Error
\value NoError No errors have occurred \value OpenError An error occurred opening the audio device \v...
Combined button and popup list for selecting options.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei GLsizei GLenum format