Остановить граф из SampleGrabber

 
Начать новую тему   Ответить на тему    Список форумов DirectShow форум -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Sulako
Новенький


Зарегистрирован: 26.01.2007
Сообщения: 2

СообщениеДобавлено: Пт Янв 26, 2007 11:42 am    Заголовок сообщения: Остановить граф из SampleGrabber Ответить с цитатой

Работаю с видео на Delphi+DSPack.
Требуется обрабатывать кадры, для этого использую SampleGrabber. Вся работа ведется в событии OnBuffer. Возникла необходимость управлять графом в зависимости от результатов обработки. Например - если в течение 5 секунд движения в кадре не обнаружено - прекратить работу и остановить граф(очистить, уничтожить, перемотать, etc). Если я вызываю в OnBuffer Stop (StopWhenReady, Pause, ClearGraph, Active=false, и т.п.) - граф виснет и вся работа прекращается.
Если делать то же самое, но снаружи, допустим при нажатии на кнопку - все ОК. Дело не в DSPack - делал и без него, происходит то же самое.
Пока сделал так - повесил таймер, который и делает с графом то, что надо, он обычно отключен, но если надо - в OnBuffer его запускаю и через 100 мс он срабатывает. Так работает, но все же это как-то неправильно.
А как нужно делать правильно? Примеров на эту тему не нашел Sad Подскажите плз.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Sulako
Новенький


Зарегистрирован: 26.01.2007
Сообщения: 2

СообщениеДобавлено: Сб Янв 27, 2007 11:46 pm    Заголовок сообщения: Ответить с цитатой

Проблему решил.
если кому-то еще понадобится: если граф остановить, когда обрабатывается callback samplegrabber-а, он зависает.
Решается это так: нужно из callback-а посылать в программу сообщение, причем методом PostMessage, чтобы оно было самым последним в очереди. А в его обработчике уже и останавливать граф.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
WondeRu
Главвред :)


Зарегистрирован: 30.10.2006
Сообщения: 199
Откуда: Самара

СообщениеДобавлено: Чт Фев 01, 2007 9:39 am    Заголовок сообщения: Ответить с цитатой

Спасибо Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DirectShow форум -> Общий Часовой пояс: GMT + 4
Страница 1 из 1
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB


Рейтинг@Mail.ru