Compartilhar via


Método IAMStreamControl::StopAt (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 StopAt método informa ao pino quando parar de fornecer dados.

Sintaxe

HRESULT StopAt(
  [in] const REFERENCE_TIME *ptStop,
  [in] BOOL                 bSendExtra,
  [in] DWORD                dwCookie
);

Parâmetros

[in] ptStop

Ponteiro para um valor de REFERENCE_TIME que especifica quando o pino deve parar de fornecer dados. Se o valor for MAXLONGLONG (0x7FFFFFFFFFFFFFFF), o método cancelará qualquer solicitação de parada anterior. Se psStop for NULL, o pino será interrompido imediatamente.

Para pinos de visualização, somente os valores NULL e MAXLONGLONG são válidos, pois os pinos de visualização não carimbam os exemplos que eles entregam.

[in] bSendExtra

Especifica um valor booliano que indica se um exemplo extra deve ser enviado após a hora de parada agendada. Se TRUE, o pino enviará um exemplo extra.

[in] dwCookie

Especifica um valor a ser enviado junto com a notificação de início. Consulte Observações.

Valor retornado

Se o método for bem-sucedido, o valor retornado será S_OK. Caso contrário, retorna um valor HRESULT que indica a causa da falha.

Comentários

Se o parâmetro dwCookie for diferente de zero, o pino enviará um evento EC_STREAM_CONTROL_STOPPED quando parar de fornecer dados. O primeiro parâmetro de evento é um ponteiro para a interface IPin do pino e o segundo é o valor de dwCookie. Se ptStop for NULL ou MAXLONGLONG, nenhum evento será enviado e o valor de dwCookie será ignorado.

Na captura de vídeo, você normalmente chamaria esse método no pino de saída do filtro de captura e no pino de entrada do multiplexador. O aplicativo deve aguardar o evento de parada do multiplexador. Isso garante que o filtro de captura envie o número certo de quadros, garantindo que todos os quadros atinjam o multiplexador. Além disso, defina o parâmetro bSendExtra como TRUE para o pino de captura, mas FALSE para o pino multiplexer. Isso faz com que o filtro de captura envie um quadro adicional. O multiplexador depende dos carimbos de data/hora do pino de captura, portanto, se o quadro extra não for enviado, o multiplexador aguardará indefinidamente o tempo de parada. Quando o multiplexador receber o quadro extra, ele o descartará.

Esse método manipula as seguintes condições de limite:

  • Se o tempo de parada ficar entre os horários de início e parada de um exemplo, o pino entregará essa amostra.
  • Se a hora de início for igual à hora de parada, o pino fornecerá uma amostra.
MAXLONGLONG é o maior valor de REFERENCE_TIME possível. Na biblioteca de classes base, ela também é definida como a MAX_TIME constante.

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

Confira também

Códigos de erro e êxito

IAMStreamControl Interface