struttura DXVA_MBctrl_P_HostResidDiff_1 (dxva.h)
La struttura DXVA_MBctrl_P_HostResidDiff_1 viene inviata una volta per ogni macroblock dal decodificatore host all'acceleratore per specificare i comandi di controllo macroblock per la maggior parte dei casi di immagine 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;
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 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 dell'immagine 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 della differenza residua del dominio spaziale vengono inviati o se i coefficienti di trasformazione vengono inviati per IDCT off-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 seguente. |
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 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 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 del 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 macroblock 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 nell'output del processo di filtro 2D (valori a metà intero o superiore arrotondati per errotondamento). |
3 | Motion4MV Variabile che indica che il movimento in avanti utilizza un vettore di movimento distinto per ognuno dei quattro blocchi di luminanza nel blocco macro, come usato in H.263 Convocare 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 ulteriormente nella sezione Osservazioni seguente. |
1 | MotionForward Usato per la variabile macroblock_motion_forward corrispondente in MPEG-2. L'uso di questo bit è illustrato ulteriormente nella sezione Osservazioni seguente. |
0 | IntraMacroblock Indica che il blocco macro è 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 seguente. |
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 della 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 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 analisi raster, 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 (ovvero i blocchi con bit (11-i) uguali 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 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 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
Specifica i blocchi del blocco macro che utilizzano i dati di differenza residua di overflow.
Quando si usa la decodifica della differenza residua basata su host con il membro bPicOverflowBlocks di DXVA_PictureParameters uguale a 1 e IntraMacroblock uguale a zero (metodo di overflow da 8 a 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 (aumento i).
dwReservedBits2
Bit riservati utilizzati 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 .
Commenti
Ogni macroblock ignorato specificato da MBskipsFollowing deve essere generato in modo matematico equivalente all'incremento del valore di wMBaddress e quindi alla ripetizione dello 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 della 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 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) |