Сообщения о качестве

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Сообщения о качестве определяются со структурой Качества . Эта структура содержит следующие элементы:

  • Тип: Определяется перечислением QualityMessageType ; Либо голод, указывающий, что фильтр получает слишком мало данных, или Flood, указывающий, что фильтр получает слишком много данных.
  • Пропорции: Запрошенная корректировка скорости передачи данных с базового уровня 1000. Например, 750 означает 75 %, а 1500 — 150 %.
  • Поздно: Время ссылки, указывающее, насколько поздно поступила последняя выборка. Значение отрицательное, если выборка поступила раньше.
  • Timestamp: Метка времени в последнем примере.

Например, предположим, что образец с меткой времени 240 миллисекундах (мс) достигает отрисовщика со значением 280 мс( потоковое время). Отрисовщик создает качественное сообщение типа Famine. Образец поступил на 40 мс с опозданием, поэтому элемент Late равен 400000. (Все эталонные значения времени находятся в единицах 100 наносекунд.) Элемент TimeStamp — 2400000.

Для элемента Пропорция отрисовщик может использовать выполняющееся среднее для вычисления значения. Возможно, образцы поступают вовремя, и этот образец является аномалией. В этом случае отрисовщик может запросить только небольшое исправление. С другой стороны, если выборки постоянно задерживаются, отрисовщик может запросить более крупное исправление.

Контроль качества осуществляется через интерфейс IQualityControl . Он содержит два метода.

  • Уведомление: отправляет качественное сообщение.
  • SetSink: указывает пользовательский диспетчер качества.

Объект, реализующий IQualityControl , получает сообщения о качестве с помощью метода Notify . Он может обрабатывать сообщение или передавать его другому объекту. Если приложение вызывает метод SetSink объекта, объект должен делегировать управление качеством указанному диспетчеру качества.