MFT_MESSAGE_COMMAND_DRAIN
Solicita una transformación de Media Foundation (MFT) para purgar todos los datos almacenados.
Parámetro de mensaje
Ninguno.
Comentarios
Para enviar este mensaje, llame a IMFTransform::P rocessMessage.
Una vez enviado este mensaje, el flujo de entrada especificado no acepta la entrada hasta que MFT procesa todos los datos de llamadas anteriores a IMFTransform::P rocessInput.
El proceso de purga varía ligeramente entre las MFT sincrónicas y las MFP asincrónicas:
MFP sincrónicas
- Una vez que el cliente envía este mensaje, llama a IMFTransform::P rocessOutput en un bucle, hasta que ProcessOutput devuelve el código de error MF_E_TRANSFORM_NEED_MORE_INPUT.
- Siempre que el MFT todavía tenga datos para procesar, se producirá un error en las llamadas adicionales a ProcessInput . El MFT continúa generando resultados hasta que usa todos los datos almacenados. MFT descarta los datos que no se pueden procesar en un ejemplo de salida completo. (Por ejemplo, debe quitar un fotograma de vídeo parcial).
TMF asincrónicas
- El MFT sigue enviando eventos METransformHaveOutput hasta que no tenga más datos para procesar. No envía eventos METransformNeedInput durante este tiempo.
- Una vez que MFT envía el último evento METransformHaveOutput , envía un evento METransformDrainComplete .
- Una vez completada la purga, MFT no envía otro evento METransformNeedInput hasta que reciba un mensaje de MFT_MESSAGE_NOTIFY_START_OF_STREAM del cliente.
Una vez que el cliente ha purgado el MFT, el cliente puede enviar más datos de entrada. El primer ejemplo después de la operación de purga debe tener el atributo discontinuidad (MFSampleExtension_Discontinuity atributo).
Nota
Las versiones anteriores de esta documentación indicaron que el parámetro de evento ulParam es miembro de la enumeración _MFT_DRAIN_TYPE . No es correcto. UlParam contiene un identificador de secuencia.
Implementación
Un MFT asincrónico siempre debe devolver METransformDrainComplete después de que se haya purgado.
Un MFT sincrónico puede omitir este mensaje y devolver S_OK si se cumplen las condiciones siguientes:
- MFT nunca almacena más de una muestra de entrada a la vez.
- Cada ejemplo de entrada genera una única muestra de salida.
De lo contrario, un MFT sincrónico debe implementar este mensaje.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2008 [solo aplicaciones de escritorio] |
Encabezado |
|
Consulte también