Остаются активные объекты после завершения программы
От:
Аноним
Дата:
20.10.03 07:23
Оценка:
Доброе всем время суток.
Есть у меня такая проблема.
Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться?
И еще такой вопросик: как определить WDM это драйвер или VFW, чтобы игнорировать устройства VFW.
Заранее благодарен.
Re: Остаются активные объекты после завершения программы
Здравствуйте, Аноним, Вы писали:
А>Доброе всем время суток. А>Есть у меня такая проблема. А>Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться?
Какие объекты остаются?
А вообще может ты какой интерфейс не релизаешь?
Правда есть ещё проблемма с Video Capture фильтрами — перед тем как релизать граф, этот фильтр нужно из графа удалить(RemoveFilter), а то порой глюки бывают.
Типа того что как бы...
Re: Остаются активные объекты после завершения программы
Здравствуйте, Аноним, Вы писали:
А>Доброе всем время суток. А>Есть у меня такая проблема. А>Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться?
Без кода "(граф по-моему нормально разрушаю)" ни о чем не говорит.
А>И еще такой вопросик: как определить WDM это драйвер или VFW, чтобы игнорировать устройства VFW.
Ну это просто. Перебери все Capture Filters с помощью ICreateDevEnum.
Запроси у каждого Capture фильтра интерфейс, специфичный для WDM Video Capture Filter
или для VFW Capture Filter. Например, IAMVfwCaptureDialogs. Если присутствует, то понятно
кто есть кто.
Re: Остаются активные объекты после завершения программы
От:
Аноним
Дата:
21.10.03 14:54
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Доброе всем время суток. А>Есть у меня такая проблема. А>Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться? А>И еще такой вопросик: как определить WDM это драйвер или VFW, чтобы игнорировать устройства VFW. А>Заранее благодарен.
Если вызвать IPin->QueryPinInfo(PIN_INFO*), PIN_INFO имеет поле pFilter. Его надо проверять на NULL и если нет, то вызывать Release(). То же самое с IBaseFilter->QueryFilterInfo(FILTER_INFO*), только там pGraph.
Kind regards. Константин.
Re[2]: Остаются активные объекты после завершения программы
От:
Аноним
Дата:
22.10.03 08:29
Оценка:
Здравствуйте, Saruman, Вы писали:
S>Какие объекты остаются?
По поводу объектов Debugger говорит следующее:
The thread 0xFFF81337 has exited with code 0 (0x0).
KSPROXY.AX(tid fff8161b) 7474 : V(0?8AL)::delivery failed in IoThread(), hr = 80004005.
The thread 0xFFF98B07 has exited with code -1 (0xFFFFFFFF).
ID Object Description
10 ( 182f944) Options
9 ( 182f944) SpecifyPropertyPages
8 ( 182f944) VFW Capture
6 ( 182f944) Options
5 ( 182f944) SpecifyPropertyPages
4 ( 182f944) VFW Capture
QCAP.DLL(tid fffa732b) 28742 : Total object count 6
The thread 0xFFFA732B has exited with code 0 (0x0).
Из всех этих объектов я использовал только IAMVideoProcAmp и ISpecifyPropertyPages. Откуда беруться остальные, ума не приложу. Например VFW я вообще не использую.
S>А вообще может ты какой интерфейс не релизаешь?
Да вроде релизаю все, что запрашивал и столько раз, сколько запрашивал.
S>Правда есть ещё проблемма с Video Capture фильтрами — перед тем как релизать граф, этот фильтр нужно из графа удалить(RemoveFilter), а то порой глюки бывают.
Я граф так и разбираю.
Re[2]: Остаются активные объекты после завершения программы
От:
Аноним
Дата:
22.10.03 08:34
Оценка:
Здравствуйте, B_A_D, Вы писали:
B_A>Без кода "(граф по-моему нормально разрушаю)" ни о чем не говорит.
Код разрушения графа я содрал из AMCAP'a. Это пример из DX SDK.
B_A>Ну это просто. Перебери все Capture Filters с помощью ICreateDevEnum. B_A>Запроси у каждого Capture фильтра интерфейс, специфичный для WDM Video Capture Filter B_A>или для VFW Capture Filter. Например, IAMVfwCaptureDialogs. Если присутствует, то понятно B_A>кто есть кто.
Да уж. Как-то сам недопер. Спасибо.