The Media Kit Table of Contents | The Media Kit Index |
Derived from: BMediaNode
Declared in: be/media/MediaEventLooper.h
Library: libmedia.so
Allocation: Constructor only
BMediaEventLooperクラスは、受け取ったメディアイベントをキューに入れる制御スレッドを提供し、それらを処理するために実装されたHandleEvent()を必要に応じて呼び出します。これは、nodeを書く際の単純作業をなくします。
BMediaEventLooperは、nodeの複雑なコンストラクト処理の多くを取り去りますが、まだしなければならない作業が残っています。あなた自身が実装しなければならないフック関数が、まだたくさんあるのです(厳密には、nodeの種類がproducerかcosumerかによります)。
"A BMediaEventLooper Example"を読むことで、BMediaEventLooperを使用するnodeをどうやって実装するかについての具体的な例を学ぶことができます。
protected:
|
あなたのnodeの初期化を扱うために、この関数をオーバーライドする必要があります。引数apiVersionは、そのオブジェクトが対応するBeOS APIのバージョンを示します。これにはデフォルトの値を使用して下さい—これにより、あなたのnodeは、自分がコンパイルされるBeOSのAPIバージョンを継承します。
protected:
|
制御スレッドを停止させ、領域確保されたメモリを解放するために、Quit()を呼び出します。
protected:
|
あなたが生成し、キューに追加したカスタムイベントの後始末をするために、この関数を実装して下さい。この関数は、イベントが必要とするかも知れない特別な後処理をあなたが扱えるように、カスタムイベントがキューから削除される時に呼び出されます。
protected:
|
この関数は、メッセージを待ち、イベントをキューからポップし、そしてDispatchEvent()を呼び出します。この関数は、BMediaEventLooperがRun()される際に自動的に呼び出されます。
|
|
制御スレッドのthread_idを返します。
protected:
|
指定されたeventをあなたのnodeが扱えるように、HandleEvent()を呼び出します。もしあなたのcodeがそれを扱わないなら、この関数はそれを処理するためのデフォルトハンドラを持つでしょう。一般的に、あなたがこの関数を呼び出すことはありません。
キューからイベントを削除するのは、制御ループの作業です。この関数は、それを行いません。
protected:
|
EventQueue()は、メッセージハンドラに使用されるBTimedEventQueueへのポインタを返します。RealTimeQueue()は、リアルタイムイベントに使用されるBTimedEventQueueへのポインタを返します。
protected:
|
入ってきたメディアイベントを扱うために、この関数を実装して下さい。引数eventは、イベントを記述するmedia_timed_event構造体を参照します。latenessは、そのイベントがどれくらい遅れるかを示し、もしイベントがreal timeで扱われる必要があれば、realTimeEventはtrueです。
BMediaEventLooperは、DispatchEvent()関数からこの関数を呼び出します。キューからイベントを削除するのは、制御ループの作業です。
protected:
|
nodeが登録された後、Media Serverはこのフック関数を呼び出します。この関数はBMediaNodeから派生しています。BMediaNodeLooperは、nodeが登録された際に自動的にRun()を呼び出すよう、この関数を実装します。もしあなたがNodeRegistered()を実装するなら、あなたがカスタムの処理を行った後に、BMediaEventLooper::NodeRegistered()を呼び出して下さい。
|
nodeの制御ポート及び制御スレッドを閉じます。制御スレッドが破棄されるまでブロックします。
|
制御スレッドを生成し、動作させます。これはデフォルトのNodeRegistered()実装によって自動的に呼び出されます。もしNodeRegistered()をオーバーライドするなら、その中で必ずデフォルトの実装を呼び出すか、またはRun()を呼び出して下さい。
protected:
|
nodeのscheduling latencyを、マイクロ秒単位で返します。
protected:
|
SetBufferDuration()は、nodeのバッファの時間的な長さ(duration)を設定します。durationは、もしその値が0未満なら強制的に0になります。
BufferDuration()は、nodeのバッファの時間的な長さ(duration)を返します。
protected:
|
SetEventLatency()は、イベントのlatencyを設定します。イベントのlatencyは、内部的なlatencyと下流のlatencyの両方を含む、あなたのnodeのlatencyを合計したものです。このlatencyは、あなたが処理するためキューからイベントをポップする時間を決定する際に、BMediaEventLooperによって計算に取り込まれます。
EventLatency()は、イベントのlatencyを返します。
protected:
|
SetOfflineTime()は、OfflineTime()が返される時間を設定します。
nodeの現在の時間を計算するために、OfflineTime()を増やします。この関数はオフラインモードの時にMedia Kitによって呼び出されます。全ての適切な内部情報を更新した上で、BMediaEventLooperの実装を呼び出して下さい。
protected:
|
SetPriority()は、制御スレッドの優先度(priority)を返します。0未満の値は強制的に0にされ、120を越える値は強制的に120にされます。
Priority()は、制御スレッドの現在の優先度(priority)を返します。
protected:
|
SetRunState()は、nodeの現在の実行モードを設定します。
RunState()は、現在の実行状況(run state)を返します。
こちらもご覧下さい: run_state
Declared in: <be/media/MediaEventLooper.h>
Constant | Description |
---|---|
B_IN_DISTRESS | nodeは、問題を経験している。 |
B_UNREGISTERED | nodeは、まだMedia roterに登録されていない。 |
B_STOPPED | nodeは、動作していない。 |
B_STARTED | nodeは動作している。 |
B_QUITTING | nodeは、終了処理中である。 |
B_TERMINATED | nodeは、終了させられた。 |
B_USER_RUN_STATES | ユーザ定義の実行状況(run status)に基づく。 |
The Media Kit Table of Contents | The Media Kit Index |
Copyright © 2000 Be, Inc. All rights reserved..