struttura DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)
La struttura DXVA_MBctrl_I_HostResidDiff_1 viene inviata una volta per ogni macroblock dal decodificatore host all'acceleratore per specificare i comandi di controllo macroblock per un'immagine interna.
Sintassi
typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_1;
Members
wMBaddress
Specifica l'indirizzo macroblock del macroblock corrente nell'ordine di analisi raster. Per esempi di indirizzi di macroblock, vedere indirizzi di macroblock.
wMBtype
Specifica il tipo di macroblock in fase di elaborazione. I bit seguenti definiscono l'elaborazione di macroblock.
Bit | Descrizione |
---|---|
Da 15 a 12 | MvertFieldSel_3 (bit 15, bit più significativo) tramite MvertFieldSel_0 (bit 12) Specifica la selezione verticale dei campi per i vettori di movimento corrispondenti inviati più avanti nel comando di controllo macroblock. Per il movimento basato su fotogrammi con una struttura dell'immagine cornice (ad esempio, per H.261 e H.263), questi bit devono essere tutti zero. I bit in MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 e MvertFieldSel_3 corrispondono ai bit motion_vertical_field_select[r][s] nella sezione 6.3.17.2 di MPEG-2. |
11 | Bit riservato Deve essere zero. |
10 | HostResidDiff Specifica se i blocchi decodificati della differenza residua del dominio spaziale vengono inviati o se i coefficienti di trasformazione vengono inviati per IDCT off-host per il macroblock corrente. HostResidDiff è sempre uguale a 1 in questa struttura. Questo flag deve essere zero se bConfigResidDiffHost è zero. Questo flag deve essere 1 se bConfigResidDiffAccelerator è zero. I membri bConfigResidDiffHost e bConfigResidDiffAccelerator sono contenuti nella struttura DXVA_ConfigPictureDecode . |
9 e 8 | MotionType Deve essere zero. |
7 e 6 | MBscanMethod Questi bit non hanno alcun significato e devono essere impostati su zero. |
5 | FieldResidual Indica se i blocchi di differenza residua utilizzano una struttura IDCT di campo come specificato in MPEG-2. Deve essere 1 se il membro bPicStructure di DXVA_PictureParameters è 1 o 2. Se usato per MPEG-2, FieldResidual deve essere zero se il flag frame_pred_frame_DCT nella sintassi MPEG-2 è 1 e deve essere uguale alla variabile dct_type della sintassi MPEG-2 se dct_type è presente per il blocco macro. |
4 | H261LoopFilter Deve essere zero. |
3 | Motion4MV Deve essere zero. |
2 | MotionBackward Deve essere zero. |
1 | MotionForward Deve essere zero. |
0 | IntraMacroblock Deve essere 1. |
dwMB_SNL
Specifica il numero di macroblock ignorati da generare dopo il blocco macro corrente e indica la posizione dei dati della differenza residua per i blocchi del blocco macroblock corrente. Questo membro contiene due variabili: MBskipsFollowing nei 8 bit più significativi e MBdataLocation nei 24 bit meno significativi. MBskipsFollowing indica il numero di macroblock ignorati da generare dopo il blocco macro corrente. MBdataLocation è un indice nel buffer dei dati del blocco di differenze residui. Questo indice indica la posizione dei dati di differenza residua per i blocchi del blocco macro corrente, espresso come multiplo di 32 bit.
wPatternCode
Indica se i dati di differenza residua vengono inviati per ogni blocco nel blocco macroblock. In un'immagine interna, i dati di differenza residua vengono inviati per ogni blocco nel blocco macroblock. I bit in wPatternCode che fanno riferimento a tutti i blocchi del blocco macro corrente devono essere 1 in questa struttura.
Bit (11-i) di wPatternCode (dove bit zero è il bit meno significativo) indica se i dati di differenza residua vengono inviati per block i, dove i è l'indice del blocco all'interno del blocco come specificato nelle figure MPEG-2 figure 6-10, 6-11 e 6-12 (ordine di analisi raster per Y, seguito da 4:2:0 blocchi di Cb nell'ordine di raster-scan, seguito da 4:2:0 blocchi di Cr, seguiti da 4:2:2 blocchi di Cb, seguiti da 4:2:2 blocchi di Cr, seguiti da 4:4:4 blocchi di Cb, seguiti da 4:4:4 blocchi di Cr). I dati per i blocchi codificati (i blocchi con bit (11i) uguale a 1) si trovano nel buffer di codifica residuo nello stesso ordine di indicizzazione (aumento i). Per i dati 4:2:0 MPEG-2, il valore di wPatternCode corrisponde allo spostamento del valore decodificato del CBP (modello di blocco codificato) a sinistra di sei posizioni di bit (quelle posizioni di bit inferiori usate per formati 4:2:2 e 4:4:4:4).
Se il membro bConfigSpatialResidInterleaved della struttura DXVA_ConfigPictureDecode è 1, le differenze residui basate su host vengono inviate in un formato cromatico interleaved corrispondente a quello del formato pixel YUV in uso. In questo caso, ogni coppia cb e cr corrispondente nello spazio dei blocchi viene considerata come una singola unità di struttura della differenza residua. Questo non modifica il valore o il significato di wPatternCode, ma implica che entrambi i membri di ogni coppia di blocchi di dati Cb e Cr vengono inviati ogni volta che uno di questi blocchi di dati ha il bit corrispondente impostato in wPatternCode. Se il bit in wPatternCode per un blocco di dati specifico è zero, i valori dei dati di differenza rimanenti corrispondenti devono essere inviati come zero ogni volta che questa associazione richiede l'invio di un blocco di dati di differenza residua per un blocco con un bit wPatternCode uguale a zero.
wPC_Overflow
Deve essere zero.
dwReservedBits2
Bit riservati utilizzati per la compressione e l'allineamento. Deve essere zero.
Commenti
I macroblock ignorati non vengono usati da intra immagini, quindi la variabile MBskipsFollowing deve essere zero. La variabile MBdataLocation deve essere zero per il primo blocco macro nel buffer dei comandi del controllo macroblock. Per altre informazioni sulla generazione di macroblock ignorati, vedere Generazione di macroblock ignorati.
Requisiti
Requisito | Valore |
---|---|
Intestazione | dxva.h (include Dxva.h) |