estructura DXVA_SliceInfo (dxva.h)
El descodificador del host envía la estructura DXVA_SliceInfo al acelerador para especificar los parámetros de nivel de segmento de un segmento de datos de secuencia de bits para la descodificación de imágenes comprimidas de secuencias de bits fuera del host.
Sintaxis
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;
Miembros
wHorizontalPosition
Especifica la posición horizontal del primer bloque de macros del segmento expresado en unidades de macrobloqueos, con cero que indica el bloque de macros más izquierdo o superior de la imagen.
wVerticalPosition
Especifica la posición vertical del primer bloque de macros del segmento expresado en unidades de macrobloques, con cero que indica el bloque de macros más izquierdo o superior de la imagen.
dwSliceBitsInBuffer
Especifica el número total de bits en el búfer de datos de secuencia de bits correspondiente que contiene datos para el segmento actual. Debe ser un múltiplo de ocho para MPEG-1, MPEG-2, MPEG-4. También debe estar en el modo estructurado por segmentos de H.263, ya que los códigos de inicio del segmento en estos casos están alineados por bytes.
dwSliceDataLocation
Especifica la ubicación del primer byte que contiene datos para el segmento (por ejemplo, la ubicación de un código de inicio de segmento) en el búfer de datos de secuencia de bits. Debe ser cero si el inicio del segmento no está dentro del búfer de datos de secuencia de bits correspondiente.
bStartCodeBitOffset
Especifica el número de bits más significativos del byte en dwSliceDataLocation que no contienen datos para el segmento. bStartCodeBitOffset debe ser cero para MPEG-1, MPEG-2 y MPEG-4, porque los códigos de inicio de segmento de estas especificaciones están alineados por bytes. bStartCodeBitOffset podría ser distinto de cero para H.261 y H.263, ya que estos estándares no fuerzan la alineación de bytes de los códigos de inicio de GOB (grupo de bloques). Este miembro debe estar en el intervalo de cero a 7 y debe ser cero si el inicio del segmento no está dentro del búfer de datos de secuencia de bits correspondiente. Los bits más significativos marcados como irrelevantes para el segmento actual por bStartCodeBitOffset pueden contener datos para un segmento anterior en el caso de códigos de inicio que no están alineados por bytes (por ejemplo, en modo de línea base H.263).
bReservedBits
Bits reservados usados para empaquetar y alinear. Debe ser cero.
wMBbitOffset
Especifica el número de bits de datos de encabezado de segmento antes del primer bit de datos de capa de macroblock en el búfer de secuencia de bits. Por ejemplo, si wMBbitOffset es 83, los datos de la capa de macroblock del segmento se inician después de 83 bits de datos de encabezado de segmento. Debe ser cero si el inicio del segmento no está dentro del búfer de datos de secuencia de bits correspondiente.
wNumberMBsInSlice
Especifica el número de macroblocks de datos del segmento, incluidos los macroblocks omitidos. Puede ser cero si este número no se puede determinar fácilmente a partir del encabezado de la imagen y los encabezados y los datos de macrobloque iniciales del segmento actual y siguiente de la secuencia de bits, como en el segmento rectangular y los submodes de ordenación de segmentos arbitrarios del modo de segmento de H.263. No debe ser cero para H.261, MPEG-1, MPEG-2, MPEG-4 o cuando no se usan los submodeos rectangulares o arbitrarios del modo estructurado por segmentos en H.263.
wQuantizerScaleCode
El código de escalado de cuantificador del nivel de segmento de la secuencia de bits, tal y como se especifica en la especificación de codificación de vídeo determinada (que oscila entre 1 y 31 para H.261, H.262/MPEG-2, H.263, MPEG-1 y MPEG-4).
wBadSliceChopping
Especifica la ubicación de los datos dentro de un segmento para un búfer de datos de secuencia de bits correspondiente. Si es cero, indica que todos los bits del segmento están en el búfer de datos de secuencia de bits. Si no es cero, indica qué parte de los bits del segmento faltan en el búfer de datos de secuencia de bits correspondiente como se indica a continuación.
Valor | Descripción |
---|---|
1 | Los bits para el inicio del segmento están dentro del búfer de datos de secuencia de bits correspondiente y los bits del final del segmento no son (porque el búfer de datos de secuencia de bits está lleno). |
2 | Los bits del inicio del segmento no están dentro del búfer de datos de secuencia de bits correspondiente (porque el búfer de datos de secuencia de bits anterior estaba lleno), pero los bits del final del segmento están dentro del búfer de datos de secuencia de bits correspondiente. |
3 | Los bits del inicio del segmento no están dentro del búfer de datos de secuencia de bits correspondiente (porque el búfer de datos de secuencia de bits anterior estaba lleno) y los bits del final del segmento tampoco están dentro del búfer de datos de secuencia de bits correspondiente (porque el búfer de datos de secuencia de bits correspondiente también está lleno). |
[! NOTES] Por lo general, el descodificador de software host debe evitar valores distintos de wBadSliceChopping .
Comentarios
Los búferes de control de segmentos se proporcionan para guiar el funcionamiento del procesamiento de secuencias de bits de VLD fuera del host. Los búferes de control de segmentos solo se envían cuando el miembro bConfigBitstreamRaw de DXVA_ConfigPictureDecode es 1. El descodificador de software host debe determinar la ubicación de los puntos de resincronización de nivel de segmento en la secuencia de bits. Un segmento se define como una capa de varios bloques que incluye un punto de resincronización en los datos de secuencia de bits.
En secuencias de bits H.261, un GOB se considera un segmento. En secuencias de bits H.263, una secuencia de uno o varios GOB a partir de un código de inicio GOB y que no contiene códigos de inicio DE GOB adicionales, se considera un segmento. Un búfer de control de segmentos debe contener una o varias estructuras de DXVA_SliceInfo, según el contenido de un búfer de datos de secuencia de bits correspondiente.
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (incluir Dxva.h) |