一般的な規則として、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()
全てのトラックに全てのメディアデータが書込まれたら、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に依存します。
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.
エラーなし。
GetParameterView()
|
|
|
BView *GetParameterView(void)
| |
ファイルフォーマットのパラメータを調整するコントロールを含んだBViewを返します。
InitCheck()
|
|
|
status_t InitCheck(void) const
| |
コンストラクタの結果(result)コードを返します。BMediaFileを使用する前ではなく、インスタンスを生成した後にいつもこの関数を呼び出します。
RETURN CODES
B_OK.
エラーなし。
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.
エラーなし。
TrackAt()
indexで指定されたトラックを参照するBMediaTrackを返します。indexは、0とCountTracks() - 1の間の値を取らなければなりません。
もしBMediaFileが適切に初期化されていないか、indexが無効であれば、NULLが返されます。
Web()
ファイルフォーマットのパラメータを設定するために利用できる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 |
大きなバッファを使用する。 |
これらのフラグは、コンストラクタの振る舞いを制御します。
|