Пример фильтра Metronome

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

Описание

В этом примере фильтра показано, как реализовать эталонные часы. Фильтр использует входные данные микрофона по умолчанию для прослушивания звуковых пиков (например, щелчков, хлопков в руках или кашля), которые используются для определения частоты часов.

Использование

Выполните сборку примера проекта и скопируйте библиотеку DLL фильтра (Metronom.ax) в системный каталог Windows. Запустите файл Metronom.reg, чтобы зарегистрировать библиотеку DLL.

Чтобы использовать фильтр, выполните следующие действия.

  1. Создайте в GraphEdit граф фильтра, который отрисовывает видеопоток.
  2. Удалите все отрисованные аудиопотоки.
  3. Добавьте фильтр Metronome в граф. Он отображается в категории Фильтры DirectShow.
  4. Запустите граф. Видео начнет воспроизводиться с обычной скоростью.
  5. Хлопайте в руки или используйте метроном, чтобы установить новую скорость.

Примечания по программированию

Этот фильтр работает только для видео. Отрисовщик звука не может синхронизироваться с радикально разными частотами.

Если вы хлопать 92 раза в минуту (один раз каждые 652 мс), видео будет воспроизводиться с нормальной скоростью. Это значение по умолчанию можно изменить, изменив значение константы BPM в Metronom.cpp.

Если вы перестаете хлопать в течение определенного периода времени, а затем снова начинаете хлопать, необходимо начать снова примерно с той же скоростью, иначе фильтр проигнорирует это. Кроме того, скорость воспроизведения видео ограничена скоростью ЦП. Если вы превысите ограничение на любой период времени, фильтр перестанет отвечать на изменения скорости. В этом случае остановите граф и перезапустите его.

Если вы реализуете собственные часы, наиболее важными правилами является то, что ссылочные часы не должны идти назад. То есть они никогда не должны сообщать о значении времени меньше предыдущего значения времени.

Скачивание примера

Чтобы скачать примеры пакета SDK DirectShow, установите последнюю версию пакета WINDOWS SDK.

Этот пример устанавливается по следующему пути: [корневой каталог SDK]\Samples\Multimedia\DirectShow\Filters\Metronome.

Класс CBaseReferenceClock

Примеры DirectShow