PDD_VPORTCB_GETBANDWIDTH funzione di callback (ddrawint.h)
La funzione di callback DdVideoPortGetBandwidth segnala le limitazioni della larghezza di banda della memoria del buffer dei frame del dispositivo in base al formato di output dell'oggetto VPE specificato.
Sintassi
PDD_VPORTCB_GETBANDWIDTH PddVportcbGetbandwidth;
DWORD PddVportcbGetbandwidth(
PDD_GETVPORTBANDWIDTHDATA unnamedParam1
)
{...}
Parametri
unnamedParam1
Punta a una struttura DD_GETVPORTBANDWIDTHDATA che contiene le informazioni necessarie per il driver per restituire i dati della larghezza di banda.
Valore restituito
DdVideoPortGetBandwidth restituisce uno dei codici di callback seguenti:
Commenti
DdVideoPortGetBandwidth deve essere implementato nei driver DirectDraw che supportano VPE.
DdVideoPortGetBandwidth informa i client dei requisiti di larghezza di banda per qualsiasi formato specificato, consentendo loro di scegliere un formato e comprendere meglio le relative limitazioni. Il driver può fornire informazioni accurate sulla larghezza di banda solo dopo la creazione dell'oggetto VPE perché il driver necessita delle informazioni nella struttura DDVIDEOPORTDESC .
DdVideoPortGetBandwidth viene in genere chiamato due volte per ottenere i parametri di larghezza di banda della porta video hardware specificata. A seconda del membro dwFlags della struttura DD_GETVPORTBANDWIDTHDATA in lpGetVideoPortBandwidth, il driver deve eseguire le operazioni seguenti:
-
Quando il flag è DDVPB_TYPE, il driver deve indicare il tipo di dispositivo impostato impostando uno dei flag seguenti nel membro dwCaps della struttura DDVIDEOPORTBANDWIDTH a cui il membro lpBandwidth di DD_GETVPORTBANDWIDTHDATA punti:
- DDVPBCAPS_DESTINATION indica che il dispositivo descriverà le sue funzionalità di larghezza di banda in termini di fattore di estensione della sovrimpressione; ovvero le informazioni sulla larghezza di banda restituite dal driver nella chiamata successiva a DdVideoPortGetBandwidth faranno riferimento alle dimensioni della sovrimpressione di destinazione. Questo flag descrive meglio l'hardware che viene aggiornato contemporaneamente dalle superfici primarie e sovrapposte. Man mano che il video di destinazione viene esteso, l'hardware ha più tempo per leggere i pixel dalla superficie di sovrapposizione, riducendo la larghezza di banda di memoria necessaria.
- DDVPBCAPS_SOURCE indica che il dispositivo descriverà le sue funzionalità di larghezza di banda in termini di dimensioni di sovrapposizione di origine necessarie; vale a dire che le informazioni sulla larghezza di banda restituite dalla chiamata successiva a DdVideoPortGetBandwidth fanno riferimento alle dimensioni della sovrimpressione di origine. Questo flag descrive meglio l'hardware che prefeta i dati di sovrimpressione in un buffer di riga o in un fifo di grandi dimensioni. Tale hardware non richiede una larghezza di banda aggiuntiva, ma richiede che i dati di sovrimpressione di origine si adattino interamente alle dimensioni buffer/FIFO supportate dall'hardware.
Il driver deve anche impostare il membro dwSize della struttura DDVIDEOPORTBANDWIDTH prima di restituire.
-
Quando il flag è DDVPB_VIDEOPORT, i membri dwWidth e dwHeight nella struttura DD_GETVPORTBANDWIDTHDATA fanno riferimento alle dimensioni di scalabilità preliminare dei dati video che la porta video hardware scriverà nel buffer dei fotogrammi come sovrimpressione di origine. Il driver deve restituire un fattore di estensione overlay in corrispondenza del quale il dispositivo può visualizzare la sovrimpressione, moltiplicata per 1000, in ognuno dei membri dwOverlay, dwColorkey, dwYInterpolate e dwYInterpAndColorkey della struttura DDVIDEOPORTBANDWIDTH. Ad esempio, un valore pari a 2000 indica che il dispositivo ha la larghezza di banda per estendere la sovrimpressione a due volte le dimensioni specificate dell'origine durante la visualizzazione. Il valore 1000 indica che non è necessario eseguire l'estensione per le dimensioni dei dati specificate. Il valore 500 indica che il dispositivo ha una larghezza di banda sufficiente per ridurre la destinazione di sovrimpressione in metà. Il driver deve impostare un valore valido in dwOverlay, ma può restituire -1 in uno degli altri tre membri che non supporta.
Il flag DDVPB_VIDEOPORT presuppone che il dispositivo sia meglio descritto dal flag DDVPBCAPS_DESTINATION. In caso contrario, il driver non deve eseguire la chiamata.
-
Quando viene impostato il flag DDVPB_OVERLAY, i membri dwWidth e dwHeight nella struttura DD_GETVPORTBANDWIDTHDATA fanno riferimento alle dimensioni della sovrimpressione di origine. Il driver deve restituire una percentuale delle dimensioni di questa sovrimpressione, moltiplicata per 1000, in cui può supportare la visualizzazione della sovrimpressione in ogni dwOverlay, dwColorkey, dwYInterpolate e dwYInterpAndColorkey della struttura DDVIDEOPORTBANDWIDTH. Ad esempio, un valore pari a 750 indica che il dispositivo richiede che la sovrimpressione di origine specificata venga compattata al 75% delle dimensioni originali affinché il dispositivo lo visualizzi correttamente. Il valore 1000 indica che non è necessaria alcuna compattazione. I driver per questo tipo di dispositivo in genere non restituiscono un valore maggiore di 1000. Il driver deve impostare un valore valido in dwOverlay, ma può restituire 0 in uno degli altri tre membri se non supporta l'interpolazione del tasto colore e/o l'interpolazione dell'asse Y.
Il flag DDVPB_OVERLAY presuppone che il dispositivo sia descritto meglio usando il flag DDVPBCAPS_SOURCE. In caso contrario, il driver non deve eseguire la chiamata.
Requisiti
Piattaforma di destinazione | Desktop |
Intestazione | ddrawint.h (include Winddi.h) |