Partilhar via


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.