Mercurial > mplayer.hg
annotate loader/dshow/DS_Filter.c @ 29251:cada7608488b
Get rid of some more trailing whitespace
author | reynaldo |
---|---|
date | Tue, 12 May 2009 02:41:04 +0000 |
parents | eda346733b8c |
children | 0f1b5b68af32 |
rev | line source |
---|---|
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
9967
diff
changeset
|
1 /* |
18783 | 2 * Modified for use with MPlayer, detailed changelog at |
3 * http://svn.mplayerhq.hu/mplayer/trunk/ | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
9967
diff
changeset
|
4 */ |
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
9967
diff
changeset
|
5 |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
6 #include "config.h" |
1545 | 7 #include "DS_Filter.h" |
26999
0b21ffa03b9c
Rename loader/driver.[ch] to loader/drv.[ch], otherwise loader/driver.h can
diego
parents:
25849
diff
changeset
|
8 #include "drv.h" |
3056 | 9 #include "com.h" |
168 | 10 #include <stdio.h> |
11 #include <string.h> | |
7386 | 12 #include <stdlib.h> |
13 #include "win32.h" // printf macro | |
1545 | 14 |
168 | 15 typedef long STDCALL (*GETCLASS) (const GUID*, const GUID*, void**); |
16 | |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
17 #ifndef WIN32_LOADER |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
18 const GUID IID_IUnknown = |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
19 { |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
20 0x00000000, 0x0000, 0x0000, |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
21 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
22 }; |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
23 const GUID IID_IClassFactory = |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
24 { |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
25 0x00000001, 0x0000, 0x0000, |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
26 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
27 }; |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
28 |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
29 HRESULT STDCALL CoInitialize(LPVOID pvReserved); |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
30 void STDCALL CoUninitialize(void); |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
31 #endif |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
32 |
3056 | 33 static void DS_Filter_Start(DS_Filter* This) |
168 | 34 { |
3056 | 35 HRESULT hr; |
36 | |
37 //Debug printf("DS_Filter_Start(%p)\n", This); | |
8292 | 38 hr = This->m_pFilter->vt->Run(This->m_pFilter, (REFERENCE_TIME)0); |
3056 | 39 if (hr != 0) |
40 { | |
41 Debug printf("WARNING: m_Filter->Run() failed, error code %x\n", (int)hr); | |
42 } | |
168 | 43 } |
44 | |
3056 | 45 static void DS_Filter_Stop(DS_Filter* This) |
713 | 46 { |
3467 | 47 if (This->m_pAll) |
3056 | 48 { |
49 //Debug printf("DS_Filter_Stop(%p)\n", This); | |
3467 | 50 This->m_pFilter->vt->Stop(This->m_pFilter); // causes weird crash ??? FIXME |
3056 | 51 This->m_pAll->vt->Release((IUnknown*)This->m_pAll); |
52 This->m_pAll = 0; | |
53 } | |
1545 | 54 } |
55 | |
3056 | 56 void DS_Filter_Destroy(DS_Filter* This) |
1545 | 57 { |
3056 | 58 This->Stop(This); |
59 | |
60 if (This->m_pOurInput) | |
61 This->m_pOurInput->vt->Release((IUnknown*)This->m_pOurInput); | |
62 if (This->m_pInputPin) | |
63 This->m_pInputPin->vt->Disconnect(This->m_pInputPin); | |
64 if (This->m_pOutputPin) | |
65 This->m_pOutputPin->vt->Disconnect(This->m_pOutputPin); | |
66 if (This->m_pFilter) | |
67 This->m_pFilter->vt->Release((IUnknown*)This->m_pFilter); | |
68 if (This->m_pOutputPin) | |
69 This->m_pOutputPin->vt->Release((IUnknown*)This->m_pOutputPin); | |
70 if (This->m_pInputPin) | |
71 This->m_pInputPin->vt->Release((IUnknown*)This->m_pInputPin); | |
72 if (This->m_pImp) | |
73 This->m_pImp->vt->Release((IUnknown*)This->m_pImp); | |
713 | 74 |
3056 | 75 if (This->m_pOurOutput) |
76 This->m_pOurOutput->vt->Release((IUnknown*)This->m_pOurOutput); | |
77 if (This->m_pParentFilter) | |
3130 | 78 This->m_pParentFilter->vt->Release((IUnknown*)This->m_pParentFilter); |
3056 | 79 if (This->m_pSrcFilter) |
80 This->m_pSrcFilter->vt->Release((IUnknown*)This->m_pSrcFilter); | |
713 | 81 |
82 // FIXME - we are still leaving few things allocated! | |
3056 | 83 if (This->m_iHandle) |
8292 | 84 FreeLibrary((unsigned)This->m_iHandle); |
3056 | 85 |
86 free(This); | |
87 | |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
88 #ifdef WIN32_LOADER |
3056 | 89 CodecRelease(); |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
90 #else |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
91 CoUninitialize(); |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
92 #endif |
713 | 93 } |
94 | |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
95 static HRESULT STDCALL DS_Filter_CopySample(void* pUserData,IMediaSample* pSample){ |
24405 | 96 BYTE* pointer; |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
97 int len; |
25682 | 98 SampleProcUserData* pData=pUserData; |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
99 Debug printf("CopySample called(%p,%p)\n",pSample,pUserData); |
25682 | 100 if (pSample->vt->GetPointer(pSample, &pointer)) |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
101 return 1; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
102 len = pSample->vt->GetActualDataLength(pSample); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
103 if (len == 0) |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
104 len = pSample->vt->GetSize(pSample);//for iv50 |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
105 |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
106 pData->frame_pointer = pointer; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
107 pData->frame_size = len; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
108 /* |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
109 FILE* file=fopen("./uncompr.bmp", "wb"); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
110 char head[14]={0x42, 0x4D, 0x36, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00}; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
111 *(int*)(&head[2])=len+0x36; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
112 fwrite(head, 14, 1, file); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
113 fwrite(&((VIDEOINFOHEADER*)me.type.pbFormat)->bmiHeader, sizeof(BITMAPINFOHEADER), 1, file); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
114 fwrite(pointer, len, 1, file); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
115 fclose(file); |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
116 */ |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
117 return 0; |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
118 } |
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
119 |
3056 | 120 DS_Filter* DS_FilterCreate(const char* dllname, const GUID* id, |
121 AM_MEDIA_TYPE* in_fmt, | |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
122 AM_MEDIA_TYPE* out_fmt,SampleProcUserData* pUserData) |
168 | 123 { |
3467 | 124 int init = 0; |
7472
c4434bdf6e51
tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents:
7386
diff
changeset
|
125 // char eb[250]; |
3467 | 126 const char* em = NULL; |
22304
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
127 MemAllocator* tempAll; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
128 ALLOCATOR_PROPERTIES props,props1; |
25677 | 129 DS_Filter* This = malloc(sizeof(DS_Filter)); |
3056 | 130 if (!This) |
131 return NULL; | |
132 | |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
133 #ifdef WIN32_LOADER |
3056 | 134 CodecAlloc(); |
9967
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
135 #else |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
136 CoInitialize(0L); |
b0d1b415320c
cygwin support patch by Sascha Sommer and some fixes by me
alex
parents:
8292
diff
changeset
|
137 #endif |
3056 | 138 |
22304
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
139 /* |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
140 tempAll is not used anywhere. |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
141 MemAllocatorCreate() is called to ensure that RegisterComObject for IMemoryAllocator |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
142 will be called before possible call |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
143 to CoCreateInstance(...,&IID_IMemoryAllocator,...) from binary codec. |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
144 */ |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
145 tempAll=MemAllocatorCreate(); |
3056 | 146 This->m_pFilter = NULL; |
147 This->m_pInputPin = NULL; | |
148 This->m_pOutputPin = NULL; | |
149 This->m_pSrcFilter = NULL; | |
150 This->m_pParentFilter = NULL; | |
151 This->m_pOurInput = NULL; | |
152 This->m_pOurOutput = NULL; | |
153 This->m_pAll = NULL; | |
154 This->m_pImp = NULL; | |
155 | |
156 This->Start = DS_Filter_Start; | |
157 This->Stop = DS_Filter_Stop; | |
158 | |
159 for (;;) | |
168 | 160 { |
3056 | 161 GETCLASS func; |
162 struct IClassFactory* factory = NULL; | |
163 struct IUnknown* object = NULL; | |
164 IEnumPins* enum_pins = 0; | |
165 IPin* array[256]; | |
166 ULONG fetched; | |
25679
12fcf17e83e0
Move variable declaration into block where it is used.
reimar
parents:
25678
diff
changeset
|
167 HRESULT result; |
3056 | 168 unsigned int i; |
169 | |
170 This->m_iHandle = LoadLibraryA(dllname); | |
171 if (!This->m_iHandle) | |
713 | 172 { |
3467 | 173 em = "could not open DirectShow DLL"; |
3056 | 174 break; |
713 | 175 } |
8292 | 176 func = (GETCLASS)GetProcAddress((unsigned)This->m_iHandle, "DllGetClassObject"); |
713 | 177 if (!func) |
178 { | |
3467 | 179 em = "illegal or corrupt DirectShow DLL"; |
3056 | 180 break; |
713 | 181 } |
24405 | 182 result = func(id, &IID_IClassFactory, (void*)&factory); |
1545 | 183 if (result || !factory) |
3056 | 184 { |
3467 | 185 em = "no such class object"; |
3056 | 186 break; |
187 } | |
24405 | 188 result = factory->vt->CreateInstance(factory, 0, &IID_IUnknown, (void*)&object); |
168 | 189 factory->vt->Release((IUnknown*)factory); |
1545 | 190 if (result || !object) |
3056 | 191 { |
3467 | 192 em = "class factory failure"; |
3056 | 193 break; |
194 } | |
24405 | 195 result = object->vt->QueryInterface(object, &IID_IBaseFilter, (void*)&This->m_pFilter); |
168 | 196 object->vt->Release((IUnknown*)object); |
3056 | 197 if (result || !This->m_pFilter) |
198 { | |
7386 | 199 em = "object does not provide IBaseFilter interface"; |
3056 | 200 break; |
201 } | |
202 // enumerate pins | |
203 result = This->m_pFilter->vt->EnumPins(This->m_pFilter, &enum_pins); | |
204 if (result || !enum_pins) | |
205 { | |
3467 | 206 em = "could not enumerate pins"; |
3056 | 207 break; |
208 } | |
713 | 209 |
168 | 210 enum_pins->vt->Reset(enum_pins); |
1545 | 211 result = enum_pins->vt->Next(enum_pins, (ULONG)256, (IPin**)array, &fetched); |
8292 | 212 Debug printf("Pins enumeration returned %ld pins, error is %x\n", fetched, (int)result); |
713 | 213 |
3056 | 214 for (i = 0; i < fetched; i++) |
168 | 215 { |
24405 | 216 PIN_DIRECTION direction = -1; |
25680 | 217 array[i]->vt->QueryDirection(array[i], &direction); |
24405 | 218 if (!This->m_pInputPin && direction == PINDIR_INPUT) |
168 | 219 { |
3056 | 220 This->m_pInputPin = array[i]; |
221 This->m_pInputPin->vt->AddRef((IUnknown*)This->m_pInputPin); | |
168 | 222 } |
24405 | 223 if (!This->m_pOutputPin && direction == PINDIR_OUTPUT) |
168 | 224 { |
3056 | 225 This->m_pOutputPin = array[i]; |
226 This->m_pOutputPin->vt->AddRef((IUnknown*)This->m_pOutputPin); | |
168 | 227 } |
228 array[i]->vt->Release((IUnknown*)(array[i])); | |
229 } | |
3056 | 230 if (!This->m_pInputPin) |
231 { | |
3467 | 232 em = "could not find input pin"; |
3056 | 233 break; |
234 } | |
235 if (!This->m_pOutputPin) | |
236 { | |
3467 | 237 em = "could not find output pin"; |
3056 | 238 break; |
239 } | |
240 result = This->m_pInputPin->vt->QueryInterface((IUnknown*)This->m_pInputPin, | |
241 &IID_IMemInputPin, | |
24405 | 242 (void*)&This->m_pImp); |
713 | 243 if (result) |
3056 | 244 { |
3467 | 245 em = "could not get IMemInputPin interface"; |
3056 | 246 break; |
247 } | |
168 | 248 |
3056 | 249 This->m_pOurType = in_fmt; |
250 This->m_pDestType = out_fmt; | |
251 result = This->m_pInputPin->vt->QueryAccept(This->m_pInputPin, This->m_pOurType); | |
713 | 252 if (result) |
3056 | 253 { |
3467 | 254 em = "source format is not accepted"; |
3056 | 255 break; |
256 } | |
257 This->m_pParentFilter = CBaseFilter2Create(); | |
258 This->m_pSrcFilter = CBaseFilterCreate(This->m_pOurType, This->m_pParentFilter); | |
259 This->m_pOurInput = This->m_pSrcFilter->GetPin(This->m_pSrcFilter); | |
260 This->m_pOurInput->vt->AddRef((IUnknown*)This->m_pOurInput); | |
713 | 261 |
3056 | 262 result = This->m_pInputPin->vt->ReceiveConnection(This->m_pInputPin, |
263 This->m_pOurInput, | |
264 This->m_pOurType); | |
265 if (result) | |
266 { | |
3467 | 267 em = "could not connect to input pin"; |
3056 | 268 break; |
269 } | |
22304
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
270 result = This->m_pImp->vt->GetAllocator(This->m_pImp, &This->m_pAll); |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
271 if (result || !This->m_pAll) |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
272 { |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
273 em="error getting IMemAllocator interface"; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
274 break; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
275 } |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
276 |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
277 //Seting allocator property according to our media type |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
278 props.cBuffers=1; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
279 props.cbBuffer=This->m_pOurType->lSampleSize; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
280 props.cbAlign=1; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
281 props.cbPrefix=0; |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
282 This->m_pAll->vt->SetProperties(This->m_pAll, &props, &props1); |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
283 |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
284 //Notify remote pin about choosed allocator |
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
285 This->m_pImp->vt->NotifyAllocator(This->m_pImp, This->m_pAll, 0); |
3056 | 286 |
22398
49f01f8fbd60
Rework of copying samples from directshow codecs.
voroshil
parents:
22304
diff
changeset
|
287 This->m_pOurOutput = COutputPinCreate(This->m_pDestType,DS_Filter_CopySample,pUserData); |
3056 | 288 |
289 result = This->m_pOutputPin->vt->ReceiveConnection(This->m_pOutputPin, | |
290 (IPin*) This->m_pOurOutput, | |
291 This->m_pDestType); | |
713 | 292 if (result) |
1545 | 293 { |
3467 | 294 em = "could not connect to output pin"; |
3056 | 295 break; |
1545 | 296 } |
297 | |
3467 | 298 init++; |
3056 | 299 break; |
168 | 300 } |
22304
254733f57707
Fixed loading of VoxWare and wma9sp binary audio codecs using dshow engine.
voroshil
parents:
18783
diff
changeset
|
301 tempAll->vt->Release(tempAll); |
3056 | 302 |
3467 | 303 if (!init) |
168 | 304 { |
3056 | 305 DS_Filter_Destroy(This); |
25678
ebf1c7d24ca2
Remove result from warning string, it has no useful meaning here.
reimar
parents:
25677
diff
changeset
|
306 printf("Warning: DS_Filter() %s. (DLL=%.200s)\n", em, dllname); |
3056 | 307 This = 0; |
168 | 308 } |
3056 | 309 return This; |
168 | 310 } |