Condividi tramite


struttura DXVA_MBctrl_P_HostResidDiff_1 (dxva.h)

La struttura DXVA_MBctrl_P_HostResidDiff_1 viene inviata una volta per ogni blocco di macro dal decodificatore host all'acceleratore per specificare i comandi di controllo macroblock per la maggior parte dei casi di immagini nontra quando si usa IDCT basato su host.

Sintassi

typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  WORD         wPC_Overflow;
  DWORD        dwReservedBits2;
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_1;

Membri

wMBaddress

Specifica l'indirizzo macroblock del blocco macro corrente nell'ordine di analisi raster. Per esempi di indirizzi di macroblock, vedere indirizzi di macroblock.

wMBtype

Specifica il tipo di blocco macro da elaborare. I bit seguenti definiscono il contenuto di wMBtype.

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 di immagini cornice (ad esempio, per H.261 e H.263), questi bit devono essere tutti zero. L'uso di questi bit è uguale a quello specificato per i bit corrispondenti nella sezione 6.3.17.2 di MPEG-2.
11 Bit riservato. Deve essere zero.
10 HostResidDiff
Specifica se i blocchi decodificati di differenza residua del dominio spaziale vengono inviati o se i coefficienti di trasformazione vengono inviati per IDCT fuori host per il macroblock corrente.
Il flag HostResidDif è sempre uguale a 1 in questa struttura. Questo flag deve essere zero se bConfigResidDiffHost è zero. Questo flag deve essere 1 se bConfigResidDiffAccelerator è zero.
9 e 8 MotionType
Specifica il tipo di movimento nell'immagine. Ad esempio, per il movimento basato su fotogrammi con una struttura dell'immagine cornice (come in H.261), il bit 9 deve essere 1 e bit 8 deve essere zero.
L'uso di questi bit corrisponde direttamente all'uso di bit frame_motion_type o field_motion_type nella sezione 6.3.17.1 e nelle tabelle 6-17 e 6-18 del video MPEG-2 quando questi bit sono presenti in MPEG-2. L'uso di questi bit è illustrato ulteriormente nella sezione Osservazioni seguenti.
7 e 6 MBscanMethod
Questa variabile non ha alcun significato e questi bit devono essere impostati su zero in questa struttura.
5 FieldResidual
Indica se i blocchi di differenza residua usano una struttura IDCT di campo come specificato in MPEG-2.
Deve essere 1 se il membro bPicStructure di DXVA_PictureParameters è 1 o 2. Se utilizzata per MPEG-2, FieldResidual deve essere zero se la variabile frame_pred_frame_DCT nella sintassi MPEG-2 è 1 e deve essere uguale alla variabile dct_type nella sintassi MPEG-2 se dct_type è presente per il blocco macro.
4 H261LoopFilter
Specifica se il filtro ciclo H.261 (sezione 3.2.3 di H.261) è attivo per la stima del blocco macro corrente. Il filtro ciclo H.261 è un filtro di 1/4 separabile, 1/2, 1/4 applicato sia orizzontalmente che verticalmente a tutti e sei i blocchi di un blocco macro H.261, ad eccezione dei bordi del blocco in cui uno dei rubinetti cadrebbe all'esterno del blocco. In questi casi, il filtro viene modificato in modo da avere coefficienti 0, 1, 0. La precisione aritmetica completa viene mantenuta con arrotondamento a interi a 8 bit nell'output del processo di filtro 2D (valori a metà intero o superiore arrotondati).
3 Motion4MV
Variabile che indica che il movimento in avanti usa un vettore di movimento distinto per ognuno dei quattro blocchi di luminanza nel blocco macro, come usato in H.263 Convocazioni F e J. Motion4MV deve essere zero se MotionForward è zero o se il membro bPic4MVallowed di DXVA_PictureParameters è zero.
2 MotionBackward
Usato nel modo specificato per la variabile macroblock_motion_backward corrispondente in MPEG-2. Se il membro bPicBackwardPrediction di DXVA_PictureParameters è zero, MotionBackward deve essere zero. L'uso di questo bit è illustrato più dettagliatamente nella sezione Osservazioni seguenti.
1 MotionForward
Usato per la variabile macroblock_motion_forward corrispondente in MPEG-2. L'uso di questo bit è illustrato più dettagliatamente nella sezione Osservazioni seguenti.
0 IntraMacroblock
Indica che il blocco macro viene codificato come intra e non vengono utilizzati vettori di movimento per il blocco macro corrente. Corrisponde a macroblock_intrain MPEG-2. L'uso di questo bit è illustrato più dettagliatamente nella sezione Osservazioni seguenti.

dwMB_SNL

Specifica il numero di macroblock ignorati da generare dopo il blocco macro corrente e indica la posizione dei dati di differenza residua per i blocchi del blocco macro 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 dei blocchi di differenza residua. 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 dati di differenza residua vengono inviati per ogni blocco nel blocco macro corrente.

Bit (11-i) di wPatternCode (dove bit zero è il bit meno significativo) indica se i dati di differenza residua vengono inviati per il blocco i, dove i è l'indice del blocco all'interno del blocco come specificato nelle figure MPEG-2 6-10, 6-11 e 6-12 (ordine di analisi raster per Y, seguito da 4:2:0 blocchi di Cb nell'ordine 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 (11-i) uguali a 1) si trovano nel buffer di codifica residuo nello stesso ordine di indicizzazione (aumentando i). Per i dati 4:2:0 MPEG-2, il valore di wPatternCode corrisponde allo spostamento del valore decodificato del CBP (modello a blocchi codificati) a sinistra di sei posizioni di bit (quelle posizioni di bit inferiori usate per i formati 4:2:2 e 4:4:4).

Se il bConfigSpatialResidInterleaved membro di DXVA_ConfigPictureDecode è 1, le differenze residui basate su host vengono inviate in un formato interleaved cromatico corrispondente a quello del formato pixel YUV in uso. In questo caso, ogni coppia cb e di blocchi cr corrispondente nello spazio viene considerata come una singola unità di struttura della differenza residua. Ciò 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 delle differenze residui 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 wPatternCode bit uguale a zero.

wPC_Overflow

Specifica quali blocchi del blocco macroblock utilizzano dati di differenza residua di overflow.

Quando si usa la differenza residua basata su host con il bPicOverflowBlocks membro di DXVA_PictureParameters uguale a 1 e IntraMacroblock uguale a zero (il metodo di overflow 8-8), wPC_Overflow contiene il codice del modello dei blocchi di overflow. Il codice del modello viene specificato nello stesso modo di wPatternCode. I dati per i blocchi di overflow codificati (i blocchi con bit (11-i) uguali a 1) si trovano nel buffer di codifica residuo nello stesso ordine di indicizzazione (aumentando i).

dwReservedBits2

Bit riservati usati per la compressione e l'allineamento. Deve essere zero.

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Matrice contenente il valore dei vettori di movimento per il blocco macro, ogni vettore di movimento è rappresentato da una struttura DXVA_MVvalue.

Osservazioni

Ogni macroblock ignorato specificato da MBskipsFollowing deve essere generato in modo matematico equivalente all'incremento del valore di wMBaddress e quindi ripetere lo stesso comando di controllo macroblock.

Il contenuto di un comando di controllo macroblock con un valore diverso da zero per MBskipsFollowing è equivalente (ad eccezione del valore di MBskipsFollowing) al contenuto della prima serie di macroblock ignorati. Pertanto, ogni volta che MBskipsFollowing non è zero, i membri e le variabili di struttura seguenti devono essere tutti uguali a zero: Motion4MV, IntraMacroblock, wPatternCodee wPC_Overflow. Ogni macroblock ignorato successivo viene quindi generato nello stesso modo del primo, ad eccezione dell'incremento del valore di wMBaddress.

MBdataLocation deve essere zero per il primo blocco macro nel buffer dei comandi del controllo macroblock. Per i macroblock diversi dal primo blocco macro nel buffer dei comandi del controllo macroblock, MBdataLocation può contenere qualsiasi valore se wPatternCode è zero. Quando wPatternCode è zero, i decodificatori sono consigliati ma non devono impostare questo valore su zero o sullo stesso valore del comando di controllo macroblock successivo.

Per altre informazioni sulla generazione di macroblock ignorati, vedere Generazione di macroblock ignorati.

Le combinazioni valide di IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSele MVector vengono visualizzate nelle tabelle in Prima parte della struttura dei comandi del controllo Macroblock.

Fabbisogno

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

Vedere anche

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters