BMediaFile::TrackAt()SummaryBMediaTrackクラスは、メディアファイル内の特定のトラックにアクセスする手段を提供します。このクラスのインスタンスは、は常にBMediaFile::TrackAt()またはBMediaFile::CreateTrack()関数を使用して生成されます。BMediaTrackのコンストラクタは、トラック内のエンコードされたデータを扱うことのできるcodecを探します。それが終わったら、トラックが使用される準備はできています。書き込みのためにファイルを開けば、データをトラックに書込むことができます。BMediaFileをコンストラクトする際にB_MEDIA_FILE_REPLACE_MODEフラグが指定されていれば、ファイルの読み込みと書き込みの両方が可能になります。そのトラックに対して使用できるデコーダがなくても、エンコードされたデータに直接アクセスするためにReadChunk()を使用することができます。BMediaFile関数を用いてBMediaTrackのインスタンスを生成した後、トラックが有効であることを確かめるためにInitCheck()を呼び出して下さい。その後、ファイルのデータを読み書きするためにReadFrames()及びWriteFrames()を適切に呼び出します。ビデオデータに関しては、一時に一つのフレームを処理して下さい。SeekToTime()またはSeekToFrame()を使用して、特定の時間やフレームをseekすることもできます。Files"をご覧下さい。一般的な規則として、BMediaTrack関数で使用される構造物にはワイルドカードを使用できません。BMediaTrackに対してあなたが持つフォーマットを伝えると、BMediaTrackはそのフォーマットをサポートしているかどうかを単純に返答します。~BMediaTrack(void)デストラクタです。BMediaTrackを直接削除してはいけません。その代わりに、BMediaFile::ReleaseTrack()またはBMediaFile::ReleaseAllTracks()を使用するか、あるいはBMediaFileが削除された時にトラックを破棄させるかして下さい。notice)をdataによって指定される文字列を設定します。既存の著作権情報があれば置き換えられます。MediaTrackクラスは、トラックに対して同時に複数の書き込みを生じさせないよう自動的にロックすることはありません。同じBMediaTrackに書き込みを行う複数のスレッドがあるなら、書き込みが重複しないように(セマフォなどの)ロック機構を使用しなければなりません。ファイルは書き込み用に開かれていない。その他のエラーは、codecに依存します。constトラックに、指定されたtypeの内部的なレコードを追加します。レコードはdataポインタによって指定され、sizeバイトの長さです。flagsは、処理を変更するフラグを示します(現在はなにも定義されていません)。MediaTrackクラスは、トラックに対して同時に複数の書き込みを生じさせないよう自動的にロックすることはありません。同じBMediaTrackに書き込みを行う複数のスレッドがあるなら、書き込みが重複しないように(セマフォなどの)ロック機構を使用しなければなりません。フォーマットが問題なく返された。返されるエラーは、データを解釈するcodecに依存する。constトラック中のフレーム総数を返します。CurrentFrame(void)トラック中にある現在の(GetNextFrames()によって次回読み込まれる)フレームを返します。constトラック中の現在の位置を返します。位置は、トラックの先頭からのマイクロ秒で表現されます。constトラックのデータをデコードする時にcodecが出力するフォーマットを取り決めます。ioFormatに、あなたの望むフォーマットを(適切なワイルドカードで)渡して下さい。codecは、もっとも適合するフォーマットを探し、ioFormatに返します。このフォーマットは、その後ReadFrames()経由で、デコードされたデータを出力する際に使用されます。フォーマットは、典型的にはB_MEDIA_RAW_AUDIOまたはB_MEDIA_RAW_VIDEOのフレーバーとなります。フォーマットは問題なく取り決められ、返された。BMediaTrackは適切に初期化されなかったか、またはそのトラックのデータに対してcodecが存在しなかった。返されるエラーは、データを解釈するcodecに依存する。constトラック全体の長さを、マイクロ秒単位で返します。constトラックのデータの「ネイティブな」エンコードされたフォーマットを返します。これは、ReadChunk()によって返されたデータのフォーマットです。フォーマットは問題なく返された。返されるエラーは、データを解釈するcodecに依存する。0)FindKeyFrameForTime()は、inOutTimeで時間を受け取り、最もその時間に近いキーフレームの開始される時間をinOutTimeに返します。同様に、FindKeyFrameForFrame()は、指定されたフレームに最も近いキーフレームの番号を返します。引数flagsは、キーフレームを前方に探すか、それとも後方に探すかを示します。示されたフレームまたは時間より以前の最も近いキーフレームを探したいなら、flagsにB_MEDIA_SEEK_CLOSEST_BACKWARDを指定して下さい。示されたフレームまたは時間より後の最も近いキーフレームを探したいなら、B_MEDIA_SEEK_CLOSEST_FORWARDを指定して下さい。Flush(void)バッファにある全てのエンコードされたデータをディスクに流し込みます。トラックの最後のフレームを書き込み終わった後、この関数を呼び出して下さい。これは、全てがファイルの適切なオフセットに書込まれることを保証します。バッファは書込まれた。その他のエラーは、codecに依存する。constトラックのデータを読み書きするのに使用されているcodecについての情報を返します。codecの情報が返された。トラックによって使用されている有効なcodecが存在しない。*parameters)GetEncodeParameters()は、トラックのデータをエンコードする際に使用されるencode_parametersを返します。SetEncodeParameters()は、データをエンコードする際に使用されるencode_parametersを変更します。*GetParameterView(void)codecとトラックのparameterを合わせるためのcontrolを内包するBViewを返します。使用できるviewがなければ、NULLが返されます。constトラックが問題なく完全にインスタンスを生成されたか否かを示す状態(status)コードを返します。トラックは適切にコンストラクトされた。トラックをセットアップしている時にエラーが生じた。NULL)メディアトラックの次のioSizeバイトへのポインタを、outBufferに返します。返される実際のバイト数は、ioSizeに渡されます。トラックの終端に到達していれば、そうはならないでしょう。返されたバッファを記述するために、headerが設定されます。この関数によって返されたデータは、デコードされていません。典型的には、メディアデータのデコードに使用できるcodecがない場合のみ、この関数を使用して下さい。フォーマットは問題なく取り決められ、返された。BMediaTrackは、適切に初期化されなかったか、またはトラックのデータを扱えるcodecが存在しなかった。返されるエラーは、データを解釈するcodecに依存する。*info)outBufferのポインタによって示されるバッファに、トラックの現在の位置から開始される次のフレームまたはサンプルで満たされます。ビデオトラックの場合、ビデオの次のフレームは、デコードされて出力バッファに保存されます。オーディオトラックの場合、バッファはDecodedFormat()を使用して取り決められたフレームの数(値)で満たされます。バッファが満たされる前にトラックの終端に到達したら、部分的なバッファが返されます。関数が返る際には、outFrameCountは返されたフレームの数を示し、もしNULLでない値が指定されれば、outHeaderは単独または複数のフレームを含むバッファのヘッダを内包します。このヘッダからは、(バッファに対するメディアの開始時間などの)便利な情報を得ることができます。この関数の2つ目の形式では、デコーダに付加的な情報を提供するためにmedia_decode_info構造体を提供することができます。付加的な情報とは、データをデコードするのにかかる時間や、フォーマットとcodecに特異的な情報などです。ファイルは読み込みのために開かれていなかった。返されたエラーは、データを解釈するcodecに依存する。*header)トラックのioFrameCountによって指定されるフレームの番号を入れ替えます。inBufferは、新しいフレームのためのソースバッファへのポインタを示します。0)トラック中の特定の位置をseekします。SeekToFrame()は、フレームの番号で目的地の位置を解釈し、SeekToTime()はマイクロ秒単位の時間で目的地の位置を解釈します。これらの関数はそれぞれ(ioFrameまたはioTimeに)それらが実際に動かされた位置を返します。ビデオのcodecがキーフレームによるseekしか受け付けない場合、返されるioFrameは入力時に指定されたものとは異っているでしょう。現在のフレームより前の最も近いキーフレームを明示的にseekしたいなら、flagsにB_MEDIA_SEEK_CLOSEST_BACKWARDを指定して下さい。現在の時間より後の最も近いキーフレームを探したいなら、B_MEDIA_SEEK_CLOSEST_FORWARDを指定して下さい。フォーマットは問題なく返された。返されるエラーは、データを解釈するcodecに依存する。*size)SetParameterValue()は、idで指定されるparameterの値を、valueポインタによって示されるデータに設定します。このデータは、sizeバイトの長さです。そのcodecは設定可能ではない。粗ほのかのエラーは、codecに依存します。*quality)これらの関数は、(1.0は最高の品質を意味する)codecの品質設定をセットしたり、返したりします。codecは品質設定をサポートしていない。codecに依存する。*Web(void)トラックとcodecを設定するために使用できるBParameterWebを返します。codecがユーザの設定をサポートしていなければ、NULLが返されます。0)sizeバイトのデータを含み、dataポインタによって指定されるデータを、トラックに書込みます。フレームがキーフレームであれば、flagsにB_MEDIA_KEY_FRAMEを指定して下さい。この関数は、データがすでにエンコードされていると見なしています。MediaTrackクラスは、トラックに対して同時に複数の書き込みを生じさせないよう自動的にロックすることはありません。同じBMediaTrackに書き込みを行う複数のスレッドがあるなら、書き込みが重複しないように(セマフォなどの)ロック機構を使用しなければなりません。一般的に、ファイルからの圧縮されたデータを読み込み、データを処理しようと試みることなくそれを他のトラックにコピーする場合のみ、WriteChunk()を使用して下さい。フレームが書込まれた。ファイルは書き込みのために開かれていなかった。返されるエラーは、データを書込むcodecに依存する。0)numFrame個のフレームを含み、dataポインタによって示されるデータをトラックに書込みます。フレームがキーフレームであれば、flagsにB_MEDIA_KEY_FRAMEを指定して下さい。MediaTrackクラスは、トラックに対して同時に複数の書き込みを生じさせないよう自動的にロックすることはありません。同じBMediaTrackに書き込みを行う複数のスレッドがあるなら、書き込みが重複しないように(セマフォなどの)ロック機構を使用しなければなりません。データが生の(raw)音声またはビデオであっても、メディアトラックにフレームを書込む前に、必ずエンコーダを選択しなければなりません。encoderを使用する必要があります。これはデータを変換しませんが、それを生成した後に適切に再生するために、ファイルに対して内部データをセットアップします。フレームは書込まれた。ファイルは、書込むために開かれていなかった。返されたエラーは、データを書込むcodecに依存する。トラックの現在の位置より後で、最も近いキーフレームをseekする。トラックの現在の位置より前で、最も近いキーフレームをseekする。seekの方向を得るためには、この値でseekフラグをマスクする。SeekToTime()及びSeekToFrame()を呼び出す際に使用されるこれらのフラグによって、それが置かれている時間やフレーム番号を推測する必要なしに、ファイル中の現在の位置より前または後ろの最も近くにあるキーフレームを探すことができます。reserved..。