translation:adc:audio:audio_queue_services_programming_guide:0300_recordingaudio

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
translation:adc:audio:audio_queue_services_programming_guide:0300_recordingaudio [2014-09-08 19:29]
Decomo [Audio Queue Bufferセットの準備]
translation:adc:audio:audio_queue_services_programming_guide:0300_recordingaudio [2020-12-04 09:32] (現在)
Decomo
行 1: 行 1:
-<align right>翻訳元:[[https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html|Audio Queue Services Programming Guide: Recording Audio]]</align>+<WRAP rightalign>翻訳元:[[https://developer.apple.com/library/mac/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html|Audio Queue Services Programming Guide: Recording Audio]]</WRAP>
  
 ※以前のwikiで本章は翻訳途中だったため、10.9のリファレンスから再翻訳しています。 ※以前のwikiで本章は翻訳途中だったため、10.9のリファレンスから再翻訳しています。
行 44: 行 44:
  
   - 使用するAudio Queue Bufferの数の設定。   - 使用するAudio Queue Bufferの数の設定。
-  -- <ilcode>AudioStreamBasicDescription</ilcode>構造体(<ilcode>CoreAudioType.h</ilcode>より)は、ディスクに書き込む音声データフォーマットを表します。このフォーマットは<ilcode>mQueue</ilcode>フィールドで指定されるAudio Queueによって使用されます。 +  -- ''AudioStreamBasicDescription''構造体(''CoreAudioType.h''より)は、ディスクに書き込む音声データフォーマットを表します。このフォーマットは''mQueue''フィールドで指定されるAudio Queueによって使用されます。 
-  .. <ilcode>mDataFormat</ilcode>フィールドは、“[[Set Up an Audio Format for Recording]]”で解説されるように、最初はあなたのプログラムのコードによって埋められます。“[[Getting the Full Audio Format from an Audio Queue]]”で解説するように、Audio Queueに<ilcode>kAudioQueueProperty_StreamDescription</ilcode>プロパティを問い合わせて、このフィールドを更新するのが良い方法です。Mac OS X v10.5では、代わりに<ilcode>kAudioConverterCurrentInputStreamDescription</ilcode>プロパティを使います。 +  .. ''mDataFormat''フィールドは、“[[Set Up an Audio Format for Recording]]”で解説されるように、最初はあなたのプログラムのコードによって埋められます。“[[Getting the Full Audio Format from an Audio Queue]]”で解説するように、Audio Queueに''kAudioQueueProperty_StreamDescription''プロパティを問い合わせて、このフィールドを更新するのが良い方法です。Mac OS X v10.5では、代わりに''kAudioConverterCurrentInputStreamDescription''プロパティを使います。 
-  .. <ilcode>AudioStreamBasicDescription</ilcode>構造体の詳細は、[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html|Core Audio Data Types Reference]]をご覧ください。+  .. ''AudioStreamBasicDescription''構造体の詳細は、[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html|Core Audio Data Types Reference]]をご覧ください。
   - あなたのアプリケーションによって生成される録音Audio Queue。   - あなたのアプリケーションによって生成される録音Audio Queue。
   - そのAudio Queueによって管理されるAudio Queue Bufferへのポインタの配列。   - そのAudio Queueによって管理されるAudio Queue Bufferへのポインタの配列。
   - プログラムが音声データを記録するファイルを表すAudio Fileオブジェクト。   - プログラムが音声データを記録するファイルを表すAudio Fileオブジェクト。
-  - 各Audio Queue Bufferの大きさのバイト数。この値は、以下のサンプルの<ilcode>DeriveBufferSize</ilcode>関数で、Audio Queueが生成されAudio Queueが開始される前に計算されます。“[[Write a Function to Derive Recording Audio Queue Buffer Size]]”をご覧ください。+  - 各Audio Queue Bufferの大きさのバイト数。この値は、以下のサンプルの''DeriveBufferSize''関数で、Audio Queueが生成されAudio Queueが開始される前に計算されます。“[[Write a Function to Derive Recording Audio Queue Buffer Size]]”をご覧ください。
   - 現在のAudio Queue Bufferから書き出される最初のパケットのパケットインデックス。   - 現在のAudio Queue Bufferから書き出される最初のパケットのパケットインデックス。
   - Audio Queueが実行中かどうかを示すブール値。   - Audio Queueが実行中かどうかを示すブール値。
行 67: 行 67:
 ==== 録音Audio Queueコールバックの宣言 ==== ==== 録音Audio Queueコールバックの宣言 ====
  
-リスト2-2は録音Audio Queueコールバック関数の宣言例で、<ilcode>AudioQueue.h</ilcode>ヘッダで<ilcode>AudioQueueInputCallback</ilcode>として宣言されています:+リスト2-2は録音Audio Queueコールバック関数の宣言例で、''AudioQueue.h''ヘッダで''AudioQueueInputCallback''として宣言されています:
  
 **リスト 2-2** 録音Audio Queueコールバック宣言 **リスト 2-2** 録音Audio Queueコールバック宣言
行 83: 行 83:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - 典型的には<ilcode>aqData</ilcode>は、“[[#状態を管理する独自構造体の定義]]”で解説したAudio Queueの状態データを含む独自構造体で+  - 典型的には''aqData''は、“[[#状態を管理する独自構造体の定義]]”で解説したAudio Queueの状態データを含む独自構造体で
   - このコールバックを所持するAudio Queueです。   - このコールバックを所持するAudio Queueです。
   - 録音で入ってくる音声データを含むAudio Queue Bufferです。   - 録音で入ってくる音声データを含むAudio Queue Bufferです。
   - Audio Queue Bufferの先頭サンプルのサンプル時間です(簡易的な録音では必要ありません)。   - Audio Queue Bufferの先頭サンプルのサンプル時間です(簡易的な録音では必要ありません)。
-  - <ilcode>inPacketDesc</ilcode>パラメータが持つパケット記述子の数。<ilcode>0</ilcode>はCBRデータを表します。+  - ''inPacketDesc''パラメータが持つパケット記述子の数。''0''はCBRデータを表します。
   - パケット記述子を必要とする圧縮音声データ形式のための、バッファ内のパケット用のエンコーダが提示するパケット記述子。   - パケット記述子を必要とする圧縮音声データ形式のための、バッファ内のパケット用のエンコーダが提示するパケット記述子。
  
行 94: 行 94:
 録音Audio Queueコールバックの最初の仕事は、Audio Queue Bufferをディスクに書き出す事です。 録音Audio Queueコールバックの最初の仕事は、Audio Queue Bufferをディスクに書き出す事です。
 このバッファは、たった今コールバックのAudio Queueが入力デバイスからの新しい音声データで埋めたものです。 このバッファは、たった今コールバックのAudio Queueが入力デバイスからの新しい音声データで埋めたものです。
-リスト2-3で示すように、コールバックは<ilcode>AudioFile.h</ilcode>ヘッダファイルの<ilcode>AudioFileWritePackets</ilcode>関数を使います。+リスト2-3で示すように、コールバックは''AudioFile.h''ヘッダファイルの''AudioFileWritePackets''関数を使います。
  
 **リスト 2-3** Audio Queue Bufferをディスクに書き出す **リスト 2-3** Audio Queue Bufferをディスクに書き出す
行 111: 行 111:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>AudioFile.h</ilcode>ヘッダファイルで宣言されている<ilcode>AudioFileWritePackets</ilcode>関数は1つのバッファの内容を音声データファイルに書き出します。 +  - ''AudioFile.h''ヘッダファイルで宣言されている''AudioFileWritePackets''関数は1つのバッファの内容を音声データファイルに書き出します。 
-  - 音声ファイルオブジェクト(<ilcode>AudioFileID</ilcode>型)は書き出し先の音声ファイルを表します。<ilcode>pAqData</ilcode>変数はリスト2-1で解説したデータ構造体へのポインタです。 +  - 音声ファイルオブジェクト(''AudioFileID''型)は書き出し先の音声ファイルを表します。''pAqData''変数はリスト2-1で解説したデータ構造体へのポインタです。 
-  - <ilcode>false</ilcode>は、関数が書き込み時にデータをキャッシュすべきではない事を示します。 +  - ''false''は、関数が書き込み時にデータをキャッシュすべきではない事を示します。 
-  - 書き出す音声データのバイト数です。<ilcode>inBuffer</ilcode>変数はAudio Queueがコールバックに渡したAudio Queue Bufferを表します。+  - 書き出す音声データのバイト数です。''inBuffer''変数はAudio Queueがコールバックに渡したAudio Queue Bufferを表します。
   - 音声データのパケット記述子配列です。NULLはパケット記述子が必要ない事を示します(CBRの音声データなど)。   - 音声データのパケット記述子配列です。NULLはパケット記述子が必要ない事を示します(CBRの音声データなど)。
   - 書き出す先頭パケットのパケットインデックスです。   - 書き出す先頭パケットのパケットインデックスです。
行 137: 行 137:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>AudioQueueEnqueueBuffer<ilcode>関数はAudio Queue BufferをAudio Queueのバッファキューに追加します。 +  - ''AudioQueueEnqueueBuffer''関数はAudio Queue BufferをAudio Queueのバッファキューに追加します。 
-  - 指定したAudio Queue Bufferを追加するAudio Queue。<ilcode>pAqData</ilcode>変数はリスト2-1で解説したデータ構造体へのポインタです。+  - 指定したAudio Queue Bufferを追加するAudio Queue。''pAqData''変数はリスト2-1で解説したデータ構造体へのポインタです。
   - キューに追加するAudio Queue Buffer。   - キューに追加するAudio Queue Buffer。
-  - Audio Queue Bufferのデータのパケット記述子の数。本パラメータは録音では使わないので、<ilcode>0</ilcode>を設定します。 +  - Audio Queue Bufferのデータのパケット記述子の数。本パラメータは録音では使わないので、''0''を設定します。 
-  - Audio Queue Bufferのデータのパケット記述子配列。本パラメータは録音では使わないので、<ilcode>0</ilcode>を設定します。+  - Audio Queue Bufferのデータのパケット記述子配列。本パラメータは録音では使わないので、''0''を設定します。
  
  
行 240: 行 240:
  
   - サイズを特定したいバッファを持つAudio Queue。   - サイズを特定したいバッファを持つAudio Queue。
-  - Audio Queueの<ilcode>AudioStreamBasicDescription</ilcode>構造体。+  - Audio Queueの''AudioStreamBasicDescription''構造体。
   - 音声の秒数を単位とした、必要とするAudio Queue Bufferの大きさ。   - 音声の秒数を単位とした、必要とするAudio Queue Bufferの大きさ。
   - 出力で、バイト数を単位としたAudio Aueue Bufferのサイズ。   - 出力で、バイト数を単位としたAudio Aueue Bufferのサイズ。
   - Audio Queue Bufferサイズの上限(バイト数)。この例では320KBに設定されている。これはサンプリング周波数96kHz/24ビット/ステレオでおよそ5秒に対応する。   - Audio Queue Bufferサイズの上限(バイト数)。この例では320KBに設定されている。これはサンプリング周波数96kHz/24ビット/ステレオでおよそ5秒に対応する。
-  - CBR音声データ用に、<ilcode>AudioStreamBasicDescription</ilcode>構造体からパケットサイズ(定数)を得る。この値を最大パケットサイズとして使う。 +  - CBR音声データ用に、''AudioStreamBasicDescription''構造体からパケットサイズ(定数)を得る。この値を最大パケットサイズとして使う。 
-  - この割り当ては、その音声データの録音がCBRかVBRかを特定する副作用をもたらす。VBRならば、Audio Queueの<ilcode>AudioStreamBasicDescription</ilcode>構造体のbytes-per-packetの値は0を示す。+  - この割り当ては、その音声データの録音がCBRかVBRかを特定する副作用をもたらす。VBRならば、Audio Queueの''AudioStreamBasicDescription''構造体のbytes-per-packetの値は0を示す。
   - VBR音声データ用に、Audio Queueに見積もり最大パケットサイズを問い合わせる。   - VBR音声データ用に、Audio Queueに見積もり最大パケットサイズを問い合わせる。
   - バイト数でバッファサイズを計算する。   - バイト数でバッファサイズを計算する。
行 303: 行 303:
   - この関数の成否を表す返値変数。   - この関数の成否を表す返値変数。
   - マジッククッキーのデータサイズを保持する変数。   - マジッククッキーのデータサイズを保持する変数。
-  - Audio Queueからマジッククッキーのデータサイズを取得し、<ilcode>cookieSize</ilcode>変数に格納します。+  - Audio Queueからマジッククッキーのデータサイズを取得し、''cookieSize''変数に格納します。
   - マジッククッキー情報を保持するバイト列を確保します。   - マジッククッキー情報を保持するバイト列を確保します。
-  - Audio Queueの<ilcode>kAudioQueueProperty_MagicCookie</ilcode>プロパティを問い合わせてマジッククッキーを取得します。 +  - Audio Queueの''kAudioQueueProperty_MagicCookie''プロパティを問い合わせてマジッククッキーを取得します。 
-  - 記録するAudio Fileにマジッククッキーを設定します。<ilcode>AudioFileSetProperty</ilcode>関数は<ilcode>AudioFile.h</ilcode>ヘッダファイルで宣言されています。+  - 記録するAudio Fileにマジッククッキーを設定します。''AudioFileSetProperty''関数は''AudioFile.h''ヘッダファイルで宣言されています。
   - 一時クッキー変数のメモリを解放します。   - 一時クッキー変数のメモリを解放します。
   - 関数の成否を返します。   - 関数の成否を返します。
行 327: 行 327:
 リスト2-8は、各属性を固定値とした録音用の音声形式の構成を示します。 リスト2-8は、各属性を固定値とした録音用の音声形式の構成を示します。
 製品コードでは、通常、音声形式の幾つかないし全ての項目をユーザーが設定できるようにすべきでしょう。 製品コードでは、通常、音声形式の幾つかないし全ての項目をユーザーが設定できるようにすべきでしょう。
-いずれのアプローチでも、目的は“[[#状態を管理する独自構造体の定義]]”で解説した<ilcode>AQRecorderState</ilcode>独自構造体の<ilcode>mDataFormat</ilcode>のフィールドを埋めることです。+いずれのアプローチでも、目的は“[[#状態を管理する独自構造体の定義]]”で解説した''AQRecorderState''独自構造体の''mDataFormat''のフィールドを埋めることです。
  
 **リスト 2-8** Audio Queueの音声データ形式の指定 **リスト 2-8** Audio Queueの音声データ形式の指定
行 351: 行 351:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>AQRecorderState</ilcode>独自構造体の実体を生成します。構造体の<ilcode>mDataFormat</ilcode>フィールドは<ilcode>AudioStreamBasicDescription</ilcode>構造体を含みます。<ilcode>mDataFormat</ilcode>フィールドでセットされた値は、Audio Queueの音声フォーマットの初期定義を提供します—それはまた、記録先ファイルの音声フォーマットでもあります。リスト2-10では、より完全な音声フォーマット仕様を取得しますが、Core Audioはそれらをフォーマットタイプとファイルタイプに基づいて提供します。+  - ''AQRecorderState''独自構造体の実体を生成します。構造体の''mDataFormat''フィールドは''AudioStreamBasicDescription''構造体を含みます。''mDataFormat''フィールドでセットされた値は、Audio Queueの音声フォーマットの初期定義を提供します—それはまた、記録先ファイルの音声フォーマットでもあります。リスト2-10では、より完全な音声フォーマット仕様を取得しますが、Core Audioはそれらをフォーマットタイプとファイルタイプに基づいて提供します。
   - 音声データタイプをリニアPCMとして定義します。利用可能なデータ形式の完全なリストは//[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html|Core Audio Data Types Reference]]//をご覧下さい。   - 音声データタイプをリニアPCMとして定義します。利用可能なデータ形式の完全なリストは//[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html|Core Audio Data Types Reference]]//をご覧下さい。
   - サンプリング周波数を44.1kHzとします。   - サンプリング周波数を44.1kHzとします。
行 358: 行 358:
   - パケットあたりのバイト数とフレームあたりのバイト数は4とします(2チャンネル×サンプルあたり2バイト)。   - パケットあたりのバイト数とフレームあたりのバイト数は4とします(2チャンネル×サンプルあたり2バイト)。
   - パケットあたりのフレーム数は1とします。   - パケットあたりのフレーム数は1とします。
-  - ファイルタイプはAIFFとします。利用可能なファイルタイプの完全なリストは<ilcode>AudioFile.h</ilcode>ヘッダファイルの音声ファイルタイプ列挙値をご覧下さい。“[[0200_aboutaudioqueues#コーデックと音声データ形式を使う]]”で解説したように、インストール済みコーデックが存在するあらゆるファイルタイプを書くことが出来ます。+  - ファイルタイプはAIFFとします。利用可能なファイルタイプの完全なリストは''AudioFile.h''ヘッダファイルの音声ファイルタイプ列挙値をご覧下さい。“[[0200_aboutaudioqueues#コーデックと音声データ形式を使う]]”で解説したように、インストール済みコーデックが存在するあらゆるファイルタイプを書くことが出来ます。
   - 特定のファイルタイプで必要となるフォーマットフラグを設定します。   - 特定のファイルタイプで必要となるフォーマットフラグを設定します。
  
行 368: 行 368:
  
 リスト2-9は録音Audio Queueの作り方を示したものです。 リスト2-9は録音Audio Queueの作り方を示したものです。
-<ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueNewInput|AudioQueueNewInput]]</ilcode>関数が、前のステップで構成したコールバック、独自構造体、音声データ形式を使う点に注目して下さい。+''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueNewInput|AudioQueueNewInput]]''関数が、前のステップで構成したコールバック、独自構造体、音声データ形式を使う点に注目して下さい。
  
 **リスト 2-9** 録音Audio Queueの生成 **リスト 2-9** 録音Audio Queueの生成
行 385: 行 385:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueNewInput|AudioQueueNewInput]]</ilcode>関数は新しい録音Audio Queueを生成します。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueNewInput|AudioQueueNewInput]]''関数は新しい録音Audio Queueを生成します。
   - 録音に使う音声データ形式です。“[[#録音用音声フォーマットの構成]]”をご覧下さい。   - 録音に使う音声データ形式です。“[[#録音用音声フォーマットの構成]]”をご覧下さい。
   - 録音Audio Queueが使うコールバック関数です。“[[#録音Audio Queueコールバックの実装]]”をご覧下さい。   - 録音Audio Queueが使うコールバック関数です。“[[#録音Audio Queueコールバックの実装]]”をご覧下さい。
   - 録音Audio Queueの独自データ構造体です。“[[#状態を管理する独自構造体の定義]]”をご覧下さい。   - 録音Audio Queueの独自データ構造体です。“[[#状態を管理する独自構造体の定義]]”をご覧下さい。
-  - コールバックを呼び出す実行ループを指定します。<ilcode>NULL</ilcode>はデフォルトの挙動を示し、Audio Queue内部のスレッドでコールバックが呼ばれます。これは典型的な使い方で、アプリケーションのユーザーインタフェーススレッドが録音停止の入力を待つ間、Audio Queueによる録音を許可します。 +  - コールバックを呼び出す実行ループを指定します。''NULL''はデフォルトの挙動を示し、Audio Queue内部のスレッドでコールバックが呼ばれます。これは典型的な使い方で、アプリケーションのユーザーインタフェーススレッドが録音停止の入力を待つ間、Audio Queueによる録音を許可します。 
-  - コールバック呼び出しの実行ループモードです。通常、ここには<ilcode>kCFRunLoopCommonModes</ilcode>定数を使います。 +  - コールバック呼び出しの実行ループモードです。通常、ここには''kCFRunLoopCommonModes''定数を使います。 
-  - 将来拡張用です。<ilcode>0</ilcode>を指定して下さい。+  - 将来拡張用です。''0''を指定して下さい。
   - 新たに確保された録音Audio Queueが出力されます。   - 新たに確保された録音Audio Queueが出力されます。
  
 ==== Audio Queueから完全な音声形式を取得する ==== ==== Audio Queueから完全な音声形式を取得する ====
  
-Audio Queueの実体が出来ると(“[[#録音Audio Queueの生成]]”をご覧下さい)、Audio Queueは特に圧縮フォーマットにおいて、あなたが持っているものより完全に<ilcode>AudioStreamBasicDescription</ilcode>構造体を埋めるでしょう。 +Audio Queueの実体が出来ると(“[[#録音Audio Queueの生成]]”をご覧下さい)、Audio Queueは特に圧縮フォーマットにおいて、あなたが持っているものより完全に''AudioStreamBasicDescription''構造体を埋めるでしょう。 
-完全なフォーマット記述を取得するには、リスト2-10で示すように<ilcode>AudioQueueGetProperty</ilcode>関数を呼びます。+完全なフォーマット記述を取得するには、リスト2-10で示すように''AudioQueueGetProperty''関数を呼びます。
 記録先のAudio Fileを作る際は、その完全な音声フォーマットをしようします(“[[#Audio Fileの生成]]”をご覧下さい)。 記録先のAudio Fileを作る際は、その完全な音声フォーマットをしようします(“[[#Audio Fileの生成]]”をご覧下さい)。
  
行 417: 行 417:
  
   - Audio Queueに音声データ形式を問い合わせる時に使う、プロパティ値の期待サイズを得ます。   - Audio Queueに音声データ形式を問い合わせる時に使う、プロパティ値の期待サイズを得ます。
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueGetProperty|AudioQueueGetProperty]]</ilcode>関数はAudio Queueから指定のプロパティ値を得ます。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueGetProperty|AudioQueueGetProperty]]''関数はAudio Queueから指定のプロパティ値を得ます。
   - 音声データ形式を取得するAudio Queueです。   - 音声データ形式を取得するAudio Queueです。
   - Audio Queueのデータ形式値を得るためのプロパティIDです。   - Audio Queueのデータ形式値を得るためのプロパティIDです。
-  - 出力で、Audio Queueから得られた<ilcode>AudioStreamBasicDescription</ilcode>構造体による完全な音声データ形式です。 +  - 出力で、Audio Queueから得られた''AudioStreamBasicDescription''構造体による完全な音声データ形式です。 
-  - 入力では、<ilcode>AudioStreamBasicDescription</ilcode>構造体の期待サイズです。出力では、実際のサイズが入ります。あなたの録音アプリケーションでは、この値を利用する必要はありません。+  - 入力では、''AudioStreamBasicDescription''構造体の期待サイズです。出力では、実際のサイズが入ります。あなたの録音アプリケーションでは、この値を利用する必要はありません。
  
 ===== Audio Fileの生成 ===== ===== Audio Fileの生成 =====
行 450: 行 450:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>CFURL.h</ilcode>ヘッダファイルで宣言される<ilcode>[[https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/doc/c_ref/CFURLCreateFromFileSystemRepresentation|CFURLCreateFromFileSystemRepresentation]]</ilcode>関数は、記録に使うファイルを表す<ilcode>CFURL</ilcode>オブジェクトを生成します。 +  - ''CFURL.h''ヘッダファイルで宣言される''[[https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/doc/c_ref/CFURLCreateFromFileSystemRepresentation|CFURLCreateFromFileSystemRepresentation]]''関数は、記録に使うファイルを表す''CFURL''オブジェクトを生成します。 
-  - <ilcode>NULL</ilcode>(または<ilcode>kCFAllocatorDefault</ilcode>)を使うと、現在のデフォルトメモリアロケータを使います。 +  - ''NULL''(または''kCFAllocatorDefault'')を使うと、現在のデフォルトメモリアロケータを使います。 
-  - <ilcode>CFURL</ilcode>オブジェクトに変換したいファイルシステムパスです。製品コードでは、通常、<ilcode>filePath</ilcode>からユーザー指定の値を得ます。+  - ''CFURL''オブジェクトに変換したいファイルシステムパスです。製品コードでは、通常、''filePath''からユーザー指定の値を得ます。
   - ファイルシステムパスのバイト数です。   - ファイルシステムパスのバイト数です。
-  - <ilcode>false</ilcode><ilcode>filePath</ilcode>がディレクトリではなくファイルである事を示します。 +  - ''false''''filePath''がディレクトリではなくファイルである事を示します。 
-  - <ilcode>AudioFile.h</ilcode>ヘッダファイルの<ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/c_ref/AudioFileCreateWithURL|AudioFileCreateWithURL]]</ilcode>関数は、音声ファイルの新規作成ないし既存ファイルの初期化を行います。+  - ''AudioFile.h''ヘッダファイルの''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/c_ref/AudioFileCreateWithURL|AudioFileCreateWithURL]]''関数は、音声ファイルの新規作成ないし既存ファイルの初期化を行います。
   - 新規音声ファイルの作成、もしくは既存ファイルの初期化の対象となるURLです。URLは手順1の[[https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/doc/c_ref/CFURLCreateFromFileSystemRepresentation|CFURLCreateFromFileSystemRepresentation]]に由来します。   - 新規音声ファイルの作成、もしくは既存ファイルの初期化の対象となるURLです。URLは手順1の[[https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/doc/c_ref/CFURLCreateFromFileSystemRepresentation|CFURLCreateFromFileSystemRepresentation]]に由来します。
-  - 新しいファイルのファイルタイプです。本章のサンプルコードでは、前に<ilcode>kAudioFileAIFFType</ilcode>ファイルタイプ定数を経由してAIFFに設定されています。“[[#録音音声フォーマットの構成]]”をご覧下さい。 +  - 新しいファイルのファイルタイプです。本章のサンプルコードでは、前に''kAudioFileAIFFType''ファイルタイプ定数を経由してAIFFに設定されています。“[[#録音音声フォーマットの構成]]”をご覧下さい。 
-  - <ilcode>AudioStreamBasicDescription</ilcode>構造体として指定される、ファイルに記録する音声のデータ形式です。本章のサンプルコードでは、これも“[[#録音音声フォーマットの構成]]”で設定されています。+  - ''AudioStreamBasicDescription''構造体として指定される、ファイルに記録する音声のデータ形式です。本章のサンプルコードでは、これも“[[#録音音声フォーマットの構成]]”で設定されています。
   - ファイルが既に存在していた場合、そのファイルを消します。   - ファイルが既に存在していた場合、そのファイルを消します。
-  - 出力で、記録先の音声ファイルを表す(<ilcode>AudioFileID</ilcode>型の)Audio Fileオブジェクトです。+  - 出力で、記録先の音声ファイルを表す(''AudioFileID''型の)Audio Fileオブジェクトです。
  
 ===== Audio Queue Bufferサイズの設定 ===== ===== Audio Queue Bufferサイズの設定 =====
  
-録音中に使うAudio Queue Bufferセットを準備する前に、先に書いた<ilcode>DeriveBufferSize</ilcode>関数(“[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”をご覧下さい)を使います。+録音中に使うAudio Queue Bufferセットを準備する前に、先に書いた''DeriveBufferSize''関数(“[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”をご覧下さい)を使います。
 このサイズを使用する録音Audio Queueのサイズに割り当てます。 このサイズを使用する録音Audio Queueのサイズに割り当てます。
 リスト2-12がその様子を示します: リスト2-12がその様子を示します:
行 481: 行 481:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - “[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”で解説した<ilcode>DeriveBufferSize</ilcode>関数は、妥当なAudio Queue Bufferサイズを設定します。+  - “[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”で解説した''DeriveBufferSize''関数は、妥当なAudio Queue Bufferサイズを設定します。
   - バッファサイズを設定するAudio Queueです。   - バッファサイズを設定するAudio Queueです。
   - 記録するファイルの音声データ形式です。“[[#録音音声フォーマットの構成]]”をご覧下さい。   - 記録するファイルの音声データ形式です。“[[#録音音声フォーマットの構成]]”をご覧下さい。
行 513: 行 513:
  
   - Audio Queue Buffer確保とキュー追加のためにイテレートします。   - Audio Queue Buffer確保とキュー追加のためにイテレートします。
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueAllocateBuffer|AudioQueueAllocateBuffer]]</ilcode>関数はAudio QueueにAudio Queue Bufferを確保するよう指示します。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueAllocateBuffer|AudioQueueAllocateBuffer]]''関数はAudio QueueにAudio Queue Bufferを確保するよう指示します。
   - バッファを確保し所持するAudio Queueです。   - バッファを確保し所持するAudio Queueです。
   - 新しく確保されるAudio Queue Bufferのバイト数です。“[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”をご覧下さい。   - 新しく確保されるAudio Queue Bufferのバイト数です。“[[#録音Audio Queue Bufferサイズを計算する関数の実装]]”をご覧下さい。
   - 新しく確保されたAudio Queue Bufferが出力されます。バッファへのポインタはAudio Queueと共に使う独自構造体の中に置かれます。   - 新しく確保されたAudio Queue Bufferが出力されます。バッファへのポインタはAudio Queueと共に使う独自構造体の中に置かれます。
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueEnqueueBuffer|AudioQueueEnqueueBuffer]]</ilcode>関数はバッファキューの最後にAudio Queue Bufferを追加します。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueEnqueueBuffer|AudioQueueEnqueueBuffer]]''関数はバッファキューの最後にAudio Queue Bufferを追加します。
   - キューに加えるAudio Queue Bufferを持つAudio Queue。   - キューに加えるAudio Queue Bufferを持つAudio Queue。
   - キューに加えるAudio Queue Buffer。   - キューに加えるAudio Queue Buffer。
行 547: 行 547:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - Audio Fileの先頭から記録するためにパケットインデックスを<ilcode>0</ilcode>に初期化します。+  - Audio Fileの先頭から記録するためにパケットインデックスを''0''に初期化します。
   - Audio Queueが実行中を表すフラグを独自構造体にセットします。このフラグは録音Audio Queueコールバックで使用されます。   - Audio Queueが実行中を表すフラグを独自構造体にセットします。このフラグは録音Audio Queueコールバックで使用されます。
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueStart|AudioQueueStart]]</ilcode>関数は、Audio Queue自身のスレッドでAudio Queueを開始します。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueStart|AudioQueueStart]]''関数は、Audio Queue自身のスレッドでAudio Queueを開始します。
   - 開始するAudio Queue。   - 開始するAudio Queue。
-  - <ilcode>NULL</ilcode>を使うと、Audio Queueが直ちに録音を開始する事を示します。 +  - ''NULL''を使うと、Audio Queueが直ちに録音を開始する事を示します。 
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueStop|AudioQueueStop]]</ilcode>関数は録音Audio Queueを停止しリセットします。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueStop|AudioQueueStop]]''関数は録音Audio Queueを停止しリセットします。
   - 停止するAudio Queue。   - 停止するAudio Queue。
-  - <ilcode>true</ilcode>を使うと、同期的に止めます。停止における同期と非同期の説明は“[[0200_aboutaudioqueues#Audio Queueの状態と制御]]”をご覧ください。+  - ''true''を使うと、同期的に止めます。停止における同期と非同期の説明は“[[0200_aboutaudioqueues#Audio Queueの状態と制御]]”をご覧ください。
   - Audio Queueが非実行中を示すフラグを独自構造体にセットします。   - Audio Queueが非実行中を示すフラグを独自構造体にセットします。
  
行 574: 行 574:
 コードの働きを見てみましょう: コードの働きを見てみましょう:
  
-  - <ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueDispose|AudioQueueDispose]]</ilcode>関数はAudio Queueと、バッファを含むその全ての資源を破棄します。+  - ''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/c_ref/AudioQueueDispose|AudioQueueDispose]]''関数はAudio Queueと、バッファを含むその全ての資源を破棄します。
   - 破棄したいAudio Queue。   - 破棄したいAudio Queue。
-  - <ilcode>true</ilcode>を使うとAudio Queueを同期的に(すなわち、即座に)破棄します +  - ''true''を使うとAudio Queueを同期的に(すなわち、即座に)破棄します 
-  - 記録に使ったAudio Fileを閉じます。<ilcode>[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/c_ref/AudioFileClose|AudioFileClose]]</ilcode>関数は<ilcode>AudioFile.h</ilcode>ヘッダファイルで宣言されています。+  - 記録に使ったAudio Fileを閉じます。''[[https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioFileConvertRef/Reference/reference.html#//apple_ref/doc/c_ref/AudioFileClose|AudioFileClose]]''関数は''AudioFile.h''ヘッダファイルで宣言されています。
  
  • translation/adc/audio/audio_queue_services_programming_guide/0300_recordingaudio.1410172163.txt.gz
  • 最終更新: 2014-09-08 19:29
  • by Decomo