The Media Kit Table of Contents     The Media Kit Index

BMediaFile

Derived from: none

Declared in: be/media/MediaFile.h

Library: libmedia.so

Allocation: Constructor only

Summary

 BMediaFileクラスは、メディアデータを含んだファイルを表現します。既存のメディアファイルへのentry_refからBMediaFileのインスタンスを作成すると、それはファイルを嗅ぎまわってそのファイルにアクセスする際に使用する適切なcodecを見つけだします。

 既存のメディアファイルを読み込むためには、ファイルのトラックに対するBMediaTrackオブジェクトのインスタンスを作成するためにGetTrack()を呼び出します。それらはファイルからメディアデータをデコードするために、順番に使用されます。

 ファイルにデータを書込むことも出来ます。この場合、entry_ref及びファイルに書込もうと企図するメディアデータのフォーマットを記述するmedia_file_formatによって特定されるオブジェクトをコンストラクトします。その後、ファイルに書込もうとする個々のトラックを生成するためにCreateTrack()を呼び出します。それぞれのトラックが作成されたら(しかしそれらは中身が空ですが)、ディスクにファイルのヘッダを書込むためにCommitHeader()を呼び出し、トラックへ実際のメディアデータを書込むためにBMediaTrackを使用することが出来ます。

 書き込みが終了したらCloseFile()を呼び出して下さい(ファイルを読み込む時は必要ありません)。

 メディアファイルの読み書きをBMediaFileを用いて行う方法は、"Reading and Writing Media Files"をご覧下さい。

 
 一般的な規則として、BMediaFileの関数を使用する場合はどの構造体にもワイルドカードを使用してはいけません。保持しているフォーマットがなにかをBMediaFileに伝えると、BMediaFileは単にそのフォーマットをサポートしているかどうかを伝えてきます。


Constructor and Destructor


BMediaFile()

                                                         
  

BMediaFile(const entry_ref *ref)

BMediaFile(BDataIO *source)

BMediaFile(const entry_ref *ref,
      int32 flags = 0)

BMediaFile(BDataIO *source,
      int32 flags = 0)

BMediaFile(const entry_ref *ref,
      const media_file_format *fileFormat,
      int32 flags = 0)

BMediaFile(BDataIO *destination,
      const media_file_format *fileFormat,
      int32 flags = 0)

 コンストラクタの最初の4つの形式は、refまたはsourceによって指定されたファイルを読み込むことでBMediaFileを初期化します。これが終わると、ファイルが無事に探索されたことを確認するためにInitCheck()を必ず呼び出して下さい。探索がうまくいっていれば、BMediaFileオブジェクトはファイルのデータを読み込むために必要なBMediaTrackオブジェクトのインスタンスを生成するために使用できます。

 次の2つの形式は、メディアファイルへの書き込みの準備をBMediaFileオブジェクトに行わせます。ファイルはrefまたはdestinationによって指定されます。書込まれるファイルのフォーマットはfileFormatによって指定されます。

 flagsは、下記の値の組み合わせです。

Constant Description
B_MEDIA_FILE_REPLACE_MODE 書き込みの際には、存在する全てのメディアファイルを置き換える。
B_MEDIA_FILE_NO_READ_AHEAD ファイル中では前方に向かって読み進まない。
B_MEDIA_FILE_UNBUFFERED 読み込み量をより少なくする。これは大きな出力バッファを満たすためのエクストラクタを待つことなしに低ビットレートのファイルをストリーミングする場合に便利である。
B_MEDIA_FILE_BIG_BUFFERS 大きなバッファを使用する。


~BMediaFile()

                                                         
  

virtual ~BMediaFile(void)

 デストラクタ。


Member Functions


AddChunk()

                                                         
  

status_t AddChunk(int32 type, const void *data, size_t size)

 ファイルにユーザが定義したデータのチャンク(塊)を(もしそれがエンコーダにサポートされていれば)書込みます。引数typeはチャンクの型を示し、dataは書込まれるデータのポインタを指し、sizeはファイルに書込むデータの大きさを示します。

 
BMediaFileクラスは、あるファイルに対して同時に生じる複数の書き込みを防ぐために、いかなるロッキングも自動的には行いません。もし同じBMediaFileに書き込む複数のスレッドがあれば、重複から書き込みを守るために(セマフォなどの)ロック機構を使用しなければなりません。


RETURN CODES

B_OK. エラーなし。

  • B_BAD_TYPE. BMediaFileは、有効なファイルを参照していません。

  • その他のエラーは、codecに依存します。


AddCopyright() , Copyright()

                                                         
  

status_t *AddCopyright(const char *data)

const char *Copyright(void) const

 AddCopyright()は、ファイルの著作権情報をdataによって指定される文字列に設定します。既存の情報は全て置き換えられます。文字列はコピーされ、もとの文字列はあなたが所有します。

 Copyright()は、メディアファイルの著作権情報を返すか、それが一つもなければNULLを返します。この文字列はBMediaFileに属しますので、削除または変更を行わないで下さい。

 
BMediaFileクラスは、あるファイルに対して同時に生じる複数の書き込みを防ぐために、いかなるロッキングも自動的には行いません。もし同じBMediaFileに書き込む複数のスレッドがあれば、重複から書き込みを守るために(セマフォなどの)ロック機構を使用しなければなりません。


RETURN CODES

B_OK. エラーなし。(AddCopyright()のみ)


CloseFile()

                                                         
  

status_t CloseFile(void)

 全てのトラックに全てのメディアデータが書込まれたら、BMediaFileオブジェクトがファイルを整理し、トラックの書き込みを終了できるようにCloseFile()を呼ぶ必要があります。

RETURN CODES

B_OK. エラーなし。

  • B_BAD_TYPE. BMediaFileは、有効なファイルを参照していません。

  • その他のエラーは、codecに依存します。


CommitHeader()

                                                         
  

status_t CommitHeader(void)

 ファイルに新しいトラックを追加し終わったら、BMediaFileのファイルのヘッダをセットアップするためにCommitHeader()を呼び出す必要があります。これはファイルの書き込み処理を最適化する手助けとなります。

RETURN CODES

B_OK. エラーなし。

  • B_BAD_TYPE. メディアファイルは、有効なファイルを参照していません。

  • その他のエラーは、codecに依存します。


Copyright() see AddCopyright()


CountTracks()

                                                         
  

int32 CountTracks(void) const

 メディアファイル中のトラック数を返します。返値は、初期化が失敗した場合には定義されません。


CreateTrack()

                                                         
  

BMediaTrack *CreateTrack(media_format *mediaFormat,
      const media_codec_info *codecInfo)

BMediaTrack *CreateTrack(media_format *mediaFormat)

 ファイル中に新しいトラックを作成し、それを参照するBMediaTrackオブジェクトを返します。トラックは、mediaFormatによって指定されたメディアフォーマットを使用するように設定され、codecInfoによって記述されたcodecを使用して書込まれます。トラックへの書き込みにはBMediaTrack::WriteFrames()のみ使用できます。

 引数codecInfoなしに2番目の形式のコンストラクタを使用するなら、トラックは生(raw)のメディアデータで書込まれます。トラックへの書き込みにはBMediaTrack::WriteChunk()のみ使用できます。

 mediaFormatは書き込み関数に渡すバッファのフォーマットを示し、codecInfoはトラックへの書き込みデータをエンコードするのに使用するcodecを指定します。

 
mediaFormatは、いかなるワイルドカードも含むことが出来ません。供給しようと考えている厳密なフォーマットを特定する必要があります。mediaFormatもまたget_net_encoder()に渡されるものと同じ構造体でなければなりません。


 新しいメディアファイルを書込む際には、なんらかのメディアデータを書込む前に、全てのトラックを作成しておきます。全てのトラックが作成されていれば、ディスクへのヘッダを書込むために必ずCommitHeader()を呼び出して下さい。これはヘッダの大きさがファイルに収められたトラックの数に強く依存するため、必要となります。そして一旦トラックにメディアデータを書き込みはじめたら、ヘッダの大きさを変更することは困難(及び無意味)となります。

 もし新しいトラックを作成している間にエラーが生じたら、NULLが返されます。


GetFileFormatInfo()

                                                         
  

status_t GetFileFormatInfo(media_file_format *info) const

 指定されたmedia_file_format構造体をBMediaFileオブジェクトが参照しているファイルのファイルフォーマットを記述する情報で満たします。

RETURN CODES

B_OK. エラーなし。

  • B_NO_INIT. BMediaFileは、有効なファイルを参照していません。


GetParameterValue() see SetParameterValue()


GetParameterView()

                                                         
  

BView *GetParameterView(void)

 ファイルフォーマットのパラメータを調整するコントロールを含んだBViewを返します。


InitCheck()

                                                         
  

status_t InitCheck(void) const

 コンストラクタの結果(result)コードを返します。BMediaFileを使用する前ではなく、インスタンスを生成した後にいつもこの関数を呼び出します。

RETURN CODES

B_OK. エラーなし。

  • B_MEDIA_NO_HANDLER. 必要とされた、あるいは要求されたフォーマットに対して使用できるcodecがありません。

  • B_NO_MEMORY. codecを動作させるのに十分なメモリがありません(書き込み)。

  • B_BAD_INDEX. 要求されたadd-onが見つかりません(書き込み)。

  • B_MISSING_SYMBOL. add-onが書き込みをサポートしていません。


ReleaseTrack() , ReleaseAllTracks()

                                                         
  

status_t ReleaseTrack(BMediaTrack *track)

status_t ReleaseAllTracks(void)

 ReleaseTrack()は、指定されたtrackによって使用されるリソースを開放します。そうすることで、アプリケーションのメモリ使用量を削減できます。もし使用中の全てのトラックを開放したければ、ReleaseAllTracks()が使用できます。

 一旦開放されると、トラックはTrackAt()が使用されるまで使用できません。

 BMediaFileが適切に初期化されなかったか、あるいはindexが無効であれば、NULLが返されます。

RETURN CODES

B_OK. エラーなし。

  • B_ERROR. トラックが開放できませんでした(トラックが無効であるか、実際に使用されていなかったため)。


SetParameterValue() , GetParameterValue()

                                                         
  

status_t SetParameterValue(int32 id, const void *value, size_t size)

status_t GetParameterValue(int32 id, const void *value, size_t *size)

 SetParameterValue()は、idで指定されるパラメータの値をvalueポインタで指定されるデータに設定します。このデータの長さはsizeバイトです。

 GetParameterValue()は、valueに指定されたパラメータの値を入れ、引数sizeにバイト単位の値の大きさを入れて返します。

RETURN CODES

B_OK. エラーなし。

  • B_NO_INIT. BMediaFileは有効なファイルを参照していません。


TrackAt()

                                                         
  

BMediaTrack *TrackAt(int32 index)

 indexで指定されたトラックを参照するBMediaTrackを返します。indexは、0とCountTracks() - 1の間の値を取らなければなりません。

 もしBMediaFileが適切に初期化されていないか、indexが無効であれば、NULLが返されます。

 
トラックを使い終わったら、ReleaseTrack()を呼ばなければなりません。



Web()

                                                         
  

BParameterWeb *Web(void)

 ファイルフォーマットのパラメータを設定するために利用できるBParameterWebを返します。もしcodecがユーザー設定をサポートしていなければ、NULLを返します。


Constants


Constructor Flags

Declared in: be/media/MediaFile.h

Constant Description
B_MEDIA_FILE_REPLACE_MODE 書き込みの際には、存在する全てのメディアファイルを置き換える。
B_MEDIA_FILE_NO_READ_AHEAD ファイル中では、前方に向かって読み進まない。
B_MEDIA_FILE_UNBUFFERED 読み込み量をより少なくする。これは大きな出力バッファを満たすためのエクストラクタを待つことなしに低ビットレートのファイルをストリーミングする場合に便利である。
B_MEDIA_FILE_BIG_BUFFERS 大きなバッファを使用する。

これらのフラグは、コンストラクタの振る舞いを制御します。


The Media Kit Table of Contents     The Media Kit Index


The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..