Condividi tramite


DXVA_ConfigPictureDecode struttura (dxva.h)

La struttura DXVA_ConfigPictureDecode viene inviata dal decodificatore host all'acceleratore per impostare la configurazione per la decodifica dell'immagine compressa.

Sintassi

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

Members

dwFunction

Indica il tipo di query o risposta quando si usano i comandi di probing e blocco. I 24 bit più significativi di dwFunction sono la variabile DXVA_ConfigQueryOrReplyFlag .

I 4 bit meno significativi della variabile DXVA_ConfigQueryOrReplyFlag contengono indicatori di stato per la query o la risposta da eseguire.

Il minimo significativo 8 bit di dwFunction è la variabile bDXVA_Func che, in questo caso, è uguale a 1.

dwReservedBits[3]

Bit riservati usati per la compressione e l'allineamento. Questi bit sono zero.

guidConfigBitstreamEncryption

Indica un GUID associato al tipo di protocollo di crittografia per i buffer di dati bitstream. Il valore DXVA_NoEncrypt (nome GUID definito in dxva.h) indica che la crittografia non viene applicata. Si tratta di DXVA_NoEncrypt se bConfigBitstreamRaw è zero.

guidConfigMBcontrolEncryption

Indica un GUID associato al tipo di protocollo di crittografia per i buffer di controllo macroblock. Il valore DXVA_NoEncrypt (nome GUID definito in dxva.h) indica che la crittografia non viene applicata. Si tratta di DXVA_NoEncrypt se bConfigBitstreamRaw è 1.

guidConfigResidDiffEncryption

Indica un GUID associato al tipo di protocollo di crittografia per la decodifica dei dati di differenza rimanente (buffer contenenti dati di dominio spaziale o set di coefficienti di dominio di trasformazione per IDCT basato su acceleratore). Si tratta di DXVA_NoEncrypt se bConfigBitstreamRaw è 1. DXVA_NoEncrypt è un GUID definito in dxva.h che indica che la crittografia non viene applicata.

bConfigBitstreamRaw

Contiene l'indicatore di elaborazione bitstream. Un valore pari a 1 specifica che i dati immagine verranno inviati in buffer bitstream come contenuto bitstream non elaborato. Un valore pari a zero specifica che i dati dell'immagine verranno inviati usando i buffer dei comandi del controllo macroblock.

Questo è zero se bConfigResidDiffHost è 1 o se bConfigResidDiffAccelerator è 1. Il valore zero è considerato il livello di base del supporto. Il supporto aggiuntivo di livello uno è preferito.

bConfigMBcontrolRasterOrder

Specifica se i comandi di controllo macroblock sono in ordine di analisi raster o in ordine arbitrario. Un valore pari a 1 specifica che i comandi di controllo macroblock all'interno di ogni buffer dei comandi del controllo macroblock sono in ordine di analisi raster e un valore pari a zero indica l'ordine arbitrario. Attualmente, un driver è autorizzato a limitare il supporto per l'ordine di analisi raster; tuttavia, un driver deve supportare l'ordine di analisi arbitrario e raster.

bConfigResidDiffHost

Contiene la configurazione della differenza rimanente dell'host (vedere Decodifica immagine orientata a Macroblock per altre informazioni). Un valore pari a 1 specifica che alcuni dati di decodifica delle differenze residui possono essere inviati come blocchi nel dominio spaziale dall'host. Un valore pari a zero specifica che i dati del dominio spaziale non verranno inviati. Questo membro è zero se bConfigBitstreamRaw è 1. È preferibile che un acceleratore supporti sia zero che 1.

bConfigSpatialResid8

Indica le dimensioni delle parole usate per rappresentare blocchi di dominio spaziale di differenza rimanente per le immagini stimate (nontra) quando si usa la decodifica della differenza residua basata su host (quando bConfigResidDiffHost è uguale a 1).

Se bConfigSpatialResid8 è 1 e bConfigResidDiffHost è 1, l'host invierà blocchi di dominio spaziale di differenza residua per i blocchi di macro nonintra usando esempi firmati a 8 bit e per i macroblock intra in immagini stimate (nontra) in un formato a seconda di bConfigIntraResidUnsigned come indicato di seguito:

  • Se bConfigIntraResidUnsigned è zero, i blocchi di dominio spaziale per i macroblock vengono inviati come valori integer con segno a 8 bit rispetto a un valore di riferimento costante pari a 128.
  • Se bConfigIntraResidUnsigned è 1, i blocchi di dominio spaziale per i macroblock vengono inviati come valori integer senza segno a 8 bit rispetto a un valore di riferimento costante pari a zero.
Se bConfigSpatialResid8 è zero e bConfigResidDiffHost è 1, l'host invierà blocchi di dominio spaziale di differenza rimanente per i blocchi di macro nontra tramite campioni firmati a 16 bit e per gli intra macroblock in immagini stimate (nonintra) in un formato a seconda di bConfigIntraResidUnsigned come indicato di seguito:
  • Se bConfigIntraResidUnsigned è zero, i blocchi di dominio spaziale per i macroblock vengono inviati come valori interi con segno a 16 bit rispetto a un valore di riferimento costante pari a 2(BPP-1), dove BPP è il numero di bit per ogni esempio per il video non compresso (in genere un valore pari a 8).
  • Se bConfigIntraResidUnsigned è 1, i blocchi di dominio spaziale per i macroblock vengono inviati come valori integer senza segno a 16 bit rispetto a un valore di riferimento costante pari a zero.
Il membro bConfigSpatialResid8 deve essere zero se bConfigResidDiffHost è zero. Non esiste alcuna preferenza per un valore specifico di bConfigSpatialResid8 quando bConfigResidDiffHost è 1.
Nota Per le immagini intra con BPP uguale a 8, i blocchi di dominio spaziale devono essere inviati usando esempi a 8 bit. Per le immagini intra con BPP maggiore di 8, i blocchi di dominio spaziale devono essere inviati usando esempi a 16 bit. La variabile BPP è il numero di bit per esempio per il video non compresso, in genere un valore pari a 8.

Se bConfigIntraResidUnsigned è zero, questi esempi vengono inviati come valori interi firmati rispetto a un valore di riferimento costante pari a 2(BPP-1). Se bConfigIntraResidUnsigned è 1, questi esempi vengono inviati come valori interi senza segno rispetto a un valore di riferimento costante pari a zero.

 

bConfigResid8Subtraction

Se uguale a 1, indica che i blocchi di overflow a 8 bit vengono sottratti anziché aggiunti. Deve essere zero a meno che bConfigSpatialResid8 sia 1. Il valore preferito per un acceleratore da supportare è 1 se bConfigSpatialResid8 è 1. La possibilità di sottraere le differenze anziché aggiungerle consente la decodifica a 8 bit per essere completamente conforme all'intervallo completo +/-255 di valori necessari nelle specifiche del decodificatore video. Ciò avviee perché +255 non può essere rappresentato come l'aggiunta di due numeri a 8 bit firmati, ma qualsiasi numero nell'intervallo +/-255 può essere rappresentato come la differenza tra due numeri a 8 bit firmati (+255 è uguale a +127 meno âˆ'128).

bConfigSpatialHost8or9Clipping

Se uguale a 1, indica che i blocchi di dominio spaziale per i macroblock intra vengono ritagliati in un intervallo a 8 bit nell'host e che i blocchi di dominio spaziale per i macroblock nontra vengono ritagliati in un intervallo a 9 bit nell'host. Un valore pari a zero indica che nessun ritaglio viene eseguito dall'host. Deve essere zero a meno che bConfigSpatialResid8 sia uguale a zero e bConfigResidDiffHost è uguale a 1. Il valore preferito per un acceleratore da supportare è zero.

bConfigSpatialResidInterleaved

Se uguale a 1, indica che i dati delle differenze di dominio spaziale rimanenti vengono inviati in un modulo interleaved che corrisponde al modello di interleavizzazione del formato YUV. Deve essere zero a meno che bConfigResidDiffHost sia 1 e il formato YUV sia NV12 o NV21. Il valore preferito per un acceleratore da supportare è zero.

bConfigIntraResidUnsigned

Indica il metodo di rappresentazione dei blocchi di dominio spaziale dei dati di differenza rimanente per i blocchi intrablocco quando si usa la decodifica della differenza basata su host (quando bConfigResidDiffHost è uguale a 1).

Quando bConfigIntraResidUnsigned è uguale a zero e bConfigResidDiffHost è uguale a 1, i blocchi di dati di differenza del dominio spaziale per i macroblock vengono inviati come segue:

  • In un'immagine nontra se bConfigSpatialResid8 è zero, i blocchi di dati di differenza del dominio spaziale per i macroblock intra macroblock vengono inviati come valori interi con segno a 16 bit rispetto a un valore di riferimento costante pari a 2(BPP-1), dove BPP è il numero di bit per esempio per il video non compresso (in genere un valore pari a 8).
  • In un'immagine nontra se bConfigSpatialResid8 è 1 e in un'immagine intra se BPP è uguale a 8 (indipendentemente dal valore di bConfigSpatialResid8), i blocchi di dati di differenza del dominio spaziale per i macroblock vengono inviati come valori integer con segno a 8 bit rispetto a un valore di riferimento costante pari a 128.
Quando bConfigIntraResidUnsigned è uguale a 1 e bConfigResidDiffHost è uguale a 1, i blocchi di dati di differenza del dominio spaziale per i macroblock intra vengono inviati come segue:
  • In un'immagine nontra se bConfigSpatialResid8 è zero, i blocchi di dati di differenza del dominio spaziale per i macroblock intra macroblock vengono inviati come valori interi senza segno a 16 bit relativi a un valore di riferimento costante pari a zero.
  • In un'immagine nontra se bConfigSpatialResid8 è 1 e in un'immagine intra se BPP è uguale a 8 (indipendentemente dal valore di bConfigSpatialResid8), i blocchi di dati di differenza del dominio spaziale per i macroblock vengono inviati come valori interi senza segno a 8 bit relativi a un valore di riferimento costante pari a zero.
Il membro bConfigIntraResidUnsigned deve essere zero a meno che bConfigResidDiffHost non sia 1.

Il valore preferito per un acceleratore da supportare è zero per bConfigIntraResidUnsigned.

bConfigResidDiffAccelerator

Contiene la configurazione della differenza rimanente dell'acceleratore. Un valore pari a 1 indica che i blocchi di dominio di trasformazione dei dati di coefficiente possono essere inviati dall'host per IDCT basati su acceleratore. Un valore pari a zero specifica che l'IDCT basato su acceleratore non verrà usato. Se sia bConfigResidDiffHost che bConfigResidDiffAccelerator sono 1, alcune differenze residui di decodifica verranno eseguite nell'host e alcune sull'acceleratore, come indicato dai comandi di controllo a livello di macroblock. Questo membro deve essere zero se bConfigBitstreamRaw è 1.

Il valore preferito per un acceleratore da supportare è 1 per bConfigResidDiffAccelerator.

Quando bConfigResidDiffAccelerator e bConfigResidDiffHost sono uguali a 1, la decodifica della differenza rimanente può essere condivisa tra l'host e l'acceleratore su base macroblock. Questo è considerato un livello di funzionalità di acceleratore ancora superiore rispetto a quando bConfigResidDiffAccelerator è uguale a 1 e bConfigResidDiffHost è uguale a zero.

bConfigHostInverseScan

Indica se l'analisi inversa per l'elaborazione del blocco di dominio di trasformazione viene eseguita nell'host o nell'acceleratore. Un valore 1 indica che l'analisi inversa per l'elaborazione del blocco di dominio di trasformazione verrà eseguita nell'host e gli indici assoluti verranno inviati invece per eventuali coefficienti di trasformazione. Un valore pari a zero indica che l'analisi inversa verrà eseguita sull'acceleratore. Questo membro deve essere zero se bConfigResidDiffAccelerator è zero o se bConfig4GroupedCoefs è 1.

Il valore preferito per un acceleratore da supportare è 1 se bConfigResidDiffAccelerator è 1.

bConfigSpecificIDCT

Indica l'uso di un metodo IDCT specifico per IDCT off-host. Un valore pari a 1 indica l'uso dell'IDCT specificato nell'allegato W della raccomandazione ITU-T H.263. Un valore pari a zero indica che qualsiasi IDCT conforme può essere usato per l'IDCT off-host. I valori diversi da zero e 1 sono riservati per l'uso futuro.

Questo membro deve essere zero se bConfigResidDiffAccelerator è zero (semplicemente indicando la decodifica della differenza rimanente basata su host).

Nota L'allegato W della raccomandazione ITU-T H.263 non è conforme ai requisiti IDCT di MPEG-2 corrigendum 2 e pertanto bConfigSpecificIDCT non deve essere uno per l'uso con video MPEG-2.
 

bConfig4GroupedCoefs

Un valore 1 indica che i coefficienti di trasformazione per IDCT off-host verranno inviati usando la struttura DXVA_TCoef4Group anziché la struttura DXVA_TCoefSingle . Questo è zero se bConfigResidDiffAccelerator è zero o se bConfigHostInverseScan è 1.

Il valore preferito per un acceleratore da supportare è zero se bConfigResidDiffAccelerator è 1.

Commenti

Per alcuni tipi di bitstream, forzare i comandi di controllo macroblock all'interno di ogni buffer dei comandi di controllo macroblock per essere in ordine raster aumenta notevolmente il numero di buffer necessari che devono essere elaborati o richiedono la riordinazione host delle informazioni sul controllo. Il sostegno dell'ordine arbitrario può quindi essere vantaggioso per il processo di decodifica. Ad esempio, la decodifica della risoluzione CIF H.261 può richiedere 36 buffer di controllo macroblock per immagine se l'ordine di analisi raster è necessario all'interno di ogni buffer (l'ordinamento arbitrario della sezione H.263 dell'allegato K e le modalità di sezione rettangolare hanno ripercussioni più gravi, eventualmente richiedendo un numero estremamente elevato di buffer).

Requisiti

Requisito Valore
Intestazione dxva.h (include Dxva.h)

Vedi anche

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle