estructura DXVA_BufferDescription (dxva.h)
El descodificador del host envía la estructura DXVA_BufferDescription al acelerador para proporcionar información al acelerador sobre el búfer que se pasa actualmente desde el host al acelerador.
Sintaxis
typedef struct _DXVA_BufferDescription {
DWORD dwTypeIndex;
DWORD dwBufferIndex;
DWORD dwDataOffset;
DWORD dwDataSize;
DWORD dwFirstMBaddress;
DWORD dwNumMBsInBuffer;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwStride;
DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;
Miembros
dwTypeIndex
Identifica el tipo de búfer pasado al acelerador. En la tabla siguiente se enumeran los identificadores numéricos y el tipo de búfer asociado.
Valor | Tipo de búfer |
---|---|
1 | Búferes de parámetros de descodificación de imágenes. |
2 | Búferes de comandos de control de macrobloqueo (estrechamente asociados a y que tienen una correspondencia 1:1 con búferes de datos de bloque de diferencia residual). |
3 | Búferes de datos de bloque de diferencia residual. Consulte Descodificación de imágenes orientadas a macrobloqueos para obtener más información. |
4 | Desbloquee los búferes de comandos de control de filtro (con o sin restricción en el efecto del filtro). |
5 | Búferes de matriz de cuantificación inversa (solo se usa con el procesamiento de VLD fuera del host). |
6 | Búferes de control de segmentos (estrechamente asociados a y que tienen una correspondencia de 1:1 con búferes de datos de secuencia de bits). |
7 | Búferes de datos de secuencia de bits. |
8 | Búferes de ejemplo de combinación alfa de AYUV. |
9 | Búferes de superficie de combinación alfa IA44/AI44. |
10 | Búferes de superficie de combinación alfa DPXD. |
11 | Resalte los búferes de datos. |
12 | Búferes de datos dcCMD. |
13 | Búferes de combinación de mezcla alfa. |
14 | Búferes de control de cambio de muestreo de imágenes. |
15 | Búferes de comandos de lectura inversa que contienen comandos para leer macrobloqueos de la imagen resultante en el host. |
dwBufferIndex
Especifica el número de secuencia del búfer dentro de los búferes del mismo tipo que se pasaron en la misma lista de descripción del búfer.
dwDataOffset
Especifica el desplazamiento de los datos pertinentes desde el principio del búfer en bytes. El uso de este miembro está restringido actualmente al valor cero.
dwDataSize
Especifica la cantidad de datos pertinentes en el búfer en bytes. La ubicación del último byte de contenido en el búfer es dwDataOffset, más dwDataSize menos 1.
dwFirstMBaddress
Especifica la dirección de bloqueo de macros del primer bloque de macros del búfer pasado al acelerador. La dirección de bloqueo de macros se da en orden de examen de trama. La dirección viene determinada por los miembros de DXVA_PictureParameters. A continuación se muestran ejemplos de direcciones de macroblock.
Macroblock | Dirección |
---|---|
superior izquierda | cero |
superior derecha | wPicWidthInMBminus1 |
inferior izquierda | wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
inferior derecha | (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1 |
Este miembro debe ser cero si el búfer de datos está entre los siguientes tipos: parámetros de descodificación de imágenes, matriz de cuantificación inversa, control de segmento, datos de secuencia de bits, AYUV, IA44/AI44, DPXD, Highlight y DCCMD.
Si el búfer de datos es un búfer de datos de bloque de diferencia residual, dwFirstMBaddress debe tener el mismo valor que para el búfer de comandos de control de macroblock correspondiente. Consulte Descodificación de imágenes orientadas a macrobloqueos para obtener más información.
dwNumMBsInBuffer
Especifica el número de macrobloqueos de datos en el búfer. Este recuento incluye macroblocks omitidos. Debe ser cero si el búfer de datos está entre los siguientes tipos: parámetros de descodificación de imágenes, matriz de cuantificación inversa, AYUV, IA44/AI44, DPXD, Highlight o DCCMD.
El valor de dwNumMBsInBuffer depende del tipo de búfer de datos que se usa como se muestra en la tabla siguiente.
Tipo de búfer | Valor de dwNumMBsInBuffer |
---|---|
Comando de control Macroblock | Debe ser igual a la suma de todos los valores de MBskipsFollowing, agregados al número de comandos de control de macroblock en el búfer de comandos de control de macroblock. |
Bloque de diferencia residual | Debe tener el mismo valor que para el búfer de comandos de control de macroblock correspondiente. |
Comando Slice-control | Debe ser igual al valor del miembro wNumberMBsInSlice de la estructura DXVA_SliceInfo en el búfer de control de segmentos. |
Bitstream | Debe tener el mismo valor que para el búfer de comandos de control de segmento correspondiente. |
dwWidth
Especifica el ancho de los datos en el búfer como el número de unidades de bits para los siguientes tipos de datos: AYUV (los datos se especifican en unidades de 32 bits), IA44/AI44 (los datos se especifican en unidades de 8 bits) o DPXD (los datos se especifican en unidades de 2 bits). Este miembro debe ser cero si el búfer de datos no está entre los tipos anteriores.
dwHeight
Especifica el alto de los datos en el búfer como el número de unidades de bits para los siguientes tipos de datos: AYUV (los datos se especifican en unidades de 32 bits), IA44/AI44 (los datos se especifican en unidades de 8 bits) o DPXD (los datos se especifican en unidades de 2 bits). Este miembro debe ser cero si el búfer de datos no está entre los tipos anteriores.
dwStride
Especifica el intervalo de los datos en el búfer como el número de unidades de bits para los siguientes tipos de datos: AYUV (los datos se especifican en unidades de 32 bits), IA44/AI44 (los datos se especifican en unidades de 8 bits) o DPXD (los datos se especifican en unidades de 2 bits). El intervalo para los tipos de búfer aplicables se determina a partir de la configuración de asignación de búfer realizada por el acelerador. Este miembro debe ser cero si el búfer de datos no está entre los tipos anteriores.
dwReservedBits
Bits reservados usados para empaquetar y alinear. Debe ser cero.
Comentarios
Una matriz de estructuras de DXVA_BufferDescription se conoce como una lista de descripción del búfer. Cuando se envía un conjunto de búferes desde el descodificador de host al acelerador de hardware, se envía una lista de descripción del búfer para describir los búferes. La lista de descripción del búfer contiene una estructura DXVA_BufferDescription para cada búfer de este conjunto. La lista de descripción del búfer comienza con una estructura de DXVA_BufferDescription para el primer búfer del primer tipo, seguido de una estructura de DXVA_BufferDescription para el siguiente búfer del mismo tipo, etc. A continuación, la lista de descripción del búfer continúa con una estructura de DXVA_BufferDescription para el primer búfer del tipo siguiente, etc.
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (include Dxva.h) |