Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[La característica asociada a esta página, Administrador de compresión de vídeo, es una característica heredada. Microsoft recomienda encarecidamente que el nuevo código no use esta característica.
Algunos representadores pueden dibujar directamente en hardware de vídeo a medida que descomprimen fotogramas de vídeo. Estos representadores devuelven la marca VIDCF_DRAW en respuesta a la función ICGetInfo . Al usar este tipo de representador, la aplicación no tiene que controlar los datos descomprimidos. Permite al representador conservar los datos descomprimidos para dibujar.
Si la aplicación usa un representador con funcionalidades de dibujo, debe controlar las siguientes tareas:
- Seleccione un representador.
- Especifique formatos de imagen.
- Inicialice el representador.
- Dibuje los datos.
- Controlar parámetros de dibujo.
Selección del representador
La macro ICDrawOpen abre un representador que puede dibujar imágenes con el formato especificado. Devuelve un identificador de un representador si es correcto o cero de lo contrario. Esta macro usa la función ICLocate para abrir el representador.
Especificar formatos de imagen
Dado que la aplicación no necesita dibujar los datos descomprimidos, no requiere un formato de salida específico. Sin embargo, debe asegurarse de que el representador pueda dibujar con el formato de entrada mediante el mensaje ICM_DRAW_QUERY (o use la macro ICDrawQuery ). Este mensaje no puede determinar si un representador puede dibujar un mapa de bits. Si la aplicación debe determinar si el representador puede dibujar el mapa de bits, use este mensaje con la función ICDrawBegin .
La aplicación puede hacer que un representador sugiera un formato de entrada mediante la función ICDrawSuggestFormat . Esta función se usa cuando un representador separa las funcionalidades de dibujo de las funcionalidades de descompresión. La mayoría de las aplicaciones que usan las funciones de dibujo no tendrán que determinar el formato de salida.
Inicialización del representador
La función ICDrawBegin inicializa un representador y le indica el destino del dibujo. Esta función también puede realizar las siguientes tareas:
- Determine si el representador admite un formato de entrada específico.
- Especifique si la operación de dibujo ocupa una ventana o toda la pantalla.
- Especifique la parte de la imagen que se va a mostrar mediante el rectángulo de origen.
- Defina la velocidad de reproducción de la secuencia de imágenes.
Algunos representadores almacenarán en búfer los datos comprimidos para funcionar de forma más eficaz. La aplicación puede enviar el mensaje de ICM_GETBUFFERSWANTED (o usar la macro ICGetBuffersWanted ) para determinar el número de búferes que solicita el representador. La aplicación debe cargar previamente estos búferes y enviarlos al representador antes de dibujar.
Dibujo de los datos
Puede usar la función ICDraw para descomprimir los datos para dibujar. Sin embargo, el representador no inicia el dibujo de datos hasta que la aplicación envía el mensaje ICM_DRAW_START (o usa la macro ICDrawStart ). Cuando la aplicación llama a esta función, el representador comienza a dibujar los fotogramas a la velocidad especificada por el parámetro dwRate dividido por el parámetro dwScale ; estos parámetros se proporcionaron cuando la aplicación inicializó el representador mediante la función ICDrawBegin . El dibujo continúa hasta que la aplicación envía el mensaje ICM_DRAW_STOP (o usa la macro ICDrawStop ).
Nota
Si un representador almacena en búfer los datos antes del dibujo, la aplicación no debe usar la macro ICDrawStart hasta que haya enviado el número de fotogramas devueltos por el representador para la macro ICGetBuffersWanted .
El parámetro lTime de ICDraw especifica la hora de dibujar un fotograma. El representador divide este entero por la escala de tiempo especificada con ICDrawBegin para obtener el tiempo real. Las horas de las funciones icDraw son relativas a ICDrawStart. ICDrawStart establece el reloj en cero. Por ejemplo, si la aplicación especifica 1000 para la escala de tiempo y 75 para lTime, el representador dibuja el fotograma 75 milisegundos en la secuencia.
Controlar parámetros de dibujo
Puede supervisar el reloj de un representador enviando el mensaje ICM_DRAW_GETTIME (o usar la macro ICDrawGetTime ) y puede establecer el reloj de un representador que pueda dibujar datos enviando el mensaje ICM_DRAW_SETTIME (o usar la macro ICDrawSetTime ).
Para cambiar la posición actual mientras se dibuja un representador, la aplicación puede enviar el mensaje de ICM_DRAW_WINDOW (o usar la macro ICDrawWindow ) para cambiar la posición de la ventana. Las aplicaciones suelen usar este mensaje cada vez que cambia la ventana.
Si la ventana de reproducción recibe un mensaje de paleta de presentación, la aplicación debe enviar el mensaje de ICM_DRAW_REALIZE (o usar la macro ICDrawRealize ) para que el representador vuelva a darse cuenta de la paleta para la reproducción. Las aplicaciones pueden cambiar la paleta enviando el mensaje ICM_DRAW_CHANGEPALETTE (o usar la macro ICDrawChangePalette ) y obtener la paleta actual enviando el mensaje ICM_DRAW_GET_PALETTE .
Algunos representadores deben indicarse específicamente para mostrar los fotogramas pasados a ellos. Enviar el mensaje ICM_DRAW_RENDERBUFFER (o usar la macro ICDrawRenderBuffer ) hace que estos representadores dibujen el marco.