Método IMFSourceReaderEx::AddTransformForStream (mfreadwrite.h)

Agrega una transformación, como un efecto de audio o vídeo, a una secuencia.

Sintaxis

HRESULT AddTransformForStream(
  [in] DWORD    dwStreamIndex,
  [in] IUnknown *pTransformOrActivate
);

Parámetros

[in] dwStreamIndex

Secuencia que se va a configurar. El valor puede ser cualquiera de los siguientes.

Valor Significado
0 a 0xFFFFFFFB
Índice de base cero de una secuencia.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Primera secuencia de vídeo.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Primera secuencia de audio.

[in] pTransformOrActivate

Puntero a uno de los siguientes:

  • Transformación de Media Foundation (MFT) que expone la interfaz IMFTransform .
  • Objeto de activación MFT que expone la interfaz IMFActivate .

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK
Correcto.
MF_E_INVALIDMEDIATYPE
La transformación no admite el formato de secuencia actual y no se pudo realizar ninguna conversión. Vea Comentarios para obtener más información.
MF_E_INVALIDREQUEST
Solicitud no válida.
MF_E_INVALIDSTREAMNUMBER
El parámetro dwStreamIndex no es válido.

Comentarios

Este método intenta agregar la transformación al final de la cadena de procesamiento actual.

Para usar este método, realice la siguiente secuencia de llamadas:

  1. Llame a IMFSourceReader::SetCurrentMediaType para establecer el tipo de salida que desea para la secuencia. En este paso, puede especificar un tipo de medio que contenga solo los GUID de tipo principal y subtipo. Por ejemplo, para obtener una salida RGB de 32 bits, establezca un tipo principal de MFMediaType_Video y un subtipo de MFVideoFormat_RGB32. (Para obtener más información, vea GUID de tipo multimedia).
  2. Llame a AddTransformForStream. Si el Lector de origen conecta correctamente la transformación, establece el tipo de salida en la transformación.
  3. Llame a IMFSourceReader::GetCurrentMediaType para obtener el tipo de salida de la transformación. Este método devuelve un tipo de medio con una descripción de formato completa.
  4. Opcionalmente, si desea modificar el tipo de salida, llame a IMFSourceReader::SetCurrentMediaType de nuevo para establecer un tipo de medio completo en la transformación.
El método AddTransformForStream no insertará un descodificador en la cadena de procesamiento. Si el formato de secuencia nativa está codificado y la transformación requiere un formato sin comprimir, llame a SetCurrentMediaType para establecer el formato sin comprimir (paso 1 de la lista anterior). Sin embargo, el método insertará un procesador de vídeo para convertir entre formatos RGB e YUV, si es necesario.

El método produce un error si el lector de origen se configuró con los atributos MF_READWRITE_DISABLE_CONVERTERS o MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING .

En modo asincrónico, el método también produce un error si hay pendiente una solicitud de ejemplo. En ese caso, espere a que se invoque la devolución de llamada onReadSample antes de llamar al método . Para obtener más información sobre el uso del Lector de origen en modo asincrónico, vea IMFSourceReader::ReadSample.

Puede agregar una transformación en cualquier momento durante el streaming. Sin embargo, el método no vacía ni purga la canalización antes de insertar la transformación. Por lo tanto, si los datos ya están en la canalización, no se garantiza que el ejemplo siguiente tenga aplicada la transformación.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfreadwrite.h

Consulte también

IMFSourceReaderEx

Lector de origen