annotate loader/dshow/DS_Filter.c @ 595:12922295d3a8

OSD fixes
author arpi_esp
date Mon, 23 Apr 2001 19:20:44 +0000
parents ac9bfa4a1005
children 9355b2ae634e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
1 #include <stdio.h>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
2 #include <string.h>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
3 #include "DS_Filter.h"
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
4 #include <except.h>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
5 //#include "../loader/loader.h"
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
6 #include <string>
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
7 #define __MODULE__ "DirectShow generic filter"
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
8
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
9 using namespace std;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
10
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
11 typedef long STDCALL (*GETCLASS) (const GUID*, const GUID*, void**);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
12 extern "C" char* def_path;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
13
342
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
14 extern "C" int STDCALL expLoadLibraryA(const char*);
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
15 //extern "C" int WINAPI expLoadLibraryA(char* name);
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
16 extern "C" STDCALL void* GetProcAddress(int, const char*);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
17 extern "C" int STDCALL FreeLibrary(int);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
18
244
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
19 extern "C" void Setup_LDT_Keeper();
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
20 extern "C" void setup_FS_Segment();
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
21
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
22 DS_Filter::DS_Filter()
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
23 :m_iHandle(0), m_pFilter(0), m_pInputPin(0),
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
24 m_pOutputPin(0), m_pSrcFilter(0),
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
25 m_pOurInput(0), m_pOurOutput(0),
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
26 m_pImp(0), m_pAll(0), m_pParentFilter(0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
27 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
28 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
29
342
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
30 void DS_Filter::Create(char* dllname, const GUID* id, AM_MEDIA_TYPE* in_fmt, AM_MEDIA_TYPE* out_fmt)
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
31 {
244
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
32
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
33 Setup_LDT_Keeper();
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
34
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
35 try
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
36 {
342
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
37 // string _fullname=def_path;
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
38 // _fullname+="/";
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
39 // _fullname+=dllname;
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
40 // m_iHandle= LoadLibraryA(_fullname.c_str());
ac9bfa4a1005 using expLoadLibraryA instead of LoadLibraryA
arpi_esp
parents: 340
diff changeset
41 m_iHandle= expLoadLibraryA(dllname);
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
42 if(!m_iHandle)throw FATAL("Could not open DLL");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
43 GETCLASS func=(GETCLASS)GetProcAddress(m_iHandle, "DllGetClassObject");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
44 if(!func)throw FATAL("Illegal or corrupt DLL");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
45
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
46 HRESULT result;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
47 IClassFactory* factory=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
48 IUnknown* object=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
49
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
50 result=func(id, &IID_IClassFactory, (void**)&factory);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
51 if(result || (!factory)) throw FATAL("No such class object");;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
52
244
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
53 // printf("# factory = %X\n",(unsigned int)factory);
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
54 // printf("# factory->vt = %X\n",(unsigned int)factory->vt);
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
55 // printf("# factory->vt->CreateInstance = %X\n",(unsigned int)factory->vt->CreateInstance);
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
56
1c3029be6713 Setup_FS fix for directshow
arpi_esp
parents: 168
diff changeset
57 setup_FS_Segment();
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
58
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 244
diff changeset
59 // printf("Calling factory->vt->CreateInstance()\n");
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
60 result=factory->vt->CreateInstance(factory, 0, &IID_IUnknown, (void**)&object);
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 244
diff changeset
61 // printf("Calling factory->vt->Release()\n");
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
62
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
63 // result=factory->vt->CreateInstance(factory, 0, &IID_IUnknown, (void**)&object);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
64
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 244
diff changeset
65 // printf("CreateInstance ok %x\n",result);
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
66
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
67 factory->vt->Release((IUnknown*)factory);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
68 if(result || (!object)) throw FATAL("Class factory failure");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
69
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
70 result=object->vt->QueryInterface(object, &IID_IBaseFilter, (void**)&m_pFilter);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
71 object->vt->Release((IUnknown*)object);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
72 if(result || (!m_pFilter)) throw FATAL("Object does not have IBaseFilter interface");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
73
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
74 IEnumPins* enum_pins=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
75 // enumerate pins
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
76 result=m_pFilter->vt->EnumPins(m_pFilter, &enum_pins);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
77 if(result || (!enum_pins)) throw FATAL("Could not enumerate pins");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
78 IPin* array[256];
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
79 ULONG fetched;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
80 enum_pins->vt->Reset(enum_pins);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
81 result=enum_pins->vt->Next(enum_pins, (ULONG)256, (IPin**)array, &fetched);
340
1f7c824033fb less, and more informal printfs
arpi_esp
parents: 244
diff changeset
82 // printf("Pins enumeration returned %d pins, error is %x\n", fetched, result);
168
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
83
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
84 for(int i=0; i<fetched; i++)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
85 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
86 int direction=-1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
87 array[i]->vt->QueryDirection(array[i], (PIN_DIRECTION*)&direction);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
88 if((!m_pInputPin)&&(direction==0))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
89 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
90 m_pInputPin=array[i];
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
91 m_pInputPin->vt->AddRef((IUnknown*)m_pInputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
92 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
93 if((!m_pOutputPin)&&(direction==1))
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
94 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
95 m_pOutputPin=array[i];
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
96 m_pOutputPin->vt->AddRef((IUnknown*)m_pOutputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
97 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
98 array[i]->vt->Release((IUnknown*)(array[i]));
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
99 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
100 if(!m_pInputPin)throw FATAL("Input pin not found");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
101 if(!m_pOutputPin)throw FATAL("Output pin not found");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
102
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
103 result=m_pInputPin->vt->QueryInterface((IUnknown*)m_pInputPin, &IID_IMemInputPin, (void**)&m_pImp);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
104 if(result)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
105 throw FATAL("Error getting IMemInputPin interface");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
106 m_pOurType=in_fmt;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
107 m_pDestType=out_fmt;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
108 result=m_pInputPin->vt->QueryAccept(m_pInputPin, m_pOurType);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
109 if(result) throw FATAL("Source format is not accepted");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
110
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
111 m_pParentFilter=new CBaseFilter2;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
112 m_pSrcFilter=new CBaseFilter(*m_pOurType, m_pParentFilter);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
113 m_pOurInput=m_pSrcFilter->GetPin();
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
114 m_pOurInput->vt->AddRef((IUnknown*)m_pOurInput);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
115
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
116 result=m_pInputPin->vt->ReceiveConnection(m_pInputPin, m_pOurInput, m_pOurType);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
117 if(result) throw FATAL("Error connecting to input pin");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
118
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
119 m_pOurOutput=new COutputPin(*m_pDestType);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
120 result=m_pOutputPin->vt->ReceiveConnection(m_pOutputPin,
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
121 m_pOurOutput, m_pDestType);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
122 if(result)throw FATAL("Error connecting to output pin");
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
123 m_iState=1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
124 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
125 catch(FatalError e)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
126 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
127 e.PrintAll();
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
128 if(m_pFilter)m_pFilter->vt->Release((IUnknown*)m_pFilter);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
129 if(m_pOutputPin)m_pOutputPin->vt->Release((IUnknown*)m_pOutputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
130 if(m_pInputPin)m_pInputPin->vt->Release((IUnknown*)m_pInputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
131 if(m_pImp)m_pImp->vt->Release((IUnknown*)m_pImp);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
132 if(m_pOurInput)m_pOurInput->vt->Release((IUnknown*)m_pOurInput);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
133 delete m_pSrcFilter;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
134 delete m_pParentFilter;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
135 delete m_pOurOutput;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
136 if(m_iHandle)FreeLibrary(m_iHandle);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
137 throw;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
138 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
139 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
140 void DS_Filter::Start()
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
141 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
142 if(m_iState!=1)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
143 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
144
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
145 HRESULT hr=m_pFilter->vt->Run(m_pFilter, 0);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
146 if(hr!=0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
147 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
148 cerr<<"WARNING: m_Filter->Run() failed, error code "<<hex<<hr<<dec<<endl;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
149 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
150 hr=m_pImp->vt->GetAllocator(m_pImp, &m_pAll);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
151 if(hr)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
152 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
153 cerr<<"Error getting IMemAllocator interface "<<hex<<hr<<dec<<endl;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
154 m_pImp->vt->Release((IUnknown*)m_pImp);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
155 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
156 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
157 m_pImp->vt->NotifyAllocator(m_pImp, m_pAll, 0);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
158 m_iState=2;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
159 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
160 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
161 void DS_Filter::Stop()
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
162 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
163 if(m_iState!=2)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
164 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
165 m_pAll->vt->Release((IUnknown*)m_pAll);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
166 m_pAll=0;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
167 m_pFilter->vt->Stop(m_pFilter);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
168 m_iState=1;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
169 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
170 }
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
171 DS_Filter::~DS_Filter()
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
172 {
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
173 if(m_iState==0)
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
174 return;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
175 if(m_iState==2)Stop();
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
176 if(m_pInputPin)m_pInputPin->vt->Disconnect(m_pInputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
177 if(m_pOutputPin)m_pOutputPin->vt->Disconnect(m_pOutputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
178 if(m_pFilter)m_pFilter->vt->Release((IUnknown*)m_pFilter);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
179 if(m_pOutputPin)m_pOutputPin->vt->Release((IUnknown*)m_pOutputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
180 if(m_pInputPin)m_pInputPin->vt->Release((IUnknown*)m_pInputPin);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
181 if(m_pOurInput)m_pOurInput->vt->Release((IUnknown*)m_pOurInput);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
182 if(m_pImp)m_pImp->vt->Release((IUnknown*)m_pImp);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
183 delete m_pSrcFilter;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
184 delete m_pParentFilter;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
185 delete m_pOurOutput;
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
186 if(m_iHandle)FreeLibrary(m_iHandle);
bdc4a8fc04d8 Initial revision
arpi_esp
parents:
diff changeset
187 }