Classe CBaseStreamControl
[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.]
Essa classe implementa a interface IAMStreamControl para pinos de entrada e saída. Ele fornece controle sobre como iniciar e parar um pino individual no filtro. Um pin que dá suporte a IAMStreamControl deve herdar dessa classe base. Veja a seguir uma declaração típica para um pin de entrada:
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
Substitua NonDelegatingQueryInteface para expor IAMStreamControl. Para obter mais informações, confira Como implementar o IUnknown.
Métodos públicos | Descrição |
---|---|
Cbasestreamcontrol | Método de construtor. |
~Cbasestreamcontrol | Método destruidor. |
CheckStreamState | Determina se um exemplo de mídia deve ser entregue ou descartado. |
Liberando | Notifica a classe base de que o pino foi iniciado ou parou de liberar. |
NotifyFilterState | Notifica o pino quando o estado do filtro é alterado. |
SetFilterGraph | Especifica o coletor de eventos para eventos de controle de fluxo. |
SetSyncSource | Notifica a classe base do relógio de referência atual. |
Métodos IAMStreamControl | Descrição |
GetInfo | Recupera informações sobre as configurações atuais de controle de fluxo, incluindo os horários de início e parada. |
Startat | Informa o pin quando começar a fornecer dados. |
Stopat | Informa o pino quando parar de fornecer dados. |
Comentários
Essa classe requer o pin e o filtro proprietário para notificar a classe quando ocorrem vários eventos, como o filtro que une o grafo ou recebe um novo relógio de referência. Você deve chamar os seguintes métodos de classe:
- No método IMediaFilter::SetSyncSource do filtro, chame o método CBaseStreamControl::SetSyncSource . Esse método notifica a classe do relógio de referência atual.
- No método CBaseFilter::JoinFilterGraph do filtro, chame o método CBaseStreamControl::SetFilterGraph . Esse método fornece à classe um ponteiro para o Gerenciador de Grafo de Filtro, para que a classe possa enviar os eventos de controle de fluxo corretos.
- Sempre que o filtro alterar o estado (para executar, pausar ou parar), chame o método CBaseStreamControl::NotifyFilterState .
- Nos métodos IPin::BeginFlush e IPin::EndFlush do pin, chame o método CBaseStreamControl::Flushing .
A CBaseStreamControl
classe usa o relógio de referência do grafo de filtro para determinar quais exemplos o filtro deve ser entregue e quais devem ser descartados. No método IMemInputPin::Receive do pin, chame o método CBaseStreamControl::CheckStreamState com um ponteiro para o exemplo de mídia de entrada. Se o método retornar o valor STREAM_FLOWING, forneça o exemplo downstream. Caso contrário, descarte-o.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|