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;
Membri
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 (un nome GUID definito in Dxva.h). Se ConfigBitstreamRaw è 0, il valore deve essere DXVA_NoEncrypt.
Se impostato su D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, 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 sulla chiave usate per decrittografare il fotogramma. |
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 di controllo dei blocchi di macro. Se non viene applicata alcuna crittografia, il valore viene DXVA_NoEncrypt (un 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 di differenza residua (buffer contenenti dati di dominio spaziale o set di coefficienti di dominio di trasformazione per la trasformazione del coseno discreto inversa basata su acceleratore [IDCT]). Se non viene applicata alcuna crittografia, il valore viene DXVA_NoEncrypt (un nome GUID definito in Dxva.h). Se configBitstreamRaw è 1, il valore deve essere DXVA_NoEncrypt.
ConfigBitstreamRaw
Indica se il decodificatore host invia dati di flusso di bit non elaborati. Se il valore è 1, i dati per le immagini verranno inviati in buffer di flusso di bit come contenuto del flusso di bit non elaborato. Se il valore è 0, i dati immagine verranno inviati usando buffer dei comandi di 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 di controllo macroblock all'interno di ogni buffer dei comandi di controllo macroblock sono in ordine di analisi raster. Se il valore è 0, l'ordine è arbitrario. Per alcuni tipi di flussi di bit, l'ordine raster forzato aumenta notevolmente il numero di buffer di controllo di blocco macro 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 macroblock non interni usando campioni con segno a 8 bit e per i macroblock in immagini stimate (non intra) in un formato che dipende dal valore di ConfigIntraResidUnsigned:
- Se configIntraResidUnsigned è 0, i blocchi di dominio spaziale per gli interblock vengono inviati come valori integer 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 gli intra macroblock vengono inviati come valori interi 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 dati di domini spaziali di differenza residua per i macroblock non intra-intra usando campioni con segno a 16 bit e per gli interblock 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 interblock vengono inviati come valori integer 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 gli interblock vengono inviati come valori interi 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 intra, i blocchi di dominio spaziale devono essere inviati usando campioni a 8 bit se i bit per pixel (BPP) sono 8 e usando campioni a 16 bit se BPP > 8. Se configIntraResidUnsigned è 0, questi esempi vengono inviati come valori interi 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 della differenza a 8 bit vengono sottratti anziché aggiunti. Il valore deve essere 0 a meno che ConfigSpatialResid8 sia 1.
La possibilità di sottrarre le differenze anziché aggiungerle consente la decodifica a 8 bit per essere completamente conforme all'intero intervallo ±255 di valori 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 in un intervallo a 8 bit nei blocchi host e di dominio spaziale per i macroblock non intra-intra devono essere ritagliati in 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 chrominance corrispondente al modello di interleaving in formato YUV. Il valore deve essere 0 a meno che ConfigResidDiffHost sia 1 e che il formato YUV sia NV12 o NV21.
ConfigIntraResidUnsigned
Indica il metodo di rappresentazione dei blocchi di dominio spaziale 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, è necessario inviare blocchi di dati di differenza del dominio spaziale per i macroblock 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 interi 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 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, è necessario inviare blocchi di dati di differenza residua del dominio spaziale per i macroblock come indicato di seguito:
- 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 interi 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 interi 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 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 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 su acceleratore. Se il valore è 0, non verrà usato IDCT basato sull'acceleratore. Se sia ConfigResidDiffHost che ConfigResidDiffAccelerator sono 1, ciò indica che sull'host verranno eseguite alcune differenze residui 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 dell'elaborazione dei blocchi del dominio di trasformazione verrà eseguita nell'host e gli indici assoluti verranno inviati invece per qualsiasi coefficiente 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 di ITU-T raccomandazione H.263. Se il valore è 0, è possibile usare qualsiasi IDCT conforme per IDCT fuori 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 puramente basata sull'host.
Config4GroupedCoefs
Se il valore è 1, i coefficienti di trasformazione per IDCT fuori 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.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 8 |
server minimo supportato | Windows Server 2012 |
intestazione | d3d10umddi.h (include D3d10umddi.h) |