Mensagens de Qualidade
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize 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.]
As mensagens de qualidade são definidas com a estrutura Quality. Esta estrutura contém os seguintes membros:
- Type: definido pelo QualityMessageType enumeração; Fome, indicando que o filtro está recebendo poucos dados, ou Inundação, indicando que o filtro está recebendo muitos dados.
- Proporção: O ajuste solicitado na taxa de dados, a partir de uma linha de base de 1000. Por exemplo, 750 indica 75% e 1500 indica 150%.
- Tarde: Hora de referência que indica a chegada tardia da amostra mais recente. O valor é negativo se a amostra chegar cedo.
- TimeStamp: O carimbo de data/hora na amostra mais recente.
Por exemplo, suponha que uma amostra com um carimbo de data/hora de 240 milissegundos (ms) atinja o renderizador a 280 ms, tempo de fluxo. O renderizador cria uma mensagem de qualidade do tipo Famine. A amostra chegou com 40 ms de atraso, então o membro Late é 400000. (Todos os tempos de referência estão em unidades de 100 nanossegundos.) O membro TimeStamp é 2400000.
Para o membro Proporção, o renderizador pode usar uma média em execução para calcular o valor. Talvez as amostras tenham chegado a tempo, e esta amostra é uma anomalia. Nesse caso, o renderizador pode solicitar apenas uma pequena correção. Por outro lado, se as amostras estiverem consistentemente atrasadas, o renderizador pode solicitar uma correção maior.
O controle de qualidade é feito através da interfaceIQualityControl. Contém dois métodos.
- Notificar: Envia uma mensagem de qualidade.
- SetSink: Especifica um gerenciador de qualidade personalizado.
Um objeto que implementa IQualityControl recebe mensagens de qualidade por meio de seu método Notify. Ele pode manipular a mensagem ou passá-la para outro objeto. Se o aplicativo chamar o método de SetSink do objeto, o objeto deverá delegar o controle de qualidade ao gerenciador de qualidade especificado.