CBaseRenderer クラス

cbaserenderer クラスの階層構造

クラスは、 CBaseRenderer レンダラーフィルターを実装するための基本クラスです。 Crendererinputpinクラスによって実装される1つの入力ピンがサポートされています。 このクラスを使用するには、を継承する派生クラスを宣言 CBaseRenderer します。 少なくとも、派生クラスは次のメソッドを実装する必要があります。これらのメソッドは、基本クラスで純粋仮想として宣言されています。

  • CBaseRenderer:: CheckMediaType: 提案されたメディアの種類を受け入れるか拒否します。 このフィルターは、ピン接続プロセス中にこのメソッドを呼び出します。
  • CBaseRenderer::D oRenderSample: サンプルをレンダリングします。 フィルターは、実行中に受信するすべてのサンプルに対してこのメソッドを呼び出します。

基本クラスは、状態の変更と同期の問題を処理します。 また、品質制御の手段を実装していませんが、レンダリングのサンプルをスケジュールします。 基底クラスは、いくつかの "handler" メソッドも宣言します。 これらは、ストリーミングプロセスの特定の時点でフィルターが呼び出すメソッドです。 基底クラスでは何も実行しませんが、派生クラスでオーバーライドできます。 次の表では、「パブリックメソッド: ハンドラー」という見出しの下に一覧表示されています。

CBaseRenderer:: OnReceiveFirstSampleハンドラーには特別な言及があります。 フィルターが一時停止されている間にサンプルを受信した場合、フィルターはこのメソッドを呼び出します。 これは、グラフが停止状態から一時停止状態に切り替わった場合、または一時停止中にグラフが seeked された場合に発生する可能性があります。 ビデオレンダラーでは、通常、サンプルを使用して静止フレームを表示します。 フィルターが一時停止から実行中に切り替わると、 CBaseRenderer::D oRenderSample メソッドに同じサンプルがストリームの最初のサンプルとして送信されます。

クラスは、 CBaseRenderer Crendererpospassthruオブジェクトを介して Imediaseeking および IMediaPosition インターフェイスを公開します。 すべてのシーク要求を上流の次のフィルターに渡します。

スケジュール設定

アップストリームフィルターが入力ピンの Imeminputpin:: receive メソッドを呼び出してサンプルを配信すると、ピンはこの呼び出しをフィルターの CBaseRenderer:: receive メソッドに渡します。 このフィルターは、サンプルをドロップするか、すぐにレンダリングするか、または表示するようにスケジュールします。

サンプルにタイムスタンプがない場合、または参照クロックが使用できない場合は、フィルターによってすぐにサンプルがレンダリングされます。 それ以外の場合、フィルターは CBaseRenderer:: ShouldDrawSampleNow メソッドを呼び出して、何を行うかを決定します。 既定では、サンプルはタイムスタンプに基づいてスケジュールされます。 派生クラスは、品質制御をサポートするために ShouldDrawSampleNow をオーバーライドできます。

サンプルをスケジュールするために、フィルターは Ireferenceclock:: AdviseTime メソッドを呼び出します。これにより、アドバイズ要求が作成されます。 その後、Receive メソッドは、スケジュールされた時刻まで、またはフィルターの状態が変更 れるまでブロックします。 ブロックは、現在のサンプルがレンダリングされるまで、アップストリームフィルターがより多くのサンプルを提供しないようにします。

上流フィルターが Ipin:: endofstream メソッドを呼び出してストリームの末尾を知らせると、フィルターは EC _ COMPLETE イベントをフィルターグラフマネージャーに送信します。 フィルターは、イベントを送信する前に、現在のサンプルの停止時刻を待機します。

プロテクトメンバー変数 説明
m _ babort レンダリングを停止し、その後のサンプルを拒否するかどうかを示すフラグです。
m _ bEOS ストリームの末尾に到達したかどうかを示すフラグ。
m _ beosdelivered 済み フィルターが EC COMPLETE イベントをポストしたかどうかを示すフラグ _ 。
m _ binreceive フィルターが 受信 呼び出しを処理しているかどうかを示すフラグです。
m _ bRepaintStatus 再描画イベントを有効または無効にするフラグ。
m _ bstreaming フィルターがデータをストリーミングしているかどうかを示すフラグです。
m _ dwadvise レンダリングをスケジュールするタイマーイベントの識別子。
m _ endofstreamtimer [タイマー-イベント識別子]: EC _ COMPLETE 通知をスケジュールします。
m _ evcomplete 状態遷移が完了したときに通知されるイベントです。
m _ interfacelock フィルター-状態ロック。
m _ objectによるロック フィルター内のオブジェクトの作成を保護するロック。
m _ pinputpin フィルターの入力ピンへのポインター。
m _ pmediasample 現在のメディアサンプルへのポインター。
m _ pposition シークコマンドを上流に渡すヘルパーオブジェクト。
m _ pqsink 品質制御メッセージを受け取るオブジェクトへのポインター。
m _ rendererlock ストリーミングロック。
m _ renderevent レンダリングをスケジュールするために使用されるイベントです。
m _ signaltime 現在のサンプルの停止時刻。
m _ threadsignal ストリーミングスレッドを解放するために使用されるイベントです。
パブリック メソッド 説明
CancelNotification レンダリングをスケジュールするタイマーイベントをキャンセルします。 仮想的.
CBaseRenderer コンストラクターメソッド。
~ CBaseRenderer デストラクターメソッド。
Getmediアポストロフィ Sitioninterface フィルターの IMediaPosition および imediaseeking のインターフェイスポインターを取得します。 仮想的.
GetPin Pin を取得します。 仮想的.
GetPinCount Pin の数を取得します。 仮想的.
GetSampleTimes サンプルからタイムスタンプを取得します。 仮想的.
OnDisplayChange EC の _ 表示 _ 変更 イベントをフィルターグラフマネージャーにポストします。
PrepareReceive サンプルをレンダリングする準備をします。 仮想。
受信 ストリーム内の次のメディア サンプルを受信します。 仮想。
レンダリング サンプルをレンダリングします。 仮想。
ScheduleSample レンダリングのサンプルをスケジュールします。 仮想。
SendNotifyWindow ビデオ ウィンドウ ハンドルのアップストリーム フィルターに通知します。
SendRepaint フィルター グラフ マネージャーに再描画イベントを送信します。
SetMediaType ピンのメディアの種類が設定されている場合に呼び出されます。 仮想。
SignalTimerFired レンダリングのスケジュール設定に使用するタイマー識別子をクリアします。
SourceThreadCanWait ストリーミング スレッドを保持または解放します。 仮想。
WaitForReceiveToComplete CBaseRenderer::Receive メソッドが完了するまで待機します。
WaitForRenderTime 現在のサンプルのプレゼンテーション時間を待機します。 仮想。
パブリック メソッド: アクセサー メソッド 説明
ClearPendingSample 現在のサンプルをリリースします。 仮想。
GetCurrentSample 現在のサンプルを取得します。 仮想。
GetRealState フィルターの状態を取得します。
GetRenderEvent レンダリングをスケジュールするイベントを取得します。
HaveCurrentSample フィルターにサンプルが含されているかどうかを判断します。 仮想。
IsEndOfStream ストリームの終了通知が受信されたかどうかを照会します。
IsEndOfStreamDelivered EC COMPLETE イベントがフィルター _ グラフ マネージャーに配信されたかどうかを照会します。
IsStreaming フィルターがストリーミング データであるかどうかを照会します。
SetAbortSignal レンダリングを停止し、それ以上のサンプルを拒否するかどうかを示すフラグを設定します。
SetRepaintStatus 再描画イベントを有効または無効にします。
パブリック メソッド: State-Change メソッド 説明
アクティブ 状態が一時停止または実行中に切り替えたときに呼び出されます。 仮想。
BeginFlush フラッシュ操作を開始します。 仮想。
BreakConnect 接続から入力ピンを解放します。 仮想。
CheckReady 状態遷移が完了したかどうかを照会します。
CompleteConnect 入力ピンの別のピンへの接続を完了します。 仮想。
CompleteStateChange 一時停止状態への遷移が完了したかどうかを判断します。 仮想。
EndFlush フラッシュ操作を終了します。 仮想。
非アクティブ 状態が停止に切り替えたときに呼び出されます。 仮想。
NotReady 状態遷移がまだ完了していない状態を示します。
Ready 状態遷移が完了した場合にシグナルを送信します。
StartStreaming フィルターが実行中の状態に切り替え時にストリーミングを開始します。 仮想。
StopStreaming フィルターが実行中の状態から切り替え時にストリーミングを停止します。 仮想。
パブリック メソッド: End-of-Stream メソッド 説明
EndOfStream 入力ピンがストリームの終了通知を受信したとフィルターに通知します。 仮想。
NotifyEndOfStream EC COMPLETE イベント _ をフィルター グラフ マネージャーに投稿します。
ResetEndOfStream ストリームの終了フラグをリセットします。
ResetEndOfStreamTimer EC COMPLETE 通知をスケジュールするタイマー _ を取り消します。 仮想。
SendEndOfStream ストリームの末尾に到達した場合は、フィルター グラフ マネージャーの EC _ COMPLETE イベントをスケジュールします。 仮想。
TimerCallback ストリームの終了タイマー イベントのコールバック メソッド。
パブリック メソッド: ハンドラー 説明
OnReceiveFirstSample フィルターが一時停止中にサンプルを受信すると呼び出されます。 仮想。
OnRenderEnd サンプルがレンダリングされた後に呼び出されます。 仮想。
OnRenderStart レンダリングが開始され始めるときに呼び出されます。 仮想。
OnStartStreaming フィルターがストリーミングを開始するときに呼び出されます。 仮想。
OnStopStreaming フィルターがストリーミングを停止すると呼び出されます。 仮想。
OnWaitEnd サンプルのプレゼンテーション時間を待機してフィルターが完了すると呼び出されます。 仮想。
OnWaitStart フィルターがサンプルのプレゼンテーション時間を待機し始めるときに呼び出されます。 仮想。
PrepareRender フィルターがサンプルをレンダリングする前に呼び出されます。 仮想。
ShouldDrawSampleNow サンプルをレンダリング用にスケジュールする方法を決定します。 仮想。
純粋仮想メソッド 説明
CheckMediaType フィルターが特定のメディアの種類を受け入れるかどうかを判断します。
DoRenderSample サンプルをレンダリングします。
IMediaFilter メソッド 説明
GetState フィルターの状態 (実行中、停止、または一時停止) を取得します。
一時停止 フィルターを一時停止します。
[実行] フィルタを実行します。
Stop フィルターを停止します。
IBaseFilter メソッド 説明
FindPin 指定した識別子を持つピンを取得します。

要件

要件
ヘッダー
Renbase.h (include ストリーム.h)
ライブラリ
Strmbase.lib (小売りビルド)
Str str strsd.lib (デバッグ ビルド)