| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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 мс он срабатывает. Так работает, но все же это как-то неправильно.
А как нужно делать правильно? Примеров на эту тему не нашел Подскажите плз. |
|
| Вернуться к началу |
|
 |
Sulako Новенький
Зарегистрирован: 26.01.2007 Сообщения: 2
|
Добавлено: Сб Янв 27, 2007 11:46 pm Заголовок сообщения: |
|
|
Проблему решил.
если кому-то еще понадобится: если граф остановить, когда обрабатывается callback samplegrabber-а, он зависает.
Решается это так: нужно из callback-а посылать в программу сообщение, причем методом PostMessage, чтобы оно было самым последним в очереди. А в его обработчике уже и останавливать граф. |
|
| Вернуться к началу |
|
 |
WondeRu Главвред :)

Зарегистрирован: 30.10.2006 Сообщения: 199 Откуда: Самара
|
Добавлено: Чт Фев 01, 2007 9:39 am Заголовок сообщения: |
|
|
Спасибо  |
|
| Вернуться к началу |
|
 |
|
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|
|
|