struttura DXVA_SliceInfo (dxva.h)
La struttura DXVA_SliceInfo viene inviata dal decodificatore host all'acceleratore per specificare i parametri a livello di sezione di una sezione di dati bitstream per la decodifica immagine compressa off-host bitstream.
Sintassi
typedef struct _DXVA_SliceInfo {
WORD wHorizontalPosition;
WORD wVerticalPosition;
DWORD dwSliceBitsInBuffer;
DWORD dwSliceDataLocation;
BYTE bStartCodeBitOffset;
BYTE bReservedBits;
WORD wMBbitOffset;
WORD wNumberMBsInSlice;
WORD wQuantizerScaleCode;
WORD wBadSliceChopping;
} DXVA_SliceInfo, *LPDXVA_SliceInfo;
Members
wHorizontalPosition
Specifica la posizione orizzontale del primo blocco macro della sezione espressa in unità di macroblock, con zero che indica il blocco macro più a sinistra o superiore dell'immagine.
wVerticalPosition
Specifica la posizione verticale del primo blocco macro della sezione espressa in unità di macroblock, con zero che indica il blocco macro più a sinistra o superiore dell'immagine.
dwSliceBitsInBuffer
Specifica il numero totale di bit nel buffer di dati bitstream corrispondente che contiene dati per la sezione corrente. Deve essere un multiplo di otto per MPEG-1, MPEG-2, MPEG-4. Deve anche essere in modalità strutturata sezione di H.263, perché i codici iniziali della sezione in questi casi sono allineati ai byte.
dwSliceDataLocation
Specifica la posizione del primo byte contenente i dati per la sezione (ad esempio, la posizione di un codice iniziale della sezione) nel buffer dei dati bitstream. Deve essere zero se l'inizio della sezione non si trova all'interno del buffer di dati bitstream corrispondente.
bStartCodeBitOffset
Specifica il numero di bit più significativi del byte in dwSliceDataLocation che non contengono dati per la sezione. bStartCodeBitOffset deve essere zero per MPEG-1, MPEG-2 e MPEG-4, perché i codici di inizio della sezione in queste specifiche sono allineati a byte. bStartCodeBitOffset potrebbe essere diverso da zero per H.261 e H.263, perché questi standard non forzano l'allineamento dei byte dei codici iniziali GOB (gruppo di blocchi). Questo membro deve essere compreso nell'intervallo da zero a 7 e deve essere zero se l'inizio della sezione non si trova all'interno del buffer di dati bitstream corrispondente. I bit più significativi contrassegnati irrilevanti per la sezione corrente da bStartCodeBitOffset possono contenere dati per una sezione precedente nel caso di codici iniziali non allineati a byte,ad esempio in modalità di base H.263.
bReservedBits
Bit riservati utilizzati per la compressione e l'allineamento. Deve essere zero.
wMBbitOffset
Specifica il numero di bit dei dati di intestazione della sezione prima del primo bit dei dati del livello macroblock nel buffer bitstream. Ad esempio, se wMBbitOffset è 83, i dati del livello macroblock per la sezione iniziano dopo 83 bit di dati di intestazione della sezione. Deve essere zero se l'inizio della sezione non si trova all'interno del buffer di dati bitstream corrispondente.
wNumberMBsInSlice
Specifica il numero di macroblock di dati nella sezione, inclusi i macroblock ignorati. Può essere zero se questo numero non può essere facilmente determinato dall'intestazione dell'immagine e dalle intestazioni e dai dati iniziali di macroblock della sezione corrente e successiva nel bitstream, ad esempio nelle sezioni rettangolari e nelle sottomodi di ordinamento arbitrario della sezione della modalità sezione H.263. Non deve essere zero per H.261, MPEG-1, MPEG-2, MPEG-4 o quando non si usano le sezioni rettangolari o submodi sezioni arbitrarie della modalità strutturata slice in H.263.
wQuantizerScaleCode
Il codice di ridimensionamento del quantizer dal livello di sezione del bitstream, come specificato nella specifica di codifica video specifica (compreso tra 1 e 31 per H.261, H.262/MPEG-2, H.263, MPEG-1 e MPEG-4).
wBadSliceChopping
Specifica la posizione dei dati all'interno di una sezione per un buffer di dati bitstream corrispondente. Se zero, indica che tutti i bit per la sezione si trovano nel buffer dei dati bitstream. Se diverso da zero, indica la parte dei bit per la sezione mancanti dal buffer di dati bitstream corrispondente, come indicato di seguito.
Valore | Descrizione |
---|---|
1 | I bit per l'inizio della sezione si trovano all'interno del buffer di dati bitstream corrispondente e i bit per la fine della sezione non sono (perché il buffer dei dati bitstream è pieno). |
2 | I bit per l'inizio della sezione non si trovano all'interno del buffer di dati bitstream corrispondente (perché il buffer di dati bitstream precedente era pieno), ma i bit per la fine della sezione si trovano all'interno del buffer di dati bitstream corrispondente. |
3 | I bit per l'inizio della sezione non si trovano all'interno del buffer di dati bitstream corrispondente (perché il buffer di dati bitstream precedente era pieno) e i bit per la fine della sezione non si trovano anche all'interno del buffer di dati bitstream corrispondente (perché anche il buffer di dati bitstream corrispondente è pieno). |
[! NOTES] I valori diversi da zero di wBadSliceChopping devono in genere essere evitati dal decodificatore software host.
Commenti
I buffer di controllo sezione vengono forniti per guidare l'operazione di elaborazione bitstream VLD off-host. I buffer del controllo sezione vengono inviati solo quando il membro bConfigBitstreamRaw di DXVA_ConfigPictureDecode è 1. Il decodificatore software host deve determinare la posizione dei punti di risincronizzazione a livello di sezione nel bitstream. Una sezione è definita come un livello multimacroblock che include un punto di risincronizzazione nei dati bitstream.
Nei flussi di bit H.261, un GOB viene considerato una sezione. Nei flussi di bit H.263, una sequenza di uno o più GOB a partire da un codice di avvio GOB e che non contiene codici di avvio GOB aggiuntivi, viene considerata una sezione. Un buffer di controllo sezione deve contenere una o più strutture DXVA_SliceInfo, in base al contenuto di un buffer di dati bitstream corrispondente.
Requisiti
Requisito | Valore |
---|---|
Intestazione | dxva.h (include Dxva.h) |