Freigeben über


PDD_VPORTCB_GETBANDWIDTH Rückruffunktion (ddrawint.h)

Die DdVideoPortGetBandwidth-Rückruffunktion meldet die Bandbreiteneinschränkungen des Framepufferspeichers des Geräts basierend auf dem angegebenen Ausgabeformat des VPE-Objekts.

Syntax

PDD_VPORTCB_GETBANDWIDTH PddVportcbGetbandwidth;

DWORD PddVportcbGetbandwidth(
  PDD_GETVPORTBANDWIDTHDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

Verweist auf eine DD_GETVPORTBANDWIDTHDATA-Struktur , die die Informationen enthält, die der Treiber zum Zurückgeben der Bandbreitendaten benötigt.

Rückgabewert

DdVideoPortGetBandwidth gibt einen der folgenden Rückrufcodes zurück:

Hinweise

DdVideoPortGetBandwidth muss in DirectDraw-Treibern implementiert werden, die VPE unterstützen.

DdVideoPortGetBandwidth informiert Clients über Bandbreitenanforderungen für jedes angegebene Format und hilft ihnen dabei, ein Format auszuwählen und die Einschränkungen besser zu verstehen. Der Treiber kann nur genaue Bandbreiteninformationen bereitstellen, nachdem das VPE-Objekt erstellt wurde, da der Treiber die Informationen in der DDVIDEOPORTDESC-Struktur benötigt.

DdVideoPortGetBandwidth wird in der Regel zweimal aufgerufen, um die Bandbreitenparameter des angegebenen Hardwarevideoports abzurufen. Abhängig vom dwFlags-Member der DD_GETVPORTBANDWIDTHDATA-Struktur bei lpGetVideoPortBandwidth sollte der Treiber die folgenden Schritte ausführen:

  • Wenn das Flag DDVPB_TYPE ist, sollte der Treiber den Gerätetyp angeben, indem er eines der folgenden Flags im dwCaps-Member der DDVIDEOPORTBANDWIDTH-Struktur festlegt, für die das lpBandwidth-Mitglied DD_GETVPORTBANDWIDTHDATA Punkte aufweist:
    • DDVPBCAPS_DESTINATION gibt an, dass das Gerät seine Bandbreitenfunktionen in Bezug auf den Überlagerungs-Stretchfaktor beschreibt; Das heißt, dass die Bandbreiteninformationen, die vom Treiber beim nächsten Aufruf von DdVideoPortGetBandwidth zurückgegeben werden, auf die Größe der Zielüberlagerung verweisen. Dieses Flag beschreibt am besten Hardware, die gleichzeitig von der primären Oberfläche und von der Überlagerungsoberfläche aktualisiert wird. Wenn das Zielvideo gestreckt wird, hat die Hardware mehr Zeit, um die Pixel von der Überlagerungsoberfläche zu lesen, wodurch die erforderliche Speicherbandbreite verringert wird.
    • DDVPBCAPS_SOURCE gibt an, dass das Gerät seine Bandbreitenfunktionen in Bezug auf die erforderliche Quellüberlagerungsgröße beschreibt. d. h. die Bandbreiteninformationen, die vom nächsten Aufruf von DdVideoPortGetBandwidth zurückgegeben werden, beziehen sich auf die Größe der Quellüberlagerung. Dieses Flag beschreibt am besten Hardware, die die Überlagerungsdaten in einen Zeilenpuffer oder ein großes FIFO vorgibt. Diese Hardware erfordert keine zusätzliche Bandbreite, erfordert jedoch, dass die Quellüberlagerungsdaten vollständig in die von der Hardware unterstützte Puffer-/FIFO-Größe passen.

    Der Treiber sollte auch den dwSize-Member der DDVIDEOPORTBANDWIDTH-Struktur festlegen, bevor er zurückgegeben wird.

  • Wenn das Flag DDVPB_VIDEOPORT ist, beziehen sich die dwWidth - und dwHeight-Member in der DD_GETVPORTBANDWIDTHDATA-Struktur auf die Vorskalierungsgröße der Videodaten, die der Hardwarevideoport als Quellüberlagerung in den Framepuffer schreibt. Der Treiber sollte einen Überlagerungs-Stretchfaktor zurückgeben, bei dem das Gerät das Mit 1000 multiplizierte Overlay in jedem der Elemente dwOverlay, dwColorkey, dwYInterpolate und dwYInterpAndColorkey der DDVIDEOPORTBANDWIDTH-Struktur anzeigen kann. Beispielsweise gibt der Wert 2000 an, dass das Gerät über die Bandbreite verfügt, um das Overlay beim Anzeigen auf das Doppelte der angegebenen Größe der Quelle zu strecken. Der Wert 1000 gibt an, dass für die angegebene Datengröße keine Dehnung durchgeführt werden muss. Der Wert 500 gibt an, dass das Gerät über ausreichende Bandbreite verfügt, um das Overlayziel um die Hälfte zu verkleinern. Der Treiber muss einen gültigen Wert in dwOverlay festlegen, kann aber -1 in einem der anderen drei Elemente zurückgeben, die er nicht unterstützt.

    Das DDVPB_VIDEOPORT-Flag setzt voraus, dass das Gerät am besten durch das DDVPBCAPS_DESTINATION-Flag beschrieben wird. Wenn dies nicht der Fall ist, sollte der Treiber den Aufruf nicht ausführen.

  • Wenn das flag DDVPB_OVERLAY festgelegt ist, verweisen die Elemente dwWidth und dwHeight in der DD_GETVPORTBANDWIDTHDATA-Struktur auf die Quellüberlagerungsgröße. Der Treiber sollte einen Prozentsatz der Größe dieses Overlays zurückgeben, multipliziert mit 1000, wobei er die Anzeige des Overlays in den elementen dwOverlay, dwColorkey, dwYInterpolate und dwYInterpAndColorkey der DDVIDEOPORTBANDWIDTH-Struktur unterstützen kann. Beispielsweise gibt ein Wert von 750 an, dass das Gerät erfordert, dass die angegebene Quellüberlagerung auf 75 % seiner ursprünglichen Größe verkleinert werden muss, damit es vom Gerät erfolgreich angezeigt werden kann. Der Wert 1000 gibt an, dass keine Verkleinerung erforderlich ist. Treiber für diesen Gerätetyp geben in der Regel keinen Wert größer als 1000 zurück. Der Treiber muss einen gültigen Wert in dwOverlay festlegen, kann aber 0 in einem der anderen drei Member zurückgeben, wenn er keine Farbschlüsselung und/oder Y-Achseninterpolation unterstützt.

    Das DDVPB_OVERLAY-Flag setzt voraus, dass das Gerät am besten mit dem DDVPBCAPS_SOURCE-Flag beschrieben wird. Wenn dies nicht der Fall ist, sollte der Treiber den Aufruf nicht ausführen.

Anforderungen

   
Zielplattform Desktop
Kopfzeile ddrawint.h (include Winddi.h)

Weitere Informationen

DDVIDEOPORTBANDWIDTH

DDVIDEOPORTDESC

DD_GETVPORTBANDWIDTHDATA

DdVideoPortCreate