Сообщения о качестве
[Функция, связанная с этой страницей 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 объекта, объект должен делегировать управление качеством указанному диспетчеру качества.