Compartir a través de


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

  1. 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.
  2. 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

  1. El MFT sigue enviando eventos METransformHaveOutput hasta que no tenga más datos para procesar. No envía eventos METransformNeedInput durante este tiempo.
  2. Una vez que MFT envía el último evento METransformHaveOutput , envía un evento METransformDrainComplete .
  3. 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
Mftransform.h

Consulte también

MFT_MESSAGE_TYPE

TMF asincrónicas