Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il runtime di Microsoft Direct3D chiama le funzioni DecodeBeginFrame e DecodeEndFrame del driver di visualizzazione in modalità utente per indicare che il driver può decodificare video nel periodo di tempo compreso tra queste chiamate di funzione. Prima che il driver di visualizzazione in modalità utente possa eseguire qualsiasi operazione di decodifica video, il runtime di Microsoft Direct3D deve chiamare la funzione SetDecodeRenderTarget del driver di visualizzazione in modalità utente per impostare la superficie di destinazione di rendering per tali operazioni di decodifica. Tuttavia, la chiamata a SetDecodeRenderTarget può verificarsi solo al di fuori del periodo tra l'inizio e la fine del frame.
In modalità protetta e nella chiamata a DecodeBeginFrame, il runtime Direct3D imposta o modifica un content key DirectX VA in una variabile a cui il membro pPVPSetKey della struttura D3DDDIARG_DECODEBEGINFRAME punta. Il dispositivo decodifica usa questa chiave per i trasferimenti protetti dei buffer DIRECTX VA compressi per questo e i frame successivi.
Nota Il runtime Direct3D imposta il puntatore pPVPSetKey solo per modificare o impostare la chiave. Per mantenere in uso la chiave impostata in precedenza, il runtime imposta il puntatore su NULL per evitare un potenziale dispendio di tempo nel ricaricamento della stessa chiave. Il driver non elimina le impostazioni ridondanti. Un'applicazione decodificatore deve evitare le impostazioni ridondanti.
Dopo aver impostato la superficie di destinazione di rendering per le operazioni di decodifica, il driver di visualizzazione in modalità utente può ricevere chiamate alla relativa funzione DecodeExecute per eseguire operazioni di decodifica video tra il periodo di tempo di inizio frame e di fine.
Nelle chiamate a DecodeExecute, non tutti i tipi di buffer specificati nei membri CompressedBufferType delle strutture DXVADDI_DECODEBUFFERDESC della matrice pCompressedBuffers della struttura D3DDDIARG_DECODEEXECUTE vengono utilizzati per ogni GUID decodifica specificato dal membro hDecode di D3DDDIARG_DECODEEXECUTE. Ad esempio, i buffer slice-control (D3DDDIFMT_SLICECONTROLDATA), inverse-quantiization (D3DDDIFMT_INVERSEQUANTIZATIONDATA) e bit-stream (D3DDDIFMT_BITSTREAMDATA) sono necessari solo per l'elaborazione VLD (Variable-Length Decode) e il buffer di deblocking-control (D3DDDIFMT_DEBLOCKINGDATA) non viene usato affatto da MPEG-2.
In modalità protetta, i buffer crittografati per un trasferimento protetto con una chiave di contenuto contengono un puntatore ai valori iniziali dei contatori nei descrittori di buffer, ovvero nelle variabili a cui puntano i membri pCipherCounter delle strutture DXVADDI_DECODEBUFFERDESC. Ogni chiamata alla funzione DecodeExecute del driver di visualizzazione in modalità utente deve eseguire un trasferimento protetto di tali buffer nella memoria video locale prima che DecodeExecute usi i dati dei buffer nell'operazione di decodifica. Tuttavia, non esistono piani per crittografare i buffer compressi directX VA di tipi diversi dai tipi di differenza residua (D3DDDIFMT_RESIDUALDIFFERENCEDATA) e dal flusso di bit (D3DDDIFMT_BITSTREAMDATA).