iOSアプリ開発

【iOS】Audio Queue

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*inUserDataAudio Queueとそのバッファ用のステータス情報などユーザ独自の構造体
AudioQueueRefinAQコールバックを呼び出したAudio Queue
AudioQueueBufferRefinBufferAudio Queueによって新しく埋められたAudio Queue Buffer
const AudioTimeStamp*inStartTimeバッファの最初のサンプル時間
UInt32inNumberPacketDescriptionsinPacketDescs引数で記述されるパケットの番号。VBRでのみ使われる
const AudioStreamPacketDescription*inPacketDescsバッファ中のサンプルと合致するパケット記述子が設定される。VBRでのみ使われる

再生用Audio Queueコールバックのプロトタイプ

void*inUserDataAudio Queueとのそのバッファ要のステータス情報などユーザ独自の構造体
AudioQueueRefinAQコールバックを呼び出したAudio Queue
AudioQueueBufferRefinBufferAudio Queueによって生成されたAudio Queue Buffer

Audio Queueのライフサイクル

開始(AudioQueueStart)録音/再生の初期化
準備(AudioQueuePrime)再生をすぐに行うために、AudioQueueStartを呼ぶ前に呼ばれる
停止(AudioQueueStop)Audio Queueのリセットと、録音/再生を停止する際に呼ばれる。(同期停止と非同期停止がある)
一時停止(AudioQueuePause)録音/再生を一時停止する際に呼ばれる
更新(AudioQueueFlush)最後のAudioQueueBufferのエンキューが終わったあとで、全てのバッファ済みデータと処理中の音声データが確実に録音/再生されるように呼び出される
リセット(AudioQueueReset)前もって決められていたスケジュールから全てのバッファを削除し、ただちにAudio Queueを停止するとともに全デコーダとDSPの状態をリセットするために呼ばれる
  • この記事を書いた人

たけぞう

熊谷に住みながら都内のIT企業でエンジニアをしています。ガジェットやアウトドア用品についてレビューをしていきます。 趣味はスポーツジムでトレーニングやジョギングをすることです。

-iOSアプリ開発