Остаются активные объекты после завершения программы
От: Аноним  
Дата: 20.10.03 07:23
Оценка:
Доброе всем время суток.
Есть у меня такая проблема.
Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться?
И еще такой вопросик: как определить WDM это драйвер или VFW, чтобы игнорировать устройства VFW.
Заранее благодарен.
Re: Остаются активные объекты после завершения программы
От: Saruman Россия none
Дата: 20.10.03 07:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброе всем время суток.

А>Есть у меня такая проблема.
А>Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую DirectShow фильтр SampleGrabber. После завершения приложения (граф по-моему нормально разрушаю) остаются активные объекты. Притом, что я эти объекты явно не создаю, не запрашиваю и не вызываю. Может кто с таким сталкивался, подскажите как от них избавиться?

Какие объекты остаются?

А вообще может ты какой интерфейс не релизаешь?

Правда есть ещё проблемма с Video Capture фильтрами — перед тем как релизать граф, этот фильтр нужно из графа удалить(RemoveFilter), а то порой глюки бывают.
Типа того что как бы...
Re: Остаются активные объекты после завершения программы
От: B_A_D Израиль  
Дата: 21.10.03 12:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброе всем время суток.

А>Есть у меня такая проблема.
А>Пишу приложение, захватывающее одиночные изображения с видеокамеры. Использую 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
6 ( 182f958) IAMVideoProcAmp
4 ( 182f958) IAMVideoControl
2 ( 182f958) IAMCameraControl
KSWDMCAP.AX(tid fffa732b) 27503 : Total object count 3

ID Object Description
18 ( 182f958) List node
17 ( 182f958) I/O thread queue
16 ( 182f958) I/O queue
15 ( 182f958) Marshaler list
14 ( 182f958) OutputProxyPin
13 ( 182f958) List node
12 ( 182f958) I/O thread queue
11 ( 182f958) I/O queue
10 ( 182f958) Marshaler list
9 ( 182f958) OutputProxyPin
8 ( 182f958) List node
7 ( 182f958) List node
6 ( 182f958) List node
5 ( 182f958) List node
4 ( 182f958) Marshaler list
3 ( 182f958) Pin list
2 ( 182f958) KsProxy filter
KSPROXY.AX(tid fffa732b) 28039 : Total object count 17

DEVENUM.DLL(tid fffa732b) 28155 : devenum object leak

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>кто есть кто.
Да уж. Как-то сам недопер. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.