Audio Queue Services


/System/Library/Frameworks/AudioToolbox.framework

マネージャ Audio Queue Services 

概要 

この文書は、コアオーディオサービスの一部であるAudio Queue Servicesの(C言語)インタフェースについて説明します。

オーディオキュー(Audio Queue)は、オーディオの再生や録音を利用するためのソフトウェアオブジェクトです。オーディオキューの働きを下にあげます。

■ オーディオハードウェアへの接続

■ メモリ管理

■ オーディオを圧縮する際に必要に応じたコーデックを採用

■ 録音再生装置の仲介、または録音

オーディオキューサービスでは、リニアPCMによるオーディオの再生と録音、また、オーディオの圧縮(AACやApple LossLessなど)を有効にします。また、ユーザによってインストールされているコーデックによるその他の形式での圧縮も可能です。また、再生のスケジュール、複数のオーディオキューの同期、ビデオとオーディオの同期もサポートしています。




ファンクション インデックス 

オーディオキューの制御 

オーディオキューの生成と処理 

オーディオキューバッファの処理 

オーディオキューパラメータの操作 

オーディオキュープロパティの操作 

タイミングの処理 

オフラインレンダリングの実行 

ファンクション 

AudioQueueAddPropertyListener 

プロパティリスナーのコールバックをオーディオキューに追加する。

   OSStatus AudioQueueAddPropertyListener (
       AudioQueueRef inAQ,
       AudioQueuePropertyID inID,
       AudioQueuePropertyListenerProc inProc,
       void *inUserData
   );

AudioQueueAllocateBuffer 

オーディオキューオブジェクトにオーディオキューバッファを割り当てるか尋ねる。

   OSStatus AudioQueueAllocateBuffer (
       AudioQueueRef inAQ,
       UInt32 inBufferByteSize,
       AudioQueueBufferRef *outBuffer
   );

AudioQueueAllocateBufferWithPacketDescriptions 

オーディオキューオブジェクトにオーディオキューバッファをパケットディスクリプタのスペースと共に割り当てるか尋ねる。

   AudioQueueAllocateBufferWithPacketDescriptions(
       AudioQueueRef           inAQ,
       UInt32                  inBufferByteSize,
       UInt32                  inNumberPacketDescriptions,
       AudioQueueBufferRef     *outBuffer
   );

AudioQueueCreateTimeline 

オーディオキューのタイムラインオブジェクトを作成する。

   OSStatus AudioQueueCreateTimeline (
       AudioQueueRef inAQ,
       AudioQueueTimelineRef *outTimeline
   );

AudioQueueDeviceGetCurrentTime 

オーディオキューに割り当てられているオーディオハードウェアデバイスの現在の時間を取得する。

   OSStatus AudioQueueDeviceGetCurrentTime (
       AudioQueueRef inAQ,
       AudioTimeStamp *outTimeStamp
   );

AudioQueueDeviceGetNearestStartTime 

リクエスト(パラメータに入力)された開始時間に一番近い開始時間を取得する。

   OSStatus AudioQueueDeviceGetNearestStartTime (
       AudioQueueRef inAQ,
       AudioTimeStamp *ioRequestedStartTime,
       UInt32 inFlags
   );

AudioQueueDeviceTranslateTime 

オーディオキューに割り当てられているオーディオハードウェアデバイスの時間を変換する。

   OSStatus AudioQueueDeviceTranslateTime (
       AudioQueueRef inAQ,
       const AudioTimeStamp *inTime,
       AudioTimeStamp *outTime
   );

AudioQueueDispose 

オーディオキューを処理する。

   OSStatus AudioQueueDispose (
       AudioQueueRef inAQ,
       Boolean inImmediate
   );

AudioQueueDisposeTimeline 

オーディオキューのタイムラインオブジェクトを処理する。

   OSStatus AudioQueueDisposeTimeline (
       AudioQueueRef inAQ,
       AudioQueueTimelineRef inTimeline
   );

AudioQueueEnqueueBuffer 

録音用のバッファキューまたは再生用のオーディオキューにバッファを追加する。

   OSStatus AudioQueueEnqueueBuffer (
       AudioQueueRef                      inAQ,
       AudioQueueBufferRef                inBuffer,
       UInt32                             inNumPacketDescs,
       const AudioStreamPacketDescription *inPacketDescs
   );

AudioQueueEnqueueBufferWithParameters 

録音用のバッファキューまたは再生用のオーディオキューに、開始時間やその他の設定を指定してバッファを追加する。

   OSStatus AudioQueueEnqueueBufferWithParameters (
       AudioQueueRef                       inAQ,
       AudioQueueBufferRef                 inBuffer,
       UInt32                              inNumPacketDescs,
       const AudioStreamPacketDescription  *inPacketDescs,
       UInt32                              inTrimFramesAtStart,
       UInt32                              inTrimFramesAtEnd,
       UInt32                              inNumParamValues,
       const AudioQueueParameterEvent      *inParamValues,
       const AudioTimeStamp                *inStartTime,
       AudioTimeStamp                      *outActualStartTime
   );

AudioQueueFlush 

オーディオキューのデコーダの状態をリセットする。

   OSStatus AudioQueueFlush (
       AudioQueueRef inAQ
   );

AudioQueueFreeBuffer 

オーディオキューバッファの処理をオーディオキューに尋ねる。

   OSStatus AudioQueueFreeBuffer (
       AudioQueueRef inAQ,
       AudioQueueBufferRef inBuffer
   );

AudioQueueGetCurrentTime 

オーディオキューの現在の時間を取得する。

   OSStatus AudioQueueGetCurrentTime (
       AudioQueueRef inAQ,
       AudioQueueTimelineRef inTimeline,
       AudioTimeStamp *outTimeStamp,
       Boolean *outTimelineDiscontinuity
   );

AudioQueueGetParameter 

オーディオキューのパラメータの値を取得する。

   OSStatus AudioQueueGetParameter (
       AudioQueueRef inAQ,
       AudioQueueParameterID inParamID,
       AudioQueueParameterValue *outValue
   );

AudioQueueGetProperty 

オーディオキューのプロパティの値を取得する。

   OSStatus AudioQueueGetProperty (
       AudioQueueRef inAQ,
       AudioQueuePropertyID inID,
       void *outData,
       UInt32 *ioDataSize
   );

AudioQueueGetPropertySize 

オーディオキューのプロパティの値のサイズを取得する。

   OSStatus AudioQueueGetPropertySize (
       AudioQueueRef inAQ,
       AudioQueuePropertyID inID,
       UInt32 *outDataSize
   );

AudioQueueNewInput 

新しい録音用オーディオキューオブジェクトを作成する。

   OSStatus AudioQueueNewInput (
       const AudioStreamBasicDescription  *inFormat,
       AudioQueueInputCallback            inCallbackProc,
       void                               *inUserData,
       CFRunLoopRef                       inCallbackRunLoop,
       CFStringRef                        inCallbackRunLoopMode,
       UInt32                             inFlags,
       AudioQueueRef                      *outAQ
   );

AudioQueueNewOutput 

新しい再生用オーディオキューオブジェクトを作成する。

   OSStatus AudioQueueNewOutput (
       const AudioStreamBasicDescription   *inFormat,
       AudioQueueOutputCallback            inCallbackProc,
       void                                *inUserData,
       CFRunLoopRef                        inCallbackRunLoop,
       CFStringRef                         inCallbackRunLoopMode,
       UInt32                              inFlags,
       AudioQueueRef                       *outAQ
   );

AudioQueueOfflineRender 

再生オーディオキューを使用して、オーディオをデバイスの代わりにバッファへエキスポートする。

   OSStatus AudioQueueOfflineRender (
       AudioQueueRef inAQ,
       const AudioTimeStamp *inTimestamp,
       AudioQueueBufferRef ioBuffer,
       UInt32 inNumberFrames
   );

AudioQueuePause 

オーディオの再生と録音を一時停止する。

   OSStatus AudioQueuePause (
       AudioQueueRef inAQ
   );

AudioQueuePrime 

再生用に用意してある待機状態のバッファをデコードする。

   OSStatus AudioQueuePrime (
       AudioQueueRef inAQ,
       UInt32 inNumberOfFramesToPrepare,
       UInt32 *outNumberOfFramesPrepared
   );

AudioQueueRemovePropertyListener 

オーディオキューからプロパティリスナーコールバックを削除する。

   OSStatus AudioQueueRemovePropertyListener (
       AudioQueueRef inAQ,
       AudioQueuePropertyID inID,
       AudioQueuePropertyListenerProc inProc,
       void *inUserData
   );

AudioQueueReset 

オーディオキューをリセットする。

   OSStatus AudioQueueReset (
       AudioQueueRef inAQ
   );

AudioQueueSetOfflineRenderFormat 

レンダリングモードと再生オーディオキュー用のオーディオフォーマットをセットする。

   OSStatus AudioQueueSetOfflineRenderFormat (
       AudioQueueRef inAQ,
       const AudioStreamBasicDescription *inFormat,
       const AudioChannelLayout *inLayout
   );

AudioQueueSetParameter 

再生オーディオキューのパラメーターの値をセットする。

   OSStatus AudioQueueSetParameter (
       AudioQueueRef inAQ,
       AudioQueueParameterID inParamID,
       AudioQueueParameterValue inValue
   );

AudioQueueSetProperty 

オーディオキューのプロパティの値をセットする。

   OSStatus AudioQueueSetProperty (
       AudioQueueRef inAQ,
       AudioQueuePropertyID inID,
       const void *inData,
       UInt32 inDataSize
   );

AudioQueueStart 

オーディオの再生または録音を開始する。

   OSStatus AudioQueueStart (
       AudioQueueRef inAQ,
       const AudioTimeStamp *inStartTime
   );

AudioQueueStop 

オーディオの再生または録音を停止する。

   OSStatus AudioQueueStop (
       AudioQueueRef inAQ,
       Boolean inImmediate
   );

コールバック インデックス 

再生・録音用のオーディオキューバッファの処理 

AudioQueueInputCallback

AudioQueueOutputCallback

プロパティリスナーの定義 

AudioQueuePropertyListenerProc

コールバック 

AudioQueueInputCallback 

録音オーディオキューがオーディオキューバッファを満たし終わった時に呼ばれるコールバック関数のポインターを定義する。

   typedef void (*AudioQueueInputCallback) (
       void                                *inUserData,
       AudioQueueRef                       inAQ,
       AudioQueueBufferRef                 inBuffer,
       const AudioTimeStamp                *inStartTime,
       UInt32                              inNumberPacketDescriptions,
       const AudioStreamPacketDescription  *inPacketDescs
   );

AudioQueueOutputCallback 

オーディオキューバッファが(再)利用可能な時に呼ばれるコールバック関数のポインターを定義する。

   typedef void (*AudioQueueOutputCallback) (
       void                 *inUserData,
       AudioQueueRef        inAQ,
       AudioQueueBufferRef  inBuffer
   );

AudioQueuePropertyListenerProc 

オーディオキュープロパティの値の変更が指定された時に呼ばれるコールバック関数のポインターを定義する。

   typedef void (*AudioQueuePropertyListenerProc) (
       void                  *inUserData,
       AudioQueueRef         inAQ,
       AudioQueuePropertyID  inID
   );

データタイプ 

AudioQueueBuffer 

オーディオキューバッファを定義する。

   typedef struct AudioQueueBuffer {
       const UInt32                 mAudioDataBytesCapacity;
       void                         *const mAudioData;
       UInt32                       mAudioDataByteSize;
       void                         *mUserData;
       const UInt32                 mPacketDescriptionCapacity;
       AudioStreamPacketDescription *const mPacketDescriptions;
       UInt32                       mPacketDescriptionCount;
   } AudioQueueBuffer;

AudioQueueRef 

   typedef struct OpaqueAudioQueue *AudioQueueRef;

オーディオキューを表現する不透明なデータタイプを定義する。

AudioQueueTimelineRef 

オーディオキュータイムラインオブジェクトを表現する不透明なデータタイプを定義する。

   typedef struct OpaqueAudioQueueTimeline *AudioQueueTimelineRef;

AudioQueueLevelMeterState 

オーディオキューチャンネルの現在の情報計測レベルを指定する。

   typedef struct AudioQueueLevelMeterState {
       Float32     mAveragePower;
       Float32     mPeakPower;
   };  AudioQueueLevelMeterState;

AudioQueueParameterEvent 

オーディオキューパラメータと関連する値を指定する。

   struct AudioQueueParameterEvent {
       AudioQueueParameterID     mID;
       AudioQueueParameterValue  mValue;
   };  typedef struct AudioQueueParameterEvent AudioQueueParameterEvent;

AudioQueueParameterID 

オーディオキューパラメータを独自に識別するUInt32の値。

   typedef UInt32 AudioQueueParameterID;

AudioQueueParameterValue 

オーディオキューパラメータ用のFloat32の値。

    typedef Float32 AudioQueueParameterValue;