Condividi tramite


DXVA_PictureParameters struttura (dxva.h)

La struttura DXVA_PictureParameters viene inviata dal decodificatore host all'acceleratore per fornire i parametri a livello di immagine di un'immagine compressa per la decodifica sull'acceleratore.

Sintassi

typedef struct _DXVA_PictureParameters {
  WORD wDecodedPictureIndex;
  WORD wDeblockedPictureIndex;
  WORD wForwardRefPictureIndex;
  WORD wBackwardRefPictureIndex;
  WORD wPicWidthInMBminus1;
  WORD wPicHeightInMBminus1;
  BYTE bMacroblockWidthMinus1;
  BYTE bMacroblockHeightMinus1;
  BYTE bBlockWidthMinus1;
  BYTE bBlockHeightMinus1;
  BYTE bBPPminus1;
  BYTE bPicStructure;
  BYTE bSecondField;
  BYTE bPicIntra;
  BYTE bPicBackwardPrediction;
  BYTE bBidirectionalAveragingMode;
  BYTE bMVprecisionAndChromaRelation;
  BYTE bChromaFormat;
  BYTE bPicScanFixed;
  BYTE bPicScanMethod;
  BYTE bPicReadbackRequests;
  BYTE bRcontrol;
  BYTE bPicSpatialResid8;
  BYTE bPicOverflowBlocks;
  BYTE bPicExtrapolation;
  BYTE bPicDeblocked;
  BYTE bPicDeblockConfined;
  BYTE bPic4MVallowed;
  BYTE bPicOBMC;
  BYTE bPicBinPB;
  BYTE bMV_RPS;
  BYTE bReservedBits;
  WORD wBitstreamFcodes;
  WORD wBitstreamPCEelements;
  BYTE bBitstreamConcealmentNeed;
  BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;

Members

wDecodedPictureIndex

Specifica il buffer del frame di destinazione per i blocchi macro decodificati.

wDeblockedPictureIndex

Specifica il buffer del frame di destinazione per l'immagine di output deblocked quando bPicDeblocked è 1. Questo membro non ha alcun significato e deve essere zero se bPicDeblocked è zero. Questo membro può essere uguale a wDecodedPictureIndex.

wForwardRefPictureIndex

Specifica l'indice del buffer del frame dell'immagine da usare come immagine di riferimento per la stima in avanti dell'immagine corrente. Non deve essere uguale a wDecodedPictureIndex. Questo membro deve essere 0xFFFF se bPicIntra è 1.

wBackwardRefPictureIndex

Specifica l'indice del buffer frame dell'immagine da usare come immagine di riferimento per la stima indietro dell'immagine corrente. Questo membro non deve essere uguale a wDecodedPictureIndex se viene usata la stima del movimento di riferimento indietro. Questo membro deve essere 0xFFFF se bPicBackwardPrediction è zero.

wPicWidthInMBminus1

Specifica la larghezza dell'immagine corrente in unità di macroblock, meno 1. La larghezza dell'immagine in macroblocks deriva dall'aggiunta di 1 a wPicWidthInMBminus1.

wPicHeightInMBminus1

Specifica l'altezza dell'immagine corrente in unità di macroblock, meno 1. L'altezza dell'immagine in macroblocks deriva dall'aggiunta di 1 a wPicHeightInMBminus1.

bMacroblockWidthMinus1

Specifica la larghezza dell'esempio di luminanza di destinazione di un blocco macro, meno 1. Questo valore è uguale a 15 per MPEG-1, MPEG-2, H.263 e MPEG-4.

bMacroblockHeightMinus1

Specifica l'altezza dell'esempio di luminanza di destinazione di un blocco macro, meno 1. Questo valore è uguale a 15 per MPEG-1, MPEG-2, H.261, H.263 e MPEG-4.

bBlockWidthMinus1

Specifica la larghezza del blocco di un blocco di differenza rimanente meno 1. Questo valore è uguale a 7 per MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Si tratta di 7 se il membro bConfig4GroupedCoefs della struttura DXVA_ConfigPictureDecode è 1. I blocchi di differenza residui all'interno di un blocco macro vengono inviati nell'ordine specificato come nelle figure MPEG-2 6-10, 6-11 e 6-12 (ordine di analisi raster per Y, seguito da tutti i blocchi 4:2:0 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. Un termine derivato denominato WT è formato aggiungendo 1 a bBlockWidthMinus1.

bBlockHeightMinus1

Specifica l'altezza del blocco di un blocco di differenza rimanente, meno 1. Questo valore è uguale a 7 per MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Si tratta di 7 se bConfig4GroupedCoefs è 1. Un termine derivato denominato HT è formato aggiungendo 1 a bBlockHeightMinus1.

bBPPminus1

Specifica il numero di bit per pixel per i valori di esempio video, meno 1. Si tratta di almeno 7 (che indica pixel a 8 bit). Questo valore è uguale a 7 per MPEG-1, MPEG-2, H.261 e H.263. Un numero maggiore di bit per pixel è supportato in alcune modalità operative di MPEG-4. Un termine derivato denominato BPP è formato aggiungendo 1 a bBPPminus1.

bPicStructure

Indica se l'immagine corrente è un'immagine in primo campo (un valore 1), un'immagine in basso (un valore 2) o un'immagine della cornice (valore 3). Nella codifica strutturata con frame di analisi progressiva, ad esempio in H.261, bPicStructure è 3. Un valore derivato PicCurrentField è definito come zero a meno che bPicStructure non sia 2 (campo inferiore). In questo caso, è 1. Questo membro ha lo stesso significato della variabile picture_structure definita nella sezione 6.3.10 e tabella 6-14 di MPEG-2 (H.262).

bSecondField

Indica se, nel caso della codifica strutturata dal campo (quando bPicStructure è 1 o 2), il campo corrente è il secondo campo di un'immagine. Viene usato per determinare se il campo di parità opposta utilizzato come riferimento per le linee di compensazione del movimento opposto è il campo di parità opposta dell'immagine di riferimento o il campo di parità opposta dell'immagine corrente. Se bSecondField è 1, il campo corrente è il secondo campo di un'immagine e il campo usato come riferimento per le linee di parità opposta per la compensazione del movimento sono le linee di parità opposta dell'immagine corrente. In entrambi i casi, il campo usato come riferimento per le stesse linee di parità per la compensazione del movimento sono le stesse righe di parità dell'immagine di riferimento. In caso contrario, bSecondField è zero.

bPicIntra

Indica se è necessaria una stima con compensazione del movimento per questa immagine. Se bPicIntra è 1, tutti i macroblock vengono inviati con la struttura di comando DXVA_MBctrl_I_OffHostIDCT_1 o DXVA_MBctrl_I_HostResidDiff_1 controllo macroblock, in cui il flag IntraMacroblock è uguale a 1 . In questo caso, non viene eseguita alcuna stima compensata dal movimento per l'immagine. In caso contrario, alcuni blocchi macro dell'immagine potrebbero avere il parametro IntraMacroblock del comando di controllo macroblock uguale a zero e la struttura del controllo macroblock userà la struttura di controllo DXVA_MBctrl_P_HostResidDiff_1 o la struttura DXVA_MBctrl_P_OffHostIDCT_1 .

bPicBackwardPrediction

Indica se tutti i macroblock dell'immagine corrente potrebbero includere stime precedenti. Se bPicIntra è 1, bPicBackwardPrediction deve essere zero. Se bPicBackwardPrediction è zero, MotionBackward deve essere zero in tutti i comandi di controllo macroblock dell'immagine (all'interno di ogni DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 o DXVA_MBctrl_P_OffHostIDCT_1 struttura). Se bPicBackwardPrediction è 1, alcuni macroblock dell'immagine potrebbero avere motionbackward uguale a 1.

bBidirectionalAveragingMode

Indica il metodo di arrotondamento per combinare i piani di stima nella compensazione del movimento bidirezionale (utilizzata per le immagini B e il movimento dual-prime). Il valore zero indica la media arrotondata MPEG-1 e MPEG-2 (in cui i valori a metà tra due interi vengono arrotondati verso l'alto fino al successivo intero superiore) e il valore 1 indica la media troncata H.263 (in cui i valori a metà tra due interi vengono arrotondati verso il basso verso il basso successivo). bBidirectionalAveragingMode deve essere zero se non è necessaria alcuna media bidirezionale.

bMVprecisionAndChromaRelation

Questo membro indica la precisione dei vettori di movimento di luminanza e il modo in cui i vettori di movimento della dominanza sono derivati da vettori di movimento di luminanza.

La tabella seguente elenca i valori per questo membro con la precisione del vettore di movimento di luminanza specificata e una descrizione del modo in cui vengono derivati i vettori di movimento della dominanza.

Valore Descrizione
0 I vettori di movimento di luminanza hanno precisione di metà campione. I vettori di movimento chrominance sono derivati da vettori di movimento di luminanza in conformità con MPEG-2 (H.262).
1 I vettori di movimento di luminanza hanno precisione di metà campione. I vettori di movimento di dominanza sono derivati da vettori di movimento di luminanza in conformità con H.263 .
2 I vettori di movimento di luminanza hanno precisione di esempio completa. I vettori di movimento chrominance sono derivati da vettori di movimento di luminanza in base a H.261 (suddividendo per due e troncando verso zero a valori di esempio completi).
3 Riservato.

bChromaFormat

Influisce sul numero di blocchi di errore di stima previsti dall'acceleratore. Questa variabile è definita in MPEG-2 (H.262). Per MPEG-1, MPEG-2 Main Profile, H.261 e H.263 bitstream, questo valore deve essere sempre impostato su 1, che indica il formato 4:2:0. Se un valore 2 indica 4:2:2 e se un valore pari a 3 indica il campionamento 4:4:4. Questo membro deve essere uguale a 1 se il membro bConfig4GroupedCoefs di DXVA_ConfigPictureDecode è 1 (poiché l'operazione bConfig4GroupedCoefs non include l'indicazione EOB necessaria all'interno dei dati del coefficiente in formati 4:2:2 e 4:4:4).

Nota

Il cromatico orizzontale differisce leggermente tra H.261, H.263 e MPEG-1 rispetto a MPEG-2 e MPEG-4. Si presuppone che questa differenza sia abbastanza piccola da ignorare.

bPicScanFixed

Quando si usa l'elaborazione IDCT basata su acceleratore di blocchi di differenza residui, un valore pari a 1 per questo flag indica che il metodo di analisi inversa è lo stesso per tutti i macroblock nell'immagine. Un valore pari a zero indica che non è. Questo membro deve essere 1 se il membro bConfigHostInverseScan è 1 o se il membro bConfigResidDiffAccelerator è zero in DXVA_ConfigPictureDecode.

bPicScanMethod

Indica il metodo di analisi inversa fisso per l'immagine quando bPicScanFixed è 1. Quando bPicScanFixed è zero, questo membro non ha alcun significato e deve avere un valore pari a zero.

Se il membro bConfigHostInverseScan di DXVA_ConfigPictureDecode è zero, il metodo di analisi definito da questo membro può essere uno dei seguenti.

bPicScanMethod Metodo Scan
0 Analisi zigzag (MPEG-2)
1 Analisi verticale alternativa (MPEG-2)
2 Analisi orizzontale alternativa (H.263)

Se il membro bConfigHostInverseScan di DXVA_ConfigPictureDecode è 1, il metodo di analisi definito da bPicScanMethod deve essere impostato come indicato di seguito.

bPicScanMethod Metodo Scan
3 Analisi arbitraria con indirizzo di coefficiente assoluto.

bPicReadbackRequests

Indica se le richieste di controllo read-back vengono rilasciate per l'immagine corrente. Un valore 1 indica che le richieste di lettura-back sono presenti e un valore pari a zero indica che non sono. Le richieste di lettura-back indicano che i valori di macroblocks vengono letti nell'immagine decodificata e deblocked finale (se il deblocking viene applicato con wDeblockedPictureIndex uguale a wDecodedPictureIndex).

bRcontrol

Definisce il metodo di arrotondamento da usare per la compensazione del movimento di metà campione. Questa variabile è definita nella sezione H.263 6.1.2. Un valore pari a zero indica il metodo di arrotondamento a metà campione trovato in MPEG-1, MPEG-2 e la prima versione di H.263. Un valore pari a 1 indica il metodo di arrotondamento che include una distorsione verso il basso che può essere selezionata in alcune modalità facoltative di H.263 e MPEG-4. È senza senso per H.261, perché H.261 non ha alcuna compensazione del movimento di metà campione. Deve essere impostato su zero per tutti i bitstream MPEG-1 e MPEG-2 per conformarsi all'operatore di arrotondamento definito da tali standard.

bPicSpatialResid8

Indica il modo in cui i blocchi di differenza di dominio spaziale vengono inviati all'acceleratore dall'host. Un valore pari a 1 indica che i blocchi di differenza di dominio spaziale per la decodifica della differenza residua basata su host possono essere inviati usando esempi a 8 bit e un valore pari a zero indica che non è possibile.

Questo membro deve essere zero se il membro bConfigResidDiffHost di DXVA_ConfigPictureDecode è zero o se BPP è maggiore di 8. Questo membro deve essere 1 se BPP è 8, bPicIntra è 1 e bConfigResidDiffHost è 1. Questo membro deve essere 1 se il membro bConfigSpatialResid8 di DXVA_ConfigPictureDecode è 1.

Se questo membro è uguale a 1, i macroblock tra domini spaziali vengono inviati come valori a 8 bit (firmati o non firmati, come determinato dal membro bConfigIntraResidUnsigned di DXVA_ConfigPictureDecode) e le differenze di macroblock nonintra dominio spaziale vengono inviate come valori di differenza di differenza a 8 bit firmati rispetto a una stima con compensazione del movimento.

Il membro bPicSpatialResid8 differisce dal membro bConfigSpatialResid8 di DXVA_ConfigPictureDecode in cui è un'indicazione per un'immagine specifica, non un'indicazione globale per l'intera sequenza video. In alcuni casi, ad esempio in un'immagine intra con BPP uguale a 8, bPicSpatialResid8 sarà 1 anche se bConfigSpatialResid8 potrebbe essere zero.

bPicOverflowBlocks

Indica se i blocchi di differenza di dominio spaziale vengono inviati all'acceleratore dall'host usando blocchi di overflow. Un valore 1 indica che i blocchi di differenza di dominio spaziale per la decodifica della differenza residua basata su host di un'immagine possono essere inviati usando blocchi di overflow. Un valore pari a zero indica che i blocchi di differenza di dominio spaziale non vengono inviati usando blocchi di overflow. Questo membro deve essere zero se bConfigResidDiffHost è zero o se bConfigSpatialResid8 è zero o se BPP è maggiore di 8. I parametri bConfigResidDiffHost e bConfigSpatialResid8 sono membri di DXVA_ConfigPictureDecode. bPicOverflowBlocks indica se possono essere presenti blocchi di overflow per l'immagine specifica. In un'immagine intra con BPP uguale a 8, bPicOverflowBlocks deve essere zero perché in questo caso non sono necessari blocchi di overflow.

bPicExtrapolation

Indica se i vettori di movimento sui limiti dell'immagine sono consentiti come specificato dall'allegato H.263 D e MPEG-4. Ciò richiede l'allocazione di piani immagine che sono due macroblock più grandi (un blocco di macro aggiuntivo a sinistra e un altro a destra) e due macroblocks più alti (un blocco di macro aggiuntivo nella parte superiore e un altro nella parte inferiore) rispetto alle dimensioni dell'immagine decodificate o ritaglio dell'indirizzo di ogni singolo pixel accesso all'interno dei limiti dell'immagine. Gli indirizzi macroblock in questa specifica sono per i macroblock nell'interno dell'immagine, non incluso il riempimento.

bPicDeblocked

Indica se i comandi di deblocking vengono inviati per questa immagine per creare un'immagine di output sbloccata. L'immagine di output sbloccata viene inserita nel buffer immagine indicato da wDeblockedPictureIndex. Se bPicDeblocked è 1, vengono inviati comandi di deblocking e viene generato il frame deblocked. Se bPicDeblocked è zero, non vengono inviati comandi di deblocking e non viene generata alcuna immagine deblocked.

bPicDeblockConfined

Indica se il deblocking dei buffer dei comandi del filtro limita l'effetto di deblocking delle operazioni di filtro al set di macroblocks contenuti nel buffer dei comandi del filtro deblocking.

bPic4MVallowed

Specifica se quattro vettori di movimento di riferimento avanti per macroblock sono consentiti come usato in H.263 Allegati F e J.

bPicOBMC

Specifica se la compensazione del movimento per l'immagine corrente funziona usando la compensazione del movimento a blocchi sovrapposta come specificato nell'allegato H.263 F. Deve essere zero se bPic4MVallowed è zero.

bPicBinPB

Specifica se i blocchi macro stimati in modo bidirezionale nell'immagine usano la compensazione del movimento B-frame. Ciò limita l'area stimata in modo bidirezionale per ogni macroblock all'area del blocco macro corrispondente nell'immagine di riferimento indietro, come specificato in Allegati G e M di H.263.

bMV_RPS

Specifica l'uso della selezione di immagini di riferimento del vettore di movimento. Se bMV_RPS è 1, questo indica che un indice di immagine di riferimento viene inviato per ogni vettore di movimento anziché solo avanti e possibilmente indici di immagine di movimento indietro per l'intera immagine. Se bMV_RPS è 1, i membri wForwardRefPictureIndex e wBackwardRefPictureIndex non hanno alcun significato e devono essere zero.

bReservedBits

Questo è riservato per l'imballaggio e l'allineamento. Deve essere zero.

wBitstreamFcodes

Indica il vettore di movimento f_code valori definiti in MPEG-2 per l'elaborazione bitstream non elaborata. Ogni f_code valore accetta 4 bit. Questi valori vengono compressi in una parola a 16 bit come indicato di seguito.

BITS Descrizione
da 12 a 15 (bit più significativi) f_code[0][0]: F_code orizzontale in avanti
Da 8 a 11 f_code[0][1]: F_code verticale in avanti
Da 4 a 7 f_code[1][0]: F_code orizzontale indietro
da 0 a 3 (bit meno significativi) f_code[1][1]: F_code verticale indietro

Quando il membro bConfigBitstreamRaw della struttura DXVA_ConfigPictureDecode è 1, wBitstreamFcodes contiene quattro valori di vettore di movimento f_code . Se bConfigBitstreamRaw è 1 e uno dei quattro valori f_code non è necessario o irrilevante a causa della struttura dei dati bitstream o a causa del valore f_code non necessario nella sintassi bitstream di codifica video pertinente (ad esempio in H.261 o H.263), ogni valore f_code irrilevante è 0xF.

Se il membro bConfigBitstreamRaw della struttura DXVA_ConfigPictureDecode è zero, wBitstreamFcodes è impostato su 0xFFFF (tutti i valori f_code sono impostati su 0xF).

Nota

I bitstream MPEG-1 forniscono queste informazioni in un formato diverso. Pertanto, per i flussi MPEG-1, f_code[0][0] e f_code[0][1] sono uguali ai forward_f_code MPEG-1 e f_code[1][0] e f_code[1][1] sono uguali alla backward_f_code MPEG-1.

wBitstreamPCEelements

Quando il membro bConfigBitstreamRaw di DXVA_ConfigPictureDecode è 1, questo membro contiene un set di flag necessari per il processo di decodifica bitstream del video MPEG-2. Non viene usato e deve essere zero quando bConfigBitstreamRaw è zero e per il video non MPEG-2. I bit in questo membro sono definiti dalla loro corrispondenza con elementi bitstream dell'estensione di codifica immagine MPEG-2, come indicato di seguito.

BITS Descrizione
14 e 15 IntraDCprecision è uguale a intra_dc_precision.
12 e 13 AnotherPicStructure è uguale a picture_structure. Questa operazione deve essere uguale al membro bPicStructure di questa struttura.
11 TopFieldFirst è uguale a top_field_first.
10 FrameDCTprediction è uguale a frame_pred_frame_dct.
9 La mascheraMV è uguale a concealment_motion_vectors.
8 QuantiScaleType è uguale a q_scale_type.
7 IntraVLCformat è uguale a intra_vlc_format.
6 AlternateScan è uguale a alternate_scan.
5 RepeatFirstField è uguale a repeat_first_field (non necessario dall'acceleratore).
4 Chroma420type è uguale a chroma_420_type (non necessario dall'acceleratore e limitato da MPEG-2 per essere uguale a progressive_frame).
3 ProgressiveFrame è uguale a progressive_frame.
0, 1 e 2 Bit riservati. Questi sono i bit meno significativi.

bBitstreamConcealmentNeed

Indica la probabilità di errori nei dati bitstream quando il membro bConfigBitstreamRaw della struttura DXVA_ConfigPictureDecode è 1. Deve essere zero se bConfigBitstreamRaw è zero.

Gli acceleratori video devono essere progettati per non riuscire o bloccare, indipendentemente dal contenuto dei dati assegnati a loro. Pertanto, può essere utile per un acceleratore di video avere informazioni sulla valutazione dell'host della probabilità di errori sintattici. Questo è per determinare se è necessario richiamare un algoritmo di nascondimento degli errori più complesso che potrebbe rallentare il processo di decodifica bitstream. I valori consentiti per questo membro sono i seguenti (tutti gli altri valori sono riservati).

Valore Significato
0 Il bitstream è improbabile che contenga una quantità significativa di errori nel formato sintattico.
1 Il bitstream può contenere alcuni errori. Questi errori sono probabilmente infrequenti (ad esempio, un errore una volta o due volte all'ora).
2 È probabile che il bitstream contenga alcuni errori. Questi errori potrebbero verificarsi con una frequenza che potrebbe influire sull'esperienza utente (ad esempio un errore ogni cinque-dieci minuti).
3 Il bitstream è probabile che contenga errori di formato relativamente significativi, gravi e frequenti (ad esempio uno o più errori al minuto).

bBitstreamConcealmentMethod

Specifica un metodo predefinito preferito per l'elaborazione del nascondimento degli errori quando il membro bConfigBitstreamRaw della struttura DXVA_ConfigPictureDecode è 1. Deve essere zero se bConfigBitstreamRaw è zero. I valori consentiti per questo membro sono i seguenti (tutti gli altri valori sono riservati).

Valore Metodo di nascondimento degli errori
0 Sconosciuto o non specificato.
1 Nascondere intra-immagine nello spazio all'interno dell'immagine.
2 Immagine di riferimento al movimento in avanti per l'occultamento tra immagini (da usare più in genere in un'immagine P o in un'immagine B più vicina alla sua immagine di riferimento in movimento avanti rispetto alla sua immagine di riferimento al movimento indietro).
3 Immagine di riferimento al movimento indietro per l'occultamento tra immagini (da usare più in genere in un'immagine B più vicina all'immagine di riferimento al movimento indietro rispetto all'immagine di riferimento al movimento avanti).

Commenti

Alcuni membri di questa struttura sono vincolati a valori specifici dalla configurazione stabilita usando la struttura DXVA_ConfigPictureDecode . Dopo che i parametri a livello di immagine vengono trasmessi usando DXVA_PictureParameters, il processo di decodifica dell'immagine è principalmente disciplinato dai comandi di controllo macroblock formati usando la DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 o DXVA_MBctrl_P_OffHostIDCT_1 strutture.

Requisiti

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

Vedi anche

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1