PDD_VPORTCB_GETBANDWIDTH コールバック関数 (ddrawint.h)
DdVideoPortGetBandwidth コールバック関数は、指定された VPE オブジェクト出力形式に基づいて、デバイスのフレーム バッファー メモリの帯域幅制限を報告します。
構文
PDD_VPORTCB_GETBANDWIDTH PddVportcbGetbandwidth;
DWORD PddVportcbGetbandwidth(
PDD_GETVPORTBANDWIDTHDATA unnamedParam1
)
{...}
パラメーター
unnamedParam1
ドライバーが帯域幅データを返すために必要な情報を含む DD_GETVPORTBANDWIDTHDATA 構造体を指します。
戻り値
DdVideoPortGetBandwidth は、次のいずれかのコールバック コードを返します。
解説
DdVideoPortGetBandwidth は、VPE をサポートする DirectDraw ドライバーに実装する必要があります。
DdVideoPortGetBandwidth は、指定された形式の帯域幅要件をクライアントに通知し、形式の選択とその制限事項の理解を深めるのに役立ちます。 ドライバーは、 ドライバーが DDVIDEOPORTDESC 構造体の情報を必要とするため、VPE オブジェクトが作成された後にのみ、正確な帯域幅情報を提供できます。
DdVideoPortGetBandwidth は通常、指定されたハードウェア ビデオ ポートの帯域幅パラメーターを取得するために 2 回呼び出されます。 lpGetVideoPortBandwidth のDD_GETVPORTBANDWIDTHDATA構造体の dwFlags メンバーに応じて、ドライバーは次の操作を行う必要があります。
-
フラグがDDVPB_TYPEされると、ドライバーは、DD_GETVPORTBANDWIDTHDATAの lpBandwidth メンバーが指す DDVIDEOPORTBANDWIDTH 構造体の dwCaps メンバーに次のいずれかのフラグを設定することによって、デバイスの種類を示す必要があります。
- DDVPBCAPS_DESTINATIONは、デバイスがオーバーレイストレッチファクターの観点から帯域幅機能を記述することを示します。つまり、 DdVideoPortGetBandwidth の次回の呼び出しでドライバーによって返される帯域幅情報は、宛先オーバーレイのサイズを参照します。 このフラグは、プライマリ サーフェスとオーバーレイ サーフェスの両方から同時に更新されるハードウェアを最もよく表します。 転送先のビデオが拡大されると、ハードウェアはオーバーレイサーフェスからピクセルを読み取る時間が長く、必要なメモリ帯域幅が減少します。
- DDVPBCAPS_SOURCEは、デバイスが必要なソース オーバーレイ サイズの観点から帯域幅機能を記述することを示します。つまり、 DdVideoPortGetBandwidth の次の呼び出しによって返される帯域幅情報は、ソース オーバーレイのサイズを参照します。 このフラグは、オーバーレイ データをライン バッファーまたは大きな FIFO にプリフェッチするハードウェアを最もよく表します。 このようなハードウェアは余分な帯域幅を必要としませんが、ソース オーバーレイ データがハードウェアでサポートされているバッファー/FIFO サイズ内に完全に収まる必要があります。
ドライバーは、戻る前に DDVIDEOPORTBANDWIDTH 構造体の dwSize メンバーも設定する必要があります。
-
フラグがDDVPB_VIDEOPORTされると、DD_GETVPORTBANDWIDTHDATA構造体の dwWidth メンバーと dwHeight メンバーは、ハードウェア ビデオ ポートがソース オーバーレイとしてフレーム バッファーに書き込むビデオ データの事前スケーリング サイズを参照します。 ドライバーは、DDVIDEOPORTBANDWIDTH 構造体の dwOverlay、 dwColorkey、 dwYInterpolate、 dwYInterpAndColorkey の各メンバーで、デバイスがオーバーレイを表示できるオーバーレイ ストレッチ ファクターを返す必要があります。 たとえば、値 2000 は、オーバーレイを表示するときに、オーバーレイをソースの指定したサイズの 2 倍に拡張する帯域幅がデバイスにあることを示します。 値 1000 は、指定したデータ サイズに対してストレッチを行う必要がないことを示します。 値 500 は、オーバーレイの宛先を半分に縮小するのに十分な帯域幅がデバイスにあることを示します。 ドライバーは dwOverlay で有効な値を設定する必要がありますが、サポートされていない他の 3 つのメンバーのいずれかで -1 を返すことができます。
DDVPB_VIDEOPORT フラグは、デバイスが DDVPBCAPS_DESTINATION フラグによって最適に記述されていることを前提としています。 そうでない場合、ドライバーは呼び出しを失敗させる必要があります。
-
DDVPB_OVERLAY フラグが設定されている場合、DD_GETVPORTBANDWIDTHDATA構造体の dwWidth メンバーと dwHeight メンバーは、ソース オーバーレイ サイズを参照します。 ドライバーは、DDVIDEOPORTBANDWIDTH 構造体の dwOverlay、 dwColorkey、 dwYInterpolate、 dwYInterpAndColorkey の各メンバーのオーバーレイの表示をサポートできる、このオーバーレイのサイズの割合を 1000 で乗算して返す必要があります。 たとえば、値 750 は、デバイスが正常に表示するために、指定したソース オーバーレイを元のサイズの 75% に縮小する必要があることを示します。 値 1000 は、縮小が不要であることを示します。 この種類のデバイスのドライバーは、通常、1000 を超える値を返しません。 ドライバーは dwOverlay で有効な値を設定する必要がありますが、カラー キーや Y 軸補間をサポートしていない場合は、他の 3 つのメンバーのいずれかで 0 を返すことができます。
DDVPB_OVERLAY フラグは、DDVPBCAPS_SOURCE フラグを使用してデバイスが最適に記述されていることを前提としています。 そうでない場合、ドライバーは呼び出しを失敗させる必要があります。
要件
対象プラットフォーム | デスクトップ |
Header | ddrawint.h (Winddi.h を含む) |