【iOS】Audio Queue

iOSアプリ開発

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の状態をリセットするために呼ばれる

コメント

タイトルとURLをコピーしました

Fatal error: Uncaught JSMin_UnterminatedRegExpException: JSMin: Unterminated RegExp at byte 90003: /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)?Safari\; in /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/autoptimize/classes/external/php/jsmin.php:266 Stack trace: #0 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(152): JSMin->action(1) #1 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(86): JSMin->min() #2 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/autoptimize/classes/autoptimizeSpeedupper.php(38): JSMin::minify('!function r(c,a...') #3 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-includes/class-wp-hook.php(292): autoptimizeSpeedupper->js_snippetcacher('!function r(c,a...', '') #4 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-includes/plugin.php(212): WP_Hook->apply_filters('!function r(c,a...', Array) #5 /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/a in /home/kusanagi/blog.takezou.com/DocumentRoot/wp-content/plugins/autoptimize/classes/external/php/jsmin.php on line 266