this repo has no description
1#ifndef AUDIOBUFFER_H
2#define AUDIOBUFFER_H
3#include <CoreAudio/CoreAudioTypes.h>
4#include <CoreServices/MacTypes.h>
5#include <CoreFoundation/CFString.h>
6#include <CoreFoundation/CFRunLoop.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12typedef UInt32 AudioQueuePropertyID;
13typedef UInt32 AudioQueueParameterID;
14typedef Float32 AudioQueueParameterValue;
15
16struct AudioQueueParameterEvent
17{
18 AudioQueueParameterID mID;
19 AudioQueueParameterValue mValue;
20};
21
22class AudioQueue;
23typedef AudioQueue* AudioQueueRef;
24
25struct AudioQueueBuffer
26{
27 const UInt32 mAudioDataBytesCapacity;
28 void* mAudioData;
29 UInt32 mAudioDataByteSize;
30 void* mUserData;
31
32 UInt32 mPacketDescriptionCapacity;
33 AudioStreamPacketDescription* mPacketDescriptions;
34 UInt32 mPacketDescriptionCount;
35};
36typedef AudioQueueBuffer* AudioQueueBufferRef;
37
38OSStatus AudioQueueStart(AudioQueueRef inAQ, const AudioTimeStamp *inStartTime);
39OSStatus AudioQueuePrime(AudioQueueRef inAQ, UInt32 inNumberOfFramesToPrepare, UInt32 *outNumberOfFramesPrepared);
40OSStatus AudioQueueFlush(AudioQueueRef inAQ);
41OSStatus AudioQueueStop(AudioQueueRef inAQ, Boolean inImmediate);
42OSStatus AudioQueuePause(AudioQueueRef inAQ);
43OSStatus AudioQueueReset(AudioQueueRef inAQ);
44
45typedef void (*AudioQueueOutputCallback)(void* inUserData, AudioQueueRef inAQ,
46 AudioQueueBufferRef inBuffer);
47OSStatus AudioQueueNewOutput(const AudioStreamBasicDescription *inFormat,
48 AudioQueueOutputCallback inCallbackProc,
49 void *inUserData, CFRunLoopRef inCallbackRunLoop,
50 CFStringRef inCallbackRunLoopMode, UInt32 inFlags,
51 AudioQueueRef *outAQ);
52
53typedef void (*AudioQueueInputCallback)(void* inUserData, AudioQueueRef inAQ,
54 AudioQueueBufferRef inBuffer, const AudioTimeStamp* inStartTime,
55 UInt32 inNumberPacketDescriptions,
56 const AudioStreamPacketDescription* inPacketDescs);
57OSStatus AudioQueueNewInput(const AudioStreamBasicDescription *inFormat,
58 AudioQueueInputCallback inCallbackProc,
59 void *inUserData, CFRunLoopRef inCallbackRunLoop,
60 CFStringRef inCallbackRunLoopMode, UInt32 inFlags,
61 AudioQueueRef *outAQ);
62
63OSStatus AudioQueueDispose(AudioQueueRef inAQ, Boolean inImmediate);
64
65OSStatus AudioQueueGetParameter(AudioQueueRef inAQ, AudioQueueParameterID inParamID, AudioQueueParameterValue *outValue);
66OSStatus AudioQueueSetParameter(AudioQueueRef inAQ, AudioQueueParameterID inParamID, AudioQueueParameterValue inValue);
67
68OSStatus AudioQueueGetProperty(AudioQueueRef inAQ, AudioQueuePropertyID inID, void *outData, UInt32 *ioDataSize);
69OSStatus AudioQueueSetProperty(AudioQueueRef inAQ, AudioQueuePropertyID inID, const void *inData, UInt32 inDataSize);
70OSStatus AudioQueueGetPropertySize(AudioQueueRef inAQ, AudioQueuePropertyID inID, UInt32 *outDataSize);
71
72typedef void (*AudioQueuePropertyListenerProc)(void* inUserData, AudioQueueRef inAQ, AudioQueuePropertyID inID);
73OSStatus AudioQueueAddPropertyListener(AudioQueueRef inAQ, AudioQueuePropertyID inID, AudioQueuePropertyListenerProc inProc, void *inUserData);
74OSStatus AudioQueueRemovePropertyListener(AudioQueueRef inAQ, AudioQueuePropertyID inID, AudioQueuePropertyListenerProc inProc, void *inUserData);
75
76OSStatus AudioQueueSetOfflineRenderFormat(AudioQueueRef inAQ, const AudioStreamBasicDescription *inFormat, const AudioChannelLayout *inLayout);
77OSStatus AudioQueueOfflineRender(AudioQueueRef inAQ, const AudioTimeStamp *inTimestamp, AudioQueueBufferRef ioBuffer, UInt32 inNumberFrames);
78
79OSStatus AudioQueueAllocateBuffer(AudioQueueRef inAQ, UInt32 inBufferByteSize, AudioQueueBufferRef *outBuffer);
80OSStatus AudioQueueAllocateBufferWithPacketDescriptions(AudioQueueRef inAQ,
81 UInt32 inBufferByteSize, UInt32 inNumberPacketDescriptions,
82 AudioQueueBufferRef *outBuffer);
83OSStatus AudioQueueFreeBuffer(AudioQueueRef inAQ, AudioQueueBufferRef inBuffer);
84OSStatus AudioQueueEnqueueBuffer(AudioQueueRef inAQ, AudioQueueBufferRef inBuffer,
85 UInt32 inNumPacketDescs, const AudioStreamPacketDescription *inPacketDescs);
86OSStatus AudioQueueEnqueueBufferWithParameters(AudioQueueRef inAQ,
87 AudioQueueBufferRef inBuffer, UInt32 inNumPacketDescs,
88 const AudioStreamPacketDescription *inPacketDescs,
89 UInt32 inTrimFramesAtStart, UInt32 inTrimFramesAtEnd,
90 UInt32 inNumParamValues, const AudioQueueParameterEvent *inParamValues,
91 const AudioTimeStamp *inStartTime, AudioTimeStamp *outActualStartTime);
92
93class AudioQueueTimeline;
94typedef AudioQueueTimeline* AudioQueueTimelineRef;
95
96OSStatus AudioQueueCreateTimeline(AudioQueueRef inAQ, AudioQueueTimelineRef *outTimeline);
97OSStatus AudioQueueDisposeTimeline(AudioQueueRef inAQ, AudioQueueTimelineRef inTimeline);
98OSStatus AudioQueueDeviceGetCurrentTime(AudioQueueRef inAQ, AudioTimeStamp *outTimeStamp);
99OSStatus AudioQueueDeviceGetNearestStartTime(AudioQueueRef inAQ, AudioTimeStamp *ioRequestedStartTime, UInt32 inFlags);
100OSStatus AudioQueueDeviceTranslateTime(AudioQueueRef inAQ, const AudioTimeStamp *inTime, AudioTimeStamp *outTime);
101OSStatus AudioQueueGetCurrentTime(AudioQueueRef inAQ, AudioQueueTimelineRef inTimeline, AudioTimeStamp *outTimeStamp, Boolean *outTimelineDiscontinuity);
102
103#ifdef __cplusplus
104}
105#endif
106
107#endif /* AUDIOBUFFER_H */
108