Método ICaptureGraphBuilder2::ControlStream (strmif.h)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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 ControlStream
método define os horários de início e parada para um ou mais fluxos de dados capturados.
Sintaxe
HRESULT ControlStream(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pFilter,
[in] REFERENCE_TIME *pstart,
[in] REFERENCE_TIME *pstop,
[in] WORD wStartCookie,
[in] WORD wStopCookie
);
Parâmetros
[in] pCategory
Um ponteiro para um GUID que especifica uma das categorias de pino listadas no Conjunto de Propriedades do Pin. O valor desse parâmetro não pode ser NULL.
[in] pType
Ponteiro para um GUID de tipo principal que especifica o tipo de mídia ou NULL. Se esse parâmetro for NULL, defina o parâmetro pFilter como NULL também. Caso contrário, você pode controlar o pino errado e obter resultados imprevisíveis.
[in] pFilter
Ponteiro para uma interface IBaseFilter que especifica qual filtro controlar. Para controlar todos os filtros de captura no grafo, defina esse parâmetro como NULL.
[in] pstart
Ponteiro para uma variável que contém a hora de início. Se o valor for MAXLONGLONG (0x7FFFFFFFFFFFFFFF), o método cancelará a solicitação inicial anterior. Se o valor for NULL, o pin será iniciado imediatamente quando o grafo for executado.
[in] pstop
Ponteiro para uma variável que contém o tempo de parada. Se o valor for MAXLONGLONG, o método cancelará qualquer solicitação de parada anterior. Se o valor for NULL, o pin será interrompido imediatamente.
[in] wStartCookie
Valor que é enviado como o segundo parâmetro do EC_STREAM_CONTROL_STARTED notificação de evento. Confira Comentários para obter mais informações.
[in] wStopCookie
Valor que é enviado como o segundo parâmetro do EC_STREAM_CONTROL_STOPPED notificação de evento. Confira Comentários para obter mais informações.
Retornar valor
Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.
Código de retorno | Descrição |
---|---|
|
Pelo menos um renderizador downstream não enviará uma notificação de parada. |
|
Êxito. |
|
Não foi possível encontrar um pino correspondente ou o pino não deu suporte ao controle de fluxo. |
|
Argumento de ponteiro NULL. |
Comentários
Esse método localiza pinos de saída em filtros de captura, usando critérios de pesquisa que você fornece na chamada de método. Em seguida, ele chama os métodos IAMStreamControl nesses pinos. Esse método permite que um aplicativo controle fluxos sem que o aplicativo precise enumerar os filtros e os pinos no grafo.
Use esse método para captura com precisão de quadro ou para controle individual de captura e visualização. Por exemplo, você pode parar de capturar em disco, mas deixar a visualização de vídeo em execução.
Os três primeiros parâmetros especificam quais pinos controlar. Um grafo de captura pode ter mais de um filtro de captura. Por exemplo, ele pode ter filtros para vídeo, áudio e dados de legendagem oculta. Além disso, um filtro de captura pode ter mais de um pino de saída. Alguns filtros de captura têm pinos separados para visualização e captura ou pinos separados para dados somente vídeo e dados intercalados de áudio/vídeo. Para controlar a visualização de vídeo, por exemplo, especifique PIN_CATEGORY_PREVIEW para pCategory e MEDIATYPE_Video para pType.
Se a categoria de pino for PIN_CATEGORY_PREVIEW, você não poderá definir horários de início e parada específicos, pois os exemplos entregues por um pino de visualização não têm carimbos de data/hora (consulte Carimbos de Data/Hora). Em vez disso, use os valores NULL e MAXLONGLONG para iniciar e parar o pino nos horários desejados.
Além disso, esse método não terá suporte para visualização se o dispositivo usar um pino de porta de vídeo, pois nesse caso o dispositivo está fornecendo os exemplos de visualização diretamente por hardware.
Quando esse método localiza um pino correspondente, ele pesquisa downstream por outro filtro que dá suporte a IAMStreamControl (normalmente um multiplexador). Se encontrar um, ele também definirá os horários de início e parada nesse filtro. Isso gera dois pares de notificações de parada: um para o filtro de captura e outro para o filtro downstream. Somente a notificação de parada do filtro downstream usa o parâmetro wStopCookie . Aguardar esse evento garante que o filtro downstream receba o último exemplo.
Se nenhum filtro downstream der suporte a IAMStreamControl, o método retornará S_FALSE. Nesse caso, você pode receber a notificação de parada antes que o último exemplo seja renderizado.
MAXLONGLONG é o maior valor de REFERENCE_TIME possível. Na biblioteca de classes base do DirectShow, ela também é definida como a constante MAX_TIME.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | strmif.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |