2013-11-26 2 views
1

Я программирую фильтр DirectShow, который считывает данные с камеры. Интересно, какой из наиболее подходящих точек на конвейере DirectShow для инициализации этой камеры. В методе паузы фильтра в методе переопределения OnThreadCreate ...?Какой самый подходящий этап в конвейере DirectShow для инициализации ресурса?

ответ

0

Это зависит от того, что такое «инициализация кулачка». Если это что-то тривиальное и простое, вы можете сделать это в любое время. Если это связано с задержкой во время выполнения и/или с исключительным управлением ресурсами, то вы не хотите делать это слишком рано, потому что вы не хотите, чтобы фильтр, созданный на холостом ходу, создавал ошибки и вызывал неожиданные зависания. Имеет смысл делать такую ​​инициализацию в действии UI (страницы свойств фильтра или штыря) или переход из состояния остановки (CSourceStream::OnThreadCreate выглядит хорошо), что бы ни происходило в первую очередь.

0

Если это простая инициализация, вы должны сделать это как можно раньше - конструктор.

Убедитесь, что функция фабрики для вашего фильтра проверяет, что конструктор был успешным, разоблачая функцию «IsOK». Камера может быть отключена, и вы хотите поймать ее раньше - до того, как фильтр подключен.