Обратный вызов SampleGrabber вызывается ложно, даже когда график приостановлен

Я использую Directshow SampleGrabber в режиме обратного вызова, чтобы захватить видеокадр из исходного файла и выполнить некоторую обработку. Также я хотел бы сохранить текущую скорость воспроизведения видео и должен поддерживать как случайный поиск, так и поиск вперед и назад. Для этого я также выполняю локальную буферизацию в другом потоке. Я запускаю график с источником синхронизации, установленным на NULL, чтобы получить максимальную скорость. Однако, когда я приостанавливаю график после фиксированного объема буферизации. Обратный вызов SampleGrabber вызывается ложно, даже когда график приостановлен. Это влияет на индексацию и отслеживание кадров. Я хочу возобновить график точно с той же позиции, на которой он был приостановлен. Однако, если я запускаю график с часами по умолчанию, он работает нормально, но это влияет на мое воспроизведение. Я хочу, чтобы поток буферизации завершился как можно скорее. Как я могу убедиться, что обратный вызов не вызывается, когда график приостановлен? Любые мысли или предложения будут очень полезны.

Заранее спасибо Прадип


person praks411    schedule 18.02.2013    source источник


Ответы (1)


Приостановленный граф обычно имеет ту же внутреннюю потоковую передачу (активное состояние), за исключением того, что средства визуализации блокируют потоковую передачу, особенно. как только будет получено достаточно данных для баннера предварительного просмотра. Поскольку вы удалили часы из графика, ваш рендерер, скорее всего, не заблокирует выполнение, потому что он не содержит никаких часов для паузы. В вашем случае это проблема возникает из-за вашего намерения повторно использовать один и тот же график для быстрого анализа файла и воспроизведения. Раздельный дизайн графа имеет больше шансов добиться большего успеха.

person Roman R.    schedule 19.02.2013
comment
Я думаю, что метод двух графиков должен работать хорошо. Я реализовал первый график без часов для создания отметки времени. И второй для воспроизведения. Я попробую отключить часы в этом и посмотреть, работает ли это. Спасибо Роман за предложение. - person praks411; 19.02.2013