estructura MFT_OUTPUT_DATA_BUFFER (mftransform.h)
Contiene información sobre un búfer de salida para una transformación de Media Foundation. Esta estructura se usa en el método IMFTransform::P rocessOutput .
Sintaxis
typedef struct _MFT_OUTPUT_DATA_BUFFER {
DWORD dwStreamID;
IMFSample *pSample;
DWORD dwStatus;
IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;
Members
dwStreamID
Identificador de flujo de salida. Antes de llamar a ProcessOutput, establezca este miembro en un identificador de flujo válido.
Excepción: si el método IMFTransform::GetStreamIDs devuelve E_NOTIMPL, el MFT omite este miembro y usa los índices de la matriz pOutputSamples en el método ProcessOutput como identificadores de flujo. En otras palabras, usa el primer elemento de la matriz para la secuencia 0, el segundo para la secuencia 1, etc. Se recomienda (pero no es necesario) que el llamador establezca dwStreamID igual al índice de matriz en este caso.
pSample
Puntero a la interfaz IMFSample . Antes de llamar a ProcessOutput, establezca este miembro en igual que un puntero de IMFSample válido o NULL. Vea Comentarios para obtener más información.
dwStatus
Antes de llamar a ProcessOutput, establezca este miembro en cero. Cuando se devuelve el método, el MFT podría establecer el miembro igual a un valor de la enumeración _MFT_OUTPUT_DATA_BUFFER_FLAGS . De lo contrario, el MFT deja este miembro igual a cero.
pEvents
Antes de llamar a ProcessOutput, establezca este miembro en NULL. En la salida, el MFT podría establecer este miembro en un puntero de interfaz IMFCollection válido. El puntero representa un collecton que contiene cero o más eventos. Para obtener cada evento, llame a IMFCollection::GetElement y consulte el puntero IUnknown devuelto para la interfaz IMFMediaEvent . Cuando el método ProcessOutput devuelve, el autor de la llamada es responsable de liberar el puntero IMFCollection si el puntero no es NULL.
Comentarios
Debe proporcionar una estructura de MFT_OUTPUT_DATA_BUFFER para cada flujo de salida seleccionado.
Las MFP pueden admitir dos modelos de asignación diferentes para ejemplos de salida:
- MFT asigna el ejemplo de salida.
- El cliente asigna el ejemplo de salida.
Marca | Modelo de asignación |
---|---|
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT asigna los ejemplos de salida para la secuencia. Establezca pSample en NULL para esta secuencia. |
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES | MFT admite ambos modelos de asignación. |
Ninguno (valor predeterminado) | El cliente debe asignar los ejemplos de salida para la secuencia. |
El comportamiento de ProcessOutput depende del valor inicial de pSample y del valor del parámetro dwFlags en el método ProcessOutput .
-
Si pSample es NULL y dwFlags contiene la marca MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT descarta los datos de salida.
Restricción: este flujo de salida debe tener la marca MFT_OUTPUT_STREAM_DISCARDABLE o MFT_OUTPUT_STREAM_LAZY_READ. (Para obtener las marcas del flujo de salida, llame al método IMFTransform::GetOutputStreamInfo ).
-
Si pSample es NULL y dwFlags no contiene el MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT proporciona un ejemplo para los datos de salida. MFT establece pSample para que apunte al ejemplo que proporciona. MFT puede asignar un nuevo ejemplo o volver a usar un ejemplo de entrada.
Restricción: este flujo de salida debe tener la marca MFT_OUTPUT_STREAM_PROVIDES_SAMPLES o MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.
-
Si pSample no es NULL, MFT usa el ejemplo proporcionado por el autor de la llamada.
Restricción: este flujo de salida no debe tener la marca MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.
Cada llamada a ProcessOutput puede producir cero o más eventos y hasta un ejemplo por flujo de salida.
Requisitos
Cliente mínimo compatible | Windows Vista [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Encabezado | mftransform.h |