estructura DXVA_BlendCombination (dxva.h)
El descodificador del host envía la estructura DXVA_BlendCombination al acelerador para especificar cómo se crea una imagen combinada a partir de una imagen de origen y una imagen gráfica con información de combinación alfa complementaria.
Sintaxis
typedef struct _DXVA_BlendCombination {
WORD wPictureSourceIndex;
WORD wBlendedDestinationIndex;
RECT PictureSourceRect16thPel;
RECT PictureDestinationRect;
RECT GraphicSourceRect;
RECT GraphicDestinationRect;
WORD wBlendDelay;
BYTE bBlendOn;
BYTE bWholePlaneAlpha;
DXVA_AYUVsample2 OutsideYUVcolor;
} DXVA_BlendCombination, *LPDXVA_BlendCombination;
Miembros
wPictureSourceIndex
Especifica el índice de superficie sin comprimir, según lo definido por el contenido del DWORD al que apunta el miembro lpInputData de DD_BEGINMOCOMPFRAMEDATA en una llamada anterior a DdMoCompBeginFrame, de la imagen que se va a combinar con el gráfico. Este valor se 0xFFFF si la combinación alfa de hardware de back-end está en uso (cuando el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es 1).
wBlendedDestinationIndex
Especifica el índice de superficie sin comprimir, tal como se define en el contenido del DWORD al que apunta el miembro lpInputData de DD_BEGINMOCOMPFRAMEDATA en una llamada anterior a DdMoCompBeginFrame, de la imagen combinada que se va a crear. Este valor es 0xFFFF si la combinación alfa de hardware de back-end está en uso (cuando el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es 1).
Este valor no puede ser igual a wPictureSourceIndex a menos que la combinación alfa de hardware de back-end esté en uso.
PictureSourceRect16thPel
Especifica el área de la imagen de origen que se va a combinar con la imagen gráfica como una estructura RECT . Las dimensiones se especifican en unidades de una decimosexta parte de la distancia entre los valores de muestra del componente de luminancia. (En otras palabras, los miembros de la estructura RECT son representaciones de punto fijo que tienen 28 bits antes del punto binario y 4 bits después del punto binario). Esta precisión de muestra de un decimosexto permite que PictureSourceRect16thPel contenga la misma precisión que la frame_centre_horizontal_offset y frame_centre_vertical_offset variables de recorrido panorámico en vídeo MPEG-2.
Si el miembro bConfigPictureResizing de DXVA_ConfigAlphaCombine es cero, todas las dimensiones de PictureSourceRect16thPel deben ser múltiplos enteros de 16.
PictureDestinationRect
Especifica el área de la imagen de destino como una estructura RECT. Esto contendrá el área definida para la imagen de origen por PictureSourceRect16thPel.
Si el miembro bConfigPictureResizing de DXVA_ConfigAlphaCombine es cero, el área especificada por PictureDestinationRect debe tener el mismo ancho y alto que el área especificada por PictureSourceRect16thPel. Si PictureDestinationRect difiere en el tamaño de PictureSourceRect16thPel, no se especifica el método de remuestreo que se va a aplicar, pero debe tener una calidad que sea al menos equivalente a la del remuestreo bilineal.
GraphicSourceRect
Especifica el área de la imagen gráfica de origen como una estructura RECT . Este área se combina con la parte de la imagen de origen especificada por PictureSourceRect16thPel para crear la imagen mezclada alfa.
GraphicDestinationRect
Especifica el área de la imagen gráfica de destino como una estructura RECT .
Si el miembro bConfigGraphicResizing de DXVA_ConfigAlphaCombine es cero, la imagen de destino debe tener el mismo ancho y alto que el área especificada por GraphicSourceRect. Si GraphicDestinationRect difiere en tamaño de GraphicSourceRect, no se especifica el método de remuestreo que se aplicará a la imagen gráfica. Sin embargo, el método de remuestreo utilizado debe tener una calidad que sea al menos equivalente a un reamuestreo bilineal de una superficie AYUV que represente la información de fusión.
wBlendDelay
Especifica el número de milisegundos de retraso antes de que la combinación de mezcla entre en vigor. Si la combinación de hardware de back-end está en uso (por ejemplo, si el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es 1), wBlendDelay contiene el número de milisegundos de retraso antes de que la combinación de mezcla entre en vigor. Si la combinación de front-end está en uso, este miembro no tiene ningún significado y debe ser cero.
bBlendOn
Especifica cuándo se inicia y detiene una operación de combinación de mezcla. Si la combinación de hardware de back-end está en uso, la combinación se aplica desde el momento especificado en una operación de combinación de mezcla (con bBlendOn igual a 1) hasta el tiempo de ejecución de una nueva combinación de mezcla (con bBlendOn igual a 1), o hasta que la combinación se deshabilite mediante una operación de combinación de mezcla (con bBlendOn igual a cero). Si la combinación de hardware de back-end está en uso y bBlendOn es cero, el único valor del búfer de combinación alfa-blend que tiene significado es wBlendDelay. Si la combinación de front-end está en uso, este miembro no tiene ningún significado y debe ser cero .
bWholePlaneAlpha
Contiene un multiplicador de opacidad para el canal alfa de la imagen gráfica. El valor cero indica que la imagen gráfica es transparente (de modo que el contenido gráfico no tenga ningún efecto en la imagen combinada resultante). El valor 255 indica que la imagen gráfica usa su opacidad de muestra completa. Si bWholePlaneAlpha no es igual a cero, la mezcla especificada es multiplicar la opacidad de cada ubicación del contenido gráfico por (bWholePlaneAlpha+1)/256. Para un valor cero de bWholePlaneAlpha, la mezcla que se va a usar es la opacidad especificada en la imagen gráfica sin alteración. Debe ser igual a 255 si el miembro bConfigWholePlaneAlpha de DXVA_ConfigAlphaCombine es cero.
OutsideYUVcolor
Indica si las áreas fuera de PictureDestinationRect usan un color constante para la fusión. Si es así, este miembro especifica esa constante de color. El miembro OutsideYUVcolor se define como una estructura DXVA_AYUVsample2 . Para obtener más información, consulta la sección Comentarios.
Comentarios
En caso de que las imágenes de origen y destino no estén en formato 4:4:4, cada segunda muestra de la información de fusión gráfica (por ejemplo, la primera, tercera o quinta) se aplica a la información de cromosificación de origen submuestreo en la dirección vertical u horizontal según sea necesario para producir el resultado combinado.
En las secciones siguientes se muestran las restricciones colocadas en los miembros izquierdo, derecho, superior e inferior de la estructura RECT.
Restricciones de la estructura RECT para PictureSourceRect16thPel
Las restricciones siguientes se aplican a las dimensiones RECT de PictureSourceRect16thPel:- left y top deben ser mayores o iguales que cero.
- derecha e inferior deben ser mayores o iguales que izquierda y superior, respectivamente.
- Si la derecha es igual a izquierda o superior es igual a abajo, todos los miembros de RECT deben tener el valor cero que indica que no se usa la imagen de origen. Este caso solo se permite si el miembro bConfigOnlyUsePicDestRectArea de DXVA_ConfigAlphaCombine es cero.
- derecha e inferior no deben superar 16 veces el ancho y alto asignados, respectivamente, de la superficie de imagen de origen sin comprimir.
- left = 0
- top = 0
- right = 16 X horizontal_size
- bottom = 16 X vertical_size
Restricciones de la estructura RECT para PictureDestinationRect
Las restricciones siguientes se aplican a las dimensiones RECT para PictureDestinationRect:- left y top deben ser mayores o iguales que cero.
- derecha e inferior deben ser mayores o iguales que izquierda y superior, respectivamente.
- Si la derecha es igual a izquierda o superior es igual a inferior (solo se permite si el miembro bConfigOnlyUsePicDestRectArea de DXVA_ConfigAlphaCombine es cero), todos los miembros de RECT deben tener el valor cero y PictureSourceRect16thPel también debe especificar todos los valores que tengan el valor cero.
- Si el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es cero, la derecha y la parte inferior no deben superar el ancho y alto asignados, respectivamente, de la superficie de imagen de destino sin comprimir.
- Si el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es 1, la derecha y la parte inferior no deben superar el ancho y alto asignados, respectivamente, de la superficie gráfica de origen.
Restricciones de la estructura RECT para GraphicSourceRect
Si la carga de datos de combinación alfa usa el miembro bConfigDataType de DXVA_ConfigAlphaLoad con un valor de 2, se aplican las restricciones siguientes a las dimensiones RECT de GraphicSourceRect:- superior e izquierdo debe ser cero.
- right debe ser igual a la coordenada X final menos la coordenada X de inicio del último DVD anterior SET_DAREA DCCMD, más 1, para ajustar las interpretaciones del rectángulo diferente, tal como se describe en la nota siguiente en la sección Restricciones de estructura de RECT para GraphicDestinationRect .
- bottom debe ser igual a la coordenada Y final menos la coordenada Start Y del último DVD anterior SET_DAREA DCCMD, más 1, para ajustar para las diferentes interpretaciones del rectángulo.
- left y top deben ser mayores o iguales que cero.
- derecha e inferior deben ser mayores o iguales que izquierda y superior, respectivamente.
- Si la derecha es igual a izquierda o superior es igual a abajo, todos los miembros de RECT deben tener el valor cero, lo que indica que no se usa la imagen gráfica.
- derecha e inferior no deben superar el ancho y alto asignados, respectivamente, de la imagen de origen gráfica. El ancho y alto asignados se definen como 720 y 576 muestras, respectivamente, cuando el miembro bConfigDataType de DXVA_ConfigAlphaLoad es igual a 2.
Restricciones de la estructura RECT para GraphicDestinationRect
Las restricciones siguientes se aplican a las dimensiones RECT de GraphicDestinationRect:- left y top deben ser mayores o iguales que cero, a menos que este requisito entre en conflicto con la necesidad de desplazar el gráfico por ocho muestras. Este es el caso en los escenarios siguientes:
- La carga de datos de combinación alfa usa el miembro bConfigDataType de DXVA_ConfigAlphaCombine con un valor de 2 y el miembro bConfigGraphicResizing de DXVA_ConfigAlphaCombine con un valor de cero.
- La operación se establece para DVD 704-Wide Non-Pan-Scan (ver DVD 704-Wide Non-Pan-Scan Example).
- La operación está establecida para DVD 352 de ancho (vea DVD 352-Wide Example).
- derecha e inferior deben ser mayores o iguales que izquierda y superior, respectivamente. Si right es igual a left o top es igual a bottom, todos estos miembros de la estructura RECT deben tener el valor cero y GraphicSourceRect también debe especificar que todos sus miembros tengan el valor cero.
- Si el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es igual a cero, la derecha y la parte inferior no deben superar el ancho y alto asignados, respectivamente, de la superficie de imagen de destino sin comprimir.
- Si el miembro bConfigBlendType de DXVA_ConfigAlphaCombine es igual a 1, la derecha y la parte inferior no deben superar el ancho y alto asignados, respectivamente, de la imagen gráfica de origen.
- top debe ser igual a la coordenada Start Y del último DVD anterior SET_DAREA DCCMD.
- left debe ser igual a la coordenada X inicial del último DVD anterior SET_DAREA DCCMD o a ese valor menos 8. Para obtener más información, vea Ejemplo de no recorrido panorámico de DVD 704 y Ejemplo de DVD 352 de ancho.
- right debe ser igual al valor de left, más la coordenada End X menos la coordenada X start del último DVD anterior SET_DAREA DCCMD, más 1, para ajustar las interpretaciones de rectángulo diferentes descritas en la nota siguiente.
- bottom debe ser igual al valor de top más end Y-coordinate menos la coordenada Start Y del último DVD anterior SET_DAREA DCCMD, más 1, para ajustar las interpretaciones de rectángulo diferentes descritas en la nota siguiente.
Establecer valores outsideYUVcolor
Los valores de la estructura OutsideYUVcolor son los siguientes:- El valor de OutsideYUVcolor.bSampleAlpha8 debe ser 255 si las áreas fuera de PictureDestinationRect se generan como un color constante que se usará para la fusión.
- El valor de OutsideYUVcolor.bSampleAlpha8 debe ser cero si se aplica cualquiera de los dos casos siguientes:
- Las áreas fuera de PictureDestinationRect no se ven afectadas por la mezcla.
- No se pueden usar las áreas fuera de PictureDestinationRect (como se indica en el miembro bConfigStayInPicDestRectArea de DXVA_ConfigAlphaCombine tener un valor de 1).
El valor de OutsideYUVcolor.bSampleAlpha8 debe ser cero si el miembro bConfigStayInPicDestRectArea de la estructura DXVA_ConfigAlphaCombine es igual a 1.
Si OutsideYUVcolor.bSampleAlpha8 es cero, el único área de la superficie de destino afectada por la mezcla es la parte dentro de PictureDestinationRect.
Si OutsideYUVcolor.bSampleAlpha8 es 255, cualquier área de la superficie de destino que está fuera de PictureDestinationRect , pero dentro de GraphicDestinationRect, se genera mezclando el gráfico con el color especificado en los miembros nonalpha de OutsideYUVcolor. En este caso, el área asignada completa de la superficie de destino que se encuentra fuera de PictureDestinationRect y GraphicDestinationRect se establece en el color especificado en los miembros nonalpha de OutsideYUVcolor. Si el miembro bConfigBlendType de la estructura DXVA_ConfigAlphaCombine es 1, los miembros OutsideYUVcolor se establecen para indicar la combinación con negro especificando bSampleAlpha8 = 255, bY_Value = 16 y bCbValue = bCrValue = 128.
Cuando el miembro bConfigBlendType de la estructura de DXVA_ConfigAlphaCombine es 1 (combinación de hardware de back-end), las operaciones de combinación pueden diferir ligeramente de las descritas en esta referencia. Algunos parámetros de cambio de tamaño usados para asignar una imagen de vídeo de una imagen de origen a un tamaño de imagen de destino se pueden aplicar de forma modificada para asignar la imagen gráfica a su ubicación adecuada en relación con la imagen de origen. Sin embargo, el resultado combinado será equivalente al resultado combinado obtenido por los comandos de combinación alfa-blend en esta referencia.
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (incluir Dxva.h) |