Audio Queue とは?
- 音声の記録、再生を行うために使用するソフトウェアオブジェクトのこと
- AudioQueueRefで表現され、AudioQueue.hに宣言されている
- 全コーデックを取り扱うことができる
録音用のAudio Queue
- 出力側でコールバック関数を利用する
- バッファがキューから受け取った音声データをコールバック関数で記録する
再生用のAudio Queue
- 入力側でコールバック関数を利用する
- 音声データの取得、キューへのデータ引き渡しを行う
Audio Queue Buffer
- AudioQueueBufferRef型のデータ構造
- const UInt32 mAudioDataBytesCapacity void *const mAudioData バッファ(音声データの一時的な塊を格納するメモリ領域) UInt32 mAudioDataByteSize void *mUserData
録音用Audio Queueコールバックのプロトタイプ
void | *inUserData | Audio Queueとそのバッファ用のステータス情報などユーザ独自の構造体 |
AudioQueueRef | inAQ | コールバックを呼び出したAudio Queue |
AudioQueueBufferRef | inBuffer | Audio Queueによって新しく埋められたAudio Queue Buffer |
const AudioTimeStamp | *inStartTime | バッファの最初のサンプル時間 |
UInt32 | inNumberPacketDescriptions | inPacketDescs引数で記述されるパケットの番号。VBRでのみ使われる |
const AudioStreamPacketDescription | *inPacketDescs | バッファ中のサンプルと合致するパケット記述子が設定される。VBRでのみ使われる |
再生用Audio Queueコールバックのプロトタイプ
void | *inUserData | Audio Queueとのそのバッファ要のステータス情報などユーザ独自の構造体 |
AudioQueueRef | inAQ | コールバックを呼び出したAudio Queue |
AudioQueueBufferRef | inBuffer | Audio Queueによって生成されたAudio Queue Buffer |
Audio Queueのライフサイクル
開始(AudioQueueStart) | 録音/再生の初期化 |
準備(AudioQueuePrime) | 再生をすぐに行うために、AudioQueueStartを呼ぶ前に呼ばれる |
停止(AudioQueueStop) | Audio Queueのリセットと、録音/再生を停止する際に呼ばれる。(同期停止と非同期停止がある) |
一時停止(AudioQueuePause) | 録音/再生を一時停止する際に呼ばれる |
更新(AudioQueueFlush) | 最後のAudioQueueBufferのエンキューが終わったあとで、全てのバッファ済みデータと処理中の音声データが確実に録音/再生されるように呼び出される |
リセット(AudioQueueReset) | 前もって決められていたスケジュールから全てのバッファを削除し、ただちにAudio Queueを停止するとともに全デコーダとDSPの状態をリセットするために呼ばれる |