Condividi tramite


DXVA_MBctrl_P_OffHostIDCT_1 struttura (dxva.h)

La struttura DXVA_MBctrl_P_OffHostIDCT_1 viene inviata una volta per macroblock dal decodificatore host all'acceleratore per specificare i comandi di controllo macroblock per la maggior parte delle immagini nontra usando l'IDCT off-host.

Sintassi

typedef struct _DXVA_MBctrl_P_OffHostIDCT_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  BYTE         bNumCoef[DXVA_NumBlocksPerMB_420];
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_OffHostIDCT_1;

Members

wMBaddress

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

wMBtype

Specifica il tipo di macroblock da elaborare. I bit seguenti definiscono l'elaborazione di macroblock.

Bit Descrizione
Da 15 a 12 MvertFieldSel_3 (bit 15 il bit più significativo) tramite MvertFieldSel_0 (bit 12)
Specifica la selezione del campo verticale 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 della 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 delle differenze di dominio spaziale vengono inviati o se i coefficienti di trasformazione vengono inviati per IDCT off-host per il macroblock corrente.
Questo flag deve essere zero se bConfigResidDiffHost è zero. Questo flag deve essere 1 se bConfigResidDiffAccelerator è zero. Questo flag è sempre uguale a zero in DXVA_MBctrl_P_OffHostIDCT_1.
9 e 8 MotionType
Specifica il tipo di movimento nell'immagine. Ad esempio, per il movimento basato su fotogrammi con una struttura dell'immagine del fotogramma (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 frame_motion_type o field_motion_type bit in 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
Specifica il metodo di analisi da usare.
Questa operazione deve essere uguale a bPicScanMethod se bPicScanFixed è 1.
Se bConfigHostInverseScan è zero, MBscanMethod deve essere uno dei valori seguenti:
  • Bit 6 è zero e bit 7 è zero per l'analisi zigzag (MPEG-2 Figura 7-2).
  • Bit 6 è 1 e bit 7 è zero per l'analisi verticale alternativa.
  • Bit 6 è zero e bit 7 è 1 per l'analisi orizzontale alternativa.
Se bConfigHostInverseScan è 1, MBscanMethod deve essere uguale al valore seguente:
  • Bit 6 è 1 e bit 7 è 1 per l'analisi arbitraria con indirizzo coefficiente assoluto.
Sia bPicScanMethod che bPicScanFixed sono membri di DXVA_PictureParameters . bConfigHostInverseScan è un membro di DXVA_ConfigPictureDecode.
5 FieldResidual
Indica se i blocchi di differenza rimanenti usano una struttura IDCT di campo come specificato in MPEG-2.
Questo flag deve essere 1 se il membro bPicStructure di DXVA_PictureParameters è 1 o 2.
Quando viene usato per MPEG-2, FieldResidual deve essere zero se il flag frame_pred_frame_DCT nella sintassi MPEG-2 è 1 e deve essere uguale all'elemento dct_type della 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 separabile Â1/4, Â1/2, Â1/4 applicato sia orizzontalmente che verticalmente a tutti e sei i blocchi in un blocco H.261, ad eccezione dei bordi del blocco in cui uno dei tap 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 all'output del processo di filtro 2D (valori interi a metà o superiori arrotondati).
3 Motion4MV
Indica che il movimento in avanti usa un vettore di movimento distinto per ognuno dei quattro blocchi di luminanza nel macroblock, come usato in H.263 Allegati F e J.Motion4MV deve essere zero se MotionForward è zero o se il membro bPic4MVallowed di DXVA_PictureParameters è zero.
2 MotionBackward
Usato come specificato per il macroblock_motion_backwardparameter corrispondente in MPEG-2. Se il membro bPicBackwardPrediction di DXVA_PictureParameters è zero, MotionBackward deve essere zero. L'uso di questo bit è illustrato ulteriormente nella sezione Osservazioni seguenti.
1 MotionForward
Usato come specificato per il macroblock_motion_forward corrispondente in MPEG-2. L'uso di questo bit è illustrato ulteriormente nella sezione Osservazioni seguenti.
0 IntraMacroblock
Indica che il blocco macro viene codificato come intra e non vengono usati vettori di movimento per il blocco macro corrente. Corrisponde a macroblock_intrain MPEG-2. L'uso di questo bit è illustrato ulteriormente nella sezione Osservazioni seguenti.

dwMB_SNL

Specifica il numero di blocchi macro ignorati da generare seguendo il blocco macro corrente e indica la posizione dei dati delle differenze residui per i blocchi del blocco della 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 blocchi macro ignorati da generare seguendo il blocco macro corrente. MBdataLocation è un indice nel buffer di dati dei blocchi di differenza rimanente IDCT. Questo indice indica la posizione dei dati delle differenze rimanenti per i blocchi del blocco di macroblock corrente, espresso come più di 32 bit.

wPatternCode

Indica se i dati delle differenze residui vengono inviati per ogni blocco nel blocco macroblock.

Bit (11-i) di wPatternCode (dove i è l'indice del blocco all'interno del blocco macroblock e bit 0 rappresenta il bit meno significativo) indica se i dati di differenza rimanenti vengono inviati per block i (vedere Decodifica immagine orientata a Macroblock per altre informazioni). Il valore i è l'indice del blocco all'interno del macroblock 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 blocchi di Cr, seguiti da 4:4:4 blocchi di Cb, seguito da 4:4:4 blocchi di Cr. I dati per i blocchi codificati (blocchi con bit (11-i) uguali a 1) vengono trovati nel buffer di codifica rimanente nello stesso ordine di indicizzazione (aumento i). Per i dati MPEG-2:0 4:2, il valore di wPatternCode corrisponde allo spostamento del valore decodificato di CBP a sinistra per sei posizioni bit (quelle posizioni di bit inferiori usate per formati 4:2:2 e 4:4:4 chroma).

Se il membro bConfigSpatialResidInterleaved di DXVA_ConfigPictureDecode è 1, le differenze rimanenti basate su host vengono inviate in un modulo interleaved chroma corrispondente a quello del formato pixel YUV in uso. In questo caso, ogni coppia di blocchi cb e spazialemente corrispondente viene considerata come un'unica unità di struttura dei dati di differenza rimanente. 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 set di bit corrispondente in wPatternCode. Se il bit in wPatternCode per un blocco di dati specifico è zero, i valori di dati di differenza residui corrispondenti devono essere inviati come zero ogni volta che questa associazione richiede l'invio di un blocco di dati di differenza rimanente per un blocco con un bit wPatternCode uguale a zero.

bNumCoef[DXVA_NumBlocksPerMB_420]

Ogni valore nella matrice bNumCoef indica il numero di coefficienti nel buffer di dati di differenza rimanente per ogni blocco i del macroblock.

La sottoscrizione della matrice i è l'indice del blocco all'interno del macroblock come specificato nella figura video MPEG-2 Figura 6-10, 6-11 e 6-12 (ordine raster-scan per Y, seguito da Cb, seguito da Cr).

Questo membro viene usato solo quando il flag HostResidDiff (bit 10 in wMBtype) è zero e bChromaFormat è 1 (4:2:0). Se usato nei formati 4:2:2 o 4:4:4, aumenterebbe le dimensioni dei comandi di controllo di macroblock tipici oltre un limite di allineamento della memoria critico. Di conseguenza, il bit TCoefEOB all'interno della struttura DXVA_TCoefSingle viene usato per determinare il numero di coefficienti in ogni blocco in casi non 4:2:0.

Lo scopo di bNumCoef è indicare la quantità di dati presenti per ogni blocco nel buffer dei dati di differenza rimanente, espresso come numero di coefficienti presenti. Quando il membro bConfig4GroupedCoefs della struttura DXVA_ConfigPictureDecode è 1, bNumCoef può contenere il numero effettivo di coefficienti inviati per il blocco o tale valore arrotondato fino a essere un multiplo di quattro. I dati per questi coefficienti si trovano nel buffer di differenza rimanente nello stesso ordine.

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Matrice contenente il valore dei vettori di movimento per il blocco macro, ognuno rappresentato usando una struttura DXVA_MVvalue .

Commenti

Ogni macroblock ignorato specificato da MBskipsFollowing deve essere generato in modo matematico equivalente a aumentare il valore di wMBaddress e quindi ripetere lo stesso comando di controllo del blocco macro. Qualsiasi comando di controllo macroblock con un valore diverso da zero per MBskipsFollowing specifica il modo in cui deve essere eseguita la stima con compensazione del movimento per ogni macroblock da ignorare ed è equivalente (ad eccezione del valore di MBskipsFollowing) a una specifica esplicita nonskip della generazione della prima serie di macroblock ignorati. Pertanto, ogni volta che MBskipsFollowing non è zero, i valori seguenti devono essere uguali a zero: Motion4MV, IntraMacroblock e bNumCoef.

MBdataLocation è un indice nel buffer di dati del blocco di differenze residui IDCT, che indica la posizione dei dati di differenza residua per i blocchi del blocco macro corrente, espresso come multiplo di 32 bit. Deve essere zero per il 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 del controllo macroblock successivo.

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

Le combinazioni valide di IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSel e MVector sono visualizzate nelle tabelle della prima parte della struttura dei comandi del controllo Macroblock.

Requisiti

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

Vedi anche

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MVvalue

DXVA_PictureParameters

DXVA_TCoefSingle