Почему я получаю последовательные образцы мультимедиа из фильтра захвата DirectShow с одинаковым временем выборки?

У меня есть приложение DirectShow, написанное на Delphi 6 с использованием библиотеки компонентов DSPACK и работающее на Windows XP. Вверху моего графика фильтра находится фильтр захвата звука. Фильтр захвата назначен моему телефону VOIP и имеет фильтр граббера образца сразу вниз. В методе обратного вызова примера фильтра захвата я добавил код, чтобы сообщать всякий раз, когда я получаю два образца мультимедиа подряд из фильтра захвата образца с одинаковыми временными метками (SampleTime's). Такое состояние встречается довольно часто, иногда почти каждый раз. Обратите внимание, что фильтр захвата имеет размер буфера 100 миллисекунд и частоту дискретизации 8000 кГц. Логика подсказывает мне, что я никогда не получу две доставки образцов с одинаковым временем выборки и что они всегда должны быть очень близки к 100 миллисекундам друг от друга. Но это не то, что происходит.

Что это означает, когда фильтр захвата DirectShow отправляет вам 2 последовательных образца мультимедиа с одинаковым временем выборки? Должен ли я игнорировать второй образец доставки, который имеет то же время образца, что и предыдущий? Или есть еще одна проблема, которую мне нужно решить?

Заметьте, я не контролирую время выборки, приходящее ко мне. Они генерируются фильтром захвата.

1 ответ

Настоящей ошибкой была ошибка, которую я допустил при расчете меток времени. Фильтр захвата не был ответственным. Я бы проголосовал за закрытие своего поста, за исключением того, что есть ценный комментарий к утилите под названием DumpMediaSample (см. Раздел комментариев к моему исходному сообщению).

Другие вопросы по тегам