Compartilhar via


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

Adiciona uma transformação, como um efeito de áudio ou vídeo, a um fluxo.

Sintaxe

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

Parâmetros

[in] dwStreamIndex

O fluxo a ser configurado. O valor pode ser qualquer um dos seguintes.

Valor Significado
0 a 0xFFFFFFFB
O índice baseado em zero de um fluxo.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
O primeiro fluxo de vídeo.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
O primeiro fluxo de áudio.

[in] pTransformOrActivate

Um ponteiro para um dos seguintes:

  • Uma transformação do Media Foundation (MFT) que expõe a interface IMFTransform .
  • Um objeto de ativação MFT que expõe a interface IMFActivate .

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK
Êxito.
MF_E_INVALIDMEDIATYPE
A transformação não dá suporte ao formato de fluxo atual e nenhuma conversão foi possível. Confira Comentários para obter mais informações.
MF_E_INVALIDREQUEST
Solicitação inválida.
MF_E_INVALIDSTREAMNUMBER
O parâmetro dwStreamIndex é inválido.

Comentários

Esse método tenta adicionar a transformação no final da cadeia de processamento atual.

Para usar esse método, faça a seguinte sequência de chamadas:

  1. Chame IMFSourceReader::SetCurrentMediaType para definir o tipo de saída desejado para o fluxo. Nesta etapa, você pode especificar um tipo de mídia que contenha apenas o tipo principal e os GUIDs de subtipo. Por exemplo, para obter a saída RGB de 32 bits, defina um tipo principal de MFMediaType_Video e um subtipo de MFVideoFormat_RGB32. (Para obter mais informações, consulte GUIDs de tipo de mídia.)
  2. Chame AddTransformForStream. Se o Leitor de Origem conectar a transformação com êxito, ele definirá o tipo de saída na transformação.
  3. Chame IMFSourceReader::GetCurrentMediaType para obter o tipo de saída da transformação. Esse método retorna um tipo de mídia com uma descrição de formato completa.
  4. Opcionalmente, se você quiser modificar o tipo de saída, chame IMFSourceReader::SetCurrentMediaType novamente para definir um tipo de mídia completo na transformação.
O método AddTransformForStream não inserirá um decodificador na cadeia de processamento. Se o formato de fluxo nativo for codificado e a transformação exigir um formato descompactado, chame SetCurrentMediaType para definir o formato descompactado (etapa 1 na lista anterior). No entanto, o método inserirá um processador de vídeo para converter entre formatos RGB e YUV, se necessário.

O método falhará se o leitor de origem tiver sido configurado com os atributos MF_READWRITE_DISABLE_CONVERTERS ou MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING .

No modo assíncrono, o método também falhará se uma solicitação de exemplo estiver pendente. Nesse caso, aguarde até que o retorno de chamada OnReadSample seja invocado antes de chamar o método . Para obter mais informações sobre como usar o Leitor de Origem no modo assíncrono, consulte IMFSourceReader::ReadSample.

Você pode adicionar uma transformação a qualquer momento durante o streaming. No entanto, o método não libera nem esvazia o pipeline antes de inserir a transformação. Portanto, se os dados já estiverem no pipeline, não há garantia de que o próximo exemplo tenha a transformação aplicada.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfreadwrite.h

Confira também

IMFSourceReaderEx

Leitor de Origem