Condividi tramite


struttura DXVA_PictureParameters (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;

Membri

wDecodedPictureIndex

Specifica il buffer dei fotogrammi di destinazione per i macroblock decodificati.

wDeblockedPictureIndex

Specifica il buffer dei fotogrammi di destinazione per l'immagine di output sbloccata 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 di frame dell'immagine da utilizzare 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 di frame dell'immagine da utilizzare 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 del campione 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 del campione di luminanza di destinazione di un blocco macro, meno 1. È 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 residua meno 1. È uguale a 7 per MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Questo è 7 se il bConfig4GroupedCoefs membro della struttura DXVA_ConfigPictureDecode è 1. I blocchi di differenza residua 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, seguito da 4:2:2 blocchi di Cb, seguito da 4:2:2 blocchi di Cr, seguito 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 residuo, meno 1. È uguale a 7 per MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Questo è 7 se bConfig4GroupedCoefs è 1. Un termine derivato denominato HT viene 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 i pixel a 8 bit). È 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 viene formato aggiungendo 1 a bBPPminus1.

bPicStructure

Indica se l'immagine corrente è un'immagine del campo superiore (un valore 1), un'immagine di campo inferiore (un valore 2) o un'immagine cornice (un valore 3). Nella codifica strutturata da fotogrammi a scansione progressiva, ad esempio in H.261, bPicStructure è 3. Un valore derivato PicCurrentField è definito come zero a meno che bPicStructure 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 nella 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 utilizzato per determinare se il campo di parità opposta utilizzato come riferimento per le linee di parità opposta per la stima della compensazione del movimento è 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 utilizzato 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 utilizzato come riferimento per le linee di parità stessa per la compensazione del movimento sono le stesse linee di parità dell'immagine di riferimento. In caso contrario, bSecondField è zero.

bPicIntra

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

bPicBackwardPrediction

Indica se eventuali macroblock dell'immagine corrente potrebbero includere una stima indietro. 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 struttura DXVA_MBctrl_P_OffHostIDCT_1). Se bPicBackwardPrediction è 1, alcuni blocchi macro 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 doppio movimento primo). Il valore zero indica la media arrotondata MPEG-1 e MPEG-2 (in cui i valori a metà strada tra due interi vengono arrotondati verso l'alto verso l'alto verso l'intero superiore successivo) e il valore 1 indica la media troncata H.263 (in cui i valori a metà strada tra due interi vengono arrotondati verso il basso verso il basso all'intero inferiore 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 di dominanza sono derivati dai vettori di movimento di dominanza.

Nella tabella seguente sono elencati 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 di dominanza.

valore Descrizione
0 I vettori di movimento di luminanza hanno precisione a metà campione. I vettori di movimento di dominanza sono derivati da vettori di movimento di luminanza in base a MPEG-2 (H.262) .
1 I vettori di movimento di luminanza hanno precisione a metà campione. I vettori di movimento di dominanza sono derivati da vettori di movimento di luminanza in base a H.263 .
2 I vettori di movimento di luminanza hanno una precisione di esempio completa. I vettori di movimento di dominanza sono derivati da vettori di movimento di luminanza in base a H.261 (dividendo 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 il valore 2 indica 4:2:2 e se il valore è 3, indica il campionamento 4:4:4. Questo membro deve essere uguale a 1 se l'bConfig4GroupedCoefs membro di DXVA_ConfigPictureDecode è 1 (perché operazione bConfig4GroupedCoefs non include l'indicazione EOB necessaria nei dati del coefficiente in formati 4:2:2 e 4:4:4).

Nota

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

bPicScanFixed

Quando si usa l'elaborazione IDCT basata sull'acceleratore dei blocchi di differenza residua, il valore 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 bConfigHostInverseScan membro di DXVA_ConfigPictureDecode è zero, il metodo di analisi definito da questo membro può essere uno dei seguenti.

bPicScanMethod Scan, metodo
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 segue.

bPicScanMethod Scan, metodo
3 Analisi arbitraria con indirizzo del coefficiente assoluto.

bPicReadbackRequests

Indica se vengono eseguite richieste di controllo read-back per l'immagine corrente. Il valore 1 indica che sono presenti richieste di readback e un valore pari a zero indica che non lo sono. Le richieste di lettura-back indicano che i valori dei macroblock vengono letti nell'immagine decodificata e bloccata finale (se il deblocking viene applicato con wDeblockedPictureIndex uguale a wDecodedPictureIndex).

bRcontrol

Definisce il metodo di arrotondamento da utilizzare per la compensazione del movimento a metà campione. Questa variabile è definita nella sezione H.263 6.1.2. Il valore zero indica il metodo di arrotondamento a metà campione trovato in MPEG-1, MPEG-2 e la prima versione di H.263. Il valore 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. Non ha senso per H.261, perché H.261 non ha una compensazione del movimento a metà campione. Deve essere impostato su zero per tutti i bitstream MPEG-1 e MPEG-2 per essere conforme all'operatore di arrotondamento definito da tali standard.

bPicSpatialResid8

Indica il modo in cui i blocchi di differenza del dominio spaziale vengono inviati all'acceleratore dall'host. Il valore 1 indica che è possibile inviare blocchi di differenza di dominio spaziale per la decodifica della differenza residua basata su host usando campioni 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 bConfigSpatialResid8 membro di DXVA_ConfigPictureDecode è 1.

Se questo membro è uguale a 1, i macroblock inter domini spaziali vengono inviati come valori a 8 bit (firmati o senza segno, come determinato dal bConfigIntraResidUnsigned membro di DXVA_ConfigPictureDecode) e le differenze di macroblock non del dominio spaziale vengono inviate come valori 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 quanto indica un'immagine specifica, non un'indicazione globale per l'intera sequenza video. In alcuni casi, ad esempio in un all'interno di un'immagine con BPP uguale a 8, bPicSpatialResid8 sarà 1 anche se bConfigSpatialResid8 potrebbe essere zero.

bPicOverflowBlocks

Indica se i blocchi di differenza del dominio spaziale vengono inviati all'acceleratore dall'host usando blocchi di overflow. Il valore 1 indica che è possibile inviare blocchi di differenza di dominio spaziale per la decodifica della differenza residua basata su host di un'immagine usando blocchi di overflow. Un valore 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 oppure se BPP è maggiore di 8. I parametri bConfigResidDiffHost e bConfigSpatialResid8 sono membri di DXVA_ConfigPictureDecode. bPicOverflowBlocks indica se per l'immagine specifica possono essere presenti blocchi di overflow. In un'immagine interna 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ù ampi (un blocco di macro aggiuntivo a sinistra e un altro a destra) e due macroblock 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 di blocco macro in questa specifica sono per i macroblock all'interno dell'immagine, non inclusa la spaziatura interna.

bPicDeblocked

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

bPicDeblockConfined

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

bPic4MVallowed

Specifica se quattro vettori di movimento forward-reference per macroblock sono consentiti come usato nelle versioni H.263 F e J.

bPicOBMC

Specifica se la compensazione del movimento per l'immagine corrente opera utilizzando la compensazione del movimento di blocco sovrapposta (OBMC) come specificato nell'allegato H.263 F. Deve essere zero se bPic4MVallowed è zero.

bPicBinPB

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

bMV_RPS

Specifica l'uso della selezione dell'immagine di riferimento del vettore di movimento. Se bMV_RPS è 1, questo indica che viene inviato un indice di immagine di riferimento per ogni vettore di movimento anziché solo in avanti e possibilmente indietro negli indici dell'immagine 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 la compressione 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 valore f_code accetta 4 bit. Questi valori vengono compressi in una parola a 16 bit come indicato di seguito.

Bit Descrizione
da 12 a 15 (i 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 bConfigBitstreamRaw membro della struttura DXVA_ConfigPictureDecode è 1, wBitstreamFcodes contiene quattro valori del 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 irrilevante f_code è 0xF.

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

Nota

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

wBitstreamPCEelements

Quando il bConfigBitstreamRaw membro 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 corrispondenza con gli elementi bitstream dell'estensione di codifica immagine MPEG-2 come indicato di seguito.

Bit Descrizione
14 e 15 IntraDCprecision è uguale a intra_dc_precision.
12 e 13 AnotherPicStructure è uguale a picture_structure. 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 I concealment_motion_vectors sono uguali 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 bConfigBitstreamRaw membro della struttura DXVA_ConfigPictureDecode è 1. Deve essere zero se bConfigBitstreamRaw è zero.

Gli acceleratori video devono essere progettati per non avere esito negativo o bloccarsi, indipendentemente dal contenuto dei dati assegnati. Pertanto, può essere utile che un acceleratore video disponga di informazioni sulla valutazione dell'host della probabilità di errori sintattici. Ciò consente di determinare se è necessario richiamare un algoritmo di occultamento 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 È improbabile che il flusso di bit contenga una quantità significativa di errori nel formato sintattico.
1 Il flusso di bit può contenere alcuni errori. È probabile che questi errori siano poco frequenti, ad esempio un errore una o due volte all'ora.
2 È probabile che il flusso di bit contenga alcuni errori. Questi errori possono verificarsi con una frequenza che potrebbe influire sull'esperienza utente(ad esempio, un errore ogni cinque o dieci minuti).
3 È probabile che il flusso di bit contenga errori di formato sintattico relativamente significativi, gravi e frequenti , ad esempio uno o più errori al minuto.

bBitstreamConcealmentMethod

Specifica un metodo predefinito preferito per l'elaborazione dell'occultamento degli errori quando il bConfigBitstreamRaw membro 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 Nascosto all'interno dell'immagine nello spazio.
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 B più vicina all'immagine di riferimento al movimento in avanti rispetto all'immagine di riferimento all'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 in avanti).

Osservazioni

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

Fabbisogno

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

Vedere anche

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1