Método IGraphConfig::Reconnect (strmif.h)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O Reconnect
método executa uma reconexão dinâmica entre dois pinos.
Sintaxe
HRESULT Reconnect(
[in] IPin *pOutputPin,
[in] IPin *pInputPin,
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
[in] IBaseFilter *pUsingFilter,
[in] HANDLE hAbortEvent,
[in] DWORD dwFlags
);
Parâmetros
[in] pOutputPin
Ponteiro para a interface IPin de um pino de saída. Pode ser NULL, nesse caso , pInputPin não deve ser NULL.
[in] pInputPin
Ponteiro a interface IPin para um pino de entrada. Pode ser NULL, nesse caso , pOutputPin não deve ser NULL.
[in] pmtFirstConnection
Ponteiro para uma estrutura AM_MEDIA_TYPE que especifica o tipo de mídia para a primeira conexão de pino feita durante a reconexão. Se esse parâmetro for NULL, a primeira conexão poderá ter qualquer tipo de mídia.
[in] pUsingFilter
Ponteiro para um filtro opcional a ser usado na reconexão. O filtro já deve estar no grafo. Pode ser NULL.
[in] hAbortEvent
Identificador de um evento. Se o chamador for um filtro chamando em um de seus threads de processamento de dados, esse parâmetro deverá ser um identificador para um evento que será sinalizado quando o filtro for colocado em um estado interrompido. Caso contrário, esse parâmetro pode ser NULL. Para obter mais informações, consulte Comentários.
[in] dwFlags
Combinação de sinalizadores da enumeração AM_GRAPH_CONFIG_RECONNECT_FLAGS , especificando como executar a reconexão.
Retornar valor
Retorna S_OK se tiver êxito. Caso contrário, retorna um código de erro que pode ser um dos valores a seguir ou outros não listados.
Código de retorno | Descrição |
---|---|
|
Argumento inválido. (Por exemplo, pInputPin e pOutputPin são NULL.) |
|
O pin de entrada não dá suporte a IPinConnection. |
|
Não é possível conectar o filtro. |
|
O estado do filtro foi alterado. Não é possível concluir a operação. |
Comentários
Se você especificar apenas um pino, o método procurará o outro pino. Por padrão, no entanto, a pesquisa falhará se atingir um filtro que foi adicionado ao grafo por meio do método IFilterGraph::AddFilter . Para substituir esse comportamento, chame IGraphConfig::SetFilterFlags e defina o sinalizador AM_FILTER_FLAGS_REMOVABLE no filtro.
O processo de reconexão envolve várias etapas, a maioria delas tratadas dentro deste método:
- Primeiro, antes de chamar o método , bloqueie o fluxo de dados ao longo do caminho que está sendo reconfigurado. Os aplicativos devem chamar o método IPinFlowControl::Block para fazer isso. Se o chamador for um filtro, em vez de um aplicativo, possivelmente o filtro poderá controlar o fluxo de dados internamente.
- Os pinos de saída e entrada especificados definem os pontos iniciais e finais para a reconexão. O pin de entrada deve dar suporte à interface IPinConnection . Se você deixar um desses pinos não especificado (passando um parâmetro NULL ), o método pesquisará o grafo de filtro para encontrar um pino candidato para reconexão. (Para localizar um pino de entrada, ele pesquisa downstream do pino de saída; para localizar um pino de saída, ele pesquisa upstream do pino de entrada.)
- O método envia por push todos os dados pendentes por meio do grafo de filtro (por meio de uma chamada interna para IGraphConfig::P ushThroughData).
- Se você tiver especificado um filtro para inserir no grafo, o método conectará o pino de saída inicial ao pino de entrada do filtro e conectará o pino de saída do filtro ao pin de entrada final. Se você não especificar um filtro, o método simplesmente conectará o pino de saída ao pino de entrada. Em ambos os casos, o método insere todos os filtros de transformação necessários para concluir as conexões. (No entanto, você pode substituir esse comportamento definindo o sinalizador apropriado; para obter mais informações, consulte a descrição do parâmetro dwFlags .)
- Por fim, o método coloca os novos filtros em um estado em execução. Cabe ao chamador reiniciar o fluxo de dados. Os aplicativos podem fazer isso chamando IPinFlowControl::Block sem sinalizadores.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | strmif.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |