У меня есть график DirectShow с фильтром SampleGrabber, выполняющим некоторую обработку. Обработка занимает до 50 мс, поэтому часто скорость воспроизведения ниже. Обработка может быть включена и выключена.
Моя проблема в том, что если обработка была включена некоторое время, когда я ее выключал, видео воспроизводилось как можно быстрее, пока не достигло определенной точки. Предположительно, в этой точке время кадра соответствует времени в потоке, и больше нет задержки.
Как я могу предотвратить это, чтобы при выключении обработки воспроизведение происходило с нормальной скоростью? Можно ли отключить часы потока во время обработки данных? Или, возможно, отметка времени сэмплов, выходящих из фильтра SampleGrabber снова, с добавленной дополнительной задержкой?
Кто-нибудь знает правильный способ сделать это?
Edit:
Я использовал метод изменения времени выборки, как показано в ответе ниже, но у меня были некоторые проблемы с поиском, а также с вычислением временных меток выборки.
Я обнаружил, что лучшим способом было бы реализовать собственные опорные часы и остановить их, если обработка заняла слишком много времени.