Condividi tramite


struttura D3D11_1DDI_VIDEO_DECODER_CONFIG (d3d10umddi.h)

Descrive la configurazione di un dispositivo decodificatore Microsoft Direct3D 11 per Microsoft DirectX Video Acceleration (DXVA).

Sintassi

typedef struct D3D11_1DDI_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_1DDI_VIDEO_DECODER_CONFIG;

Members

guidConfigBitstreamEncryption

Definisce il tipo di protocollo di crittografia per i buffer di dati del flusso di bit. Se non viene applicata alcuna crittografia, il valore viene DXVA_NoEncrypt (nome GUID definito in Dxva.h). Se ConfigBitstreamRaw è 0, il valore deve essere DXVA_NoEncrypt.

Se impostato su D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, questo indica che i parametri seguenti verranno passati alla chiamata VideoDecoderBeginFrame :

Valore Significato
pContentKey Puntatore alla struttura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , che indica quali CryptoSession e le informazioni chiave usate per decrittografare il frame.
ContentKeySize Impostare sulle dimensioni della struttura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION .

guidConfigMBcontrolEncryption

Definisce il tipo di protocollo di crittografia per i buffer di dati del controllo del blocco macro. Se non viene applicata alcuna crittografia, il valore viene DXVA_NoEncrypt (nome GUID definito in Dxva.h). Se ConfigBitstreamRaw è 1, il valore deve essere DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Definisce il tipo di protocollo di crittografia per la decodifica dei buffer di dati della differenza residua (buffer contenenti dati del dominio spaziale o set di coefficienti di dominio di trasformazione per la trasformazione coseno discreta basata su acceleratori [IDCT]). Se non viene applicata alcuna crittografia, il valore viene DXVA_NoEncrypt (nome GUID definito in Dxva.h). Se ConfigBitstreamRaw è 1, il valore deve essere DXVA_NoEncrypt.

ConfigBitstreamRaw

Indica se il decodificatore host invia dati del flusso di bit non elaborati. Se il valore è 1, i dati per le immagini verranno inviati nei buffer del flusso di bit come contenuto del flusso di bit non elaborato. Se il valore è 0, i dati immagine verranno inviati usando buffer dei comandi del controllo macroblock. Se ConfigResidDiffHost o ConfigResidDiffAccelerator è 1, il valore deve essere 0.

ConfigMBcontrolRasterOrder

Specifica se i comandi di controllo macroblock sono in ordine di analisi raster o in ordine arbitrario. Se il valore è 1, i comandi del controllo macroblock all'interno di ogni buffer dei comandi del controllo macroblock sono in ordine di analisi raster. Se il valore è 0, l'ordine è arbitrario. Per alcuni tipi di flussi di bit, forzando l'ordine raster aumenta notevolmente il numero di buffer di controllo macroblock necessari che devono essere elaborati o richiede il riordinamento host delle informazioni sul controllo. Pertanto, il supporto di un ordine arbitrario può essere più efficiente.

ConfigResidDiffHost

Contiene la configurazione della differenza residua dell'host. Se il valore è 1, alcuni dati di decodifica delle differenze residui possono essere inviati come blocchi nel dominio spaziale dall'host. Se il valore è 0, i dati del dominio spaziale non verranno inviati.

ConfigSpatialResid8

Indica le dimensioni delle parole usate per rappresentare blocchi di dominio spaziale di differenza residua per le immagini stimate (non all'interno) quando si usa la decodifica della differenza residua basata su host.

Se ConfigResidDiffHost è 1 e ConfigSpatialResid8 è 1, l'host invierà blocchi di dominio spaziale di differenza residua per i blocchi di dominio spaziale non intra macroblock usando campioni con segno a 8 bit e per gli intra macroblock nelle immagini stimate (non all'interno) in un formato che dipende dal valore di ConfigIntraResidUnsigned:

  • Se ConfigIntraResidUnsigned è 0, i blocchi di dominio spaziale per i macroblock vengono inviati come valori interi con segno a 8 bit rispetto a un valore di riferimento costante pari a 2^(BPP-1).
  • Se ConfigIntraResidUnsigned è 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 0.

Se ConfigResidDiffHost è 1 e ConfigSpatialResid8 è 0, l'host invierà blocchi di dominio spaziale di differenza residua per i blocchi di dati non interni a macroblock usando campioni con segno a 16 bit e per gli intra macroblock nelle immagini stimate (non all'interno) in un formato che dipende dal valore di ConfigIntraResidUnsigned:

  • Se ConfigIntraResidUnsigned è 0, i blocchi di dominio spaziale per gli intra macroblock vengono inviati come valori interi con segno a 16 bit rispetto a un valore di riferimento costante pari a 2^(BPP-1).
  • Se ConfigIntraResidUnsigned è 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 0.
  • Se ConfigResidDiffHost è 0, ConfigSpatialResid8 deve essere 0.

Per le immagini inter-immagini, i blocchi di dominio spaziale devono essere inviati usando campioni a 8 bit se bit per pixel (BPP) è 8 e usando campioni a 16 bit se BPP > 8. Se ConfigIntraResidUnsigned è 0, questi esempi vengono inviati come valori integer con segno relativi a un valore di riferimento costante pari a 2^(BPP-1) e se ConfigIntraResidUnsigned è 1, questi esempi vengono inviati come valori interi senza segno rispetto a un valore di riferimento costante pari a 0.

ConfigResid8Subtraction

Se il valore è 1, i blocchi di overflow a 8 bit vengono sottratti anziché aggiunti. Il valore deve essere 0 a meno che ConfigSpatialResid8 non sia 1.

La possibilità di sottrarre le differenze anziché aggiungerle consente la decodifica a 8 bit in modo che la decodifica a 8 bit sia completamente conforme all'intervallo completo di valori ±255 richiesti nelle specifiche del decodificatore video, poiché +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 = +127 meno -128).

ConfigSpatialHost8or9Clipping

Se il valore è 1, i blocchi di dominio spaziale per gli intra macroblock devono essere ritagliati a un intervallo a 8 bit nei blocchi host e di dominio spaziale per i blocchi di macro non interni devono essere ritagliati a un intervallo a 9 bit nell'host. Se il valore è 0, tale ritaglio non è necessario dall'host.

Il valore deve essere 0 a meno che ConfigSpatialResid8 sia 0 e ConfigResidDiffHost sia 1.

ConfigSpatialResidInterleaved

Se il valore è 1, tutti i dati di differenza residua del dominio spaziale devono essere inviati in un modulo interleaved di dominanza chroaved corrispondente al modello di interleaving del formato YUV. Il valore deve essere 0 a meno che ConfigResidDiffHost sia 1 e il formato YUV sia NV12 o NV21.

ConfigIntraResidUnsigned

Indica il metodo di rappresentazione dei blocchi di domini spaziali dei dati di differenza residua per i blocchi intra quando si usa la decodifica della differenza basata su host.

Se ConfigResidDiffHost è 1 e ConfigIntraResidUnsigned è 0, i blocchi di dati di differenza residua del dominio spaziale per i macroblock devono essere inviati come segue:

  • In un'immagine non interna, se ConfigSpatialResid8 è 0, i blocchi di dati di differenza residua del dominio spaziale per i macroblock vengono inviati come valori integer con segno a 16 bit rispetto a un valore di riferimento costante pari a 2^(BPP-1).
  • In un'immagine non interna, se ConfigSpatialResid8 è 1, i blocchi di dati di differenza residua del dominio spaziale per i macroblock vengono inviati come valori interi con segno a 8 bit rispetto a un valore di riferimento costante pari a 2^(BPP-1).
  • In un'immagine interna, se BPP è 8, i blocchi di dati di differenza residua del dominio spaziale per i macroblock vengono inviati come valori interi con segno a 8 bit rispetto a un valore di riferimento costante pari a 2^(BPP-1), indipendentemente dal valore di ConfigSpatialResid8.

Se ConfigResidDiffHost è 1 e ConfigIntraResidUnsigned è 1, i blocchi di dati di differenza residua del dominio spaziale per i macroblock devono essere inviati come segue:

  • In un'immagine non interna, se ConfigSpatialResid8 è 0, i blocchi di dati di differenza residua del dominio spaziale per i macroblock devono essere inviati come valori integer senza segno a 16 bit rispetto a un valore di riferimento costante pari a 0.
  • In un'immagine non interna, se ConfigSpatialResid8 è 1, i blocchi di dati di differenza residua del dominio spaziale per i macroblock vengono inviati come valori integer senza segno a 8 bit rispetto a un valore di riferimento costante pari a 0.
  • In un'immagine interna, se BPP è 8, i blocchi di dati di differenza residua del dominio spaziale per i macroblock vengono inviati come valori interi senza segno a 8 bit rispetto a un valore di riferimento costante pari a 0, indipendentemente dal valore di ConfigSpatialResid8.

Il valore del membro deve essere 0 a meno che ConfigResidDiffHost non sia 1.

ConfigResidDiffAccelerator

Se il valore è 1, i blocchi del dominio di trasformazione dei dati del coefficiente possono essere inviati dall'host per IDCT basato sull'acceleratore. Se il valore è 0, l'IDCT basato sull'acceleratore non verrà usato. Se sia ConfigResidDiffHost che ConfigResidDiffAccelerator sono 1, ciò indica che alcune differenze residui di decodifica verranno eseguite nell'host e alcune sull'acceleratore, come indicato dai comandi di controllo a livello di macroblock.

Il valore deve essere 0 se ConfigBitstreamRaw è 1.

ConfigHostInverseScan

Se il valore è 1, l'analisi inversa per l'elaborazione del blocco del dominio di trasformazione verrà eseguita nell'host e gli indici assoluti verranno inviati invece per eventuali coefficienti di trasformazione. Se il valore è 0, l'analisi inversa verrà eseguita sull'acceleratore.

Il valore deve essere 0 se ConfigResidDiffAccelerator è 0 o se Config4GroupedCoefs è 1.

ConfigSpecificIDCT

Se il valore è 1, viene utilizzato l'IDCT specificato nell'allegato W della raccomandazione ITU-T H.263. Se il valore è 0, è possibile usare qualsiasi IDCT conforme per l'IDCT off-host.

L'allegato H.263 non è conforme ai requisiti IDCT di MPEG-2 corrigendum 2, pertanto il valore non deve essere 1 per l'uso con il video MPEG-2.

Il valore deve essere 0 se ConfigResidDiffAccelerator è 0, che indica la decodifica della differenza residua basata su host.

Config4GroupedCoefs

Se il valore è 1, i coefficienti di trasformazione per IDCT off-host verranno inviati usando la struttura DXVA_TCoef4Group . Se il valore è 0, viene utilizzata la struttura DXVA_TCoefSingle . Il valore deve essere 0 se ConfigResidDiffAccelerator è 0 o se ConfigHostInverseScan è 1.

ConfigMinRenderTargetBuffCount

Specifica il numero di fotogrammi elaborati dal dispositivo decodificatore in qualsiasi momento.

ConfigDecoderSpecific

Contiene informazioni di configurazione specifiche del decodificatore.

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Intestazione d3d10umddi.h (include D3d10umddi.h)

Vedi anche

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle