The Media Kit Table of Contents | The Media Kit Index |
Derived from: none
Declared in: be/media/Buffer.h
Library: libmedia.so
Allocation: Constructor only
BBufferは、アプリケーション及びnodeの間で受け渡されることのできる共有メモリのチャンク(塊)を参照します。これらのバッファの制御ヘッダは、より安全なIPC機構の使用を通じて渡されます。しかしこれらのヘッダが表す実際のデータは、典型的には高いデータレートを要求すし、また最大限の動作効率を得る必要性から、共有メモリはバッファが管理される手法によって管理されます。
BBufferは、BBufferのsourceとして振る舞うBBufferGroupを持つBBufferProducerから生じます(BBufferConsumer::SetOutputBuffersFor()をご覧下さい)。BBufferは、参加している全てのnodeを通して送られます。それは、おそらく長い連鎖—バケツリレーのように—を通して、最後にBBufferをそれ以上先に渡すことを選ばないnode(バッファのRecycle()関数がBBufferGroupの保存庫に返すために呼び出され、他のデータのバッチに再利用される場所)に到達するまで、下流に送られるでしょう。
アプリケーションもしくはカスタムのnodeは、低レベルのドライババッファや、BBitmap、またはBDirectWindowのフレームバッファ領域のように、メモリの特定の領域を参照するBBufferをセットアップすることができます。この能力によって不要な複製処理を回避でき、処理が大きく最適化されます。
BBufferから派生するBSmallBufferクラスは、非常に小さなバッファに使用されます。これはBBufferGroupに加わらず、特に動作効率を最適化するために扱われます。
|
BBufferのコンストラクタ及びですトラクタはprivateです。BBufferの生成及び破棄には、BBufferGroupクラスの適切な関数を使用して下さい。
|
オーディオバッファのヘッダのポインタを返します。これは、下記の別名(alias)となります。
&BBuffer::Header()->u.raw_audio;
|
バッファを記述するbuffer_clone_info構造体を返します。この情報は、主にデバッグ目的のものです。このbuffer_clone_info構造体は、バッファグループにバッファを追加するために使用してはいけません。なぜなら、それは存在しているバッファのエリアスそのものだからです。
|
Data()関数は、バッファの最初のバイトのポインタか、あるいはもしバッファがなぜか適切に初期化されていなかった場合(この場合にはバッファは使用できません)はNULLを返します。
|
バッファのフラグを返します。このフラグによって、バッファのオプションを指定できます。例えば、あるバッファは奇数のビデオフィールド(B_F1_BUFFER)を扱うよう意図され、他のバッファは偶数のビデオフィールド(B_F2_BUFFER)を扱うように意図されるBBufferGroupを作成することによって、あなたはビデオが描画される場所をそれぞれのバッファに知らせることで、簡単にインターレースのビデオを扱うことができます。
|
バッファのヘッダへのポインタを返します。このヘッダは、そこに収められているメディアデータを記述します。結果は、BBufferGroup::RequestBuffer()またはBBufferConsumer::BufferReceived()から受け取ったバッファに対してのみ適正です。
もしデータをバッファに放り込んだら、バッファのヘッダへのポインタを得るためにHeader()を呼び出し、バッファの中身を記述する情報でmedia_header構造体を埋めて下さい。
|
もしバッファがMedia Serverによって問題なく登録され、他のクライアントから使用可能となったら、ID()は正の値のバッファIDを返します。そうでなければ、負の値が返されます。
|
バッファが再利用できるように、それを所有しているBBufferGroupにバッファを送り返します。BBufferGroup::RequestBuffer()呼び出しまたはBBufferConsumer::BufferReceived()呼び出しのいずれかから受け取ったバッファのRecycle()のみ呼び出すことができます。
|
|
バッファの大きさを、バイト単位で返します。実際に使用されているバイト数はこの値より小さく、その値はHeader()関数を呼び出すことで得られるバッファのヘッダに保存されています。
|
SizeUsed()は、現在使用されているバッファのバイト数を返します。
SetSizeUsed()は、この値を設定します。この関数は、書込んだデータのサイズを示すために、バッファにデータを書込んだ後に呼び出して下さい。
|
バッファに格納されているデータのメディアタイプを返します。それはバッファが作りだされたBBufferProducerによって指定されたものです。この値は、BBufferGroup::RequestBuffer()呼び出しまたはBBufferConsumer::BufferReceived()呼び出しのいずれかからバッファを受け取ったときのみ適正です。
|
ビデオバッファのヘッダへのポインタを返します。これは、下記へのエリアスです。
&BBuffer::Header()->u.raw_video;
Declared in: be/media/Buffer.h
Constant | Description |
---|---|
B_F1_BUFFER | このバッファは奇数のフィールドに対応します。 |
B_F2_BUFFER | このバッファは偶数のフィールドに対応します。 |
B_SMALL_BUFFER | このバッファは小さなバッファです。 |
これらのフラグはバッファに対して割り当てられます。現在使用できる値によって、バッファが偶数のビデオフィールドに対して使用されるかどうか指定できます。もしB_SMALL_BUFFERが設定されていれば、そのバッファはBSmallBufferです。
Declared in: <be/media/Buffer.h>
struct buffer_clone_info { buffer_clone_info(); ~buffer_clone_info(); media_buffer_id buffer; area_id area; size_t offset; size_t size; int32 flags; private: _reserved_[4]; };
バッファのフラグと同様に、BBufferが(バッファが置かれたメモリ領域及び領域のオフセット、バッファのサイズの観点から)メモリのどこに存在するかを記述します。
The Media Kit Table of Contents | The Media Kit Index |
Copyright © 2000 Be, Inc. All rights reserved..