Mensagens de qualidade
[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.]
As mensagens de qualidade são definidas com a estrutura Qualidade . Essa estrutura contém os seguintes membros:
- Tipo: Definido pela enumeração QualityMessageType ; ou Fome, indicando que o filtro está recebendo dados muito poucos, ou Inundação, indicando que o filtro está recebendo muitos dados.
- Proporção: O ajuste solicitado na taxa de dados, de uma linha de base de 1000. Por exemplo, 750 indica 75% e 1500 indica 150%.
- Tarde: Tempo de referência que indica a latência da chegada da amostra mais recente. O valor será negativo se o exemplo tiver chegado mais cedo.
- Timestamp: O carimbo de data/hora no exemplo mais recente.
Por exemplo, suponha que um exemplo com um carimbo de data/hora de 240 milissegundos (ms) atinja o renderizador em 280 ms, hora do fluxo. O renderizador cria uma mensagem de qualidade do tipo Fome. O exemplo chegou 40 ms atrasado, portanto, o membro Late é 400000. (Todos os tempos de referência estão em unidades de 100 nanossegundos.) O membro TimeStamp é 2400000.
Para o membro Proporcional , o renderizador pode usar uma média em execução para calcular o valor. Talvez os exemplos tenham chegado a tempo e este exemplo seja uma anomalia. Nesse caso, o renderizador pode solicitar apenas uma pequena correção. Por outro lado, se os exemplos estiverem consistentemente atrasados, o renderizador poderá solicitar uma correção maior.
O controle de qualidade é tratado por meio da interface IQualityControl . Ele 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 passar a mensagem para outro objeto. Se o aplicativo chamar o método SetSink do objeto, o objeto deverá delegar o controle de qualidade ao gerenciador de qualidade especificado.