Freigeben über


DXVA_SliceInfo Struktur (dxva.h)

Die DXVA_SliceInfo Struktur wird vom Hostdecoder an die Zugriffstaste gesendet, um die Parameter auf Segmentebene eines Datenschnitts mit Bitstreamdaten für die komprimierte Bilddecodierung von Offhost-Bitstreams anzugeben.

Syntax

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;

Angehörige

wHorizontalPosition

Gibt die horizontale Position des ersten Makroblocks des Segments an, das in Einheiten von Makroblocks ausgedrückt wird, wobei Null die linksste oder oberste Makroblock des Bilds angibt.

wVerticalPosition

Gibt die vertikale Position des ersten Makroblocks des Datenschnitts an, der in Einheiten von Makroblocks ausgedrückt wird, wobei Null die linksste oder oberste Makroblock des Bilds angibt.

dwSliceBitsInBuffer

Gibt die Gesamtanzahl der Bits im entsprechenden Bitstreamdatenpuffer an, die Daten für das aktuelle Segment enthalten. Dies muss ein Vielfaches von acht für MPEG-1, MPEG-2, MPEG-4 sein. Sie muss sich auch im segmentstrukturierten Modus von H.263 befinden, da Segmentanfangscodes in diesen Fällen byte ausgerichtet sind.

dwSliceDataLocation

Gibt den Speicherort des ersten Byte an, der Daten für das Segment enthält (z. B. die Position eines Datenschnittanfangscode) im Bitstream-Datenpuffer. Muss null sein, wenn sich der Anfang des Datensegments nicht innerhalb des entsprechenden Bitstreamdatenpuffers befindet.

bStartCodeBitOffset

Gibt die Anzahl der wichtigsten Bits des Bytes bei dwSliceDataLocation- an, die keine Daten für das Segment enthalten. bStartCodeBitOffset-muss null für MPEG-1, MPEG-2 und MPEG-4 sein, da Segmentstartcodes in diesen Spezifikationen byte ausgerichtet sind. bStartCodeBitOffset-könnte möglicherweise kein Nullwert für H.261 und H.263 sein, da diese Standards keine Byteausrichtung von GOB-Startcodes (Gruppe von Blöcken) erzwingen. Dieses Element muss sich im Bereich von Null bis 7 befinden und muss null sein, wenn sich der Anfang des Datensegments nicht im entsprechenden Bitstreamdatenpuffer befindet. Die wichtigsten Bits, die für das aktuelle Segment durch bStartCodeBitOffset- als irrelevant gekennzeichnet sind, können Daten für ein vorheriges Segment enthalten, wenn Startcodes nicht ausgerichtet sind (z. B. im H.263-Basisplanmodus).

bReservedBits

Reservierte Bits, die für Verpackung und Ausrichtung verwendet werden. Muss null sein.

wMBbitOffset

Gibt die Anzahl der Bits von Daten des Datenschnittheaders vor dem ersten Bit der Makroblock-Layerdaten im Bitstreampuffer an. Wenn z. B. wMBbitOffset 83 ist, beginnt die Makroblock-Layerdaten für das Segment nach 83 Bits von Datenschnittkopfdaten. Muss null sein, wenn sich der Anfang des Datensegments nicht innerhalb des entsprechenden Bitstreamdatenpuffers befindet.

wNumberMBsInSlice

Gibt die Anzahl der Makroblocks von Daten im Segment an, einschließlich übersprungener Makroblocks. Kann null sein, wenn diese Zahl nicht einfach aus der Kopfzeile des Bilds und den Kopfzeilen und den anfänglichen Makroblockdaten des aktuellen und nächsten Datenschnitts im Bitstream bestimmt werden kann, z. B. im rechteckigen Segment und in beliebigen Untermoden der Segmentierung des Datenschnittmodus von H.263. Darf für H.261, MPEG-1, MPEG-2, MPEG-4 oder nicht bei Verwendung des rechteckigen Slices oder beliebiger Segmentuntermoden des segmentstrukturierten Modus in H.263 nicht null sein.

wQuantizerScaleCode

Der Quantizerskalierungscode aus der Segmentebene des Bitstreams, wie in der speziellen Videocodierungsspezifikation angegeben (reichen von 1 bis 31 für H.261, H.262/MPEG-2, H.263, MPEG-1 und MPEG-4).

wBadSliceChopping

Gibt den Speicherort von Daten innerhalb eines Datensegments für einen entsprechenden Bitstreamdatenpuffer an. Wenn Null, gibt an, dass sich alle Bits für das Segment im Bitstream-Datenpuffer befinden. Gibt an, welcher Teil der Bits für das Segment im entsprechenden Bitstream-Datenpuffer wie folgt fehlt.

Wert Beschreibung
1 Die Bits für den Anfang des Datensegments befinden sich im entsprechenden Bitstream-Datenpuffer, und die Bits für das Ende des Datensegments sind nicht (da der Bitstreamdatenpuffer voll ist).
2 Die Bits für den Anfang des Datensegments befinden sich nicht im entsprechenden Bitstream-Datenpuffer (da der vorherige Bitstreamdatenpuffer voll war), aber die Bits für das Ende des Datensegments befinden sich im entsprechenden Bitstream-Datenpuffer.
3 Die Bits für den Anfang des Datensegments befinden sich nicht im entsprechenden Bitstream-Datenpuffer (da der vorherige Bitstreamdatenpuffer voll war), und die Bits für das Ende des Datensegments befinden sich auch nicht innerhalb des entsprechenden Bitstream-Datenpuffers (da der entsprechende Bitstreamdatenpuffer ebenfalls voll ist).

[! HINWEIS] Nichtzerowerte von wBadSliceChopping sollten im Allgemeinen vom Hostsoftwaredecoder vermieden werden.

Bemerkungen

Datenschnittsteuerungspuffer werden bereitgestellt, um den Vorgang der VLD-Bitstreamverarbeitung vom Host zu leiten. Datenschnittsteuerungspuffer werden nur gesendet, wenn der bConfigBitstreamRaw Mitglied von DXVA_ConfigPictureDecode 1 ist. Der Hostsoftwaredecoder muss die Position der Datenschnittebenen-Neusynchronisierungspunkte im Bitstream bestimmen. Ein Segment ist als Multimakroblockebene definiert, die einen Resynchronisierungspunkt in den Bitstreamdaten enthält.

In H.261-Bitstreams wird ein GOB als Segment betrachtet. In H.263-Bitstreams gilt eine Abfolge von einer oder mehreren GOBs, die mit einem GOB-Startcode beginnen und keine zusätzlichen GOB-Startcodes enthalten, als Segment betrachtet. Ein Datenschnittsteuerelementpuffer muss eine oder mehrere DXVA_SliceInfo Strukturen enthalten, entsprechend dem Inhalt eines entsprechenden Bitstreamdatenpuffers.

Anforderungen

Anforderung Wert
Header- dxva.h (include Dxva.h)

Siehe auch

DXVA_ConfigPictureDecode