enumeración _MFT_INPUT_STREAM_INFO_FLAGS (mftransform.h)
Describe un flujo de entrada en una transformación de Media Foundation (MFT).
Syntax
typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
MFT_INPUT_STREAM_REMOVABLE = 0x200,
MFT_INPUT_STREAM_OPTIONAL = 0x400,
MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;
Constantes
MFT_INPUT_STREAM_WHOLE_SAMPLES Valor: 0x1 Cada muestra multimedia (interfaz IMFSample ) de los datos de entrada debe contener unidades de datos completas y sin romper. La definición de una unidad de datos depende del tipo de medio: Para vídeo sin comprimir, un fotograma de vídeo; para datos comprimidos, un paquete comprimido; para audio sin comprimir, un único marco de audio. En el caso de los formatos de audio sin comprimir, esta marca siempre está implícita. (Es válido establecer la marca, pero no es obligatorio). Un marco de audio sin comprimir nunca debe abarcar más de una muestra multimedia. |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER Valor: 0x2 Cada ejemplo multimedia que el cliente proporciona como entrada debe contener exactamente una unidad de datos, tal como se define para la marca MFT_INPUT_STREAM_WHOLE_SAMPLES. Si esta marca está presente, la marca MFT_INPUT_STREAM_WHOLE_SAMPLES también debe estar presente. Un MFT que procesa audio sin comprimir no debe establecer esta marca. El MFT debe aceptar búferes que contengan más de una sola trama de audio, por motivos de eficacia. |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE Valor: 0x4 Todas las muestras de entrada deben tener el mismo tamaño. El tamaño se da en el miembro cbSize de la estructura MFT_INPUT_STREAM_INFO . El MFT debe proporcionar este valor. Durante el procesamiento, el MFT debe comprobar el tamaño de las muestras de entrada y puede quitar muestras con un tamaño incorrecto. |
MFT_INPUT_STREAM_HOLDS_BUFFERS Valor: 0x8 El MFT podría contener una o varias muestras de entrada después de llamar a IMFTransform::P rocessOutput . Si esta marca está presente, el miembro hnsMaxLatency de la estructura MFT_INPUT_STREAM_INFO proporciona la latencia máxima y el miembro cbMaxLookahead proporciona el número máximo de bytes de lookahead. |
MFT_INPUT_STREAM_DOES_NOT_ADDREF Valor: 0x100 El MFT no contiene muestras de entrada después de que el método IMFTransform::P rocessInput devuelva. Libera el ejemplo antes de que se devuelva el método ProcessInput . Si esta marca está ausente, MFT podría contener un recuento de referencias en los ejemplos que se pasan al método ProcessInput . El cliente no debe volver a usar ni eliminar la memoria del búfer hasta que el MFT libere el puntero IMFSample del ejemplo. Si esta marca no está presente, no garantiza que MFT contenga un recuento de referencias en los ejemplos de entrada. Es válido para que un MFT libere ejemplos de entrada en ProcessInput incluso si el MFT no establece esta marca. Sin embargo, establecer esta marca podría permitir que el cliente optimice cómo se vuelven a usar los búferes. Una MFT no debe establecer esta marca si alguna vez se mantiene en una muestra de entrada después de volver de ProcessInput. |
MFT_INPUT_STREAM_REMOVABLE Valor: 0x200 Esta secuencia de entrada se puede quitar llamando a IMFTransform::D eleteInputStream. |
MFT_INPUT_STREAM_OPTIONAL Valor: 0x400 Este flujo de entrada es opcional. La transformación puede generar resultados sin recibir la entrada de esta secuencia. El autor de la llamada puede anular la selección de la secuencia estableciendo un tipo de medio o estableciendo un tipo de medio NULL . Es posible que cada flujo de entrada de una transformación sea opcional, pero al menos se debe seleccionar una entrada para generar la salida. |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE Valor: 0x800 El MFT puede realizar el procesamiento en contexto. En este modo, el MFT modifica directamente el búfer de entrada. Cuando el cliente llama a ProcessOutput, se devuelve el mismo ejemplo que se entregó a esta secuencia en el flujo de salida que tiene un identificador de flujo coincidente. Esta marca implica que el MFT se mantiene en el búfer de entrada, por lo que esta marca no se puede combinar con la marca MFT_INPUT_STREAM_DOES_NOT_ADDREF. Si esta marca está presente, MFT debe establecer la marca MFT_OUTPUT_STREAM_PROVIDES_SAMPLES o MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES para el flujo de salida que corresponde a este flujo de entrada. (Véase IMFTransform::GetOutputStreamInfo). |
Comentarios
Antes de que el cliente establezca los tipos de medios en la transformación, las únicas marcas garantizadas para ser precisas son las marcas MFT_INPUT_STREAM_REMOVABLE y MFT_INPUT_STREAM_OPTIONAL. Para todas las demás marcas, el cliente debe establecer primero el tipo de medio en cada secuencia no opcional.
En el modelo de procesamiento predeterminado, un MFT contiene un recuento de referencias en el ejemplo que recibe en ProcessInput. No procesa el ejemplo inmediatamente dentro de ProcessInput. Cuando se llama a ProcessOutput , MFT genera datos de salida y, a continuación, descarta el ejemplo de entrada. Se definen las siguientes variaciones en este modelo:
- Si un MFT nunca contiene ejemplos de entrada entre ProcessInput y ProcessOutput, puede establecer el MFT_INPUT_STREAM_DOES_NOT_ADDREF.
- Si un MFT contiene algunos ejemplos de entrada más allá de la siguiente llamada a ProcessOutput, puede establecer el MFT_INPUT_STREAM_HOLDS_BUFFERS.
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 |