Mercurial > mplayer.hg
annotate loader/win32.c @ 25616:042b545d588e
No need to reinvent strdup...
author | eugeni |
---|---|
date | Mon, 07 Jan 2008 21:06:50 +0000 |
parents | dc3406eef251 |
children | 2c8cdb9123b8 |
rev | line source |
---|---|
1 | 1 /*********************************************************** |
2 | |
3465 | 3 Win32 emulation code. Functions that emulate |
4 responses from corresponding Win32 API calls. | |
5 Since we are not going to be able to load | |
6 virtually any DLL, we can only implement this | |
7 much, adding needed functions with each new codec. | |
8 | |
9 Basic principle of implementation: it's not good | |
10 for DLL to know too much about its environment. | |
1 | 11 |
12 ************************************************************/ | |
13 | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
14 /* |
18783 | 15 * Modified for use with MPlayer, detailed changelog at |
16 * http://svn.mplayerhq.hu/mplayer/trunk/ | |
15166
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
17 * $Id$ |
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
18 */ |
f5537cc95b02
Mark modified imported files as such to comply with GPL ¡ø2a.
diego
parents:
14212
diff
changeset
|
19 |
2069 | 20 #include "config.h" |
21368 | 21 #include "mangle.h" |
1 | 22 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
23 #ifdef USE_QTX_CODECS |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
24 #define QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
25 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
26 #define REALPLAYER |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
27 //#define LOADLIB_TRY_NATIVE |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
28 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
29 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
30 #define PSEUDO_SCREEN_WIDTH /*640*/800 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
31 #define PSEUDO_SCREEN_HEIGHT /*480*/600 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
32 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
33 |
2069 | 34 #include "wine/winbase.h" |
35 #include "wine/winreg.h" | |
36 #include "wine/winnt.h" | |
37 #include "wine/winerror.h" | |
38 #include "wine/debugtools.h" | |
39 #include "wine/module.h" | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
40 #include "wine/winuser.h" |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
41 #include "wine/objbase.h" |
2139 | 42 |
43 #include <stdio.h> | |
1 | 44 #include "win32.h" |
2069 | 45 |
2139 | 46 #include "registry.h" |
47 #include "loader.h" | |
48 #include "com.h" | |
8451 | 49 #include "ext.h" |
2139 | 50 |
2069 | 51 #include <stdlib.h> |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
52 #include <assert.h> |
2139 | 53 #include <stdarg.h> |
2069 | 54 #include <ctype.h> |
1 | 55 #include <pthread.h> |
128 | 56 #include <errno.h> |
1 | 57 #ifdef HAVE_MALLOC_H |
58 #include <malloc.h> | |
59 #endif | |
60 #include <time.h> | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
61 #include <math.h> |
128 | 62 #include <unistd.h> |
63 #include <fcntl.h> | |
1 | 64 #include <sys/types.h> |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
65 #include <dirent.h> |
1 | 66 #include <sys/time.h> |
67 #include <sys/timeb.h> | |
2069 | 68 #ifdef HAVE_KSTAT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
69 #include <kstat.h> |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
70 #endif |
1 | 71 |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
72 #include <sys/mman.h> |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
73 #include "osdep/mmap_anon.h" |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
74 |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
75 #if HAVE_VSSCANF |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
76 int vsscanf( const char *str, const char *format, va_list ap); |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
77 #else |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
78 /* system has no vsscanf. try to provide one */ |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
79 static int vsscanf( const char *str, const char *format, va_list ap) |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
80 { |
3465 | 81 long p1 = va_arg(ap, long); |
82 long p2 = va_arg(ap, long); | |
83 long p3 = va_arg(ap, long); | |
84 long p4 = va_arg(ap, long); | |
85 long p5 = va_arg(ap, long); | |
86 return sscanf(str, format, p1, p2, p3, p4, p5); | |
2906
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
87 } |
2ec3ec904cd4
Try to provide a vsscanf() implementation, if the system does not have
jkeil
parents:
2780
diff
changeset
|
88 #endif |
1416 | 89 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
90 char* def_path = WIN32_PATH; |
128 | 91 |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
92 static void do_cpuid(unsigned int ax, unsigned int *regs) |
128 | 93 { |
3465 | 94 __asm__ __volatile__ |
95 ( | |
96 "pushl %%ebx; pushl %%ecx; pushl %%edx;" | |
97 ".byte 0x0f, 0xa2;" | |
98 "movl %%eax, (%2);" | |
99 "movl %%ebx, 4(%2);" | |
100 "movl %%ecx, 8(%2);" | |
101 "movl %%edx, 12(%2);" | |
102 "popl %%edx; popl %%ecx; popl %%ebx;" | |
103 : "=a" (ax) | |
104 : "0" (ax), "S" (regs) | |
2069 | 105 ); |
128 | 106 } |
107 static unsigned int c_localcount_tsc() | |
1 | 108 { |
109 int a; | |
3465 | 110 __asm__ __volatile__ |
111 ( | |
112 "rdtsc\n\t" | |
113 :"=a"(a) | |
114 : | |
115 :"edx" | |
116 ); | |
1 | 117 return a; |
118 } | |
128 | 119 static void c_longcount_tsc(long long* z) |
1 | 120 { |
3465 | 121 __asm__ __volatile__ |
122 ( | |
123 "pushl %%ebx\n\t" | |
124 "movl %%eax, %%ebx\n\t" | |
125 "rdtsc\n\t" | |
126 "movl %%eax, 0(%%ebx)\n\t" | |
127 "movl %%edx, 4(%%ebx)\n\t" | |
128 "popl %%ebx\n\t" | |
129 ::"a"(z) | |
14212
540903a59fc0
add missing registers in clobber list, fixes bug #169
reimar
parents:
13751
diff
changeset
|
130 :"edx" |
3465 | 131 ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
132 } |
128 | 133 static unsigned int c_localcount_notsc() |
1 | 134 { |
135 struct timeval tv; | |
136 unsigned limit=~0; | |
137 limit/=1000000; | |
138 gettimeofday(&tv, 0); | |
139 return limit*tv.tv_usec; | |
140 } | |
128 | 141 static void c_longcount_notsc(long long* z) |
1 | 142 { |
143 struct timeval tv; | |
144 unsigned long long result; | |
145 unsigned limit=~0; | |
146 if(!z)return; | |
147 limit/=1000000; | |
148 gettimeofday(&tv, 0); | |
149 result=tv.tv_sec; | |
150 result<<=32; | |
151 result+=limit*tv.tv_usec; | |
152 *z=result; | |
153 } | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
154 static unsigned int localcount_stub(void); |
2069 | 155 static void longcount_stub(long long*); |
128 | 156 static unsigned int (*localcount)()=localcount_stub; |
157 static void (*longcount)(long long*)=longcount_stub; | |
1 | 158 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
159 static pthread_mutex_t memmut; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
160 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
161 static unsigned int localcount_stub(void) |
128 | 162 { |
163 unsigned int regs[4]; | |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
164 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
165 if ((regs[3] & 0x00000010) != 0) |
128 | 166 { |
167 localcount=c_localcount_tsc; | |
168 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
169 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
170 else |
128 | 171 { |
3465 | 172 localcount=c_localcount_notsc; |
128 | 173 longcount=c_longcount_notsc; |
174 } | |
175 return localcount(); | |
176 } | |
177 static void longcount_stub(long long* z) | |
1 | 178 { |
128 | 179 unsigned int regs[4]; |
1923
40084ad62591
do_cpuid stored the results of the cpuid instruction in the wrong place
jkeil
parents:
1679
diff
changeset
|
180 do_cpuid(1, regs); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
181 if ((regs[3] & 0x00000010) != 0) |
128 | 182 { |
183 localcount=c_localcount_tsc; | |
184 longcount=c_longcount_tsc; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
185 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
186 else |
128 | 187 { |
3465 | 188 localcount=c_localcount_notsc; |
128 | 189 longcount=c_longcount_notsc; |
190 } | |
191 longcount(z); | |
192 } | |
2780 | 193 |
17020 | 194 #include "mp_msg.h" |
2069 | 195 int LOADER_DEBUG=1; // active only if compiled with -DDETAILED_OUT |
3128 | 196 //#define DETAILED_OUT |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
197 static inline void dbgprintf(char* fmt, ...) |
128 | 198 { |
235 | 199 #ifdef DETAILED_OUT |
128 | 200 if(LOADER_DEBUG) |
201 { | |
202 FILE* f; | |
203 va_list va; | |
3465 | 204 va_start(va, fmt); |
128 | 205 f=fopen("./log", "a"); |
3134 | 206 vprintf(fmt, va); |
3465 | 207 fflush(stdout); |
208 if(f) | |
128 | 209 { |
210 vfprintf(f, fmt, va); | |
211 fsync(fileno(f)); | |
3465 | 212 fclose(f); |
128 | 213 } |
214 va_end(va); | |
215 } | |
235 | 216 #endif |
17932 | 217 if ( mp_msg_test(MSGT_WIN32,MSGL_DBG3) ) |
5740 | 218 { |
219 va_list va; | |
220 | |
221 va_start(va, fmt); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
222 vprintf(fmt, va); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
223 // mp_dbg(MSGT_WIN32, MSGL_DBG3, fmt, va); |
5740 | 224 va_end(va); |
225 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
226 fflush(stdout); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
227 } |
3128 | 228 |
229 | |
3465 | 230 char export_names[300][32]={ |
231 "name1", | |
232 //"name2", | |
233 //"name3" | |
1 | 234 }; |
235 //#define min(x,y) ((x)<(y)?(x):(y)) | |
236 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
237 void destroy_event(void* event); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
238 |
3134 | 239 struct th_list_t; |
240 typedef struct th_list_t{ | |
241 int id; | |
242 void* thread; | |
243 struct th_list_t* next; | |
244 struct th_list_t* prev; | |
245 } th_list; | |
246 | |
247 | |
248 // have to be cleared by GARBAGE COLLECTOR | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
249 static unsigned char* heap=NULL; |
1 | 250 static int heap_counter=0; |
3134 | 251 static tls_t* g_tls=NULL; |
252 static th_list* list=NULL; | |
253 | |
2069 | 254 static void test_heap(void) |
1 | 255 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
256 int offset=0; |
1 | 257 if(heap==0) |
258 return; | |
259 while(offset<heap_counter) | |
260 { | |
261 if(*(int*)(heap+offset)!=0x433476) | |
262 { | |
263 printf("Heap corruption at address %d\n", offset); | |
264 return; | |
265 } | |
266 offset+=8+*(int*)(heap+offset+4); | |
267 } | |
268 for(;offset<min(offset+1000, 20000000); offset++) | |
269 if(heap[offset]!=0xCC) | |
3465 | 270 { |
271 printf("Free heap corruption at address %d\n", offset); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
272 } |
1 | 273 } |
274 #undef MEMORY_DEBUG | |
275 | |
276 #ifdef MEMORY_DEBUG | |
277 | |
7386 | 278 static void* my_mreq(int size, int to_zero) |
1 | 279 { |
280 static int test=0; | |
281 test++; | |
282 if(test%10==0)printf("Memory: %d bytes allocated\n", heap_counter); | |
3465 | 283 // test_heap(); |
1 | 284 if(heap==NULL) |
285 { | |
286 heap=malloc(20000000); | |
287 memset(heap, 0xCC,20000000); | |
288 } | |
289 if(heap==0) | |
290 { | |
291 printf("No enough memory\n"); | |
292 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
293 } |
1 | 294 if(heap_counter+size>20000000) |
295 { | |
296 printf("No enough memory\n"); | |
297 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
298 } |
1 | 299 *(int*)(heap+heap_counter)=0x433476; |
300 heap_counter+=4; | |
301 *(int*)(heap+heap_counter)=size; | |
302 heap_counter+=4; | |
303 printf("Allocated %d bytes of memory: sys %d, user %d-%d\n", size, heap_counter-8, heap_counter, heap_counter+size); | |
304 if(to_zero) | |
3465 | 305 memset(heap+heap_counter, 0, size); |
1543 | 306 else |
2139 | 307 memset(heap+heap_counter, 0xcc, size); // make crash reproducable |
1 | 308 heap_counter+=size; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
309 return heap+heap_counter-size; |
1 | 310 } |
7386 | 311 static int my_release(char* memory) |
1 | 312 { |
3465 | 313 // test_heap(); |
1 | 314 if(memory==NULL) |
315 { | |
316 printf("ERROR: free(0)\n"); | |
317 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
318 } |
1 | 319 if(*(int*)(memory-8)!=0x433476) |
320 { | |
321 printf("MEMORY CORRUPTION !!!!!!!!!!!!!!!!!!!\n"); | |
322 return 0; | |
323 } | |
324 printf("Freed %d bytes of memory\n", *(int*)(memory-4)); | |
3465 | 325 // memset(memory-8, *(int*)(memory-4), 0xCC); |
1 | 326 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
327 } |
1 | 328 |
329 #else | |
128 | 330 #define GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
331 typedef struct alloc_header_t alloc_header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
332 struct alloc_header_t |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
333 { |
3465 | 334 // let's keep allocated data 16 byte aligned |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
335 alloc_header* prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
336 alloc_header* next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
337 long deadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
338 long size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
339 long type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
340 long reserved1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
341 long reserved2; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
342 long reserved3; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
343 }; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
344 |
128 | 345 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
346 static alloc_header* last_alloc = NULL; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
347 static int alccnt = 0; |
128 | 348 #endif |
349 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
350 #define AREATYPE_CLIENT 0 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
351 #define AREATYPE_EVENT 1 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
352 #define AREATYPE_MUTEX 2 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
353 #define AREATYPE_COND 3 |
3134 | 354 #define AREATYPE_CRITSECT 4 |
355 | |
356 /* -- critical sections -- */ | |
357 struct CRITSECT | |
358 { | |
359 pthread_t id; | |
360 pthread_mutex_t mutex; | |
361 int locked; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
362 long deadbeef; |
3134 | 363 }; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
364 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
365 void* mreq_private(int size, int to_zero, int type); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
366 void* mreq_private(int size, int to_zero, int type) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
367 { |
3465 | 368 int nsize = size + sizeof(alloc_header); |
7386 | 369 alloc_header* header = (alloc_header* ) malloc(nsize); |
3465 | 370 if (!header) |
371 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
372 if (to_zero) |
3465 | 373 memset(header, 0, nsize); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
374 #ifdef GARBAGE |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
375 if (!last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
376 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
377 pthread_mutex_init(&memmut, NULL); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
378 pthread_mutex_lock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
379 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
380 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
381 { |
3465 | 382 pthread_mutex_lock(&memmut); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
383 last_alloc->next = header; /* set next */ |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
384 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
385 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
386 header->prev = last_alloc; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
387 header->next = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
388 last_alloc = header; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
389 alccnt++; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
390 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
391 #endif |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
392 header->deadbeef = 0xdeadbeef; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
393 header->size = size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
394 header->type = type; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
395 |
3128 | 396 //if (alccnt < 40000) printf("MY_REQ: %p\t%d t:%d (cnt:%d)\n", header, size, type, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
397 return header + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
398 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
399 |
7386 | 400 static int my_release(void* memory) |
1 | 401 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
402 alloc_header* header = (alloc_header*) memory - 1; |
128 | 403 #ifdef GARBAGE |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
404 alloc_header* prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
405 alloc_header* nextmem; |
3134 | 406 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
407 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
408 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
409 |
7386 | 410 if (header->deadbeef != (long) 0xdeadbeef) |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
411 { |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
412 dbgprintf("FATAL releasing corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
413 return 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
414 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
415 |
3128 | 416 pthread_mutex_lock(&memmut); |
417 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
418 switch(header->type) |
128 | 419 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
420 case AREATYPE_EVENT: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
421 destroy_event(memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
422 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
423 case AREATYPE_COND: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
424 pthread_cond_destroy((pthread_cond_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
425 break; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
426 case AREATYPE_MUTEX: |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
427 pthread_mutex_destroy((pthread_mutex_t*)memory); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
428 break; |
3134 | 429 case AREATYPE_CRITSECT: |
430 pthread_mutex_destroy(&((struct CRITSECT*)memory)->mutex); | |
431 break; | |
432 default: | |
433 //memset(memory, 0xcc, header->size); | |
4384 | 434 ; |
128 | 435 } |
3128 | 436 |
3465 | 437 header->deadbeef = 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
438 prevmem = header->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
439 nextmem = header->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
440 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
441 if (prevmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
442 prevmem->next = nextmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
443 if (nextmem) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
444 nextmem->prev = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
445 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
446 if (header == last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
447 last_alloc = prevmem; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
448 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
449 alccnt--; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
450 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
451 if (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
452 pthread_mutex_unlock(&memmut); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
453 else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
454 pthread_mutex_destroy(&memmut); |
3465 | 455 |
3128 | 456 //if (alccnt < 40000) printf("MY_RELEASE: %p\t%ld (%d)\n", header, header->size, alccnt); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
457 #else |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
458 if (memory == 0) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
459 return 0; |
128 | 460 #endif |
3465 | 461 //memset(header + 1, 0xcc, header->size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
462 free(header); |
1 | 463 return 0; |
464 } | |
465 #endif | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
466 |
7386 | 467 static inline void* my_mreq(int size, int to_zero) |
3465 | 468 { |
469 return mreq_private(size, to_zero, AREATYPE_CLIENT); | |
470 } | |
471 | |
7386 | 472 static int my_size(void* memory) |
5234 | 473 { |
474 if(!memory) return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
475 return ((alloc_header*)memory)[-1].size; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
476 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
477 |
3465 | 478 static void* my_realloc(void* memory, int size) |
1 | 479 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
480 void *ans = memory; |
5234 | 481 int osize; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
482 if (memory == NULL) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
483 return my_mreq(size, 0); |
5234 | 484 osize = my_size(memory); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
485 if (osize < size) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
486 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
487 ans = my_mreq(size, 0); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
488 memcpy(ans, memory, osize); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
489 my_release(memory); |
2069 | 490 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
491 return ans; |
2069 | 492 } |
1 | 493 |
3465 | 494 /* |
495 * | |
496 * WINE API - native implementation for several win32 libraries | |
497 * | |
498 */ | |
499 | |
500 static int WINAPI ext_unknown() | |
1 | 501 { |
502 printf("Unknown func called\n"); | |
503 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
504 } |
3465 | 505 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
506 static int WINAPI expGetVolumeInformationA( const char *root, char *label, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
507 unsigned int label_len, unsigned int *serial, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
508 unsigned int *filename_len,unsigned int *flags, |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
509 char *fsname, unsigned int fsname_len ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
510 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
511 dbgprintf("GetVolumeInformationA( %s, 0x%x, %ld, 0x%x, 0x%x, 0x%x, 0x%x, %ld) => 1\n", |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
512 root,label,label_len,serial,filename_len,flags,fsname,fsname_len); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
513 //hack Do not return any real data - do nothing |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
514 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
515 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
516 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
517 static unsigned int WINAPI expGetDriveTypeA( const char *root ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
518 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
519 dbgprintf("GetDriveTypeA( %s ) => %d\n",root,DRIVE_FIXED); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
520 // hack return as Fixed Drive Type |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
521 return DRIVE_FIXED; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
522 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
523 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
524 static unsigned int WINAPI expGetLogicalDriveStringsA( unsigned int len, char *buffer ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
525 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
526 dbgprintf("GetLogicalDriveStringsA(%d, 0x%x) => 4\n",len,buffer); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
527 // hack only have one drive c:\ in this hack |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
528 *buffer++='c'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
529 *buffer++=':'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
530 *buffer++='\\'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
531 *buffer++='\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
532 *buffer= '\0'; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
533 return 4; // 1 drive * 4 bytes (includes null) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
534 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
535 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
536 |
3465 | 537 static int WINAPI expIsBadWritePtr(void* ptr, unsigned int count) |
1 | 538 { |
3465 | 539 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 540 dbgprintf("IsBadWritePtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
541 return result; | |
1 | 542 } |
3465 | 543 static int WINAPI expIsBadReadPtr(void* ptr, unsigned int count) |
1 | 544 { |
3465 | 545 int result = (count == 0 || ptr != 0) ? 0 : 1; |
128 | 546 dbgprintf("IsBadReadPtr(0x%x, 0x%x) => %d\n", ptr, count, result); |
547 return result; | |
1 | 548 } |
3465 | 549 static int WINAPI expDisableThreadLibraryCalls(int module) |
1 | 550 { |
128 | 551 dbgprintf("DisableThreadLibraryCalls(0x%x) => 0\n", module); |
1 | 552 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
553 } |
3465 | 554 |
555 static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv) | |
1 | 556 { |
2069 | 557 HMODULE result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
558 if (pdrv==NULL) |
2069 | 559 result=0; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
560 else |
3465 | 561 result=pdrv->hDriverModule; |
2069 | 562 dbgprintf("GetDriverModuleHandle(%p) => %p\n", pdrv, result); |
128 | 563 return result; |
1 | 564 } |
565 | |
2069 | 566 #define MODULE_HANDLE_kernel32 ((HMODULE)0x120) |
5234 | 567 #define MODULE_HANDLE_user32 ((HMODULE)0x121) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
568 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
569 #define MODULE_HANDLE_wininet ((HMODULE)0x122) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
570 #define MODULE_HANDLE_ddraw ((HMODULE)0x123) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
571 #define MODULE_HANDLE_advapi32 ((HMODULE)0x124) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
572 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
573 #define MODULE_HANDLE_comdlg32 ((HMODULE)0x125) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
574 #define MODULE_HANDLE_msvcrt ((HMODULE)0x126) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
575 #define MODULE_HANDLE_ole32 ((HMODULE)0x127) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
576 #define MODULE_HANDLE_winmm ((HMODULE)0x128) |
2069 | 577 |
3465 | 578 static HMODULE WINAPI expGetModuleHandleA(const char* name) |
1 | 579 { |
3465 | 580 WINE_MODREF* wm; |
581 HMODULE result; | |
582 if(!name) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
583 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
584 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
585 #else |
3465 | 586 result=0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
587 #endif |
3465 | 588 else |
589 { | |
590 wm=MODULE_FindModule(name); | |
591 if(wm==0)result=0; | |
128 | 592 else |
3465 | 593 result=(HMODULE)(wm->module); |
594 } | |
595 if(!result) | |
596 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
597 if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll"))) |
3465 | 598 result=MODULE_HANDLE_kernel32; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
599 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
600 if(name && strcasecmp(name, "user32")==0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
601 result=MODULE_HANDLE_user32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
602 #endif |
3465 | 603 } |
604 dbgprintf("GetModuleHandleA('%s') => 0x%x\n", name, result); | |
605 return result; | |
1 | 606 } |
128 | 607 |
3465 | 608 static void* WINAPI expCreateThread(void* pSecAttr, long dwStackSize, |
609 void* lpStartAddress, void* lpParameter, | |
610 long dwFlags, long* dwThreadId) | |
1 | 611 { |
612 pthread_t *pth; | |
3465 | 613 // printf("CreateThread:"); |
7386 | 614 pth = (pthread_t*) my_mreq(sizeof(pthread_t), 0); |
1 | 615 pthread_create(pth, NULL, (void*(*)(void*))lpStartAddress, lpParameter); |
616 if(dwFlags) | |
128 | 617 printf( "WARNING: CreateThread flags not supported\n"); |
1 | 618 if(dwThreadId) |
619 *dwThreadId=(long)pth; | |
620 if(list==NULL) | |
621 { | |
622 list=my_mreq(sizeof(th_list), 1); | |
623 list->next=list->prev=NULL; | |
624 } | |
625 else | |
626 { | |
627 list->next=my_mreq(sizeof(th_list), 0); | |
628 list->next->prev=list; | |
629 list->next->next=NULL; | |
630 list=list->next; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
631 } |
1 | 632 list->thread=pth; |
128 | 633 dbgprintf("CreateThread(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0x%x\n", |
3465 | 634 pSecAttr, dwStackSize, lpStartAddress, lpParameter, dwFlags, dwThreadId, pth); |
1 | 635 return pth; |
636 } | |
637 | |
638 struct mutex_list_t; | |
639 | |
640 struct mutex_list_t | |
641 { | |
128 | 642 char type; |
1 | 643 pthread_mutex_t *pm; |
128 | 644 pthread_cond_t *pc; |
645 char state; | |
646 char reset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
647 char name[128]; |
128 | 648 int semaphore; |
1 | 649 struct mutex_list_t* next; |
650 struct mutex_list_t* prev; | |
651 }; | |
652 typedef struct mutex_list_t mutex_list; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
653 static mutex_list* mlist=NULL; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
654 |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
655 void destroy_event(void* event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
656 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
657 mutex_list* pp=mlist; |
3465 | 658 // printf("garbage collector: destroy_event(%x)\n", event); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
659 while(pp) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
660 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
661 if(pp==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
662 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
663 if(pp->next) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
664 pp->next->prev=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
665 if(pp->prev) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
666 pp->prev->next=pp->next; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
667 if(mlist==(mutex_list*)event) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
668 mlist=mlist->prev; |
3465 | 669 /* |
670 pp=mlist; | |
671 while(pp) | |
672 { | |
673 printf("%x => ", pp); | |
674 pp=pp->prev; | |
675 } | |
676 printf("0\n"); | |
677 */ | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
678 return; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
679 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
680 pp=pp->prev; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
681 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
682 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
683 |
3465 | 684 static void* WINAPI expCreateEventA(void* pSecAttr, char bManualReset, |
685 char bInitialState, const char* name) | |
1 | 686 { |
687 pthread_mutex_t *pm; | |
128 | 688 pthread_cond_t *pc; |
3465 | 689 /* |
690 mutex_list* pp; | |
691 pp=mlist; | |
692 while(pp) | |
693 { | |
694 printf("%x => ", pp); | |
695 pp=pp->prev; | |
696 } | |
697 printf("0\n"); | |
698 */ | |
1 | 699 if(mlist!=NULL) |
700 { | |
701 mutex_list* pp=mlist; | |
702 if(name!=NULL) | |
3465 | 703 do |
1 | 704 { |
128 | 705 if((strcmp(pp->name, name)==0) && (pp->type==0)) |
706 { | |
707 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", | |
3465 | 708 pSecAttr, bManualReset, bInitialState, name, name, pp->pm); |
1 | 709 return pp->pm; |
128 | 710 } |
2069 | 711 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
712 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
713 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
1 | 714 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
715 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 716 pthread_cond_init(pc, NULL); |
1 | 717 if(mlist==NULL) |
718 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
719 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
1 | 720 mlist->next=mlist->prev=NULL; |
721 } | |
722 else | |
723 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
724 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 725 mlist->next->prev=mlist; |
1 | 726 mlist->next->next=NULL; |
727 mlist=mlist->next; | |
728 } | |
128 | 729 mlist->type=0; /* Type Event */ |
1 | 730 mlist->pm=pm; |
128 | 731 mlist->pc=pc; |
732 mlist->state=bInitialState; | |
733 mlist->reset=bManualReset; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
734 if(name) |
3465 | 735 strncpy(mlist->name, name, 127); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
736 else |
1 | 737 mlist->name[0]=0; |
738 if(pm==NULL) | |
739 dbgprintf("ERROR::: CreateEventA failure\n"); | |
3465 | 740 /* |
741 if(bInitialState) | |
742 pthread_mutex_lock(pm); | |
743 */ | |
128 | 744 if(name) |
3465 | 745 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, 0x%x='%s') => 0x%x\n", |
746 pSecAttr, bManualReset, bInitialState, name, name, mlist); | |
128 | 747 else |
3465 | 748 dbgprintf("CreateEventA(0x%x, 0x%x, 0x%x, NULL) => 0x%x\n", |
749 pSecAttr, bManualReset, bInitialState, mlist); | |
128 | 750 return mlist; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
751 } |
1 | 752 |
3465 | 753 static void* WINAPI expSetEvent(void* event) |
1 | 754 { |
128 | 755 mutex_list *ml = (mutex_list *)event; |
756 dbgprintf("SetEvent(%x) => 0x1\n", event); | |
757 pthread_mutex_lock(ml->pm); | |
758 if (ml->state == 0) { | |
759 ml->state = 1; | |
760 pthread_cond_signal(ml->pc); | |
761 } | |
762 pthread_mutex_unlock(ml->pm); | |
763 | |
764 return (void *)1; | |
1 | 765 } |
3465 | 766 static void* WINAPI expResetEvent(void* event) |
1 | 767 { |
128 | 768 mutex_list *ml = (mutex_list *)event; |
769 dbgprintf("ResetEvent(0x%x) => 0x1\n", event); | |
770 pthread_mutex_lock(ml->pm); | |
771 ml->state = 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
772 pthread_mutex_unlock(ml->pm); |
128 | 773 |
774 return (void *)1; | |
1 | 775 } |
776 | |
3465 | 777 static void* WINAPI expWaitForSingleObject(void* object, int duration) |
1 | 778 { |
128 | 779 mutex_list *ml = (mutex_list *)object; |
2069 | 780 // FIXME FIXME FIXME - this value is sometime unititialize !!! |
781 int ret = WAIT_FAILED; | |
128 | 782 mutex_list* pp=mlist; |
2779 | 783 if(object == (void*)0xcfcf9898) |
784 { | |
3465 | 785 /** |
786 From GetCurrentThread() documentation: | |
787 A pseudo handle is a special constant that is interpreted as the current thread handle. The calling thread can use this handle to specify itself whenever a thread handle is required. Pseudo handles are not inherited by child processes. | |
788 | |
789 This handle has the maximum possible access to the thread object. For systems that support security descriptors, this is the maximum access allowed by the security descriptor for the calling process. For systems that do not support security descriptors, this is THREAD_ALL_ACCESS. | |
790 | |
791 The function cannot be used by one thread to create a handle that can be used by other threads to refer to the first thread. The handle is always interpreted as referring to the thread that is using it. A thread can create a "real" handle to itself that can be used by other threads, or inherited by other processes, by specifying the pseudo handle as the source handle in a call to the DuplicateHandle function. | |
792 **/ | |
2779 | 793 dbgprintf("WaitForSingleObject(thread_handle) called\n"); |
3128 | 794 return (void*)WAIT_FAILED; |
2779 | 795 } |
2069 | 796 dbgprintf("WaitForSingleObject(0x%x, duration %d) =>\n",object, duration); |
797 | |
718 | 798 // loop below was slightly fixed - its used just for checking if |
799 // this object really exists in our list | |
800 if (!ml) | |
3465 | 801 return (void*) ret; |
718 | 802 while (pp && (pp->pm != ml->pm)) |
2069 | 803 pp = pp->prev; |
718 | 804 if (!pp) { |
2069 | 805 dbgprintf("WaitForSingleObject: NotFound\n"); |
806 return (void*)ret; | |
718 | 807 } |
128 | 808 |
809 pthread_mutex_lock(ml->pm); | |
810 | |
811 switch(ml->type) { | |
3465 | 812 case 0: /* Event */ |
128 | 813 if (duration == 0) { /* Check Only */ |
3465 | 814 if (ml->state == 1) ret = WAIT_FAILED; |
815 else ret = WAIT_OBJECT_0; | |
128 | 816 } |
817 if (duration == -1) { /* INFINITE */ | |
3465 | 818 if (ml->state == 0) |
819 pthread_cond_wait(ml->pc,ml->pm); | |
820 if (ml->reset) | |
821 ml->state = 0; | |
822 ret = WAIT_OBJECT_0; | |
128 | 823 } |
824 if (duration > 0) { /* Timed Wait */ | |
3465 | 825 struct timespec abstime; |
826 struct timeval now; | |
827 gettimeofday(&now, 0); | |
828 abstime.tv_sec = now.tv_sec + (now.tv_usec+duration)/1000000; | |
829 abstime.tv_nsec = ((now.tv_usec+duration)%1000000)*1000; | |
830 if (ml->state == 0) | |
831 ret=pthread_cond_timedwait(ml->pc,ml->pm,&abstime); | |
832 if (ret == ETIMEDOUT) ret = WAIT_TIMEOUT; | |
833 else ret = WAIT_OBJECT_0; | |
834 if (ml->reset) | |
835 ml->state = 0; | |
128 | 836 } |
3465 | 837 break; |
838 case 1: /* Semaphore */ | |
839 if (duration == 0) { | |
840 if(ml->semaphore==0) ret = WAIT_FAILED; | |
841 else { | |
842 ml->semaphore++; | |
843 ret = WAIT_OBJECT_0; | |
844 } | |
845 } | |
128 | 846 if (duration == -1) { |
3465 | 847 if (ml->semaphore==0) |
848 pthread_cond_wait(ml->pc,ml->pm); | |
849 ml->semaphore--; | |
128 | 850 } |
3465 | 851 break; |
128 | 852 } |
853 pthread_mutex_unlock(ml->pm); | |
854 | |
855 dbgprintf("WaitForSingleObject(0x%x, %d): 0x%x => 0x%x \n",object,duration,ml,ret); | |
856 return (void *)ret; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
857 } |
1 | 858 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
859 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
860 static void* WINAPI expWaitForMultipleObjects(int count, const void** objects, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
861 int WaitAll, int duration) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
862 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
863 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
864 void *object; |
8451 | 865 void *ret; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
866 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
867 dbgprintf("WaitForMultipleObjects(%d, 0x%x, %d, duration %d) =>\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
868 count, objects, WaitAll, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
869 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
870 for (i = 0; i < count; i++) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
871 { |
13182 | 872 object = (void *)objects[i]; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
873 ret = expWaitForSingleObject(object, duration); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
874 if (WaitAll) |
8285 | 875 dbgprintf("WaitAll flag not yet supported...\n"); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
876 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
877 return ret; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
878 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
879 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
880 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
881 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
882 static void WINAPI expExitThread(int retcode) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
883 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
884 dbgprintf("ExitThread(%d)\n", retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
885 pthread_exit(&retcode); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
886 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
887 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
888 static HANDLE WINAPI expCreateMutexA(void *pSecAttr, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
889 char bInitialOwner, const char *name) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
890 { |
8451 | 891 HANDLE mlist = (HANDLE)expCreateEventA(pSecAttr, 0, 0, name); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
892 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
893 if (name) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
894 dbgprintf("CreateMutexA(0x%x, %d, '%s') => 0x%x\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
895 pSecAttr, bInitialOwner, name, mlist); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
896 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
897 dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
898 pSecAttr, bInitialOwner, mlist); |
8281 | 899 #ifndef QTX |
900 /* 10l to QTX, if CreateMutex returns a real mutex, WaitForSingleObject | |
901 waits for ever, else it works ;) */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
902 return mlist; |
8281 | 903 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
904 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
905 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
906 static int WINAPI expReleaseMutex(HANDLE hMutex) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
907 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
908 dbgprintf("ReleaseMutex(%x) => 1\n", hMutex); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
909 /* FIXME:XXX !! not yet implemented */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
910 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
911 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
912 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
913 |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
914 static int pf_set = 0; |
1 | 915 static BYTE PF[64] = {0,}; |
916 | |
128 | 917 static void DumpSystemInfo(const SYSTEM_INFO* si) |
918 { | |
919 dbgprintf(" Processor architecture %d\n", si->u.s.wProcessorArchitecture); | |
920 dbgprintf(" Page size: %d\n", si->dwPageSize); | |
921 dbgprintf(" Minimum app address: %d\n", si->lpMinimumApplicationAddress); | |
922 dbgprintf(" Maximum app address: %d\n", si->lpMaximumApplicationAddress); | |
923 dbgprintf(" Active processor mask: 0x%x\n", si->dwActiveProcessorMask); | |
924 dbgprintf(" Number of processors: %d\n", si->dwNumberOfProcessors); | |
925 dbgprintf(" Processor type: 0x%x\n", si->dwProcessorType); | |
926 dbgprintf(" Allocation granularity: 0x%x\n", si->dwAllocationGranularity); | |
927 dbgprintf(" Processor level: 0x%x\n", si->wProcessorLevel); | |
928 dbgprintf(" Processor revision: 0x%x\n", si->wProcessorRevision); | |
929 } | |
930 | |
3465 | 931 static void WINAPI expGetSystemInfo(SYSTEM_INFO* si) |
1 | 932 { |
3465 | 933 /* FIXME: better values for the two entries below... */ |
934 static int cache = 0; | |
935 static SYSTEM_INFO cachedsi; | |
936 dbgprintf("GetSystemInfo(%p) =>\n", si); | |
937 | |
938 if (cache) { | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
939 goto exit; |
3465 | 940 } |
941 memset(PF,0,sizeof(PF)); | |
5800
f2136a17b451
workaround: force PF table setup in IsProcessorFeaturePresent
alex
parents:
5770
diff
changeset
|
942 pf_set = 1; |
3465 | 943 |
944 cachedsi.u.s.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL; | |
945 cachedsi.dwPageSize = getpagesize(); | |
946 | |
947 /* FIXME: better values for the two entries below... */ | |
948 cachedsi.lpMinimumApplicationAddress = (void *)0x00000000; | |
949 cachedsi.lpMaximumApplicationAddress = (void *)0x7FFFFFFF; | |
950 cachedsi.dwActiveProcessorMask = 1; | |
951 cachedsi.dwNumberOfProcessors = 1; | |
952 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
953 cachedsi.dwAllocationGranularity = 0x10000; | |
954 cachedsi.wProcessorLevel = 5; /* pentium */ | |
955 cachedsi.wProcessorRevision = 0x0101; | |
956 | |
957 /* mplayer's way to detect PF's */ | |
958 { | |
17020 | 959 #include "cpudetect.h" |
3465 | 960 |
961 if (gCpuCaps.hasMMX) | |
962 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
963 if (gCpuCaps.hasSSE) | |
964 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
965 if (gCpuCaps.hasSSE2) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
966 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 967 if (gCpuCaps.has3DNow) |
968 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
3404 | 969 |
10013 | 970 if (gCpuCaps.cpuType == 4) |
971 { | |
972 cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
973 cachedsi.wProcessorLevel = 4; | |
974 } | |
10139
8ac4502b7b3d
10l by me, noticed by a guy with a transmeta cpu, but forgot his name, sorry
alex
parents:
10013
diff
changeset
|
975 else if (gCpuCaps.cpuType >= 5) |
3404 | 976 { |
10013 | 977 cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; |
978 cachedsi.wProcessorLevel = 5; | |
979 } | |
980 else | |
981 { | |
982 cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
983 cachedsi.wProcessorLevel = 3; | |
3404 | 984 } |
985 cachedsi.wProcessorRevision = gCpuCaps.cpuStepping; | |
986 cachedsi.dwNumberOfProcessors = 1; /* hardcoded */ | |
3465 | 987 } |
3404 | 988 |
3405 | 989 /* MPlayer: linux detection enabled (based on proc/cpuinfo) for checking |
990 fdiv_bug and fpu emulation flags -- alex/MPlayer */ | |
3404 | 991 #ifdef __linux__ |
3465 | 992 { |
1 | 993 char buf[20]; |
994 char line[200]; | |
995 FILE *f = fopen ("/proc/cpuinfo", "r"); | |
996 | |
997 if (!f) | |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
998 { |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
999 mp_msg(MSGT_WIN32, MSGL_WARN, "expGetSystemInfo: " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1000 "/proc/cpuinfo not readable! " |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1001 "Expect bad performance and/or weird behaviour\n"); |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1002 goto exit; |
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1003 } |
1 | 1004 while (fgets(line,200,f)!=NULL) { |
3465 | 1005 char *s,*value; |
1006 | |
1007 /* NOTE: the ':' is the only character we can rely on */ | |
1008 if (!(value = strchr(line,':'))) | |
1009 continue; | |
1010 /* terminate the valuename */ | |
1011 *value++ = '\0'; | |
1012 /* skip any leading spaces */ | |
1013 while (*value==' ') value++; | |
1014 if ((s=strchr(value,'\n'))) | |
1015 *s='\0'; | |
1016 | |
1017 /* 2.1 method */ | |
1018 if (!lstrncmpiA(line, "cpu family",strlen("cpu family"))) { | |
1019 if (isdigit (value[0])) { | |
1020 switch (value[0] - '0') { | |
1021 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1022 cachedsi.wProcessorLevel= 3; | |
1023 break; | |
1024 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1025 cachedsi.wProcessorLevel= 4; | |
1026 break; | |
1027 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1028 cachedsi.wProcessorLevel= 5; | |
1029 break; | |
1030 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1031 cachedsi.wProcessorLevel= 5; | |
1032 break; | |
1033 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1034 cachedsi.wProcessorLevel= 5; | |
1035 break; | |
1036 } | |
1 | 1037 } |
3465 | 1038 /* set the CPU type of the current processor */ |
1039 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1040 continue; | |
1041 } | |
1042 /* old 2.0 method */ | |
1043 if (!lstrncmpiA(line, "cpu",strlen("cpu"))) { | |
1044 if ( isdigit (value[0]) && value[1] == '8' && | |
1045 value[2] == '6' && value[3] == 0 | |
1046 ) { | |
1047 switch (value[0] - '0') { | |
1048 case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386; | |
1049 cachedsi.wProcessorLevel= 3; | |
1050 break; | |
1051 case 4: cachedsi.dwProcessorType = PROCESSOR_INTEL_486; | |
1052 cachedsi.wProcessorLevel= 4; | |
1053 break; | |
1054 case 5: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1055 cachedsi.wProcessorLevel= 5; | |
1056 break; | |
1057 case 6: cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1058 cachedsi.wProcessorLevel= 5; | |
1059 break; | |
1060 default:cachedsi.dwProcessorType = PROCESSOR_INTEL_PENTIUM; | |
1061 cachedsi.wProcessorLevel= 5; | |
1062 break; | |
1063 } | |
1 | 1064 } |
3465 | 1065 /* set the CPU type of the current processor */ |
1066 sprintf(buf,"CPU %ld",cachedsi.dwProcessorType); | |
1067 continue; | |
1068 } | |
1069 if (!lstrncmpiA(line,"fdiv_bug",strlen("fdiv_bug"))) { | |
1070 if (!lstrncmpiA(value,"yes",3)) | |
1071 PF[PF_FLOATING_POINT_PRECISION_ERRATA] = TRUE; | |
1072 | |
1073 continue; | |
1074 } | |
1075 if (!lstrncmpiA(line,"fpu",strlen("fpu"))) { | |
1076 if (!lstrncmpiA(value,"no",2)) | |
1077 PF[PF_FLOATING_POINT_EMULATED] = TRUE; | |
1078 | |
1079 continue; | |
1080 } | |
1081 if (!lstrncmpiA(line,"processor",strlen("processor"))) { | |
1082 /* processor number counts up...*/ | |
7386 | 1083 unsigned int x; |
3465 | 1084 |
1085 if (sscanf(value,"%d",&x)) | |
1086 if (x+1>cachedsi.dwNumberOfProcessors) | |
1087 cachedsi.dwNumberOfProcessors=x+1; | |
1088 | |
1089 /* Create a new processor subkey on a multiprocessor | |
1090 * system | |
1091 */ | |
1092 sprintf(buf,"%d",x); | |
1093 } | |
1094 if (!lstrncmpiA(line,"stepping",strlen("stepping"))) { | |
1095 int x; | |
1096 | |
1097 if (sscanf(value,"%d",&x)) | |
1098 cachedsi.wProcessorRevision = x; | |
1099 } | |
1100 if | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1101 ( (!lstrncmpiA(line,"flags",strlen("flags"))) |
3465 | 1102 || (!lstrncmpiA(line,"features",strlen("features"))) ) |
1103 { | |
1104 if (strstr(value,"cx8")) | |
1105 PF[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE; | |
1106 if (strstr(value,"mmx")) | |
1107 PF[PF_MMX_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1108 if (strstr(value,"tsc")) | |
1109 PF[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1110 if (strstr(value,"xmm") || strstr(value,"sse")) |
3465 | 1111 PF[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1112 if (strstr(value,"sse2")) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
1113 PF[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; |
3465 | 1114 if (strstr(value,"3dnow")) |
1115 PF[PF_AMD3D_INSTRUCTIONS_AVAILABLE] = TRUE; | |
1116 } | |
1 | 1117 } |
1118 fclose (f); | |
3465 | 1119 /* |
1120 * ad hoc fix for smp machines. | |
1121 * some problems on WaitForSingleObject,CreateEvent,SetEvent | |
1122 * CreateThread ...etc.. | |
1123 * | |
1124 */ | |
1125 cachedsi.dwNumberOfProcessors=1; | |
1126 } | |
3404 | 1127 #endif /* __linux__ */ |
3465 | 1128 cache = 1; |
16650
831cdc896c4c
expGetSystemInfo should not leave SYSTEM_INFO unitialized, even when
reimar
parents:
16632
diff
changeset
|
1129 exit: |
3465 | 1130 memcpy(si,&cachedsi,sizeof(*si)); |
1131 DumpSystemInfo(si); | |
1 | 1132 } |
1133 | |
7386 | 1134 // avoid undefined expGetSystemInfo |
1135 static WIN_BOOL WINAPI expIsProcessorFeaturePresent(DWORD v) | |
1136 { | |
1137 WIN_BOOL result = 0; | |
1138 if (!pf_set) | |
1139 { | |
1140 SYSTEM_INFO si; | |
1141 expGetSystemInfo(&si); | |
1142 } | |
1143 if(v<64) result=PF[v]; | |
1144 dbgprintf("IsProcessorFeaturePresent(0x%x) => 0x%x\n", v, result); | |
1145 return result; | |
1146 } | |
1147 | |
1148 | |
3465 | 1149 static long WINAPI expGetVersion() |
1 | 1150 { |
128 | 1151 dbgprintf("GetVersion() => 0xC0000004\n"); |
1152 return 0xC0000004;//Windows 95 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1153 } |
1 | 1154 |
3465 | 1155 static HANDLE WINAPI expHeapCreate(long flags, long init_size, long max_size) |
1 | 1156 { |
3465 | 1157 // printf("HeapCreate:"); |
128 | 1158 HANDLE result; |
1 | 1159 if(init_size==0) |
3465 | 1160 result=(HANDLE)my_mreq(0x110000, 0); |
1 | 1161 else |
3465 | 1162 result=(HANDLE)my_mreq((init_size + 0xfff) & 0x7ffff000 , 0); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1163 dbgprintf("HeapCreate(flags 0x%x, initial size %d, maximum size %d) => 0x%x\n", flags, init_size, max_size, result); |
128 | 1164 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1165 } |
3128 | 1166 |
1167 // this is another dirty hack | |
3465 | 1168 // VP31 is releasing one allocated Heap chunk twice |
3128 | 1169 // we will silently ignore this second call... |
1170 static void* heapfreehack = 0; | |
1171 static int heapfreehackshown = 0; | |
3465 | 1172 //extern void trapbug(void); |
1173 static void* WINAPI expHeapAlloc(HANDLE heap, int flags, int size) | |
1 | 1174 { |
1175 void* z; | |
3465 | 1176 /** |
1177 Morgan's m3jpeg32.dll v. 2.0 encoder expects that request for | |
1178 HeapAlloc returns area larger than size argument :-/ | |
1179 | |
1180 actually according to M$ Doc HeapCreate size should be rounded | |
1181 to page boundaries thus we should simulate this | |
1182 **/ | |
1183 //if (size == 22276) trapbug(); | |
1184 z=my_mreq((size + 0xfff) & 0x7ffff000, (flags & HEAP_ZERO_MEMORY)); | |
1 | 1185 if(z==0) |
1186 printf("HeapAlloc failure\n"); | |
3465 | 1187 dbgprintf("HeapAlloc(heap 0x%x, flags 0x%x, size %d) => 0x%x\n", heap, flags, size, z); |
3128 | 1188 heapfreehack = 0; // reset |
1 | 1189 return z; |
1190 } | |
3465 | 1191 static long WINAPI expHeapDestroy(void* heap) |
1 | 1192 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1193 dbgprintf("HeapDestroy(heap 0x%x) => 1\n", heap); |
1 | 1194 my_release(heap); |
1195 return 1; | |
1196 } | |
1197 | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1198 static long WINAPI expHeapFree(HANDLE heap, DWORD dwFlags, LPVOID lpMem) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1199 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1200 dbgprintf("HeapFree(0x%x, 0x%x, pointer 0x%x) => 1\n", heap, dwFlags, lpMem); |
7386 | 1201 if (heapfreehack != lpMem && lpMem != (void*)0xffffffff |
1202 && lpMem != (void*)0xbdbdbdbd) | |
1203 // 0xbdbdbdbd is for i263_drv.drv && libefence | |
1204 // it seems to be reading from relased memory | |
1205 // EF_PROTECT_FREE doens't show any probleme | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1206 my_release(lpMem); |
3128 | 1207 else |
1208 { | |
3465 | 1209 if (!heapfreehackshown++) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1210 printf("Info: HeapFree deallocating same memory twice! (%p)\n", lpMem); |
3128 | 1211 } |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1212 heapfreehack = lpMem; |
1 | 1213 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1214 } |
3465 | 1215 static long WINAPI expHeapSize(int heap, int flags, void* pointer) |
1 | 1216 { |
128 | 1217 long result=my_size(pointer); |
1218 dbgprintf("HeapSize(heap 0x%x, flags 0x%x, pointer 0x%x) => %d\n", heap, flags, pointer, result); | |
1219 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1220 } |
3465 | 1221 static void* WINAPI expHeapReAlloc(HANDLE heap,int flags,void *lpMem,int size) |
2069 | 1222 { |
3465 | 1223 long orgsize = my_size(lpMem); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1224 dbgprintf("HeapReAlloc() Size %ld org %d\n",orgsize,size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1225 return my_realloc(lpMem, size); |
2069 | 1226 } |
3465 | 1227 static long WINAPI expGetProcessHeap(void) |
1 | 1228 { |
128 | 1229 dbgprintf("GetProcessHeap() => 1\n"); |
1 | 1230 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1231 } |
3465 | 1232 static void* WINAPI expVirtualAlloc(void* v1, long v2, long v3, long v4) |
1 | 1233 { |
3465 | 1234 void* z = VirtualAlloc(v1, v2, v3, v4); |
1 | 1235 if(z==0) |
1236 printf("VirtualAlloc failure\n"); | |
128 | 1237 dbgprintf("VirtualAlloc(0x%x, %d, %d, %d) => 0x%x \n",v1,v2,v3,v4, z); |
1 | 1238 return z; |
1239 } | |
3465 | 1240 static int WINAPI expVirtualFree(void* v1, int v2, int v3) |
1 | 1241 { |
3465 | 1242 int result = VirtualFree(v1,v2,v3); |
128 | 1243 dbgprintf("VirtualFree(0x%x, %d, %d) => %d\n",v1,v2,v3, result); |
1244 return result; | |
3128 | 1245 } |
2579 | 1246 |
1247 /* we're building a table of critical sections. cs_win pointer uses the DLL | |
3465 | 1248 cs_unix is the real structure, we're using cs_win only to identifying cs_unix */ |
2579 | 1249 struct critsecs_list_t |
1250 { | |
1251 CRITICAL_SECTION *cs_win; | |
1252 struct CRITSECT *cs_unix; | |
1253 }; | |
1254 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1255 /* 'NEWTYPE' is working with VIVO, 3ivX and QTX dll (no more segfaults) -- alex */ |
8393
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1256 #undef CRITSECS_NEWTYPE |
08e71f6a7531
it seems that old CS is working better than newtype now... :)
arpi
parents:
8391
diff
changeset
|
1257 //#define CRITSECS_NEWTYPE 1 |
3128 | 1258 |
1259 #ifdef CRITSECS_NEWTYPE | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1260 /* increased due to ucod needs more than 32 entries */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1261 /* and 64 should be enough for everything */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1262 #define CRITSECS_LIST_MAX 64 |
2579 | 1263 static struct critsecs_list_t critsecs_list[CRITSECS_LIST_MAX]; |
1264 | |
3465 | 1265 static int critsecs_get_pos(CRITICAL_SECTION *cs_win) |
2579 | 1266 { |
1267 int i; | |
3128 | 1268 |
2579 | 1269 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1270 if (critsecs_list[i].cs_win == cs_win) | |
1271 return(i); | |
1272 return(-1); | |
1273 } | |
1274 | |
3465 | 1275 static int critsecs_get_unused(void) |
2579 | 1276 { |
1277 int i; | |
3128 | 1278 |
2579 | 1279 for (i=0; i < CRITSECS_LIST_MAX; i++) |
1280 if (critsecs_list[i].cs_win == NULL) | |
1281 return(i); | |
1282 return(-1); | |
1283 } | |
1284 | |
1285 struct CRITSECT *critsecs_get_unix(CRITICAL_SECTION *cs_win) | |
1286 { | |
1287 int i; | |
3128 | 1288 |
2579 | 1289 for (i=0; i < CRITSECS_LIST_MAX; i++) |
2670 | 1290 if (critsecs_list[i].cs_win == cs_win && critsecs_list[i].cs_unix) |
2579 | 1291 return(critsecs_list[i].cs_unix); |
1292 return(NULL); | |
1293 } | |
1294 #endif | |
1295 | |
3465 | 1296 static void WINAPI expInitializeCriticalSection(CRITICAL_SECTION* c) |
1 | 1297 { |
128 | 1298 dbgprintf("InitializeCriticalSection(0x%x)\n", c); |
3465 | 1299 /* if(sizeof(pthread_mutex_t)>sizeof(CRITICAL_SECTION)) |
1300 { | |
1301 printf(" ERROR:::: sizeof(pthread_mutex_t) is %d, expected <=%d!\n", | |
1302 sizeof(pthread_mutex_t), sizeof(CRITICAL_SECTION)); | |
1303 return; | |
1304 }*/ | |
1305 /* pthread_mutex_init((pthread_mutex_t*)c, NULL); */ | |
2579 | 1306 #ifdef CRITSECS_NEWTYPE |
1307 { | |
3465 | 1308 struct CRITSECT *cs; |
1309 int i = critsecs_get_unused(); | |
1310 | |
1311 if (i < 0) | |
1312 { | |
1313 printf("InitializeCriticalSection(%p) - no more space in list\n", c); | |
1314 return; | |
1315 } | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1316 dbgprintf("got unused space at %d\n", i); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
1317 cs = malloc(sizeof(struct CRITSECT)); |
3465 | 1318 if (!cs) |
1319 { | |
1320 printf("InitializeCriticalSection(%p) - out of memory\n", c); | |
1321 return; | |
1322 } | |
1323 pthread_mutex_init(&cs->mutex, NULL); | |
1324 cs->locked = 0; | |
1325 critsecs_list[i].cs_win = c; | |
1326 critsecs_list[i].cs_unix = cs; | |
1327 dbgprintf("InitializeCriticalSection -> itemno=%d, cs_win=%p, cs_unix=%p\n", | |
1328 i, c, cs); | |
2579 | 1329 } |
3465 | 1330 #else |
2670 | 1331 { |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1332 struct CRITSECT* cs = mreq_private(sizeof(struct CRITSECT) + sizeof(CRITICAL_SECTION), |
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1333 0, AREATYPE_CRITSECT); |
3465 | 1334 pthread_mutex_init(&cs->mutex, NULL); |
1335 cs->locked=0; | |
6321
c254cb1c26ef
new (cleaner, nore robust) critsect code by Zdenek Kabelac <kabi@informatics.muni.cz>
arpi
parents:
5872
diff
changeset
|
1336 cs->deadbeef = 0xdeadbeef; |
7718 | 1337 *(void**)c = cs; |
2670 | 1338 } |
2579 | 1339 #endif |
1 | 1340 return; |
2579 | 1341 } |
1342 | |
3465 | 1343 static void WINAPI expEnterCriticalSection(CRITICAL_SECTION* c) |
1 | 1344 { |
2579 | 1345 #ifdef CRITSECS_NEWTYPE |
1346 struct CRITSECT* cs = critsecs_get_unix(c); | |
1347 #else | |
7718 | 1348 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1349 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1350 dbgprintf("EnterCriticalSection(0x%x) %p\n",c, cs); |
2069 | 1351 if (!cs) |
1352 { | |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
1353 dbgprintf("entered uninitialized critisec!\n"); |
2069 | 1354 expInitializeCriticalSection(c); |
2579 | 1355 #ifdef CRITSECS_NEWTYPE |
1356 cs=critsecs_get_unix(c); | |
1357 #else | |
7718 | 1358 cs = (*(struct CRITSECT**)c); |
2579 | 1359 #endif |
12074 | 1360 dbgprintf("Win32 Warning: Accessed uninitialized Critical Section (%p)!\n", c); |
2069 | 1361 } |
1 | 1362 if(cs->locked) |
1363 if(cs->id==pthread_self()) | |
1364 return; | |
1365 pthread_mutex_lock(&(cs->mutex)); | |
1366 cs->locked=1; | |
1367 cs->id=pthread_self(); | |
1368 return; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1369 } |
3465 | 1370 static void WINAPI expLeaveCriticalSection(CRITICAL_SECTION* c) |
1 | 1371 { |
2579 | 1372 #ifdef CRITSECS_NEWTYPE |
1373 struct CRITSECT* cs = critsecs_get_unix(c); | |
1374 #else | |
7718 | 1375 struct CRITSECT* cs = (*(struct CRITSECT**)c); |
2579 | 1376 #endif |
3465 | 1377 // struct CRITSECT* cs=(struct CRITSECT*)c; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1378 dbgprintf("LeaveCriticalSection(0x%x) 0x%x\n",c, cs); |
2069 | 1379 if (!cs) |
1380 { | |
12074 | 1381 dbgprintf("Win32 Warning: Leaving uninitialized Critical Section %p!!\n", c); |
2069 | 1382 return; |
1383 } | |
11852
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1384 if (cs->locked) |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1385 { |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1386 cs->locked=0; |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1387 pthread_mutex_unlock(&(cs->mutex)); |
0bbdbc75532f
Don't mutex_unlock if it was never locked. Patch by Min Sik Kim
alex
parents:
10818
diff
changeset
|
1388 } |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1389 else |
12074 | 1390 dbgprintf("Win32 Warning: Unlocking unlocked Critical Section %p!!\n", c); |
1 | 1391 return; |
1392 } | |
8451 | 1393 |
1394 static void expfree(void* mem); /* forward declaration */ | |
1395 | |
3465 | 1396 static void WINAPI expDeleteCriticalSection(CRITICAL_SECTION *c) |
1 | 1397 { |
2579 | 1398 #ifdef CRITSECS_NEWTYPE |
1399 struct CRITSECT* cs = critsecs_get_unix(c); | |
1400 #else | |
7718 | 1401 struct CRITSECT* cs= (*(struct CRITSECT**)c); |
2579 | 1402 #endif |
3465 | 1403 // struct CRITSECT* cs=(struct CRITSECT*)c; |
128 | 1404 dbgprintf("DeleteCriticalSection(0x%x)\n",c); |
3465 | 1405 |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1406 if (!cs) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1407 { |
12074 | 1408 dbgprintf("Win32 Warning: Deleting uninitialized Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1409 return; |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1410 } |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1411 |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1412 if (cs->locked) |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1413 { |
12074 | 1414 dbgprintf("Win32 Warning: Deleting unlocked Critical Section %p!!\n", c); |
11853
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1415 pthread_mutex_unlock(&(cs->mutex)); |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1416 } |
b5805b819ff9
reviewed the locking codes, a mutex should be unlocked before destroying it
alex
parents:
11852
diff
changeset
|
1417 |
3465 | 1418 #ifndef GARBAGE |
128 | 1419 pthread_mutex_destroy(&(cs->mutex)); |
3465 | 1420 // released by GarbageCollector in my_relase otherwise |
1421 #endif | |
1422 my_release(cs); | |
2579 | 1423 #ifdef CRITSECS_NEWTYPE |
1424 { | |
3465 | 1425 int i = critsecs_get_pos(c); |
1426 | |
1427 if (i < 0) | |
1428 { | |
1429 printf("DeleteCriticalSection(%p) error (critsec not found)\n", c); | |
1430 return; | |
1431 } | |
1432 | |
1433 critsecs_list[i].cs_win = NULL; | |
1434 expfree(critsecs_list[i].cs_unix); | |
1435 critsecs_list[i].cs_unix = NULL; | |
1436 dbgprintf("DeleteCriticalSection -> itemno=%d\n", i); | |
2579 | 1437 } |
1438 #endif | |
1 | 1439 return; |
1440 } | |
3465 | 1441 static int WINAPI expGetCurrentThreadId() |
1 | 1442 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1443 dbgprintf("GetCurrentThreadId() => %d\n", pthread_self()); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1444 return pthread_self(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1445 } |
3465 | 1446 static int WINAPI expGetCurrentProcess() |
128 | 1447 { |
1448 dbgprintf("GetCurrentProcess() => %d\n", getpid()); | |
1 | 1449 return getpid(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1450 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1451 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1452 #ifdef QTX |
3128 | 1453 // this version is required for Quicktime codecs (.qtx/.qts) to work. |
1454 // (they assume some pointers at FS: segment) | |
1455 | |
7386 | 1456 extern void* fs_seg; |
1457 | |
2779 | 1458 //static int tls_count; |
1459 static int tls_use_map[64]; | |
3465 | 1460 static int WINAPI expTlsAlloc() |
2779 | 1461 { |
1462 int i; | |
1463 for(i=0; i<64; i++) | |
1464 if(tls_use_map[i]==0) | |
1465 { | |
1466 tls_use_map[i]=1; | |
5234 | 1467 dbgprintf("TlsAlloc() => %d\n",i); |
2779 | 1468 return i; |
1469 } | |
5234 | 1470 dbgprintf("TlsAlloc() => -1 (ERROR)\n"); |
2779 | 1471 return -1; |
1472 } | |
1473 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1474 //static int WINAPI expTlsSetValue(DWORD index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1475 static int WINAPI expTlsSetValue(int index, void* value) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1476 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
1477 dbgprintf("TlsSetValue(%d,0x%x) => 1\n",index,value); |
5234 | 1478 // if((index<0) || (index>64)) |
1479 if((index>=64)) | |
2779 | 1480 return 0; |
1481 *(void**)((char*)fs_seg+0x88+4*index) = value; | |
1482 return 1; | |
1483 } | |
1484 | |
5234 | 1485 static void* WINAPI expTlsGetValue(DWORD index) |
1486 { | |
1487 dbgprintf("TlsGetValue(%d)\n",index); | |
1488 // if((index<0) || (index>64)) | |
1489 if((index>=64)) return NULL; | |
1490 return *(void**)((char*)fs_seg+0x88+4*index); | |
2779 | 1491 } |
1492 | |
3465 | 1493 static int WINAPI expTlsFree(int idx) |
2779 | 1494 { |
3465 | 1495 int index = (int) idx; |
5234 | 1496 dbgprintf("TlsFree(%d)\n",index); |
2779 | 1497 if((index<0) || (index>64)) |
1498 return 0; | |
1499 tls_use_map[index]=0; | |
1500 return 1; | |
1501 } | |
1502 | |
1503 #else | |
2069 | 1504 struct tls_s { |
1 | 1505 void* value; |
1506 int used; | |
1507 struct tls_s* prev; | |
1508 struct tls_s* next; | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1509 }; |
2069 | 1510 |
3465 | 1511 static void* WINAPI expTlsAlloc() |
1 | 1512 { |
7386 | 1513 if (g_tls == NULL) |
1 | 1514 { |
1515 g_tls=my_mreq(sizeof(tls_t), 0); | |
1516 g_tls->next=g_tls->prev=NULL; | |
1517 } | |
1518 else | |
1519 { | |
1520 g_tls->next=my_mreq(sizeof(tls_t), 0); | |
1521 g_tls->next->prev=g_tls; | |
1522 g_tls->next->next=NULL; | |
1523 g_tls=g_tls->next; | |
1524 } | |
128 | 1525 dbgprintf("TlsAlloc() => 0x%x\n", g_tls); |
2670 | 1526 if (g_tls) |
1527 g_tls->value=0; /* XXX For Divx.dll */ | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1528 return g_tls; |
1 | 1529 } |
1530 | |
3465 | 1531 static int WINAPI expTlsSetValue(void* idx, void* value) |
1 | 1532 { |
3465 | 1533 tls_t* index = (tls_t*) idx; |
128 | 1534 int result; |
1 | 1535 if(index==0) |
128 | 1536 result=0; |
1537 else | |
1538 { | |
1539 index->value=value; | |
1540 result=1; | |
1541 } | |
1542 dbgprintf("TlsSetValue(index 0x%x, value 0x%x) => %d \n", index, value, result ); | |
1543 return result; | |
1 | 1544 } |
3465 | 1545 static void* WINAPI expTlsGetValue(void* idx) |
1 | 1546 { |
3465 | 1547 tls_t* index = (tls_t*) idx; |
128 | 1548 void* result; |
1 | 1549 if(index==0) |
128 | 1550 result=0; |
1551 else | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1552 result=index->value; |
128 | 1553 dbgprintf("TlsGetValue(index 0x%x) => 0x%x\n", index, result); |
1554 return result; | |
1 | 1555 } |
3465 | 1556 static int WINAPI expTlsFree(void* idx) |
1 | 1557 { |
3465 | 1558 tls_t* index = (tls_t*) idx; |
128 | 1559 int result; |
1 | 1560 if(index==0) |
128 | 1561 result=0; |
1562 else | |
1563 { | |
1564 if(index->next) | |
1565 index->next->prev=index->prev; | |
1566 if(index->prev) | |
3465 | 1567 index->prev->next=index->next; |
7386 | 1568 if (g_tls == index) |
1569 g_tls = index->prev; | |
128 | 1570 my_release((void*)index); |
1571 result=1; | |
1572 } | |
1573 dbgprintf("TlsFree(index 0x%x) => %d\n", index, result); | |
1574 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1575 } |
2779 | 1576 #endif |
1577 | |
3465 | 1578 static void* WINAPI expLocalAlloc(int flags, int size) |
1 | 1579 { |
3465 | 1580 void* z = my_mreq(size, (flags & GMEM_ZEROINIT)); |
1581 if (z == 0) | |
1 | 1582 printf("LocalAlloc() failed\n"); |
128 | 1583 dbgprintf("LocalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); |
1 | 1584 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1585 } |
2069 | 1586 |
3465 | 1587 static void* WINAPI expLocalReAlloc(int handle,int size, int flags) |
2069 | 1588 { |
3465 | 1589 void *newpointer; |
1590 int oldsize; | |
1591 | |
1592 newpointer=NULL; | |
1593 if (flags & LMEM_MODIFY) { | |
1594 dbgprintf("LocalReAlloc MODIFY\n"); | |
1595 return (void *)handle; | |
1596 } | |
1597 oldsize = my_size((void *)handle); | |
1598 newpointer = my_realloc((void *)handle,size); | |
1599 dbgprintf("LocalReAlloc(%x %d(old %d), flags 0x%x) => 0x%x\n", handle,size,oldsize, flags,newpointer); | |
1600 | |
1601 return newpointer; | |
2069 | 1602 } |
1603 | |
3465 | 1604 static void* WINAPI expLocalLock(void* z) |
1 | 1605 { |
128 | 1606 dbgprintf("LocalLock(0x%x) => 0x%x\n", z, z); |
1 | 1607 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1608 } |
128 | 1609 |
3465 | 1610 static void* WINAPI expGlobalAlloc(int flags, int size) |
1 | 1611 { |
1612 void* z; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1613 dbgprintf("GlobalAlloc(%d, flags 0x%X)\n", size, flags); |
3465 | 1614 |
1615 z=my_mreq(size, (flags & GMEM_ZEROINIT)); | |
1616 //z=calloc(size, 1); | |
1617 //z=malloc(size); | |
1 | 1618 if(z==0) |
128 | 1619 printf("GlobalAlloc() failed\n"); |
1620 dbgprintf("GlobalAlloc(%d, flags 0x%x) => 0x%x\n", size, flags, z); | |
1 | 1621 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1622 } |
3465 | 1623 static void* WINAPI expGlobalLock(void* z) |
1 | 1624 { |
128 | 1625 dbgprintf("GlobalLock(0x%x) => 0x%x\n", z, z); |
1 | 1626 return z; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1627 } |
3128 | 1628 // pvmjpg20 - but doesn't work anyway |
3465 | 1629 static int WINAPI expGlobalSize(void* amem) |
3128 | 1630 { |
1631 int size = 100000; | |
1632 #ifdef GARBAGE | |
1633 alloc_header* header = last_alloc; | |
1634 alloc_header* mem = (alloc_header*) amem - 1; | |
1635 if (amem == 0) | |
3465 | 1636 return 0; |
3128 | 1637 pthread_mutex_lock(&memmut); |
1638 while (header) | |
1639 { | |
3465 | 1640 if (header->deadbeef != 0xdeadbeef) |
1641 { | |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
1642 dbgprintf("FATAL found corrupted memory! %p 0x%lx (%d)\n", header, header->deadbeef, alccnt); |
3465 | 1643 break; |
1644 } | |
1645 | |
1646 if (header == mem) | |
1647 { | |
1648 size = header->size; | |
1649 break; | |
1650 } | |
1651 | |
1652 header = header->prev; | |
3128 | 1653 } |
1654 pthread_mutex_unlock(&memmut); | |
1655 #endif | |
1656 | |
1657 dbgprintf("GlobalSize(0x%x)\n", amem); | |
1658 return size; | |
1659 } | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1660 |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1661 static int WINAPI expLoadIconA( long hinstance, char *name ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1662 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1663 dbgprintf("LoadIconA( %ld, 0x%x ) => 1\n",hinstance,name); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1664 return 1; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1665 } |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
1666 |
3465 | 1667 static int WINAPI expLoadStringA(long instance, long id, void* buf, long size) |
1 | 1668 { |
128 | 1669 int result=LoadStringA(instance, id, buf, size); |
3465 | 1670 // if(buf) |
128 | 1671 dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d ( %s )\n", |
3465 | 1672 instance, id, buf, size, result, buf); |
1673 // else | |
1674 // dbgprintf("LoadStringA(instance 0x%x, id 0x%x, buffer 0x%x, size %d) => %d\n", | |
1675 // instance, id, buf, size, result); | |
128 | 1676 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1677 } |
1 | 1678 |
3465 | 1679 static long WINAPI expMultiByteToWideChar(long v1, long v2, char* s1, long siz1, short* s2, int siz2) |
1 | 1680 { |
1681 #warning FIXME | |
128 | 1682 int i; |
1683 int result; | |
1 | 1684 if(s2==0) |
3465 | 1685 result=1; |
128 | 1686 else |
1687 { | |
3465 | 1688 if(siz1>siz2/2)siz1=siz2/2; |
1689 for(i=1; i<=siz1; i++) | |
1690 { | |
1691 *s2=*s1; | |
1692 if(!*s1)break; | |
1693 s2++; | |
1694 s1++; | |
1695 } | |
1696 result=i; | |
128 | 1697 } |
1698 if(s1) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1699 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string 0x%x='%s'," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1700 "size %d, dest buffer 0x%x, dest size %d) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1701 v1, v2, s1, s1, siz1, s2, siz2, result); |
128 | 1702 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1703 dbgprintf("MultiByteToWideChar(codepage %d, flags 0x%x, string NULL," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1704 "size %d, dest buffer 0x%x, dest size %d) =>\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1705 v1, v2, siz1, s2, siz2, result); |
128 | 1706 return result; |
1707 } | |
1708 static void wch_print(const short* str) | |
1709 { | |
1710 dbgprintf(" src: "); | |
1711 while(*str)dbgprintf("%c", *str++); | |
1712 dbgprintf("\n"); | |
1 | 1713 } |
3465 | 1714 static long WINAPI expWideCharToMultiByte(long v1, long v2, short* s1, long siz1, |
1715 char* s2, int siz2, char* c3, int* siz3) | |
1 | 1716 { |
1717 int result; | |
128 | 1718 dbgprintf("WideCharToMultiByte(codepage %d, flags 0x%x, src 0x%x, src size %d, " |
3465 | 1719 "dest 0x%x, dest size %d, defch 0x%x, used_defch 0x%x)", v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1 | 1720 result=WideCharToMultiByte(v1, v2, s1, siz1, s2, siz2, c3, siz3); |
1721 dbgprintf("=> %d\n", result); | |
2069 | 1722 //if(s1)wch_print(s1); |
128 | 1723 if(s2)dbgprintf(" dest: %s\n", s2); |
1 | 1724 return result; |
1725 } | |
3465 | 1726 static long WINAPI expGetVersionExA(OSVERSIONINFOA* c) |
1 | 1727 { |
128 | 1728 dbgprintf("GetVersionExA(0x%x) => 1\n"); |
1729 c->dwOSVersionInfoSize=sizeof(*c); | |
1 | 1730 c->dwMajorVersion=4; |
128 | 1731 c->dwMinorVersion=0; |
1732 c->dwBuildNumber=0x4000457; | |
5234 | 1733 #if 1 |
2069 | 1734 // leave it here for testing win9x-only codecs |
1 | 1735 c->dwPlatformId=VER_PLATFORM_WIN32_WINDOWS; |
128 | 1736 strcpy(c->szCSDVersion, " B"); |
2069 | 1737 #else |
1738 c->dwPlatformId=VER_PLATFORM_WIN32_NT; // let's not make DLL assume that it can read CR* registers | |
1739 strcpy(c->szCSDVersion, "Service Pack 3"); | |
1740 #endif | |
128 | 1741 dbgprintf(" Major version: 4\n Minor version: 0\n Build number: 0x4000457\n" |
3465 | 1742 " Platform Id: VER_PLATFORM_WIN32_NT\n Version string: 'Service Pack 3'\n"); |
1 | 1743 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1744 } |
3465 | 1745 static HANDLE WINAPI expCreateSemaphoreA(char* v1, long init_count, |
1746 long max_count, char* name) | |
1 | 1747 { |
128 | 1748 pthread_mutex_t *pm; |
1749 pthread_cond_t *pc; | |
24385 | 1750 /* |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1751 mutex_list* pp; |
3465 | 1752 printf("CreateSemaphoreA(%p = %s)\n", name, (name ? name : "<null>")); |
1753 pp=mlist; | |
1754 while(pp) | |
1755 { | |
1756 printf("%p => ", pp); | |
1757 pp=pp->prev; | |
1758 } | |
1759 printf("0\n"); | |
1760 */ | |
128 | 1761 if(mlist!=NULL) |
1 | 1762 { |
128 | 1763 mutex_list* pp=mlist; |
1764 if(name!=NULL) | |
3465 | 1765 do |
128 | 1766 { |
1767 if((strcmp(pp->name, name)==0) && (pp->type==1)) | |
1768 { | |
3465 | 1769 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1770 v1, init_count, max_count, name, name, mlist); | |
128 | 1771 return (HANDLE)mlist; |
1772 } | |
2069 | 1773 }while((pp=pp->prev) != NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1774 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1775 pm=mreq_private(sizeof(pthread_mutex_t), 0, AREATYPE_MUTEX); |
128 | 1776 pthread_mutex_init(pm, NULL); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1777 pc=mreq_private(sizeof(pthread_cond_t), 0, AREATYPE_COND); |
128 | 1778 pthread_cond_init(pc, NULL); |
1779 if(mlist==NULL) | |
1780 { | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1781 mlist=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1782 mlist->next=mlist->prev=NULL; |
1783 } | |
1784 else | |
1 | 1785 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1786 mlist->next=mreq_private(sizeof(mutex_list), 00, AREATYPE_EVENT); |
128 | 1787 mlist->next->prev=mlist; |
1788 mlist->next->next=NULL; | |
1789 mlist=mlist->next; | |
3465 | 1790 // printf("new semaphore %p\n", mlist); |
1 | 1791 } |
128 | 1792 mlist->type=1; /* Type Semaphore */ |
1793 mlist->pm=pm; | |
1794 mlist->pc=pc; | |
1795 mlist->state=0; | |
1796 mlist->reset=0; | |
1797 mlist->semaphore=init_count; | |
1798 if(name!=NULL) | |
3465 | 1799 strncpy(mlist->name, name, 64); |
128 | 1800 else |
1801 mlist->name[0]=0; | |
1802 if(pm==NULL) | |
1803 dbgprintf("ERROR::: CreateSemaphoreA failure\n"); | |
1804 if(name) | |
3465 | 1805 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0x%x='%s') => 0x%x\n", |
1806 v1, init_count, max_count, name, name, mlist); | |
128 | 1807 else |
3465 | 1808 dbgprintf("CreateSemaphoreA(0x%x, init_count %d, max_count %d, name 0) => 0x%x\n", |
1809 v1, init_count, max_count, mlist); | |
128 | 1810 return (HANDLE)mlist; |
1 | 1811 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1812 |
3465 | 1813 static long WINAPI expReleaseSemaphore(long hsem, long increment, long* prev_count) |
1 | 1814 { |
3465 | 1815 // The state of a semaphore object is signaled when its count |
1816 // is greater than zero and nonsignaled when its count is equal to zero | |
1817 // Each time a waiting thread is released because of the semaphore's signaled | |
1818 // state, the count of the semaphore is decreased by one. | |
128 | 1819 mutex_list *ml = (mutex_list *)hsem; |
1 | 1820 |
128 | 1821 pthread_mutex_lock(ml->pm); |
1822 if (prev_count != 0) *prev_count = ml->semaphore; | |
1823 if (ml->semaphore == 0) pthread_cond_signal(ml->pc); | |
1824 ml->semaphore += increment; | |
1825 pthread_mutex_unlock(ml->pm); | |
1826 dbgprintf("ReleaseSemaphore(semaphore 0x%x, increment %d, prev_count 0x%x) => 1\n", | |
3465 | 1827 hsem, increment, prev_count); |
128 | 1828 return 1; |
1 | 1829 } |
1830 | |
1831 | |
3465 | 1832 static long WINAPI expRegOpenKeyExA(long key, const char* subkey, long reserved, long access, int* newkey) |
1 | 1833 { |
128 | 1834 long result=RegOpenKeyExA(key, subkey, reserved, access, newkey); |
1835 dbgprintf("RegOpenKeyExA(key 0x%x, subkey %s, reserved %d, access 0x%x, pnewkey 0x%x) => %d\n", | |
3465 | 1836 key, subkey, reserved, access, newkey, result); |
128 | 1837 if(newkey)dbgprintf(" New key: 0x%x\n", *newkey); |
1838 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1839 } |
3465 | 1840 static long WINAPI expRegCloseKey(long key) |
1 | 1841 { |
128 | 1842 long result=RegCloseKey(key); |
1843 dbgprintf("RegCloseKey(0x%x) => %d\n", key, result); | |
1844 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1845 } |
3465 | 1846 static long WINAPI expRegQueryValueExA(long key, const char* value, int* reserved, int* type, int* data, int* count) |
1 | 1847 { |
128 | 1848 long result=RegQueryValueExA(key, value, reserved, type, data, count); |
1849 dbgprintf("RegQueryValueExA(key 0x%x, value %s, reserved 0x%x, data 0x%x, count 0x%x)" | |
3465 | 1850 " => 0x%x\n", key, value, reserved, data, count, result); |
128 | 1851 if(data && count)dbgprintf(" read %d bytes: '%s'\n", *count, data); |
1852 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1853 } |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1854 |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1855 //from wine source dlls/advapi32/registry.c |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1856 static long WINAPI expRegCreateKeyA(long hkey, const char* name, int *retkey) |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1857 { |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1858 dbgprintf("RegCreateKeyA(key 0x%x, name 0x%x='%s',newkey=0x%x)\n",hkey,name,retkey); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1859 return RegCreateKeyExA( hkey, name, 0, NULL,REG_OPTION_NON_VOLATILE, |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1860 KEY_ALL_ACCESS , NULL, retkey, NULL ); |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1861 } |
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
1862 |
3465 | 1863 static long WINAPI expRegCreateKeyExA(long key, const char* name, long reserved, |
1864 void* classs, long options, long security, | |
1865 void* sec_attr, int* newkey, int* status) | |
1 | 1866 { |
128 | 1867 long result=RegCreateKeyExA(key, name, reserved, classs, options, security, sec_attr, newkey, status); |
1868 dbgprintf("RegCreateKeyExA(key 0x%x, name 0x%x='%s', reserved=0x%x," | |
3465 | 1869 " 0x%x, 0x%x, 0x%x, newkey=0x%x, status=0x%x) => %d\n", |
1870 key, name, name, reserved, classs, options, security, sec_attr, newkey, status, result); | |
128 | 1871 if(!result && newkey) dbgprintf(" New key: 0x%x\n", *newkey); |
1872 if(!result && status) dbgprintf(" New key status: 0x%x\n", *status); | |
1873 return result; | |
1 | 1874 } |
3465 | 1875 static long WINAPI expRegSetValueExA(long key, const char* name, long v1, long v2, void* data, long size) |
1 | 1876 { |
128 | 1877 long result=RegSetValueExA(key, name, v1, v2, data, size); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1878 dbgprintf("RegSetValueExA(key 0x%x, name '%s', 0x%x, 0x%x, data 0x%x -> 0x%x '%s', size=%d) => %d", |
3465 | 1879 key, name, v1, v2, data, *(int*)data, data, size, result); |
128 | 1880 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1881 } |
1 | 1882 |
3465 | 1883 static long WINAPI expRegOpenKeyA (long hKey, LPCSTR lpSubKey, int* phkResult) |
3134 | 1884 { |
128 | 1885 long result=RegOpenKeyExA(hKey, lpSubKey, 0, 0, phkResult); |
1886 dbgprintf("RegOpenKeyExA(key 0x%x, subkey '%s', 0x%x) => %d\n", | |
3465 | 1887 hKey, lpSubKey, phkResult, result); |
128 | 1888 if(!result && phkResult) dbgprintf(" New key: 0x%x\n", *phkResult); |
1889 return result; | |
1 | 1890 } |
1891 | |
3465 | 1892 static DWORD WINAPI expRegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count, |
1893 LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count) | |
2069 | 1894 { |
1895 return RegEnumValueA(hkey, index, value, val_count, | |
1896 reserved, type, data, count); | |
1897 } | |
1898 | |
3465 | 1899 static DWORD WINAPI expRegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpcbName, |
1900 LPDWORD lpReserved, LPSTR lpClass, LPDWORD lpcbClass, | |
1901 LPFILETIME lpftLastWriteTime) | |
1902 { | |
1903 return RegEnumKeyExA(hKey, dwIndex, lpName, lpcbName, lpReserved, lpClass, | |
1904 lpcbClass, lpftLastWriteTime); | |
1905 } | |
1906 | |
1907 static long WINAPI expQueryPerformanceCounter(long long* z) | |
1 | 1908 { |
1909 longcount(z); | |
128 | 1910 dbgprintf("QueryPerformanceCounter(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1911 return 1; |
1 | 1912 } |
1913 | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1914 /* |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1915 * dummy function RegQueryInfoKeyA(), required by vss codecs |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1916 */ |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1917 static DWORD WINAPI expRegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWORD reserved, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1918 LPDWORD subkeys, LPDWORD max_subkey, LPDWORD max_class, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1919 LPDWORD values, LPDWORD max_value, LPDWORD max_data, |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1920 LPDWORD security, FILETIME *modif ) |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1921 { |
13182 | 1922 return ERROR_SUCCESS; |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1923 } |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1924 |
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
1925 /* |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1926 * return CPU clock (in kHz), using linux's /proc filesystem (/proc/cpuinfo) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1927 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1928 static double linux_cpuinfo_freq() |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1929 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1930 double freq=-1; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1931 FILE *f; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1932 char line[200]; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1933 char *s,*value; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1934 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1935 f = fopen ("/proc/cpuinfo", "r"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1936 if (f != NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1937 while (fgets(line,sizeof(line),f)!=NULL) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1938 /* NOTE: the ':' is the only character we can rely on */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1939 if (!(value = strchr(line,':'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1940 continue; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1941 /* terminate the valuename */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1942 *value++ = '\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1943 /* skip any leading spaces */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1944 while (*value==' ') value++; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1945 if ((s=strchr(value,'\n'))) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1946 *s='\0'; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1947 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1948 if (!strncasecmp(line, "cpu MHz",strlen("cpu MHz")) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1949 && sscanf(value, "%lf", &freq) == 1) { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1950 freq*=1000; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1951 break; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
1952 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1953 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1954 fclose(f); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1955 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1956 return freq; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1957 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1958 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1959 |
3465 | 1960 static double solaris_kstat_freq() |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1961 { |
1679
73c8f54305b1
Add a few ifdefs, so that the code compiles on old solaris releases (2.6 and 7)
jkeil
parents:
1543
diff
changeset
|
1962 #if defined(HAVE_LIBKSTAT) && defined(KSTAT_DATA_INT32) |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1963 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1964 * try to extract the CPU speed from the solaris kernel's kstat data |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1965 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1966 kstat_ctl_t *kc; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1967 kstat_t *ksp; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1968 kstat_named_t *kdata; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1969 int mhz = 0; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1970 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1971 kc = kstat_open(); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1972 if (kc != NULL) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1973 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1974 ksp = kstat_lookup(kc, "cpu_info", 0, "cpu_info0"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1975 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1976 /* kstat found and name/value pairs? */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1977 if (ksp != NULL && ksp->ks_type == KSTAT_TYPE_NAMED) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1978 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1979 /* read the kstat data from the kernel */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1980 if (kstat_read(kc, ksp, NULL) != -1) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1981 { |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1982 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1983 * lookup desired "clock_MHz" entry, check the expected |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1984 * data type |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1985 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1986 kdata = (kstat_named_t *)kstat_data_lookup(ksp, "clock_MHz"); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1987 if (kdata != NULL && kdata->data_type == KSTAT_DATA_INT32) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1988 mhz = kdata->value.i32; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1989 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1990 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1991 kstat_close(kc); |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1992 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1993 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1994 if (mhz > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1995 return mhz * 1000.; |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1996 #endif /* HAVE_LIBKSTAT */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1997 return -1; // kstat stuff is not available, CPU freq is unknown |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1998 } |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
1999 |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2000 /* |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2001 * Measure CPU freq using the pentium's time stamp counter register (TSC) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2002 */ |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2003 static double tsc_freq() |
1 | 2004 { |
128 | 2005 static double ofreq=0.0; |
2006 int i; | |
1 | 2007 int x,y; |
128 | 2008 i=time(NULL); |
2009 if (ofreq != 0.0) return ofreq; | |
1 | 2010 while(i==time(NULL)); |
2011 x=localcount(); | |
2012 i++; | |
2013 while(i==time(NULL)); | |
2014 y=localcount(); | |
128 | 2015 ofreq = (double)(y-x)/1000.; |
2016 return ofreq; | |
1 | 2017 } |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2018 |
1 | 2019 static double CPU_Freq() |
2020 { | |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2021 double freq; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2022 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2023 if ((freq = linux_cpuinfo_freq()) > 0) |
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2024 return freq; |
1 | 2025 |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2026 if ((freq = solaris_kstat_freq()) > 0) |
1 | 2027 return freq; |
1307
d8c1b0b38edc
Add prototypes to wine/loader stuff, so that we can catch __stdcall function
jkeil
parents:
1096
diff
changeset
|
2028 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2029 return tsc_freq(); |
1 | 2030 } |
2031 | |
3465 | 2032 static long WINAPI expQueryPerformanceFrequency(long long* z) |
1 | 2033 { |
2034 *z=(long long)CPU_Freq(); | |
128 | 2035 dbgprintf("QueryPerformanceFrequency(0x%x) => 1 ( %Ld )\n", z, *z); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2036 return 1; |
1 | 2037 } |
3465 | 2038 static long WINAPI exptimeGetTime() |
1 | 2039 { |
2040 struct timeval t; | |
128 | 2041 long result; |
1 | 2042 gettimeofday(&t, 0); |
128 | 2043 result=1000*t.tv_sec+t.tv_usec/1000; |
2044 dbgprintf("timeGetTime() => %d\n", result); | |
2045 return result; | |
1 | 2046 } |
3465 | 2047 static void* WINAPI expLocalHandle(void* v) |
1 | 2048 { |
128 | 2049 dbgprintf("LocalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2050 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2051 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2052 |
3465 | 2053 static void* WINAPI expGlobalHandle(void* v) |
1 | 2054 { |
128 | 2055 dbgprintf("GlobalHandle(0x%x) => 0x%x\n", v, v); |
1 | 2056 return v; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2057 } |
3465 | 2058 static int WINAPI expGlobalUnlock(void* v) |
1 | 2059 { |
128 | 2060 dbgprintf("GlobalUnlock(0x%x) => 1\n", v); |
1 | 2061 return 1; |
2062 } | |
3465 | 2063 static void* WINAPI expGlobalFree(void* v) |
1 | 2064 { |
128 | 2065 dbgprintf("GlobalFree(0x%x) => 0\n", v); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2066 my_release(v); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2067 //free(v); |
1 | 2068 return 0; |
128 | 2069 } |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2070 |
3465 | 2071 static void* WINAPI expGlobalReAlloc(void* v, int size, int flags) |
128 | 2072 { |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2073 void* result=my_realloc(v, size); |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2074 //void* result=realloc(v, size); |
128 | 2075 dbgprintf("GlobalReAlloc(0x%x, size %d, flags 0x%x) => 0x%x\n", v,size,flags,result); |
2076 return result; | |
2077 } | |
1 | 2078 |
3465 | 2079 static int WINAPI expLocalUnlock(void* v) |
1 | 2080 { |
128 | 2081 dbgprintf("LocalUnlock(0x%x) => 1\n", v); |
1 | 2082 return 1; |
2083 } | |
3465 | 2084 // |
2085 static void* WINAPI expLocalFree(void* v) | |
1 | 2086 { |
128 | 2087 dbgprintf("LocalFree(0x%x) => 0\n", v); |
1 | 2088 my_release(v); |
2089 return 0; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2090 } |
3465 | 2091 static HRSRC WINAPI expFindResourceA(HMODULE module, char* name, char* type) |
1 | 2092 { |
3465 | 2093 HRSRC result; |
2094 | |
2095 result=FindResourceA(module, name, type); | |
4545 | 2096 dbgprintf("FindResourceA(module 0x%x, name 0x%x(%s), type 0x%x(%s)) => 0x%x\n", |
2097 module, name, HIWORD(name) ? name : "UNICODE", type, HIWORD(type) ? type : "UNICODE", result); | |
128 | 2098 return result; |
1 | 2099 } |
3465 | 2100 |
2101 static HGLOBAL WINAPI expLoadResource(HMODULE module, HRSRC res) | |
1 | 2102 { |
128 | 2103 HGLOBAL result=LoadResource(module, res); |
2104 dbgprintf("LoadResource(module 0x%x, resource 0x%x) => 0x%x\n", module, res, result); | |
2105 return result; | |
1 | 2106 } |
3465 | 2107 static void* WINAPI expLockResource(long res) |
1 | 2108 { |
128 | 2109 void* result=LockResource(res); |
2110 dbgprintf("LockResource(0x%x) => 0x%x\n", res, result); | |
2111 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2112 } |
3465 | 2113 static int WINAPI expFreeResource(long res) |
1 | 2114 { |
128 | 2115 int result=FreeResource(res); |
2116 dbgprintf("FreeResource(0x%x) => %d\n", res, result); | |
2117 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2118 } |
1 | 2119 //bool fun(HANDLE) |
2120 //!0 on success | |
3465 | 2121 static int WINAPI expCloseHandle(long v1) |
1 | 2122 { |
128 | 2123 dbgprintf("CloseHandle(0x%x) => 1\n", v1); |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2124 /* do not close stdin,stdout and stderr */ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2125 if (v1 > 2) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2126 if (!close(v1)) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
2127 return 0; |
1 | 2128 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2129 } |
1 | 2130 |
3465 | 2131 static const char* WINAPI expGetCommandLineA() |
1 | 2132 { |
128 | 2133 dbgprintf("GetCommandLineA() => \"c:\\aviplay.exe\"\n"); |
1 | 2134 return "c:\\aviplay.exe"; |
2135 } | |
128 | 2136 static short envs[]={'p', 'a', 't', 'h', ' ', 'c', ':', '\\', 0, 0}; |
3465 | 2137 static LPWSTR WINAPI expGetEnvironmentStringsW() |
1 | 2138 { |
3465 | 2139 dbgprintf("GetEnvironmentStringsW() => 0\n", envs); |
2140 return 0; | |
1 | 2141 } |
3465 | 2142 static void * WINAPI expRtlZeroMemory(void *p, size_t len) |
121 | 2143 { |
2144 void* result=memset(p,0,len); | |
2145 dbgprintf("RtlZeroMemory(0x%x, len %d) => 0x%x\n",p,len,result); | |
2146 return result; | |
2147 } | |
3465 | 2148 static void * WINAPI expRtlMoveMemory(void *dst, void *src, size_t len) |
121 | 2149 { |
2150 void* result=memmove(dst,src,len); | |
2151 dbgprintf("RtlMoveMemory (dest 0x%x, src 0x%x, len %d) => 0x%x\n",dst,src,len,result); | |
2152 return result; | |
2153 } | |
2154 | |
3465 | 2155 static void * WINAPI expRtlFillMemory(void *p, int ch, size_t len) |
121 | 2156 { |
2157 void* result=memset(p,ch,len); | |
2158 dbgprintf("RtlFillMemory(0x%x, char 0x%x, len %d) => 0x%x\n",p,ch,len,result); | |
2159 return result; | |
2160 } | |
3465 | 2161 static int WINAPI expFreeEnvironmentStringsW(short* strings) |
1 | 2162 { |
128 | 2163 dbgprintf("FreeEnvironmentStringsW(0x%x) => 1\n", strings); |
1 | 2164 return 1; |
2165 } | |
3465 | 2166 static int WINAPI expFreeEnvironmentStringsA(char* strings) |
128 | 2167 { |
3465 | 2168 dbgprintf("FreeEnvironmentStringsA(0x%x) => 1\n", strings); |
2169 return 1; | |
128 | 2170 } |
3465 | 2171 |
128 | 2172 static const char ch_envs[]= |
3465 | 2173 "__MSVCRT_HEAP_SELECT=__GLOBAL_HEAP_SELECTED,1\r\n" |
2174 "PATH=C:\\;C:\\windows\\;C:\\windows\\system\r\n"; | |
2175 static LPCSTR WINAPI expGetEnvironmentStrings() | |
1 | 2176 { |
128 | 2177 dbgprintf("GetEnvironmentStrings() => 0x%x\n", ch_envs); |
2178 return (LPCSTR)ch_envs; | |
3465 | 2179 // dbgprintf("GetEnvironmentStrings() => 0\n"); |
2180 // return 0; | |
1 | 2181 } |
2182 | |
3465 | 2183 static int WINAPI expGetStartupInfoA(STARTUPINFOA *s) |
1 | 2184 { |
128 | 2185 dbgprintf("GetStartupInfoA(0x%x) => 1\n"); |
1 | 2186 memset(s, 0, sizeof(*s)); |
2187 s->cb=sizeof(*s); | |
3465 | 2188 // s->lpReserved="Reserved"; |
2189 // s->lpDesktop="Desktop"; | |
2190 // s->lpTitle="Title"; | |
2191 // s->dwX=s->dwY=0; | |
2192 // s->dwXSize=s->dwYSize=200; | |
2193 s->dwFlags=s->wShowWindow=1; | |
2194 // s->hStdInput=s->hStdOutput=s->hStdError=0x1234; | |
128 | 2195 dbgprintf(" cb=%d\n", s->cb); |
2196 dbgprintf(" lpReserved='%s'\n", s->lpReserved); | |
2197 dbgprintf(" lpDesktop='%s'\n", s->lpDesktop); | |
2198 dbgprintf(" lpTitle='%s'\n", s->lpTitle); | |
2199 dbgprintf(" dwX=%d dwY=%d dwXSize=%d dwYSize=%d\n", | |
3465 | 2200 s->dwX, s->dwY, s->dwXSize, s->dwYSize); |
128 | 2201 dbgprintf(" dwXCountChars=%d dwYCountChars=%d dwFillAttribute=%d\n", |
3465 | 2202 s->dwXCountChars, s->dwYCountChars, s->dwFillAttribute); |
128 | 2203 dbgprintf(" dwFlags=0x%x wShowWindow=0x%x cbReserved2=0x%x\n", |
3465 | 2204 s->dwFlags, s->wShowWindow, s->cbReserved2); |
128 | 2205 dbgprintf(" lpReserved2=0x%x hStdInput=0x%x hStdOutput=0x%x hStdError=0x%x\n", |
3465 | 2206 s->lpReserved2, s->hStdInput, s->hStdOutput, s->hStdError); |
1 | 2207 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2208 } |
1 | 2209 |
3465 | 2210 static int WINAPI expGetStdHandle(int z) |
1 | 2211 { |
3465 | 2212 dbgprintf("GetStdHandle(0x%x) => 0x%x\n", z+0x1234); |
2213 return z+0x1234; | |
1 | 2214 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2215 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2216 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2217 #define FILE_HANDLE_quicktimeqts ((HANDLE)0x444) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2218 #define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2219 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2220 |
3465 | 2221 static int WINAPI expGetFileType(int handle) |
1 | 2222 { |
3465 | 2223 dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle); |
2224 return 0x3; | |
1 | 2225 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2226 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2227 static int WINAPI expGetFileAttributesA(char *filename) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2228 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2229 dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2230 if (strstr(filename, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2231 return FILE_ATTRIBUTE_SYSTEM; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2232 return FILE_ATTRIBUTE_NORMAL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2233 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2234 #endif |
3465 | 2235 static int WINAPI expSetHandleCount(int count) |
1 | 2236 { |
128 | 2237 dbgprintf("SetHandleCount(0x%x) => 1\n", count); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2238 return 1; |
1 | 2239 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2240 static int WINAPI expGetACP(void) |
1 | 2241 { |
128 | 2242 dbgprintf("GetACP() => 0\n"); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2243 return 0; |
1 | 2244 } |
3465 | 2245 static int WINAPI expGetModuleFileNameA(int module, char* s, int len) |
1 | 2246 { |
2247 WINE_MODREF *mr; | |
128 | 2248 int result; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2249 //printf("File name of module %X (%s) requested\n", module, s); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2250 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2251 if (module == 0 && len >= 12) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2252 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2253 /* return caller program name */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2254 strcpy(s, "aviplay.dll"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2255 result=1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2256 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2257 else if(s==0) |
128 | 2258 result=0; |
2259 else | |
3465 | 2260 if(len<35) |
2261 result=0; | |
128 | 2262 else |
3465 | 2263 { |
2264 result=1; | |
2265 strcpy(s, "c:\\windows\\system\\"); | |
2266 mr=MODULE32_LookupHMODULE(module); | |
2267 if(mr==0)//oops | |
2268 strcat(s, "aviplay.dll"); | |
2269 else | |
2270 if(strrchr(mr->filename, '/')==NULL) | |
2271 strcat(s, mr->filename); | |
2272 else | |
2273 strcat(s, strrchr(mr->filename, '/')+1); | |
2274 } | |
128 | 2275 if(!s) |
3465 | 2276 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d\n", |
2277 module, s, len, result); | |
1 | 2278 else |
3465 | 2279 dbgprintf("GetModuleFileNameA(0x%x, 0x%x, %d) => %d ( '%s' )\n", |
2280 module, s, len, result, s); | |
128 | 2281 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2282 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2283 |
3465 | 2284 static int WINAPI expSetUnhandledExceptionFilter(void* filter) |
1 | 2285 { |
128 | 2286 dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter); |
1 | 2287 return 1;//unsupported and probably won't ever be supported |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2288 } |
2069 | 2289 |
3465 | 2290 static int WINAPI expLoadLibraryA(char* name) |
1 | 2291 { |
2069 | 2292 int result = 0; |
713 | 2293 char* lastbc; |
2294 if (!name) | |
2295 return -1; | |
2296 // we skip to the last backslash | |
2297 // this is effectively eliminating weird characters in | |
2298 // the text output windows | |
2069 | 2299 |
713 | 2300 lastbc = strrchr(name, '\\'); |
2301 if (lastbc) | |
2302 { | |
3465 | 2303 int i; |
2304 lastbc++; | |
713 | 2305 for (i = 0; 1 ;i++) |
2306 { | |
2307 name[i] = *lastbc++; | |
2308 if (!name[i]) | |
2309 break; | |
2310 } | |
2311 } | |
2069 | 2312 if(strncmp(name, "c:\\windows\\", 11)==0) name += 11; |
1416 | 2313 if(strncmp(name, ".\\", 2)==0) name += 2; |
2069 | 2314 |
2315 dbgprintf("Entering LoadLibraryA(%s)\n", name); | |
3465 | 2316 |
3440 | 2317 // PIMJ and VIVO audio are loading kernel32.dll |
2318 if (strcasecmp(name, "kernel32.dll") == 0 || strcasecmp(name, "kernel32") == 0) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2319 return MODULE_HANDLE_kernel32; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2320 // return ERROR_SUCCESS; /* yeah, we have also the kernel32 calls */ |
3457 | 2321 /* exported -> do not return failed! */ |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2322 |
5234 | 2323 if (strcasecmp(name, "user32.dll") == 0 || strcasecmp(name, "user32") == 0) |
2324 // return MODULE_HANDLE_kernel32; | |
2325 return MODULE_HANDLE_user32; | |
2326 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2327 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2328 if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2329 return MODULE_HANDLE_wininet; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2330 if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2331 return MODULE_HANDLE_ddraw; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2332 if (strcasecmp(name, "advapi32.dll") == 0 || strcasecmp(name, "advapi32") == 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2333 return MODULE_HANDLE_advapi32; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2334 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2335 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2336 if (strcasecmp(name, "comdlg32.dll") == 0 || strcasecmp(name, "comdlg32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2337 return MODULE_HANDLE_comdlg32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2338 if (strcasecmp(name, "msvcrt.dll") == 0 || strcasecmp(name, "msvcrt") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2339 return MODULE_HANDLE_msvcrt; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2340 if (strcasecmp(name, "ole32.dll") == 0 || strcasecmp(name, "ole32") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2341 return MODULE_HANDLE_ole32; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2342 if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2343 return MODULE_HANDLE_winmm; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2344 |
2069 | 2345 result=LoadLibraryA(name); |
2346 dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result); | |
2347 | |
128 | 2348 return result; |
2069 | 2349 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2350 |
3465 | 2351 static int WINAPI expFreeLibrary(int module) |
1 | 2352 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2353 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2354 int result=0; /* FIXME:XXX: qtx svq3 frees up qt.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2355 #else |
128 | 2356 int result=FreeLibrary(module); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2357 #endif |
128 | 2358 dbgprintf("FreeLibrary(0x%x) => %d\n", module, result); |
2359 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2360 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2361 |
3465 | 2362 static void* WINAPI expGetProcAddress(HMODULE mod, char* name) |
1 | 2363 { |
2069 | 2364 void* result; |
5234 | 2365 switch(mod){ |
2366 case MODULE_HANDLE_kernel32: | |
2367 result=LookupExternalByName("kernel32.dll", name); break; | |
2368 case MODULE_HANDLE_user32: | |
2369 result=LookupExternalByName("user32.dll", name); break; | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2370 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2371 case MODULE_HANDLE_wininet: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2372 result=LookupExternalByName("wininet.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2373 case MODULE_HANDLE_ddraw: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2374 result=LookupExternalByName("ddraw.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2375 case MODULE_HANDLE_advapi32: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2376 result=LookupExternalByName("advapi32.dll", name); break; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2377 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2378 case MODULE_HANDLE_comdlg32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2379 result=LookupExternalByName("comdlg32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2380 case MODULE_HANDLE_msvcrt: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2381 result=LookupExternalByName("msvcrt.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2382 case MODULE_HANDLE_ole32: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2383 result=LookupExternalByName("ole32.dll", name); break; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2384 case MODULE_HANDLE_winmm: |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
2385 result=LookupExternalByName("winmm.dll", name); break; |
5234 | 2386 default: |
128 | 2387 result=GetProcAddress(mod, name); |
5234 | 2388 } |
22476 | 2389 if((unsigned int)name > 0xffff) |
2390 dbgprintf("GetProcAddress(0x%x, '%s') => 0x%x\n", mod, name, result); | |
2391 else | |
2392 dbgprintf("GetProcAddress(0x%x, '%d') => 0x%x\n", mod, (int)name, result); | |
128 | 2393 return result; |
2069 | 2394 } |
1 | 2395 |
3465 | 2396 static long WINAPI expCreateFileMappingA(int hFile, void* lpAttr, |
2397 long flProtect, long dwMaxHigh, | |
2398 long dwMaxLow, const char* name) | |
1 | 2399 { |
128 | 2400 long result=CreateFileMappingA(hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name); |
2401 if(!name) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2402 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2403 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0) => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2404 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, result); |
128 | 2405 else |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2406 dbgprintf("CreateFileMappingA(file 0x%x, lpAttr 0x%x," |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2407 "flProtect 0x%x, dwMaxHigh 0x%x, dwMaxLow 0x%x, name 0x%x='%s') => %d\n", |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2408 hFile, lpAttr, flProtect, dwMaxHigh, dwMaxLow, name, name, result); |
128 | 2409 return result; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2410 } |
1 | 2411 |
3465 | 2412 static long WINAPI expOpenFileMappingA(long hFile, long hz, const char* name) |
1 | 2413 { |
128 | 2414 long result=OpenFileMappingA(hFile, hz, name); |
2415 if(!name) | |
2416 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0) => %d\n", | |
3465 | 2417 hFile, hz, result); |
128 | 2418 else |
2419 dbgprintf("OpenFileMappingA(0x%x, 0x%x, 0x%x='%s') => %d\n", | |
3465 | 2420 hFile, hz, name, name, result); |
128 | 2421 return result; |
1 | 2422 } |
2423 | |
3465 | 2424 static void* WINAPI expMapViewOfFile(HANDLE file, DWORD mode, DWORD offHigh, |
2425 DWORD offLow, DWORD size) | |
1 | 2426 { |
128 | 2427 dbgprintf("MapViewOfFile(0x%x, 0x%x, 0x%x, 0x%x, size %d) => 0x%x\n", |
3465 | 2428 file,mode,offHigh,offLow,size,(char*)file+offLow); |
1 | 2429 return (char*)file+offLow; |
2430 } | |
2431 | |
3465 | 2432 static void* WINAPI expUnmapViewOfFile(void* view) |
1 | 2433 { |
128 | 2434 dbgprintf("UnmapViewOfFile(0x%x) => 0\n", view); |
1 | 2435 return 0; |
2436 } | |
2437 | |
3465 | 2438 static void* WINAPI expSleep(int time) |
2439 { | |
2440 #if HAVE_NANOSLEEP | |
2441 /* solaris doesn't have thread safe usleep */ | |
2442 struct timespec tsp; | |
2443 tsp.tv_sec = time / 1000000; | |
2444 tsp.tv_nsec = (time % 1000000) * 1000; | |
2445 nanosleep(&tsp, NULL); | |
2446 #else | |
2447 usleep(time); | |
2448 #endif | |
2449 dbgprintf("Sleep(%d) => 0\n", time); | |
2450 return 0; | |
2451 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
2452 |
3465 | 2453 // why does IV32 codec want to call this? I don't know ... |
2454 static int WINAPI expCreateCompatibleDC(int hdc) | |
1 | 2455 { |
3465 | 2456 int dc = 0;//0x81; |
2457 //dbgprintf("CreateCompatibleDC(%d) => 0x81\n", hdc); | |
2458 dbgprintf("CreateCompatibleDC(%d) => %d\n", hdc, dc); | |
2459 return dc; | |
2460 } | |
2461 | |
2462 static int WINAPI expGetDeviceCaps(int hdc, int unk) | |
2463 { | |
2464 dbgprintf("GetDeviceCaps(0x%x, %d) => 0\n", hdc, unk); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2465 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2466 #define BITSPIXEL 12 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2467 #define PLANES 14 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2468 if (unk == BITSPIXEL) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2469 return 24; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2470 if (unk == PLANES) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2471 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2472 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2473 return 1; |
3465 | 2474 } |
2475 | |
2476 static WIN_BOOL WINAPI expDeleteDC(int hdc) | |
2477 { | |
2478 dbgprintf("DeleteDC(0x%x) => 0\n", hdc); | |
2479 if (hdc == 0x81) | |
2480 return 1; | |
1 | 2481 return 0; |
2482 } | |
3465 | 2483 |
2484 static WIN_BOOL WINAPI expDeleteObject(int hdc) | |
1 | 2485 { |
3465 | 2486 dbgprintf("DeleteObject(0x%x) => 1\n", hdc); |
2487 /* FIXME - implement code here */ | |
2488 return 1; | |
1 | 2489 } |
2490 | |
3465 | 2491 /* btvvc32.drv wants this one */ |
2492 static void* WINAPI expGetWindowDC(int hdc) | |
1 | 2493 { |
3465 | 2494 dbgprintf("GetWindowDC(%d) => 0x0\n", hdc); |
3128 | 2495 return 0; |
2496 } | |
2497 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2498 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2499 static int WINAPI expGetWindowRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2500 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2501 dbgprintf("GetWindowRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2502 /* (win == 0) => desktop */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2503 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2504 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2505 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2506 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2507 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2508 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2509 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2510 static int WINAPI expMonitorFromWindow(HWND win, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2511 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2512 dbgprintf("MonitorFromWindow(0x%x, 0x%x) => 0\n", win, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2513 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2514 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2515 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2516 static int WINAPI expMonitorFromRect(RECT *r, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2517 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2518 dbgprintf("MonitorFromRect(0x%x, 0x%x) => 0\n", r, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2519 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2520 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2521 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2522 static int WINAPI expMonitorFromPoint(void *p, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2523 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2524 dbgprintf("MonitorFromPoint(0x%x, 0x%x) => 0\n", p, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2525 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2526 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2527 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2528 static int WINAPI expEnumDisplayMonitors(void *dc, RECT *r, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2529 int WINAPI (*callback_proc)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2530 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2531 dbgprintf("EnumDisplayMonitors(0x%x, 0x%x, 0x%x, 0x%x) => ?\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2532 dc, r, callback_proc, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2533 return callback_proc(0, dc, r, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2534 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2535 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2536 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2537 typedef struct tagMONITORINFO { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2538 DWORD cbSize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2539 RECT rcMonitor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2540 RECT rcWork; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2541 DWORD dwFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2542 } MONITORINFO, *LPMONITORINFO; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2543 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2544 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2545 #define CCHDEVICENAME 8 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2546 typedef struct tagMONITORINFOEX { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2547 DWORD cbSize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2548 RECT rcMonitor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2549 RECT rcWork; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2550 DWORD dwFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2551 TCHAR szDevice[CCHDEVICENAME]; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2552 } MONITORINFOEX, *LPMONITORINFOEX; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2553 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2554 static int WINAPI expGetMonitorInfoA(void *mon, LPMONITORINFO lpmi) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2555 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2556 dbgprintf("GetMonitorInfoA(0x%x, 0x%x) => 1\n", mon, lpmi); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2557 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2558 lpmi->rcMonitor.right = lpmi->rcWork.right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2559 lpmi->rcMonitor.left = lpmi->rcWork.left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2560 lpmi->rcMonitor.bottom = lpmi->rcWork.bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2561 lpmi->rcMonitor.top = lpmi->rcWork.top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2562 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2563 lpmi->dwFlags = 1; /* primary monitor */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2564 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2565 if (lpmi->cbSize == sizeof(MONITORINFOEX)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2566 { |
8451 | 2567 LPMONITORINFOEX lpmiex = (LPMONITORINFOEX)lpmi; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2568 dbgprintf("MONITORINFOEX!\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2569 strncpy(lpmiex->szDevice, "Monitor1", CCHDEVICENAME); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2570 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2571 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2572 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2573 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2574 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2575 static int WINAPI expEnumDisplayDevicesA(const char *device, int devnum, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2576 void *dispdev, int flags) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2577 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2578 dbgprintf("EnumDisplayDevicesA(0x%x = %s, %d, 0x%x, %x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2579 device, device, devnum, dispdev, flags); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2580 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2581 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2582 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2583 static int WINAPI expIsWindowVisible(HWND win) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2584 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2585 dbgprintf("IsWindowVisible(0x%x) => 1\n", win); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2586 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2587 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2588 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2589 static HWND WINAPI expGetActiveWindow(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2590 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2591 dbgprintf("GetActiveWindow() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2592 return (HWND)0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2593 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2594 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2595 static int WINAPI expGetClassNameA(HWND win, LPTSTR classname, int maxcount) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2596 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2597 strncat(classname, "QuickTime", maxcount); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2598 dbgprintf("GetClassNameA(0x%x, 0x%x, %d) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2599 win, classname, maxcount, strlen(classname)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2600 return strlen(classname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2601 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2602 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2603 #define LPWNDCLASS void * |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2604 static int WINAPI expGetClassInfoA(HINSTANCE inst, LPCSTR classname, LPWNDCLASS wndclass) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2605 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2606 dbgprintf("GetClassInfoA(0x%x, 0x%x = %s, 0x%x) => 1\n", inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2607 classname, classname, wndclass); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2608 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2609 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2610 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2611 static int WINAPI expGetWindowLongA(HWND win, int index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2612 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2613 dbgprintf("GetWindowLongA(0x%x, %d) => 0\n", win, index); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2614 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2615 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2616 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2617 static int WINAPI expGetObjectA(HGDIOBJ hobj, int objsize, LPVOID obj) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2618 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2619 dbgprintf("GetObjectA(0x%x, %d, 0x%x) => %d\n", hobj, objsize, obj, objsize); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2620 return objsize; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2621 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2622 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2623 static int WINAPI expCreateRectRgn(int x, int y, int width, int height) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2624 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2625 dbgprintf("CreateRectRgn(%d, %d, %d, %d) => 0\n", x, y, width, height); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2626 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2627 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2628 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2629 static int WINAPI expEnumWindows(int (*callback_func)(), void *callback_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2630 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2631 int i, i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2632 dbgprintf("EnumWindows(0x%x, 0x%x) => 1\n", callback_func, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2633 i = callback_func(0, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2634 i2 = callback_func(1, callback_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2635 return i && i2; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2636 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2637 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2638 static int WINAPI expGetWindowThreadProcessId(HWND win, int *pid_data) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2639 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2640 int tid = pthread_self(); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2641 dbgprintf("GetWindowThreadProcessId(0x%x, 0x%x) => %d\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2642 win, pid_data, tid); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2643 if (pid_data) |
12374 | 2644 *(int*)pid_data = tid; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2645 return tid; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2646 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2647 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2648 //HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2649 // INT,INT,HWND,HMENU,HINSTANCE,LPVOID); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2650 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2651 static HWND WINAPI expCreateWindowExA(int exstyle, const char *classname, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2652 const char *winname, int style, int x, int y, int w, int h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2653 HWND parent, HMENU menu, HINSTANCE inst, LPVOID param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2654 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2655 printf("CreateWindowEx() called\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2656 dbgprintf("CreateWindowEx(%d, 0x%x = %s, 0x%x = %s, %d, %d, %d, %d, %d, 0x%x, 0x%x, 0x%x, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2657 exstyle, classname, classname, winname, winname, style, x, y, w, h, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2658 parent, menu, inst, param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2659 printf("CreateWindowEx() called okey\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2660 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2661 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2662 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2663 static int WINAPI expwaveOutGetNumDevs(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2664 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2665 dbgprintf("waveOutGetNumDevs() => 0\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2666 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2667 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2668 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2669 |
3465 | 2670 /* |
2671 * Returns the number of milliseconds, modulo 2^32, since the start | |
2672 * of the wineserver. | |
2673 */ | |
2674 static int WINAPI expGetTickCount(void) | |
1 | 2675 { |
3465 | 2676 static int tcstart = 0; |
2677 struct timeval t; | |
2678 int tc; | |
2679 gettimeofday( &t, NULL ); | |
2680 tc = ((t.tv_sec * 1000) + (t.tv_usec / 1000)) - tcstart; | |
2681 if (tcstart == 0) | |
2682 { | |
2683 tcstart = 0; | |
2684 tc = 0; | |
2685 } | |
2686 dbgprintf("GetTickCount() => %d\n", tc); | |
2687 return tc; | |
1 | 2688 } |
2689 | |
3465 | 2690 static int WINAPI expCreateFontA(void) |
2691 { | |
2692 dbgprintf("CreateFontA() => 0x0\n"); | |
2693 return 1; | |
2694 } | |
2695 | |
2696 /* tried to get pvmjpg work in a different way - no success */ | |
2697 static int WINAPI expDrawTextA(int hDC, char* lpString, int nCount, | |
2698 LPRECT lpRect, unsigned int uFormat) | |
2699 { | |
2700 dbgprintf("expDrawTextA(%p,...) => 8\n", hDC); | |
2701 return 8; | |
2702 } | |
2703 | |
2704 static int WINAPI expGetPrivateProfileIntA(const char* appname, | |
2705 const char* keyname, | |
2706 int default_value, | |
2707 const char* filename) | |
1 | 2708 { |
2709 int size=255; | |
2710 char buffer[256]; | |
2711 char* fullname; | |
2712 int result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2713 |
1 | 2714 buffer[255]=0; |
128 | 2715 if(!(appname && keyname && filename) ) |
2716 { | |
3465 | 2717 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, default_value ); |
128 | 2718 return default_value; |
2719 } | |
18878 | 2720 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2721 strcpy(fullname, "Software\\IniFileMapping\\"); |
2722 strcat(fullname, appname); | |
2723 strcat(fullname, "\\"); | |
2724 strcat(fullname, keyname); | |
2725 strcat(fullname, "\\"); | |
2726 strcat(fullname, filename); | |
2727 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)buffer, &size); | |
2728 if((size>=0)&&(size<256)) | |
2729 buffer[size]=0; | |
3465 | 2730 // printf("GetPrivateProfileIntA(%s, %s, %s) -> %s\n", appname, keyname, filename, buffer); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2731 free(fullname); |
1 | 2732 if(result) |
128 | 2733 result=default_value; |
1 | 2734 else |
128 | 2735 result=atoi(buffer); |
2736 dbgprintf("GetPrivateProfileIntA('%s', '%s', %d, '%s') => %d\n", appname, keyname, default_value, filename, result); | |
2737 return result; | |
1 | 2738 } |
3465 | 2739 static int WINAPI expGetProfileIntA(const char* appname, |
2740 const char* keyname, | |
2741 int default_value) | |
128 | 2742 { |
2743 dbgprintf("GetProfileIntA -> "); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2744 return expGetPrivateProfileIntA(appname, keyname, default_value, "default"); |
128 | 2745 } |
2746 | |
3465 | 2747 static int WINAPI expGetPrivateProfileStringA(const char* appname, |
2748 const char* keyname, | |
2749 const char* def_val, | |
2750 char* dest, unsigned int len, | |
2751 const char* filename) | |
1 | 2752 { |
2753 int result; | |
2754 int size; | |
2755 char* fullname; | |
128 | 2756 dbgprintf("GetPrivateProfileStringA('%s', '%s', def_val '%s', 0x%x, 0x%x, '%s')", appname, keyname, def_val, dest, len, filename ); |
1 | 2757 if(!(appname && keyname && filename) ) return 0; |
18878 | 2758 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2759 strcpy(fullname, "Software\\IniFileMapping\\"); |
2760 strcat(fullname, appname); | |
2761 strcat(fullname, "\\"); | |
2762 strcat(fullname, keyname); | |
2763 strcat(fullname, "\\"); | |
2764 strcat(fullname, filename); | |
2765 size=len; | |
2766 result=RegQueryValueExA(HKEY_LOCAL_MACHINE, fullname, NULL, NULL, (int*)dest, &size); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2767 free(fullname); |
128 | 2768 if(result) |
2769 { | |
2770 strncpy(dest, def_val, size); | |
2771 if (strlen(def_val)< size) size = strlen(def_val); | |
2772 } | |
2773 dbgprintf(" => %d ( '%s' )\n", size, dest); | |
1 | 2774 return size; |
2775 } | |
3465 | 2776 static int WINAPI expWritePrivateProfileStringA(const char* appname, |
2777 const char* keyname, | |
2778 const char* string, | |
2779 const char* filename) | |
1 | 2780 { |
2781 char* fullname; | |
128 | 2782 dbgprintf("WritePrivateProfileStringA('%s', '%s', '%s', '%s')", appname, keyname, string, filename ); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2783 if(!(appname && keyname && filename) ) |
128 | 2784 { |
2785 dbgprintf(" => -1\n"); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2786 return -1; |
128 | 2787 } |
18878 | 2788 fullname=malloc(50+strlen(appname)+strlen(keyname)+strlen(filename)); |
1 | 2789 strcpy(fullname, "Software\\IniFileMapping\\"); |
2790 strcat(fullname, appname); | |
2791 strcat(fullname, "\\"); | |
2792 strcat(fullname, keyname); | |
2793 strcat(fullname, "\\"); | |
2794 strcat(fullname, filename); | |
2795 RegSetValueExA(HKEY_LOCAL_MACHINE, fullname, 0, REG_SZ, (int*)string, strlen(string)); | |
3465 | 2796 // printf("RegSetValueExA(%s,%d)\n", string, strlen(string)); |
2797 // printf("WritePrivateProfileStringA(%s, %s, %s, %s)\n", appname, keyname, string, filename ); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2798 free(fullname); |
128 | 2799 dbgprintf(" => 0\n"); |
1 | 2800 return 0; |
2801 } | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2802 |
1 | 2803 unsigned int _GetPrivateProfileIntA(const char* appname, const char* keyname, INT default_value, const char* filename) |
2804 { | |
2805 return expGetPrivateProfileIntA(appname, keyname, default_value, filename); | |
2806 } | |
2807 int _GetPrivateProfileStringA(const char* appname, const char* keyname, | |
3465 | 2808 const char* def_val, char* dest, unsigned int len, const char* filename) |
1 | 2809 { |
2810 return expGetPrivateProfileStringA(appname, keyname, def_val, dest, len, filename); | |
2811 } | |
2812 int _WritePrivateProfileStringA(const char* appname, const char* keyname, | |
3465 | 2813 const char* string, const char* filename) |
1 | 2814 { |
2815 return expWritePrivateProfileStringA(appname, keyname, string, filename); | |
2816 } | |
2817 | |
2818 | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2819 |
3465 | 2820 static int WINAPI expDefDriverProc(int _private, int id, int msg, int arg1, int arg2) |
1 | 2821 { |
128 | 2822 dbgprintf("DefDriverProc(0x%x, 0x%x, 0x%x, 0x%x, 0x%x) => 0\n", _private, id, msg, arg1, arg2); |
1 | 2823 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2824 } |
1 | 2825 |
3465 | 2826 static int WINAPI expSizeofResource(int v1, int v2) |
1 | 2827 { |
128 | 2828 int result=SizeofResource(v1, v2); |
2829 dbgprintf("SizeofResource(0x%x, 0x%x) => %d\n", v1, v2, result); | |
2830 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2831 } |
1 | 2832 |
3465 | 2833 static int WINAPI expGetLastError() |
1 | 2834 { |
128 | 2835 int result=GetLastError(); |
2836 dbgprintf("GetLastError() => 0x%x\n", result); | |
2837 return result; | |
1 | 2838 } |
2839 | |
3465 | 2840 static void WINAPI expSetLastError(int error) |
1 | 2841 { |
128 | 2842 dbgprintf("SetLastError(0x%x)\n", error); |
1 | 2843 SetLastError(error); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2844 } |
1 | 2845 |
3465 | 2846 static int WINAPI expStringFromGUID2(GUID* guid, char* str, int cbMax) |
128 | 2847 { |
2069 | 2848 int result=snprintf(str, cbMax, "%.8x-%.4x-%.4x-%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x", |
2849 guid->f1, guid->f2, guid->f3, | |
2850 (unsigned char)guid->f4[0], (unsigned char)guid->f4[1], | |
2851 (unsigned char)guid->f4[2], (unsigned char)guid->f4[3], | |
2852 (unsigned char)guid->f4[4], (unsigned char)guid->f4[5], | |
2853 (unsigned char)guid->f4[6], (unsigned char)guid->f4[7]); | |
128 | 2854 dbgprintf("StringFromGUID2(0x%x, 0x%x='%s', %d) => %d\n", guid, str, str, cbMax, result); |
2855 return result; | |
2856 } | |
2857 | |
1 | 2858 |
3465 | 2859 static int WINAPI expGetFileVersionInfoSizeA(const char* name, int* lpHandle) |
1 | 2860 { |
128 | 2861 dbgprintf("GetFileVersionInfoSizeA(0x%x='%s', 0x%X) => 0\n", name, name, lpHandle); |
1 | 2862 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2863 } |
1 | 2864 |
3465 | 2865 static int WINAPI expIsBadStringPtrW(const short* string, int nchars) |
1 | 2866 { |
128 | 2867 int result; |
2868 if(string==0)result=1; else result=0; | |
2869 dbgprintf("IsBadStringPtrW(0x%x, %d) => %d", string, nchars, result); | |
2870 if(string)wch_print(string); | |
2871 return result; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2872 } |
3465 | 2873 static int WINAPI expIsBadStringPtrA(const char* string, int nchars) |
3128 | 2874 { |
2875 return expIsBadStringPtrW((const short*)string, nchars); | |
2876 } | |
3465 | 2877 static long WINAPI expInterlockedExchangeAdd( long* dest, long incr ) |
1 | 2878 { |
2879 long ret; | |
3465 | 2880 __asm__ __volatile__ |
2881 ( | |
2882 "lock; xaddl %0,(%1)" | |
2883 : "=r" (ret) | |
2884 : "r" (dest), "0" (incr) | |
2885 : "memory" | |
2886 ); | |
1 | 2887 return ret; |
2888 } | |
2889 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2890 static long WINAPI expInterlockedCompareExchange( unsigned long* dest, unsigned long exchange, unsigned long comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2891 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2892 unsigned long retval = *dest; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2893 if(*dest == comperand) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2894 *dest = exchange; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2895 return retval; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2896 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2897 |
3465 | 2898 static long WINAPI expInterlockedIncrement( long* dest ) |
1 | 2899 { |
3465 | 2900 long result=expInterlockedExchangeAdd( dest, 1 ) + 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2901 dbgprintf("InterlockedIncrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 2902 return result; |
1 | 2903 } |
3465 | 2904 static long WINAPI expInterlockedDecrement( long* dest ) |
1 | 2905 { |
3465 | 2906 long result=expInterlockedExchangeAdd( dest, -1 ) - 1; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
2907 dbgprintf("InterlockedDecrement(0x%x => %d) => %d\n", dest, *dest, result); |
128 | 2908 return result; |
1 | 2909 } |
2910 | |
3465 | 2911 static void WINAPI expOutputDebugStringA( const char* string ) |
1 | 2912 { |
128 | 2913 dbgprintf("OutputDebugStringA(0x%x='%s')\n", string); |
1 | 2914 fprintf(stderr, "DEBUG: %s\n", string); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2915 } |
1 | 2916 |
3465 | 2917 static int WINAPI expGetDC(int hwnd) |
1 | 2918 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2919 dbgprintf("GetDC(0x%x) => 1\n", hwnd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2920 return 1; |
1 | 2921 } |
2922 | |
3465 | 2923 static int WINAPI expReleaseDC(int hwnd, int hdc) |
1 | 2924 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2925 dbgprintf("ReleaseDC(0x%x, 0x%x) => 1\n", hwnd, hdc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2926 return 1; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
2927 } |
3465 | 2928 |
2929 static int WINAPI expGetDesktopWindow() | |
128 | 2930 { |
3465 | 2931 dbgprintf("GetDesktopWindow() => 0\n"); |
2932 return 0; | |
128 | 2933 } |
3465 | 2934 |
2935 static int cursor[100]; | |
2936 | |
2937 static int WINAPI expLoadCursorA(int handle,LPCSTR name) | |
2938 { | |
2939 dbgprintf("LoadCursorA(%d, 0x%x='%s') => 0x%x\n", handle, name, (int)&cursor[0]); | |
2940 return (int)&cursor[0]; | |
2941 } | |
2942 static int WINAPI expSetCursor(void *cursor) | |
128 | 2943 { |
2944 dbgprintf("SetCursor(0x%x) => 0x%x\n", cursor, cursor); | |
2945 return (int)cursor; | |
2946 } | |
3465 | 2947 static int WINAPI expGetCursorPos(void *cursor) |
2069 | 2948 { |
2949 dbgprintf("GetCursorPos(0x%x) => 0x%x\n", cursor, cursor); | |
2950 return 1; | |
2951 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2952 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2953 static int show_cursor = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2954 static int WINAPI expShowCursor(int show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2955 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2956 dbgprintf("ShowCursor(%d) => %d\n", show, show); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2957 if (show) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2958 show_cursor++; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2959 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2960 show_cursor--; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2961 return show_cursor; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2962 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2963 #endif |
3465 | 2964 static int WINAPI expRegisterWindowMessageA(char *message) |
2069 | 2965 { |
2966 dbgprintf("RegisterWindowMessageA(%s)\n", message); | |
2967 return 1; | |
2968 } | |
3465 | 2969 static int WINAPI expGetProcessVersion(int pid) |
2069 | 2970 { |
2971 dbgprintf("GetProcessVersion(%d)\n", pid); | |
2972 return 1; | |
2973 } | |
3465 | 2974 static int WINAPI expGetCurrentThread(void) |
2069 | 2975 { |
3457 | 2976 #warning FIXME! |
2977 dbgprintf("GetCurrentThread() => %x\n", 0xcfcf9898); | |
2779 | 2978 return 0xcfcf9898; |
2069 | 2979 } |
3465 | 2980 static int WINAPI expGetOEMCP(void) |
2069 | 2981 { |
2982 dbgprintf("GetOEMCP()\n"); | |
2983 return 1; | |
2984 } | |
3465 | 2985 static int WINAPI expGetCPInfo(int cp,void *info) |
2069 | 2986 { |
2987 dbgprintf("GetCPInfo()\n"); | |
2988 return 0; | |
2989 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2990 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2991 #define SM_CXSCREEN 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2992 #define SM_CYSCREEN 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2993 #define SM_XVIRTUALSCREEN 76 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2994 #define SM_YVIRTUALSCREEN 77 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2995 #define SM_CXVIRTUALSCREEN 78 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2996 #define SM_CYVIRTUALSCREEN 79 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2997 #define SM_CMONITORS 80 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
2998 #endif |
3465 | 2999 static int WINAPI expGetSystemMetrics(int index) |
2069 | 3000 { |
3001 dbgprintf("GetSystemMetrics(%d)\n", index); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3002 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3003 switch(index) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3004 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3005 case SM_XVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3006 case SM_YVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3007 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3008 case SM_CXSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3009 case SM_CXVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3010 return PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3011 case SM_CYSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3012 case SM_CYVIRTUALSCREEN: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3013 return PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3014 case SM_CMONITORS: |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3015 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3016 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3017 #endif |
2069 | 3018 return 1; |
3019 } | |
3465 | 3020 static int WINAPI expGetSysColor(int index) |
2069 | 3021 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3022 dbgprintf("GetSysColor(%d) => 1\n", index); |
2069 | 3023 return 1; |
3024 } | |
3465 | 3025 static int WINAPI expGetSysColorBrush(int index) |
2069 | 3026 { |
3027 dbgprintf("GetSysColorBrush(%d)\n", index); | |
3028 return 1; | |
3029 } | |
3030 | |
3031 | |
3032 | |
3465 | 3033 static int WINAPI expGetSystemPaletteEntries(int hdc, int iStartIndex, int nEntries, void* lppe) |
128 | 3034 { |
3035 dbgprintf("GetSystemPaletteEntries(0x%x, 0x%x, 0x%x, 0x%x) => 0\n", | |
3465 | 3036 hdc, iStartIndex, nEntries, lppe); |
1 | 3037 return 0; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3038 } |
1 | 3039 |
3040 /* | |
3465 | 3041 typedef struct _TIME_ZONE_INFORMATION { |
3042 long Bias; | |
3043 char StandardName[32]; | |
3044 SYSTEMTIME StandardDate; | |
3045 long StandardBias; | |
3046 char DaylightName[32]; | |
3047 SYSTEMTIME DaylightDate; | |
3048 long DaylightBias; | |
3049 } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; | |
3050 */ | |
3051 | |
3052 static int WINAPI expGetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation) | |
1 | 3053 { |
128 | 3054 const short name[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'S', 't', 'a', |
3055 'n', 'd', 'a', 'r', 'd', ' ', 'T', 'i', 'm', 'e', 0}; | |
3056 const short pname[]={'C', 'e', 'n', 't', 'r', 'a', 'l', ' ', 'D', 'a', 'y', | |
3057 'l', 'i', 'g', 'h', 't', ' ', 'T', 'i', 'm', 'e', 0}; | |
3058 dbgprintf("GetTimeZoneInformation(0x%x) => TIME_ZONE_ID_STANDARD\n"); | |
1 | 3059 memset(lpTimeZoneInformation, 0, sizeof(TIME_ZONE_INFORMATION)); |
128 | 3060 lpTimeZoneInformation->Bias=360;//GMT-6 |
3061 memcpy(lpTimeZoneInformation->StandardName, name, sizeof(name)); | |
3062 lpTimeZoneInformation->StandardDate.wMonth=10; | |
3063 lpTimeZoneInformation->StandardDate.wDay=5; | |
3064 lpTimeZoneInformation->StandardDate.wHour=2; | |
3065 lpTimeZoneInformation->StandardBias=0; | |
3066 memcpy(lpTimeZoneInformation->DaylightName, pname, sizeof(pname)); | |
3067 lpTimeZoneInformation->DaylightDate.wMonth=4; | |
3068 lpTimeZoneInformation->DaylightDate.wDay=1; | |
3069 lpTimeZoneInformation->DaylightDate.wHour=2; | |
3070 lpTimeZoneInformation->DaylightBias=-60; | |
3071 return TIME_ZONE_ID_STANDARD; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3072 } |
1 | 3073 |
3465 | 3074 static void WINAPI expGetLocalTime(SYSTEMTIME* systime) |
1 | 3075 { |
3076 time_t local_time; | |
3077 struct tm *local_tm; | |
3078 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3079 |
128 | 3080 dbgprintf("GetLocalTime(0x%x)\n"); |
1 | 3081 gettimeofday(&tv, NULL); |
3082 local_time=tv.tv_sec; | |
3083 local_tm=localtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3084 |
1 | 3085 systime->wYear = local_tm->tm_year + 1900; |
3086 systime->wMonth = local_tm->tm_mon + 1; | |
3087 systime->wDayOfWeek = local_tm->tm_wday; | |
3088 systime->wDay = local_tm->tm_mday; | |
3089 systime->wHour = local_tm->tm_hour; | |
3090 systime->wMinute = local_tm->tm_min; | |
3091 systime->wSecond = local_tm->tm_sec; | |
3092 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3093 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3094 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3095 " Milliseconds: %d\n", | |
3096 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3097 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
1 | 3098 } |
3099 | |
3465 | 3100 static int WINAPI expGetSystemTime(SYSTEMTIME* systime) |
1 | 3101 { |
3102 time_t local_time; | |
3103 struct tm *local_tm; | |
3104 struct timeval tv; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3105 |
128 | 3106 dbgprintf("GetSystemTime(0x%x)\n", systime); |
1 | 3107 gettimeofday(&tv, NULL); |
3108 local_time=tv.tv_sec; | |
3109 local_tm=gmtime(&local_time); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3110 |
1 | 3111 systime->wYear = local_tm->tm_year + 1900; |
3112 systime->wMonth = local_tm->tm_mon + 1; | |
3113 systime->wDayOfWeek = local_tm->tm_wday; | |
3114 systime->wDay = local_tm->tm_mday; | |
3115 systime->wHour = local_tm->tm_hour; | |
3116 systime->wMinute = local_tm->tm_min; | |
3117 systime->wSecond = local_tm->tm_sec; | |
3118 systime->wMilliseconds = (tv.tv_usec / 1000) % 1000; | |
128 | 3119 dbgprintf(" Year: %d\n Month: %d\n Day of week: %d\n" |
3465 | 3120 " Day: %d\n Hour: %d\n Minute: %d\n Second: %d\n" |
3121 " Milliseconds: %d\n", | |
3122 systime->wYear, systime->wMonth, systime->wDayOfWeek, systime->wDay, | |
3123 systime->wHour, systime->wMinute, systime->wSecond, systime->wMilliseconds); | |
2069 | 3124 return 0; |
1 | 3125 } |
3126 | |
7386 | 3127 #define SECS_1601_TO_1970 ((369 * 365 + 89) * 86400ULL) |
3128 static void WINAPI expGetSystemTimeAsFileTime(FILETIME* systime) | |
3129 { | |
3130 struct timeval tv; | |
3131 unsigned long long secs; | |
3132 | |
3133 dbgprintf("GetSystemTime(0x%x)\n", systime); | |
3134 gettimeofday(&tv, NULL); | |
3135 secs = (tv.tv_sec + SECS_1601_TO_1970) * 10000000; | |
3136 secs += tv.tv_usec * 10; | |
3137 systime->dwLowDateTime = secs & 0xffffffff; | |
3138 systime->dwHighDateTime = (secs >> 32); | |
3139 } | |
3140 | |
3465 | 3141 static int WINAPI expGetEnvironmentVariableA(const char* name, char* field, int size) |
1 | 3142 { |
24385 | 3143 //char *p; |
3465 | 3144 // printf("%s %x %x\n", name, field, size); |
1 | 3145 if(field)field[0]=0; |
3465 | 3146 /* |
3147 p = getenv(name); | |
3148 if (p) strncpy(field,p,size); | |
3149 */ | |
128 | 3150 if (strcmp(name,"__MSVCRT_HEAP_SELECT")==0) |
3465 | 3151 strcpy(field,"__GLOBAL_HEAP_SELECTED,1"); |
128 | 3152 dbgprintf("GetEnvironmentVariableA(0x%x='%s', 0x%x, %d) => %d\n", name, name, field, size, strlen(field)); |
3153 return strlen(field); | |
3154 } | |
3155 | |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3156 static int WINAPI expSetEnvironmentVariableA(const char *name, const char *value) |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3157 { |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3158 dbgprintf("SetEnvironmentVariableA(%s, %s)\n", name, value); |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3159 return 0; |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3160 } |
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
3161 |
3465 | 3162 static void* WINAPI expCoTaskMemAlloc(ULONG cb) |
128 | 3163 { |
3164 return my_mreq(cb, 0); | |
3165 } | |
3465 | 3166 static void WINAPI expCoTaskMemFree(void* cb) |
128 | 3167 { |
3168 my_release(cb); | |
3169 } | |
3170 | |
3465 | 3171 |
3172 | |
3173 | |
3547 | 3174 void* CoTaskMemAlloc(unsigned long cb) |
3465 | 3175 { |
3176 return expCoTaskMemAlloc(cb); | |
3177 } | |
3178 void CoTaskMemFree(void* cb) | |
3179 { | |
3180 expCoTaskMemFree(cb); | |
3181 } | |
128 | 3182 |
3183 struct COM_OBJECT_INFO | |
3184 { | |
3185 GUID clsid; | |
7386 | 3186 long (*GetClassObject) (GUID* clsid, const GUID* iid, void** ppv); |
128 | 3187 }; |
3188 | |
3189 static struct COM_OBJECT_INFO* com_object_table=0; | |
3190 static int com_object_size=0; | |
7386 | 3191 int RegisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
128 | 3192 { |
2069 | 3193 if(!clsid || !gcs) |
3194 return -1; | |
128 | 3195 com_object_table=realloc(com_object_table, sizeof(struct COM_OBJECT_INFO)*(++com_object_size)); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3196 com_object_table[com_object_size-1].clsid=*clsid; |
128 | 3197 com_object_table[com_object_size-1].GetClassObject=gcs; |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3198 return 0; |
128 | 3199 } |
3200 | |
7386 | 3201 int UnregisterComClass(const GUID* clsid, GETCLASSOBJECT gcs) |
2069 | 3202 { |
3203 int found = 0; | |
3204 int i = 0; | |
3205 if(!clsid || !gcs) | |
3206 return -1; | |
3207 | |
3208 if (com_object_table == 0) | |
3209 printf("Warning: UnregisterComClass() called without any registered class\n"); | |
3210 while (i < com_object_size) | |
3211 { | |
3212 if (found && i > 0) | |
3213 { | |
3214 memcpy(&com_object_table[i - 1].clsid, | |
3215 &com_object_table[i].clsid, sizeof(GUID)); | |
3216 com_object_table[i - 1].GetClassObject = | |
3217 com_object_table[i].GetClassObject; | |
3218 } | |
3219 else if (memcmp(&com_object_table[i].clsid, clsid, sizeof(GUID)) == 0 | |
3220 && com_object_table[i].GetClassObject == gcs) | |
3221 { | |
3465 | 3222 found++; |
2069 | 3223 } |
3224 i++; | |
3225 } | |
3226 if (found) | |
3227 { | |
3228 if (--com_object_size == 0) | |
3229 { | |
3230 free(com_object_table); | |
3465 | 3231 com_object_table = 0; |
2069 | 3232 } |
3233 } | |
3234 return 0; | |
3235 } | |
3236 | |
3237 | |
7386 | 3238 const GUID IID_IUnknown = |
3465 | 3239 { |
3240 0x00000000, 0x0000, 0x0000, | |
3241 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3242 }; | |
7386 | 3243 const GUID IID_IClassFactory = |
3465 | 3244 { |
3245 0x00000001, 0x0000, 0x0000, | |
3246 {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} | |
3247 }; | |
3248 | |
3249 static long WINAPI expCoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, | |
7386 | 3250 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3251 { |
3252 int i; | |
3253 struct COM_OBJECT_INFO* ci=0; | |
3254 for(i=0; i<com_object_size; i++) | |
3255 if(!memcmp(rclsid, &com_object_table[i].clsid, sizeof(GUID))) | |
3256 ci=&com_object_table[i]; | |
3465 | 3257 if(!ci)return REGDB_E_CLASSNOTREG; |
128 | 3258 // in 'real' world we should mess with IClassFactory here |
3259 i=ci->GetClassObject(rclsid, riid, ppv); | |
3260 return i; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3261 } |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3262 |
128 | 3263 long CoCreateInstance(GUID* rclsid, struct IUnknown* pUnkOuter, |
7386 | 3264 long dwClsContext, const GUID* riid, void** ppv) |
128 | 3265 { |
3266 return expCoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); | |
3267 } | |
3268 | |
3465 | 3269 static int WINAPI expIsRectEmpty(CONST RECT *lprc) |
128 | 3270 { |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3271 int r = 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3272 int w,h; |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3273 //trapbug(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3274 if (lprc) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3275 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3276 w = lprc->right - lprc->left; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3277 h = lprc->bottom - lprc->top; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3278 if (w <= 0 || h <= 0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3279 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3280 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3281 else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3282 r = 1; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3283 |
3465 | 3284 dbgprintf("IsRectEmpty(%p) => %s\n", lprc, (r) ? "TRUE" : "FALSE"); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3285 //printf("Rect: left: %d, top: %d, right: %d, bottom: %d\n", lprc->left, lprc->top, lprc->right, lprc->bottom); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3286 // return 0; // wmv9? |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3287 return r; // TM20 |
128 | 3288 } |
3289 | |
3465 | 3290 static int _adjust_fdiv=0; //what's this? - used to adjust division |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
3291 static int _winver = 0x510; // windows version |
3465 | 3292 |
3293 | |
3294 | |
3295 | |
3296 static unsigned int WINAPI expGetTempPathA(unsigned int len, char* path) | |
128 | 3297 { |
3298 dbgprintf("GetTempPathA(%d, 0x%x)", len, path); | |
3299 if(len<5) | |
3300 { | |
3301 dbgprintf(" => 0\n"); | |
3302 return 0; | |
3303 } | |
3304 strcpy(path, "/tmp"); | |
3305 dbgprintf(" => 5 ( '/tmp' )\n"); | |
3306 return 5; | |
3307 } | |
3308 /* | |
3465 | 3309 FYI: |
3310 typedef struct | |
3311 { | |
3312 DWORD dwFileAttributes; | |
3313 FILETIME ftCreationTime; | |
3314 FILETIME ftLastAccessTime; | |
3315 FILETIME ftLastWriteTime; | |
3316 DWORD nFileSizeHigh; | |
3317 DWORD nFileSizeLow; | |
3318 DWORD dwReserved0; | |
3319 DWORD dwReserved1; | |
3320 CHAR cFileName[260]; | |
3321 CHAR cAlternateFileName[14]; | |
3322 } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; | |
3323 */ | |
3324 | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3325 static DIR* qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3326 |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3327 static WIN_BOOL WINAPI expFindNextFileA(HANDLE h,LPWIN32_FIND_DATAA lpfd) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3328 { |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3329 #ifdef QTX |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3330 dbgprintf("FindNextFileA(0x%x, 0x%x) => 0\n", h, lpfd); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3331 if(h==FILE_HANDLE_quicktimeqtx){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3332 struct dirent* d; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3333 if(!qtx_dir) return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3334 while((d=readdir(qtx_dir))){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3335 char* x=strrchr(d->d_name,'.'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3336 if(!x) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3337 if(strcmp(x,".qtx")) continue; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3338 strcpy(lpfd->cFileName,d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3339 // sprintf(lpfd->cAlternateFileName,"%-8s.qtx",d->d_name); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3340 strcpy(lpfd->cAlternateFileName,"foobar.qtx"); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3341 printf("### FindNext: %s\n",lpfd->cFileName); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3342 return 1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3343 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3344 closedir(qtx_dir); qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3345 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3346 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3347 #endif |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3348 return 0; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3349 } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3350 |
3465 | 3351 static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd) |
128 | 3352 { |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3353 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => 0\n", s, s, lpfd); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3354 // printf("\n### FindFirstFileA('%s')...\n",s); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3355 #ifdef QTX |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3356 if(strstr(s, "quicktime\\*.QTX")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3357 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd); |
8658 | 3358 printf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3359 qtx_dir=opendir(def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3360 if(!qtx_dir) return (HANDLE)-1; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3361 memset(lpfd,0,sizeof(*lpfd)); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3362 if(expFindNextFileA(FILE_HANDLE_quicktimeqtx,lpfd)) |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3363 return FILE_HANDLE_quicktimeqtx; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3364 printf("loader: Couldn't find the QuickTime plugins (.qtx files) at %s\n",def_path); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3365 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3366 } |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3367 #if 0 |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3368 if(strstr(s, "QuickTime.qts")){ |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3369 dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTS\n", s, s, lpfd); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3370 // if(!strcmp(s,"C:\\windows\\QuickTime.qts\\QuickTime.qts\\*.QTX")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3371 // return (HANDLE)-1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3372 strcpy(lpfd->cFileName, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3373 strcpy(lpfd->cAlternateFileName, "QuickT~1.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3374 return FILE_HANDLE_quicktimeqts; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3375 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3376 #endif |
8798
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3377 #endif |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3378 if(strstr(s, "*.vwp")){ |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3379 // hack for VoxWare codec plugins: |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3380 strcpy(lpfd->cFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3381 strcpy(lpfd->cAlternateFileName, "msms001.vwp"); |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3382 return (HANDLE)0; |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3383 } |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3384 // return 'file not found' |
b16c91194e40
qt vs. voxware fixed (hopefully), also some qt speedup
arpi
parents:
8764
diff
changeset
|
3385 return (HANDLE)-1; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3386 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3387 |
3465 | 3388 static WIN_BOOL WINAPI expFindClose(HANDLE h) |
128 | 3389 { |
3390 dbgprintf("FindClose(0x%x) => 0\n", h); | |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3391 #ifdef QTX |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3392 // if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){ |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3393 // closedir(qtx_dir); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3394 // qtx_dir=NULL; |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3395 // } |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3396 #endif |
128 | 3397 return 0; |
3398 } | |
3465 | 3399 static UINT WINAPI expSetErrorMode(UINT i) |
128 | 3400 { |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3401 dbgprintf("SetErrorMode(%d) => 0\n", i); |
128 | 3402 return 0; |
3403 } | |
3465 | 3404 static UINT WINAPI expGetWindowsDirectoryA(LPSTR s,UINT c) |
128 | 3405 { |
3406 char windir[]="c:\\windows"; | |
3407 int result; | |
3408 strncpy(s, windir, c); | |
3409 result=1+((c<strlen(windir))?c:strlen(windir)); | |
3410 dbgprintf("GetWindowsDirectoryA(0x%x, %d) => %d\n", s, c, result); | |
3411 return result; | |
3412 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3413 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3414 static UINT WINAPI expGetCurrentDirectoryA(UINT c, LPSTR s) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3415 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3416 char curdir[]="c:\\"; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3417 int result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3418 strncpy(s, curdir, c); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3419 result=1+((c<strlen(curdir))?c:strlen(curdir)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3420 dbgprintf("GetCurrentDirectoryA(0x%x, %d) => %d\n", s, c, result); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3421 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3422 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3423 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3424 static int WINAPI expSetCurrentDirectoryA(const char *pathname) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3425 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3426 dbgprintf("SetCurrentDirectoryA(0x%x = %s) => 1\n", pathname, pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3427 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3428 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3429 chdir(strcat(strrchr(pathname, '\\')+1, '/')); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3430 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3431 chdir(pathname); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3432 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3433 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3434 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3435 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3436 static int WINAPI expCreateDirectoryA(const char *pathname, void *sa) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3437 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3438 dbgprintf("CreateDirectory(0x%x = %s, 0x%x) => 1\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3439 pathname, pathname, sa); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3440 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3441 p = strrchr(pathname, '\\')+1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3442 strcpy(&buf[0], p); /* should be strncpy */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3443 if (!strlen(p)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3444 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3445 buf[0] = '.'; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3446 buf[1] = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3447 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3448 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3449 if (strrchr(pathname, '\\')) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3450 mkdir(strcat(strrchr(pathname, '\\')+1, '/'), 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3451 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3452 mkdir(pathname, 666); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3453 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3454 mkdir(&buf); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3455 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3456 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3457 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3458 #endif |
3465 | 3459 static WIN_BOOL WINAPI expDeleteFileA(LPCSTR s) |
128 | 3460 { |
3461 dbgprintf("DeleteFileA(0x%x='%s') => 0\n", s, s); | |
3462 return 0; | |
3463 } | |
3465 | 3464 static WIN_BOOL WINAPI expFileTimeToLocalFileTime(const FILETIME* cpf, LPFILETIME pf) |
128 | 3465 { |
3466 dbgprintf("FileTimeToLocalFileTime(0x%x, 0x%x) => 0\n", cpf, pf); | |
3467 return 0; | |
3468 } | |
3469 | |
3465 | 3470 static UINT WINAPI expGetTempFileNameA(LPCSTR cs1,LPCSTR cs2,UINT i,LPSTR ps) |
128 | 3471 { |
3472 char mask[16]="/tmp/AP_XXXXXX"; | |
3473 int result; | |
3474 dbgprintf("GetTempFileNameA(0x%x='%s', 0x%x='%s', %d, 0x%x)", cs1, cs1, cs2, cs2, i, ps); | |
3475 if(i && i<10) | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3476 { |
128 | 3477 dbgprintf(" => -1\n"); |
3478 return -1; | |
3479 } | |
3480 result=mkstemp(mask); | |
3481 sprintf(ps, "AP%d", result); | |
3482 dbgprintf(" => %d\n", strlen(ps)); | |
3483 return strlen(ps); | |
3484 } | |
3485 // | |
3486 // This func might need proper implementation if we want AngelPotion codec. | |
3487 // They try to open APmpeg4v1.apl with it. | |
3488 // DLL will close opened file with CloseHandle(). | |
3489 // | |
3465 | 3490 static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2, |
3491 LPSECURITY_ATTRIBUTES p1, DWORD i3,DWORD i4,HANDLE i5) | |
128 | 3492 { |
3493 dbgprintf("CreateFileA(0x%x='%s', %d, %d, 0x%x, %d, %d, 0x%x)\n", cs1, cs1, i1, | |
3465 | 3494 i2, p1, i3, i4, i5); |
128 | 3495 if((!cs1) || (strlen(cs1)<2))return -1; |
3128 | 3496 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3497 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3498 if(strstr(cs1, "QuickTime.qts")) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3499 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3500 int result; |
18878 | 3501 char* tmp=malloc(strlen(def_path)+50); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3502 strcpy(tmp, def_path); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3503 strcat(tmp, "/"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3504 strcat(tmp, "QuickTime.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3505 result=open(tmp, O_RDONLY); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3506 free(tmp); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3507 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3508 } |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3509 if(strstr(cs1, ".qtx")) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3510 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3511 int result; |
18878 | 3512 char* tmp=malloc(strlen(def_path)+250); |
8391
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3513 char* x=strrchr(cs1,'\\'); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3514 sprintf(tmp,"%s/%s",def_path,x?(x+1):cs1); |
780d0e226ac5
support for *.qtx (scan for all .qtx files at quicktime init)
arpi
parents:
8293
diff
changeset
|
3515 // printf("### Open: %s -> %s\n",cs1,tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3516 result=open(tmp, O_RDONLY); |
8285 | 3517 free(tmp); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3518 return result; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3519 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3520 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3521 |
3128 | 3522 if(strncmp(cs1, "AP", 2) == 0) |
128 | 3523 { |
3524 int result; | |
18878 | 3525 char* tmp=malloc(strlen(def_path)+50); |
128 | 3526 strcpy(tmp, def_path); |
3527 strcat(tmp, "/"); | |
3528 strcat(tmp, "APmpg4v1.apl"); | |
3529 result=open(tmp, O_RDONLY); | |
3530 free(tmp); | |
3531 return result; | |
3128 | 3532 } |
3533 if (strstr(cs1, "vp3")) | |
3534 { | |
3535 int r; | |
3536 int flg = 0; | |
18878 | 3537 char* tmp=malloc(20 + strlen(cs1)); |
3128 | 3538 strcpy(tmp, "/tmp/"); |
3539 strcat(tmp, cs1); | |
3540 r = 4; | |
3541 while (tmp[r]) | |
3542 { | |
3543 if (tmp[r] == ':' || tmp[r] == '\\') | |
3544 tmp[r] = '_'; | |
3545 r++; | |
3546 } | |
3547 if (GENERIC_READ & i1) | |
3548 flg |= O_RDONLY; | |
3549 else if (GENERIC_WRITE & i1) | |
3550 { | |
3551 flg |= O_WRONLY; | |
3552 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", tmp, r, flg); | |
3553 } | |
3554 r=open(tmp, flg); | |
3555 free(tmp); | |
3556 return r; | |
3557 } | |
3558 | |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3559 // Needed by wnvplay1.dll |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3560 if (strstr(cs1, "WINNOV.bmp")) |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3561 { |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3562 int r; |
24802 | 3563 r=open("/dev/null", O_RDONLY); |
12735
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3564 return r; |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3565 } |
5af0b22d55a6
Support for Winnov Videum WINX and WNV1 codecs with binary dll
rtognimp
parents:
12374
diff
changeset
|
3566 |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3567 #if 0 |
7386 | 3568 /* we need this for some virtualdub filters */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3569 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3570 int r; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3571 int flg = 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3572 if (GENERIC_READ & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3573 flg |= O_RDONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3574 else if (GENERIC_WRITE & i1) |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3575 { |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3576 flg |= O_WRONLY; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3577 printf("Warning: openning filename %s %d (flags; 0x%x) for write\n", cs1, r, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3578 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3579 r=open(cs1, flg); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3580 return r; |
7386 | 3581 } |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3582 #endif |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3583 |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3584 return atoi(cs1+2); |
128 | 3585 } |
5234 | 3586 static UINT WINAPI expGetSystemDirectoryA( |
3587 char* lpBuffer, // address of buffer for system directory | |
3588 UINT uSize // size of directory buffer | |
3589 ){ | |
3590 dbgprintf("GetSystemDirectoryA(%p,%d)\n", lpBuffer,uSize); | |
3591 if(!lpBuffer) strcpy(lpBuffer,"."); | |
3592 return 1; | |
3593 } | |
3594 /* | |
128 | 3595 static char sysdir[]="."; |
3465 | 3596 static LPCSTR WINAPI expGetSystemDirectoryA() |
128 | 3597 { |
3598 dbgprintf("GetSystemDirectoryA() => 0x%x='%s'\n", sysdir, sysdir); | |
3599 return sysdir; | |
3600 } | |
5234 | 3601 */ |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3602 static DWORD WINAPI expGetFullPathNameA |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3603 ( |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3604 LPCTSTR lpFileName, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3605 DWORD nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3606 LPTSTR lpBuffer, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3607 LPTSTR lpFilePart |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3608 ){ |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3609 if(!lpFileName) return 0; |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3610 dbgprintf("GetFullPathNameA('%s',%d,%p,%p)\n",lpFileName,nBufferLength, |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3611 lpBuffer, lpFilePart); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3612 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3613 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3614 strcpy(lpFilePart, "Quick123.qts"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3615 #else |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3616 strcpy(lpFilePart, lpFileName); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3617 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3618 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3619 if (strrchr(lpFileName, '\\')) |
8451 | 3620 lpFilePart = strrchr(lpFileName, '\\'); |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3621 else |
13182 | 3622 lpFilePart = (LPTSTR)lpFileName; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3623 #endif |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3624 strcpy(lpBuffer, lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3625 // strncpy(lpBuffer, lpFileName, rindex(lpFileName, '\\')-lpFileName); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3626 return strlen(lpBuffer); |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3627 } |
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
3628 |
5234 | 3629 static DWORD WINAPI expGetShortPathNameA |
3630 ( | |
3631 LPCSTR longpath, | |
3632 LPSTR shortpath, | |
3633 DWORD shortlen | |
3634 ){ | |
3635 if(!longpath) return 0; | |
3636 dbgprintf("GetShortPathNameA('%s',%p,%d)\n",longpath,shortpath,shortlen); | |
3637 strcpy(shortpath,longpath); | |
3638 return strlen(shortpath); | |
3639 } | |
7386 | 3640 |
3465 | 3641 static WIN_BOOL WINAPI expReadFile(HANDLE h,LPVOID pv,DWORD size,LPDWORD rd,LPOVERLAPPED unused) |
128 | 3642 { |
3643 int result; | |
3644 dbgprintf("ReadFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, rd); | |
3645 result=read(h, pv, size); | |
3646 if(rd)*rd=result; | |
3647 if(!result)return 0; | |
3648 return 1; | |
3649 } | |
3650 | |
3465 | 3651 static WIN_BOOL WINAPI expWriteFile(HANDLE h,LPCVOID pv,DWORD size,LPDWORD wr,LPOVERLAPPED unused) |
128 | 3652 { |
3653 int result; | |
3654 dbgprintf("WriteFile(%d, 0x%x, %d -> 0x%x)\n", h, pv, size, wr); | |
3655 if(h==1234)h=1; | |
3656 result=write(h, pv, size); | |
3657 if(wr)*wr=result; | |
3658 if(!result)return 0; | |
3659 return 1; | |
3660 } | |
3465 | 3661 static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whence) |
128 | 3662 { |
3663 int wh; | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3664 dbgprintf("SetFilePointer(%d, 0x%x, 0x%x = %d, %d)\n", h, val, ext, *ext, whence); |
3465 | 3665 //why would DLL want temporary file with >2Gb size? |
128 | 3666 switch(whence) |
3667 { | |
3668 case FILE_BEGIN: | |
3669 wh=SEEK_SET;break; | |
3670 case FILE_END: | |
3671 wh=SEEK_END;break; | |
3672 case FILE_CURRENT: | |
3673 wh=SEEK_CUR;break; | |
3674 default: | |
3675 return -1; | |
3676 } | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3677 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3678 if (val == 0 && ext != 0) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3679 val = val&(*ext); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3680 #endif |
128 | 3681 return lseek(h, val, wh); |
3682 } | |
3683 | |
3465 | 3684 static HDRVR WINAPI expOpenDriverA(LPCSTR szDriverName, LPCSTR szSectionName, |
3685 LPARAM lParam2) | |
128 | 3686 { |
3687 dbgprintf("OpenDriverA(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3688 return -1; |
128 | 3689 } |
3465 | 3690 static HDRVR WINAPI expOpenDriver(LPCSTR szDriverName, LPCSTR szSectionName, |
3691 LPARAM lParam2) | |
128 | 3692 { |
3693 dbgprintf("OpenDriver(0x%x='%s', 0x%x='%s', 0x%x) => -1\n", szDriverName, szDriverName, szSectionName, szSectionName, lParam2); | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
3694 return -1; |
128 | 3695 } |
1 | 3696 |
3697 | |
3465 | 3698 static WIN_BOOL WINAPI expGetProcessAffinityMask(HANDLE hProcess, |
3699 LPDWORD lpProcessAffinityMask, | |
3700 LPDWORD lpSystemAffinityMask) | |
128 | 3701 { |
3702 dbgprintf("GetProcessAffinityMask(0x%x, 0x%x, 0x%x) => 1\n", | |
3465 | 3703 hProcess, lpProcessAffinityMask, lpSystemAffinityMask); |
128 | 3704 if(lpProcessAffinityMask)*lpProcessAffinityMask=1; |
3705 if(lpSystemAffinityMask)*lpSystemAffinityMask=1; | |
3706 return 1; | |
1 | 3707 } |
3708 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3709 // Fake implementation: does nothing, but does it right :) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3710 static WIN_BOOL WINAPI expSetProcessAffinityMask(HANDLE hProcess, |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3711 LPDWORD dwProcessAffinityMask) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3712 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3713 dbgprintf("SetProcessAffinityMask(0x%x, 0x%x) => 1\n", |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3714 hProcess, dwProcessAffinityMask); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3715 |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3716 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3717 }; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
3718 |
3465 | 3719 static int WINAPI expMulDiv(int nNumber, int nNumerator, int nDenominator) |
713 | 3720 { |
3721 static const long long max_int=0x7FFFFFFFLL; | |
3722 static const long long min_int=-0x80000000LL; | |
3723 long long tmp=(long long)nNumber*(long long)nNumerator; | |
3465 | 3724 dbgprintf("expMulDiv %d * %d / %d\n", nNumber, nNumerator, nDenominator); |
713 | 3725 if(!nDenominator)return 1; |
3726 tmp/=nDenominator; | |
3727 if(tmp<min_int) return 1; | |
3728 if(tmp>max_int) return 1; | |
3729 return (int)tmp; | |
3730 } | |
3731 | |
3465 | 3732 static LONG WINAPI explstrcmpiA(const char* str1, const char* str2) |
713 | 3733 { |
3734 LONG result=strcasecmp(str1, str2); | |
3735 dbgprintf("strcmpi(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
3736 return result; | |
3737 } | |
3738 | |
3465 | 3739 static LONG WINAPI explstrlenA(const char* str1) |
713 | 3740 { |
3741 LONG result=strlen(str1); | |
3134 | 3742 dbgprintf("strlen(0x%x='%.50s') => %d\n", str1, str1, result); |
713 | 3743 return result; |
3744 } | |
3745 | |
3465 | 3746 static LONG WINAPI explstrcpyA(char* str1, const char* str2) |
713 | 3747 { |
3748 int result= (int) strcpy(str1, str2); | |
3134 | 3749 dbgprintf("strcpy(0x%.50x, 0x%.50x='%.50s') => %d\n", str1, str2, str2, result); |
713 | 3750 return result; |
3751 } | |
3465 | 3752 static LONG WINAPI explstrcpynA(char* str1, const char* str2,int len) |
2069 | 3753 { |
3754 int result; | |
3755 if (strlen(str2)>len) | |
3465 | 3756 result = (int) strncpy(str1, str2,len); |
2069 | 3757 else |
3465 | 3758 result = (int) strcpy(str1,str2); |
2069 | 3759 dbgprintf("strncpy(0x%x, 0x%x='%s' len %d strlen %d) => %x\n", str1, str2, str2,len, strlen(str2),result); |
3760 return result; | |
3761 } | |
3465 | 3762 static LONG WINAPI explstrcatA(char* str1, const char* str2) |
2069 | 3763 { |
3764 int result= (int) strcat(str1, str2); | |
3765 dbgprintf("strcat(0x%x, 0x%x='%s') => %d\n", str1, str2, str2, result); | |
3766 return result; | |
3767 } | |
3768 | |
128 | 3769 |
3465 | 3770 static LONG WINAPI expInterlockedExchange(long *dest, long l) |
497 | 3771 { |
3465 | 3772 long retval = *dest; |
3773 *dest = l; | |
3774 return retval; | |
497 | 3775 } |
3776 | |
3465 | 3777 static void WINAPI expInitCommonControls(void) |
1543 | 3778 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3779 dbgprintf("InitCommonControls called!\n"); |
2069 | 3780 return; |
1543 | 3781 } |
3782 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3783 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3784 /* needed by QuickTime.qts */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3785 static HWND WINAPI expCreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3786 HWND parent, INT id, HINSTANCE inst, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3787 HWND buddy, INT maxVal, INT minVal, INT curVal) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3788 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3789 dbgprintf("CreateUpDownControl(...)\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3790 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3791 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3792 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3793 |
3457 | 3794 /* alex: implement this call! needed for 3ivx */ |
3465 | 3795 static HRESULT WINAPI expCoCreateFreeThreadedMarshaler(void *pUnkOuter, void **ppUnkInner) |
2396 | 3796 { |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
3797 dbgprintf("CoCreateFreeThreadedMarshaler(%p, %p) called!\n", |
3465 | 3798 pUnkOuter, ppUnkInner); |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
3799 // return 0; |
3457 | 3800 return ERROR_CALL_NOT_IMPLEMENTED; |
2396 | 3801 } |
3802 | |
2779 | 3803 |
3465 | 3804 static int WINAPI expDuplicateHandle(HANDLE hSourceProcessHandle, // handle to source process |
3805 HANDLE hSourceHandle, // handle to duplicate | |
3806 HANDLE hTargetProcessHandle, // handle to target process | |
3807 HANDLE* lpTargetHandle, // duplicate handle | |
3808 DWORD dwDesiredAccess, // requested access | |
3809 int bInheritHandle, // handle inheritance option | |
3810 DWORD dwOptions // optional actions | |
3811 ) | |
2779 | 3812 { |
3813 dbgprintf("DuplicateHandle(%p, %p, %p, %p, 0x%x, %d, %d) called\n", | |
3465 | 3814 hSourceProcessHandle, hSourceHandle, hTargetProcessHandle, |
3815 lpTargetHandle, dwDesiredAccess, bInheritHandle, dwOptions); | |
2779 | 3816 *lpTargetHandle = hSourceHandle; |
3817 return 1; | |
3818 } | |
3819 | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3820 static HRESULT WINAPI expCoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3821 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3822 dbgprintf("CoInitializeEx(%p, %d) called\n", lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3823 return S_OK; |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3824 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3825 |
3128 | 3826 // required by PIM1 codec (used by win98 PCTV Studio capture sw) |
3465 | 3827 static HRESULT WINAPI expCoInitialize( |
3828 LPVOID lpReserved /* [in] pointer to win32 malloc interface | |
3829 (obsolete, should be NULL) */ | |
3830 ) | |
3033 | 3831 { |
3465 | 3832 /* |
3833 * Just delegate to the newer method. | |
3834 */ | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3835 return expCoInitializeEx(lpReserved, COINIT_APARTMENTTHREADED); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3836 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3837 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3838 static void WINAPI expCoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3839 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3840 dbgprintf("CoUninitialize() called\n"); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3841 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3842 |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3843 /* allow static linking */ |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3844 HRESULT WINAPI CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3845 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3846 return expCoInitializeEx(lpReserved, dwCoInit); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3847 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3848 HRESULT WINAPI CoInitialize(LPVOID lpReserved) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3849 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3850 return expCoInitialize(lpReserved); |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3851 } |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3852 void WINAPI CoUninitialize(void) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3853 { |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
3854 return expCoUninitialize(); |
3033 | 3855 } |
3856 | |
3465 | 3857 static DWORD WINAPI expSetThreadAffinityMask |
3441 | 3858 ( |
3859 HANDLE hThread, | |
3860 DWORD dwThreadAffinityMask | |
3861 ){ | |
3862 return 0; | |
3863 }; | |
3033 | 3864 |
3465 | 3865 /* |
3866 * no WINAPI functions - CDECL | |
3867 */ | |
3868 static void* expmalloc(int size) | |
3869 { | |
3870 //printf("malloc"); | |
3871 // return malloc(size); | |
3872 void* result=my_mreq(size,0); | |
3873 dbgprintf("malloc(0x%x) => 0x%x\n", size,result); | |
3874 if(result==0) | |
3875 printf("WARNING: malloc() failed\n"); | |
3876 return result; | |
3877 } | |
3878 static void expfree(void* mem) | |
3879 { | |
3880 // return free(mem); | |
3881 dbgprintf("free(%p)\n", mem); | |
3882 my_release(mem); | |
3883 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3884 /* needed by atrac3.acm */ |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3885 static void *expcalloc(int num, int size) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3886 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3887 void* result=my_mreq(num*size,1); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3888 dbgprintf("calloc(%d,%d) => %p\n", num,size,result); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3889 if(result==0) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3890 printf("WARNING: calloc() failed\n"); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3891 return result; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
3892 } |
3465 | 3893 static void* expnew(int size) |
3894 { | |
3895 // printf("NEW:: Call from address %08x\n STACK DUMP:\n", *(-1+(int*)&size)); | |
3896 // printf("%08x %08x %08x %08x\n", | |
3897 // size, *(1+(int*)&size), | |
3898 // *(2+(int*)&size),*(3+(int*)&size)); | |
3899 void* result; | |
3900 assert(size >= 0); | |
3901 | |
3902 result=my_mreq(size,0); | |
3903 dbgprintf("new(%d) => %p\n", size, result); | |
3904 if (result==0) | |
3905 printf("WARNING: new() failed\n"); | |
3906 return result; | |
3907 | |
3908 } | |
3909 static int expdelete(void* memory) | |
3910 { | |
3911 dbgprintf("delete(%p)\n", memory); | |
3912 my_release(memory); | |
3913 return 0; | |
3914 } | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3915 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3916 /* |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3917 * local definition - we need only the last two members at this point |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3918 * otherwice we would have to introduce here GUIDs and some more types.. |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3919 */ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3920 typedef struct __attribute__((__packed__)) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3921 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3922 char hay[0x40]; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3923 unsigned long cbFormat; //0x40 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3924 char* pbFormat; //0x44 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3925 } MY_MEDIA_TYPE; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3926 static HRESULT WINAPI expMoCopyMediaType(MY_MEDIA_TYPE* dest, const MY_MEDIA_TYPE* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3927 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3928 if (!dest || !src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3929 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3930 memcpy(dest, src, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3931 if (dest->cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3932 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3933 dest->pbFormat = (char*) my_mreq(dest->cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3934 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3935 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3936 memcpy(dest->pbFormat, src->pbFormat, dest->cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3937 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3938 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3939 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3940 static HRESULT WINAPI expMoInitMediaType(MY_MEDIA_TYPE* dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3941 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3942 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3943 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3944 memset(dest, 0, sizeof(MY_MEDIA_TYPE)); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3945 if (cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3946 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3947 dest->pbFormat = (char*) my_mreq(cbFormat, 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3948 if (!dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3949 return E_OUTOFMEMORY; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3950 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3951 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3952 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3953 static HRESULT WINAPI expMoCreateMediaType(MY_MEDIA_TYPE** dest, DWORD cbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3954 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3955 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3956 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3957 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3958 return expMoInitMediaType(*dest, cbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3959 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3960 static HRESULT WINAPI expMoDuplicateMediaType(MY_MEDIA_TYPE** dest, const void* src) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3961 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3962 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3963 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3964 *dest = my_mreq(sizeof(MY_MEDIA_TYPE), 0); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3965 return expMoCopyMediaType(*dest, src); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3966 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3967 static HRESULT WINAPI expMoFreeMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3968 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3969 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3970 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3971 if (dest->pbFormat) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3972 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3973 my_release(dest->pbFormat); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3974 dest->pbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3975 dest->cbFormat = 0; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3976 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3977 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3978 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3979 static HRESULT WINAPI expMoDeleteMediaType(MY_MEDIA_TYPE* dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3980 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3981 if (!dest) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3982 return E_POINTER; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3983 expMoFreeMediaType(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3984 my_release(dest); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3985 return S_OK; |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3986 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3987 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3988 static int exp_snprintf( char *str, int size, const char *format, ... ) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3989 { |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3990 int x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3991 va_list va; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3992 va_start(va, format); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3993 x=snprintf(str,size,format,va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3994 dbgprintf("_snprintf( 0x%x, %d, %s, ... ) => %d\n",str,size,format,x); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3995 va_end(va); |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3996 return x; |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
3997 } |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
3998 |
7386 | 3999 #if 0 |
3465 | 4000 static int exp_initterm(int v1, int v2) |
4001 { | |
4002 dbgprintf("_initterm(0x%x, 0x%x) => 0\n", v1, v2); | |
4003 return 0; | |
4004 } | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4005 #else |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4006 /* merged from wine - 2002.04.21 */ |
7386 | 4007 typedef void (*_INITTERMFUNC)(); |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4008 static int exp_initterm(_INITTERMFUNC *start, _INITTERMFUNC *end) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4009 { |
7386 | 4010 dbgprintf("_initterm(0x%x, 0x%x) %p\n", start, end, *start); |
4011 while (start < end) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4012 { |
7386 | 4013 if (*start) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4014 { |
7386 | 4015 //printf("call _initfunc: from: %p %d\n", *start); |
4016 // ok this trick with push/pop is necessary as otherwice | |
4017 // edi/esi registers are being trashed | |
4018 void* p = *start; | |
4019 __asm__ __volatile__ | |
4020 ( | |
4021 "pushl %%ebx \n\t" | |
4022 "pushl %%ecx \n\t" | |
4023 "pushl %%edx \n\t" | |
4024 "pushl %%edi \n\t" | |
4025 "pushl %%esi \n\t" | |
4026 "call *%%eax \n\t" | |
4027 "popl %%esi \n\t" | |
4028 "popl %%edi \n\t" | |
4029 "popl %%edx \n\t" | |
4030 "popl %%ecx \n\t" | |
4031 "popl %%ebx \n\t" | |
4032 : | |
4033 : "a"(p) | |
4034 : "memory" | |
4035 ); | |
4036 //printf("done %p %d:%d\n", end); | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4037 } |
7386 | 4038 start++; |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4039 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4040 return 0; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4041 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4042 #endif |
3465 | 4043 |
7386 | 4044 static void* exp__dllonexit() |
4045 { | |
4046 // FIXME extract from WINE | |
4047 return NULL; | |
4048 } | |
4049 | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4050 static int expwsprintfA(char* string, const char* format, ...) |
3465 | 4051 { |
4052 va_list va; | |
4053 int result; | |
4054 va_start(va, format); | |
4055 result = vsprintf(string, format, va); | |
4056 dbgprintf("wsprintfA(0x%x, '%s', ...) => %d\n", string, format, result); | |
4057 va_end(va); | |
4058 return result; | |
4059 } | |
4060 | |
4061 static int expsprintf(char* str, const char* format, ...) | |
4062 { | |
4063 va_list args; | |
4064 int r; | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4065 dbgprintf("sprintf(0x%x, %s)\n", str, format); |
3465 | 4066 va_start(args, format); |
4067 r = vsprintf(str, format, args); | |
4068 va_end(args); | |
4069 return r; | |
4070 } | |
4071 static int expsscanf(const char* str, const char* format, ...) | |
4072 { | |
4073 va_list args; | |
4074 int r; | |
4075 dbgprintf("sscanf(%s, %s)\n", str, format); | |
4076 va_start(args, format); | |
4077 r = vsscanf(str, format, args); | |
4078 va_end(args); | |
4079 return r; | |
4080 } | |
4081 static void* expfopen(const char* path, const char* mode) | |
4082 { | |
4083 printf("fopen: \"%s\" mode:%s\n", path, mode); | |
4084 //return fopen(path, mode); | |
4085 return fdopen(0, mode); // everything on screen | |
4086 } | |
4087 static int expfprintf(void* stream, const char* format, ...) | |
4088 { | |
4089 va_list args; | |
4090 int r = 0; | |
4091 dbgprintf("fprintf(%p, %s, ...)\n", stream, format); | |
4092 #if 1 | |
4093 va_start(args, format); | |
4094 r = vfprintf((FILE*) stream, format, args); | |
4095 va_end(args); | |
4096 #endif | |
4097 return r; | |
4098 } | |
4099 | |
4100 static int expprintf(const char* format, ...) | |
4101 { | |
4102 va_list args; | |
4103 int r; | |
4104 dbgprintf("printf(%s, ...)\n", format); | |
4105 va_start(args, format); | |
4106 r = vprintf(format, args); | |
4107 va_end(args); | |
4108 return r; | |
4109 } | |
4110 | |
4111 static char* expgetenv(const char* varname) | |
4112 { | |
4113 char* v = getenv(varname); | |
4114 dbgprintf("getenv(%s) => %s\n", varname, v); | |
4115 return v; | |
4116 } | |
4117 | |
4118 static void* expwcscpy(WCHAR* dst, const WCHAR* src) | |
4119 { | |
4120 WCHAR* p = dst; | |
4121 while ((*p++ = *src++)) | |
4122 ; | |
4123 return dst; | |
4124 } | |
4125 | |
4126 static char* expstrrchr(char* string, int value) | |
4127 { | |
4128 char* result=strrchr(string, value); | |
4129 if(result) | |
4130 dbgprintf("strrchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4131 else | |
4132 dbgprintf("strrchr(0x%x='%s', %d) => 0", string, string, value); | |
4133 return result; | |
4134 } | |
4135 | |
4136 static char* expstrchr(char* string, int value) | |
4137 { | |
4138 char* result=strchr(string, value); | |
4139 if(result) | |
4140 dbgprintf("strchr(0x%x='%s', %d) => 0x%x='%s'", string, string, value, result, result); | |
4141 else | |
4142 dbgprintf("strchr(0x%x='%s', %d) => 0", string, string, value); | |
4143 return result; | |
4144 } | |
4145 static int expstrlen(char* str) | |
4146 { | |
4147 int result=strlen(str); | |
4148 dbgprintf("strlen(0x%x='%s') => %d\n", str, str, result); | |
4149 return result; | |
4150 } | |
4151 static char* expstrcpy(char* str1, const char* str2) | |
4152 { | |
4153 char* result= strcpy(str1, str2); | |
4154 dbgprintf("strcpy(0x%x, 0x%x='%s') => %p\n", str1, str2, str2, result); | |
4155 return result; | |
4156 } | |
9397 | 4157 static char* expstrncpy(char* str1, const char* str2, size_t count) |
4158 { | |
4159 char* result= strncpy(str1, str2, count); | |
4160 dbgprintf("strncpy(0x%x, 0x%x='%s', %d) => %p\n", str1, str2, str2, count, result); | |
4161 return result; | |
4162 } | |
3465 | 4163 static int expstrcmp(const char* str1, const char* str2) |
4164 { | |
4165 int result=strcmp(str1, str2); | |
4166 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4167 return result; | |
4168 } | |
4169 static int expstrncmp(const char* str1, const char* str2,int x) | |
4170 { | |
4171 int result=strncmp(str1, str2,x); | |
4172 dbgprintf("strcmp(0x%x='%s', 0x%x='%s') => %d\n", str1, str1, str2, str2, result); | |
4173 return result; | |
4174 } | |
4175 static char* expstrcat(char* str1, const char* str2) | |
4176 { | |
4177 char* result = strcat(str1, str2); | |
4178 dbgprintf("strcat(0x%x='%s', 0x%x='%s') => %p\n", str1, str1, str2, str2, result); | |
4179 return result; | |
4180 } | |
4181 static char* exp_strdup(const char* str1) | |
4182 { | |
4183 int l = strlen(str1); | |
7386 | 4184 char* result = (char*) my_mreq(l + 1,0); |
3465 | 4185 if (result) |
4186 strcpy(result, str1); | |
4187 dbgprintf("_strdup(0x%x='%s') => %p\n", str1, str1, result); | |
4188 return result; | |
4189 } | |
4190 static int expisalnum(int c) | |
4191 { | |
4192 int result= (int) isalnum(c); | |
4193 dbgprintf("isalnum(0x%x='%c' => %d\n", c, c, result); | |
4194 return result; | |
4195 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4196 static int expisspace(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4197 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4198 int result= (int) isspace(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4199 dbgprintf("isspace(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4200 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4201 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4202 static int expisalpha(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4203 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4204 int result= (int) isalpha(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4205 dbgprintf("isalpha(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4206 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4207 } |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4208 static int expisdigit(int c) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4209 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4210 int result= (int) isdigit(c); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4211 dbgprintf("isdigit(0x%x='%c' => %d\n", c, c, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4212 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4213 } |
3465 | 4214 static void* expmemmove(void* dest, void* src, int n) |
4215 { | |
4216 void* result = memmove(dest, src, n); | |
4217 dbgprintf("memmove(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4218 return result; | |
4219 } | |
4220 static int expmemcmp(void* dest, void* src, int n) | |
4221 { | |
4222 int result = memcmp(dest, src, n); | |
4223 dbgprintf("memcmp(0x%x, 0x%x, %d) => %d\n", dest, src, n, result); | |
4224 return result; | |
4225 } | |
4226 static void* expmemcpy(void* dest, void* src, int n) | |
4227 { | |
4228 void *result = memcpy(dest, src, n); | |
4229 dbgprintf("memcpy(0x%x, 0x%x, %d) => %p\n", dest, src, n, result); | |
4230 return result; | |
4231 } | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4232 static void* expmemset(void* dest, int c, size_t n) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4233 { |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4234 void *result = memset(dest, c, n); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4235 dbgprintf("memset(0x%x, %d, %d) => %p\n", dest, c, n, result); |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4236 return result; |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
4237 } |
3465 | 4238 static time_t exptime(time_t* t) |
4239 { | |
4240 time_t result = time(t); | |
4241 dbgprintf("time(0x%x) => %d\n", t, result); | |
4242 return result; | |
4243 } | |
4244 | |
4245 static int exprand(void) | |
4246 { | |
4247 return rand(); | |
4248 } | |
4249 | |
4250 static void expsrand(int seed) | |
4251 { | |
4252 srand(seed); | |
4253 } | |
4254 | |
4255 #if 1 | |
4256 | |
22875 | 4257 // preferred compilation with -O2 -ffast-math ! |
3465 | 4258 |
4259 static double explog10(double x) | |
4260 { | |
4261 /*printf("Log10 %f => %f 0x%Lx\n", x, log10(x), *((int64_t*)&x));*/ | |
4262 return log10(x); | |
4263 } | |
4264 | |
4265 static double expcos(double x) | |
4266 { | |
4267 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ | |
4268 return cos(x); | |
4269 } | |
4270 | |
4271 /* doens't work */ | |
4272 static long exp_ftol_wrong(double x) | |
4273 { | |
4274 return (long) x; | |
4275 } | |
4276 | |
4277 #else | |
4278 | |
4279 static void explog10(void) | |
4280 { | |
4281 __asm__ __volatile__ | |
4282 ( | |
4283 "fldl 8(%esp) \n\t" | |
4284 "fldln2 \n\t" | |
4285 "fxch %st(1) \n\t" | |
4286 "fyl2x \n\t" | |
4287 ); | |
4288 } | |
4289 | |
4290 static void expcos(void) | |
4291 { | |
4292 __asm__ __volatile__ | |
4293 ( | |
4294 "fldl 8(%esp) \n\t" | |
4295 "fcos \n\t" | |
4296 ); | |
4297 } | |
4298 | |
4299 #endif | |
4300 | |
4301 // this seem to be the only how to make this function working properly | |
4302 // ok - I've spent tremendous amount of time (many many many hours | |
4303 // of debuging fixing & testing - it's almost unimaginable - kabi | |
4304 | |
4305 // _ftol - operated on the float value which is already on the FPU stack | |
3923
3fd9b781a9d2
workaround for the guilty code that caused sig11 when compiled with gcc-3.0.x
pl
parents:
3672
diff
changeset
|
4306 |
3465 | 4307 static void exp_ftol(void) |
4308 { | |
4309 __asm__ __volatile__ | |
4310 ( | |
4311 "sub $12, %esp \n\t" | |
4312 "fstcw -2(%ebp) \n\t" | |
4313 "wait \n\t" | |
3925 | 4314 "movw -2(%ebp), %ax \n\t" |
4315 "orb $0x0C, %ah \n\t" | |
4316 "movw %ax, -4(%ebp) \n\t" | |
3465 | 4317 "fldcw -4(%ebp) \n\t" |
4318 "fistpl -12(%ebp) \n\t" | |
4319 "fldcw -2(%ebp) \n\t" | |
3925 | 4320 "movl -12(%ebp), %eax \n\t" |
4321 //Note: gcc 3.03 does not do the following op if it | |
4322 // knows that ebp=esp | |
4323 "movl %ebp, %esp \n\t" | |
3465 | 4324 ); |
4325 } | |
4326 | |
13739
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4327 #define FPU_DOUBLES(var1,var2) double var1,var2; \ |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4328 __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \ |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4329 __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : ) |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4330 |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4331 static double exp_CIpow(void) |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4332 { |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4333 FPU_DOUBLES(x,y); |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4334 |
09b6ce70be8e
Fix for Windows media audio 9 voice codec (format 0x0a)
rtognimp
parents:
13598
diff
changeset
|
4335 dbgprintf("_CIpow(%lf, %lf)\n", x, y); |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4336 return pow(x, y); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4337 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4338 |
3465 | 4339 static double exppow(double x, double y) |
4340 { | |
4341 /*printf("Pow %f %f 0x%Lx 0x%Lx => %f\n", x, y, *((int64_t*)&x), *((int64_t*)&y), pow(x, y));*/ | |
4342 return pow(x, y); | |
4343 } | |
4344 | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4345 static double expldexp(double x, int expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4346 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4347 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4348 return ldexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4349 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4350 |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4351 static double expfrexp(double x, int* expo) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4352 { |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4353 /*printf("Cos %f => %f 0x%Lx\n", x, cos(x), *((int64_t*)&x));*/ |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4354 return frexp(x, expo); |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4355 } |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4356 |
3465 | 4357 |
4358 | |
4359 static int exp_stricmp(const char* s1, const char* s2) | |
4360 { | |
4361 return strcasecmp(s1, s2); | |
4362 } | |
4363 | |
4364 /* from declaration taken from Wine sources - this fountion seems to be | |
4365 * undocumented in any M$ doc */ | |
4366 static int exp_setjmp3(void* jmpbuf, int x) | |
4367 { | |
4368 //dbgprintf("!!!!UNIMPLEMENTED: setjmp3(%p, %d) => 0\n", jmpbuf, x); | |
4369 //return 0; | |
4370 __asm__ __volatile__ | |
4371 ( | |
4372 //"mov 4(%%esp), %%edx \n\t" | |
4373 "mov (%%esp), %%eax \n\t" | |
4374 "mov %%eax, (%%edx) \n\t" // store ebp | |
4375 | |
4376 //"mov %%ebp, (%%edx) \n\t" | |
4377 "mov %%ebx, 4(%%edx) \n\t" | |
4378 "mov %%edi, 8(%%edx) \n\t" | |
4379 "mov %%esi, 12(%%edx) \n\t" | |
4380 "mov %%esp, 16(%%edx) \n\t" | |
4381 | |
4382 "mov 4(%%esp), %%eax \n\t" | |
4383 "mov %%eax, 20(%%edx) \n\t" | |
4384 | |
4385 "movl $0x56433230, 32(%%edx) \n\t" // VC20 ?? | |
4386 "movl $0, 36(%%edx) \n\t" | |
4387 : // output | |
4388 : "d"(jmpbuf) // input | |
7386 | 4389 : "eax" |
3465 | 4390 ); |
4391 #if 1 | |
4392 __asm__ __volatile__ | |
4393 ( | |
4394 "mov %%fs:0, %%eax \n\t" // unsure | |
4395 "mov %%eax, 24(%%edx) \n\t" | |
4396 "cmp $0xffffffff, %%eax \n\t" | |
4397 "jnz l1 \n\t" | |
4398 "mov %%eax, 28(%%edx) \n\t" | |
4399 "l1: \n\t" | |
4400 : | |
4401 : | |
7386 | 4402 : "eax" |
3465 | 4403 ); |
4404 #endif | |
4405 | |
4406 return 0; | |
4407 } | |
4408 | |
5234 | 4409 static DWORD WINAPI expGetCurrentProcessId(void) |
4410 { | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4411 dbgprintf("GetCurrentProcessId(void) => %d\n", getpid()); |
5234 | 4412 return getpid(); //(DWORD)NtCurrentTeb()->pid; |
4413 } | |
4414 | |
4415 | |
4416 typedef struct { | |
4417 UINT wPeriodMin; | |
4418 UINT wPeriodMax; | |
4419 } TIMECAPS, *LPTIMECAPS; | |
4420 | |
4421 static MMRESULT WINAPI exptimeGetDevCaps(LPTIMECAPS lpCaps, UINT wSize) | |
4422 { | |
4423 dbgprintf("timeGetDevCaps(%p, %u) !\n", lpCaps, wSize); | |
4424 | |
4425 lpCaps->wPeriodMin = 1; | |
4426 lpCaps->wPeriodMax = 65535; | |
4427 return 0; | |
4428 } | |
4429 | |
4430 static MMRESULT WINAPI exptimeBeginPeriod(UINT wPeriod) | |
4431 { | |
4432 dbgprintf("timeBeginPeriod(%u) !\n", wPeriod); | |
4433 | |
4434 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; | |
4435 return 0; | |
4436 } | |
4437 | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4438 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4439 static MMRESULT WINAPI exptimeEndPeriod(UINT wPeriod) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4440 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4441 dbgprintf("timeEndPeriod(%u) !\n", wPeriod); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4442 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4443 if (wPeriod < 1 || wPeriod > 65535) return 96+1; //TIMERR_NOCANDO; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4444 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4445 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4446 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4447 |
5234 | 4448 static void WINAPI expGlobalMemoryStatus( |
4449 LPMEMORYSTATUS lpmem | |
4450 ) { | |
4451 static MEMORYSTATUS cached_memstatus; | |
4452 static int cache_lastchecked = 0; | |
4453 SYSTEM_INFO si; | |
4454 FILE *f; | |
4455 | |
4456 if (time(NULL)==cache_lastchecked) { | |
4457 memcpy(lpmem,&cached_memstatus,sizeof(MEMORYSTATUS)); | |
4458 return; | |
4459 } | |
4460 | |
4461 #if 1 | |
4462 f = fopen( "/proc/meminfo", "r" ); | |
4463 if (f) | |
4464 { | |
4465 char buffer[256]; | |
4466 int total, used, free, shared, buffers, cached; | |
4467 | |
4468 lpmem->dwLength = sizeof(MEMORYSTATUS); | |
4469 lpmem->dwTotalPhys = lpmem->dwAvailPhys = 0; | |
4470 lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0; | |
4471 while (fgets( buffer, sizeof(buffer), f )) | |
4472 { | |
4473 /* old style /proc/meminfo ... */ | |
4474 if (sscanf( buffer, "Mem: %d %d %d %d %d %d", &total, &used, &free, &shared, &buffers, &cached )) | |
4475 { | |
4476 lpmem->dwTotalPhys += total; | |
4477 lpmem->dwAvailPhys += free + buffers + cached; | |
4478 } | |
4479 if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) | |
4480 { | |
4481 lpmem->dwTotalPageFile += total; | |
4482 lpmem->dwAvailPageFile += free; | |
4483 } | |
4484 | |
4485 /* new style /proc/meminfo ... */ | |
4486 if (sscanf(buffer, "MemTotal: %d", &total)) | |
4487 lpmem->dwTotalPhys = total*1024; | |
4488 if (sscanf(buffer, "MemFree: %d", &free)) | |
4489 lpmem->dwAvailPhys = free*1024; | |
4490 if (sscanf(buffer, "SwapTotal: %d", &total)) | |
4491 lpmem->dwTotalPageFile = total*1024; | |
4492 if (sscanf(buffer, "SwapFree: %d", &free)) | |
4493 lpmem->dwAvailPageFile = free*1024; | |
4494 if (sscanf(buffer, "Buffers: %d", &buffers)) | |
4495 lpmem->dwAvailPhys += buffers*1024; | |
4496 if (sscanf(buffer, "Cached: %d", &cached)) | |
4497 lpmem->dwAvailPhys += cached*1024; | |
4498 } | |
4499 fclose( f ); | |
4500 | |
4501 if (lpmem->dwTotalPhys) | |
4502 { | |
4503 DWORD TotalPhysical = lpmem->dwTotalPhys+lpmem->dwTotalPageFile; | |
4504 DWORD AvailPhysical = lpmem->dwAvailPhys+lpmem->dwAvailPageFile; | |
4505 lpmem->dwMemoryLoad = (TotalPhysical-AvailPhysical) | |
4506 / (TotalPhysical / 100); | |
4507 } | |
4508 } else | |
4509 #endif | |
4510 { | |
4511 /* FIXME: should do something for other systems */ | |
4512 lpmem->dwMemoryLoad = 0; | |
4513 lpmem->dwTotalPhys = 16*1024*1024; | |
4514 lpmem->dwAvailPhys = 16*1024*1024; | |
4515 lpmem->dwTotalPageFile = 16*1024*1024; | |
4516 lpmem->dwAvailPageFile = 16*1024*1024; | |
4517 } | |
4518 expGetSystemInfo(&si); | |
4519 lpmem->dwTotalVirtual = si.lpMaximumApplicationAddress-si.lpMinimumApplicationAddress; | |
4520 /* FIXME: we should track down all the already allocated VM pages and substract them, for now arbitrarily remove 64KB so that it matches NT */ | |
4521 lpmem->dwAvailVirtual = lpmem->dwTotalVirtual-64*1024; | |
4522 memcpy(&cached_memstatus,lpmem,sizeof(MEMORYSTATUS)); | |
4523 cache_lastchecked = time(NULL); | |
4524 | |
4525 /* it appears some memory display programs want to divide by these values */ | |
4526 if(lpmem->dwTotalPageFile==0) | |
4527 lpmem->dwTotalPageFile++; | |
4528 | |
4529 if(lpmem->dwAvailPageFile==0) | |
4530 lpmem->dwAvailPageFile++; | |
4531 } | |
4532 | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4533 static INT WINAPI expGetThreadPriority(HANDLE hthread) |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4534 { |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4535 dbgprintf("GetThreadPriority(%p)\n",hthread); |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4536 return 0; |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4537 } |
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4538 |
5234 | 4539 /********************************************************************** |
4540 * SetThreadPriority [KERNEL32.@] Sets priority for thread. | |
4541 * | |
4542 * RETURNS | |
4543 * Success: TRUE | |
4544 * Failure: FALSE | |
4545 */ | |
4546 static WIN_BOOL WINAPI expSetThreadPriority( | |
4547 HANDLE hthread, /* [in] Handle to thread */ | |
4548 INT priority) /* [in] Thread priority level */ | |
4549 { | |
4550 dbgprintf("SetThreadPriority(%p,%d)\n",hthread,priority); | |
4551 return TRUE; | |
4552 } | |
4553 | |
4554 static void WINAPI expExitProcess( DWORD status ) | |
4555 { | |
8451 | 4556 printf("EXIT - code %ld\n",status); |
5234 | 4557 exit(status); |
4558 } | |
4559 | |
4560 static INT WINAPI expMessageBoxA(HWND hWnd, LPCSTR text, LPCSTR title, UINT type){ | |
4561 printf("MSGBOX '%s' '%s' (%d)\n",text,title,type); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4562 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4563 if (type == MB_ICONHAND && !strlen(text) && !strlen(title)) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4564 return IDIGNORE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4565 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4566 return IDOK; |
5234 | 4567 } |
4568 | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4569 /* these are needed for mss1 */ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4570 |
21368 | 4571 /** |
4572 * \brief this symbol is defined within exp_EH_prolog_dummy | |
4573 * \param dest jump target | |
4574 */ | |
4575 void exp_EH_prolog(void *dest); | |
4576 //! just a dummy function that acts a container for the asm section | |
4577 void exp_EH_prolog_dummy(void) { | |
4578 asm volatile ( | |
4579 // take care, this "function" may not change flags or | |
4580 // registers besides eax (which is also why we can't use | |
4581 // exp_EH_prolog_dummy directly) | |
4582 MANGLE(exp_EH_prolog)": \n\t" | |
4583 "pop %eax \n\t" | |
4584 "push %ebp \n\t" | |
4585 "mov %esp, %ebp \n\t" | |
4586 "lea -12(%esp), %esp \n\t" | |
4587 "jmp *%eax \n\t" | |
4588 ); | |
4589 } | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4590 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4591 #include <netinet/in.h> |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4592 static WINAPI inline unsigned long int exphtonl(unsigned long int hostlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4593 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4594 // dbgprintf("htonl(%x) => %x\n", hostlong, htonl(hostlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4595 return htonl(hostlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4596 } |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4597 |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4598 static WINAPI inline unsigned long int expntohl(unsigned long int netlong) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4599 { |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4600 // dbgprintf("ntohl(%x) => %x\n", netlong, ntohl(netlong)); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4601 return ntohl(netlong); |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
4602 } |
7386 | 4603 static void WINAPI expVariantInit(void* p) |
4604 { | |
4605 printf("InitCommonControls called!\n"); | |
4606 return; | |
4607 } | |
2779 | 4608 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4609 static int WINAPI expRegisterClassA(const void/*WNDCLASSA*/ *wc) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4610 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4611 dbgprintf("RegisterClassA(%p) => random id\n", wc); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4612 return time(NULL); /* be precise ! */ |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4613 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4614 |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4615 static int WINAPI expUnregisterClassA(const char *className, HINSTANCE hInstance) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4616 { |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4617 dbgprintf("UnregisterClassA(%s, %p) => 0\n", className, hInstance); |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4618 return 0; |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4619 } |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
4620 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4621 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4622 /* should be fixed bcs it's not fully strlen equivalent */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4623 static int expSysStringByteLen(void *str) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4624 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4625 dbgprintf("SysStringByteLen(%p) => %d\n", str, strlen(str)); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4626 return strlen(str); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4627 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4628 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4629 static int expDirectDrawCreate(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4630 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4631 dbgprintf("DirectDrawCreate(...) => NULL\n"); |
8451 | 4632 return 0; |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4633 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4634 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4635 #if 1 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4636 typedef struct tagPALETTEENTRY { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4637 BYTE peRed; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4638 BYTE peGreen; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4639 BYTE peBlue; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4640 BYTE peFlags; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4641 } PALETTEENTRY; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4642 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4643 /* reversed the first 2 entries */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4644 typedef struct tagLOGPALETTE { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4645 WORD palNumEntries; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4646 WORD palVersion; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4647 PALETTEENTRY palPalEntry[1]; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4648 } LOGPALETTE; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4649 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4650 static HPALETTE WINAPI expCreatePalette(CONST LOGPALETTE *lpgpl) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4651 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4652 HPALETTE test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4653 int i; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4654 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4655 dbgprintf("CreatePalette(%x) => NULL\n", lpgpl); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4656 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4657 i = sizeof(LOGPALETTE)+((lpgpl->palNumEntries-1)*sizeof(PALETTEENTRY)); |
8451 | 4658 test = (HPALETTE)malloc(i); |
4659 memcpy((void *)test, lpgpl, i); | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4660 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4661 return test; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4662 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4663 #else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4664 static int expCreatePalette(void) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4665 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4666 dbgprintf("CreatePalette(...) => NULL\n"); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4667 return NULL; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4668 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4669 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4670 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4671 static int WINAPI expGetClientRect(HWND win, RECT *r) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4672 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4673 dbgprintf("GetClientRect(0x%x, 0x%x) => 1\n", win, r); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4674 r->right = PSEUDO_SCREEN_WIDTH; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4675 r->left = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4676 r->bottom = PSEUDO_SCREEN_HEIGHT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4677 r->top = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4678 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4679 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4680 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4681 #if 0 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4682 typedef struct tagPOINT { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4683 LONG x; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4684 LONG y; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4685 } POINT, *PPOINT; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4686 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4687 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4688 static int WINAPI expClientToScreen(HWND win, POINT *p) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4689 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4690 dbgprintf("ClientToScreen(0x%x, 0x%x = %d,%d) => 1\n", win, p, p->x, p->y); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4691 p->x = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4692 p->y = 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4693 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4694 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4695 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4696 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4697 /* for m3jpeg */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4698 static int WINAPI expSetThreadIdealProcessor(HANDLE thread, int proc) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4699 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4700 dbgprintf("SetThreadIdealProcessor(0x%x, %x) => 0\n", thread, proc); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4701 return 0; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4702 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4703 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4704 static int WINAPI expMessageBeep(int type) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4705 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4706 dbgprintf("MessageBeep(%d) => 1\n", type); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4707 return 1; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4708 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4709 |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4710 static int WINAPI expDialogBoxParamA(void *inst, const char *name, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4711 HWND parent, void *dialog_func, void *init_param) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4712 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4713 dbgprintf("DialogBoxParamA(0x%x, 0x%x = %s, 0x%x, 0x%x, 0x%x) => 0x42424242\n", |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4714 inst, name, name, parent, dialog_func, init_param); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4715 return 0x42424242; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4716 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4717 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4718 static void WINAPI expRegisterClipboardFormatA(const char *name) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4719 dbgprintf("RegisterClipboardFormatA(0x%x = %s)\n", name, name); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4720 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4721 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4722 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4723 static void *exprealloc(void *ptr, size_t size) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4724 { |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4725 dbgprintf("realloc(0x%x, %x)\n", ptr, size); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4726 if (!ptr) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4727 return my_mreq(size,0); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4728 else |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4729 return my_realloc(ptr, size); |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4730 } |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4731 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4732 /* Fake GetOpenFileNameA from comdlg32.dll for ViVD codec */ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4733 static WIN_BOOL WINAPI expGetOpenFileNameA(/*LPOPENFILENAMEA*/ void* lpfn) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4734 { |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4735 return 1; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4736 } |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
4737 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4738 static char * WINAPI expPathFindExtensionA(const char *path) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4739 char *ext; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4740 if (!path) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4741 ext = NULL; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4742 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4743 ext = strrchr(path, '.'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4744 if (!ext) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4745 ext = &path[strlen(path)]; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4746 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4747 dbgprintf("PathFindExtensionA(0x%x = %s) => 0x%x, %s\n", path, path, ext, ext); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4748 return ext; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4749 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4750 |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4751 static char * WINAPI expPathFindFileNameA(const char *path) { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4752 char *name; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4753 if (!path || strlen(path) < 2) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4754 name = path; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4755 else { |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4756 name = strrchr(path - 1, '\\'); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4757 if (!name) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4758 name = path; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4759 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4760 dbgprintf("PathFindFileNameA(0x%x = %s) => 0x%x, %s\n", path, path, name, name); |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4761 return name; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4762 } |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
4763 |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4764 static double expfloor(double x) |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4765 { |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4766 dbgprintf("floor(%lf)\n", x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4767 return floor(x); |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4768 } |
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
4769 |
13751 | 4770 #define FPU_DOUBLE(var) double var; \ |
4771 __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : ) | |
4772 | |
4773 static double exp_CIcos(void) | |
4774 { | |
4775 FPU_DOUBLE(x); | |
4776 | |
4777 dbgprintf("_CIcos(%lf)\n", x); | |
4778 return cos(x); | |
4779 } | |
4780 | |
4781 static double exp_CIsin(void) | |
4782 { | |
4783 FPU_DOUBLE(x); | |
4784 | |
4785 dbgprintf("_CIsin(%lf)\n", x); | |
4786 return sin(x); | |
4787 } | |
4788 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4789 static double exp_CIsqrt(void) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4790 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4791 FPU_DOUBLE(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4792 |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4793 dbgprintf("_CIsqrt(%lf)\n", x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4794 return sqrt(x); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4795 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4796 |
17071 | 4797 /* Needed by rp8 sipr decoder */ |
4798 static LPSTR WINAPI expCharNextA(LPCSTR ptr) | |
4799 { | |
4800 if (!*ptr) return (LPSTR)ptr; | |
4801 // dbgprintf("CharNextA(0x%08x), %s\n", ptr, ptr); | |
4802 return (LPSTR)(ptr + 1); | |
4803 } | |
4804 | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4805 // Fake implementation, needed by wvc1dmod.dll |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4806 static int WINAPI expPropVariantClear(void *pvar) |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4807 { |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4808 // dbgprintf("PropVariantclear (0x%08x), %s\n", ptr, ptr); |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4809 return 1; |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4810 } |
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4811 |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4812 // This define is fake, the real thing is a struct |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4813 #define LPDEVMODEA void* |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4814 // Dummy implementation, always return 1 |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4815 // Required for frapsvid.dll 2.8.1, return value does not matter |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4816 static WIN_BOOL WINAPI expEnumDisplaySettingsA(LPCSTR name ,DWORD n, |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4817 LPDEVMODEA devmode) |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4818 { |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4819 dbgprintf("EnumDisplaySettingsA (dummy) => 1\n"); |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4820 return 1; |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4821 } |
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
4822 |
1 | 4823 struct exports |
4824 { | |
4825 char name[64]; | |
4826 int id; | |
4827 void* func; | |
4828 }; | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
4829 struct libs |
1 | 4830 { |
4831 char name[64]; | |
4832 int length; | |
4833 struct exports* exps; | |
4834 }; | |
4835 | |
4836 #define FF(X,Y) \ | |
3465 | 4837 {#X, Y, (void*)exp##X}, |
4838 | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
4839 #define UNDEFF(X, Y) \ |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
4840 {#X, Y, (void*)-1}, |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
4841 |
3465 | 4842 struct exports exp_kernel32[]= |
4843 { | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4844 FF(GetVolumeInformationA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4845 FF(GetDriveTypeA,-1) |
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
4846 FF(GetLogicalDriveStringsA,-1) |
3465 | 4847 FF(IsBadWritePtr, 357) |
4848 FF(IsBadReadPtr, 354) | |
4849 FF(IsBadStringPtrW, -1) | |
4850 FF(IsBadStringPtrA, -1) | |
4851 FF(DisableThreadLibraryCalls, -1) | |
4852 FF(CreateThread, -1) | |
4853 FF(CreateEventA, -1) | |
4854 FF(SetEvent, -1) | |
4855 FF(ResetEvent, -1) | |
4856 FF(WaitForSingleObject, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4857 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4858 FF(WaitForMultipleObjects, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4859 FF(ExitThread, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4860 FF(CreateMutexA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4861 FF(ReleaseMutex,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4862 #endif |
3465 | 4863 FF(GetSystemInfo, -1) |
4864 FF(GetVersion, 332) | |
4865 FF(HeapCreate, 461) | |
4866 FF(HeapAlloc, -1) | |
4867 FF(HeapDestroy, -1) | |
4868 FF(HeapFree, -1) | |
4869 FF(HeapSize, -1) | |
4870 FF(HeapReAlloc,-1) | |
4871 FF(GetProcessHeap, -1) | |
4872 FF(VirtualAlloc, -1) | |
4873 FF(VirtualFree, -1) | |
4874 FF(InitializeCriticalSection, -1) | |
4875 FF(EnterCriticalSection, -1) | |
4876 FF(LeaveCriticalSection, -1) | |
4877 FF(DeleteCriticalSection, -1) | |
4878 FF(TlsAlloc, -1) | |
4879 FF(TlsFree, -1) | |
4880 FF(TlsGetValue, -1) | |
4881 FF(TlsSetValue, -1) | |
4882 FF(GetCurrentThreadId, -1) | |
4883 FF(GetCurrentProcess, -1) | |
4884 FF(LocalAlloc, -1) | |
4885 FF(LocalReAlloc,-1) | |
4886 FF(LocalLock, -1) | |
4887 FF(GlobalAlloc, -1) | |
4888 FF(GlobalReAlloc, -1) | |
4889 FF(GlobalLock, -1) | |
4890 FF(GlobalSize, -1) | |
4891 FF(MultiByteToWideChar, 427) | |
4892 FF(WideCharToMultiByte, -1) | |
4893 FF(GetVersionExA, -1) | |
4894 FF(CreateSemaphoreA, -1) | |
4895 FF(QueryPerformanceCounter, -1) | |
4896 FF(QueryPerformanceFrequency, -1) | |
4897 FF(LocalHandle, -1) | |
4898 FF(LocalUnlock, -1) | |
4899 FF(LocalFree, -1) | |
4900 FF(GlobalHandle, -1) | |
4901 FF(GlobalUnlock, -1) | |
4902 FF(GlobalFree, -1) | |
4903 FF(LoadResource, -1) | |
4904 FF(ReleaseSemaphore, -1) | |
4905 FF(FindResourceA, -1) | |
4906 FF(LockResource, -1) | |
4907 FF(FreeResource, -1) | |
4908 FF(SizeofResource, -1) | |
4909 FF(CloseHandle, -1) | |
4910 FF(GetCommandLineA, -1) | |
4911 FF(GetEnvironmentStringsW, -1) | |
4912 FF(FreeEnvironmentStringsW, -1) | |
4913 FF(FreeEnvironmentStringsA, -1) | |
4914 FF(GetEnvironmentStrings, -1) | |
4915 FF(GetStartupInfoA, -1) | |
4916 FF(GetStdHandle, -1) | |
4917 FF(GetFileType, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4918 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4919 FF(GetFileAttributesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4920 #endif |
3465 | 4921 FF(SetHandleCount, -1) |
4922 FF(GetACP, -1) | |
4923 FF(GetModuleFileNameA, -1) | |
4924 FF(SetUnhandledExceptionFilter, -1) | |
4925 FF(LoadLibraryA, -1) | |
4926 FF(GetProcAddress, -1) | |
4927 FF(FreeLibrary, -1) | |
4928 FF(CreateFileMappingA, -1) | |
4929 FF(OpenFileMappingA, -1) | |
4930 FF(MapViewOfFile, -1) | |
4931 FF(UnmapViewOfFile, -1) | |
4932 FF(Sleep, -1) | |
4933 FF(GetModuleHandleA, -1) | |
4934 FF(GetProfileIntA, -1) | |
4935 FF(GetPrivateProfileIntA, -1) | |
4936 FF(GetPrivateProfileStringA, -1) | |
4937 FF(WritePrivateProfileStringA, -1) | |
4938 FF(GetLastError, -1) | |
4939 FF(SetLastError, -1) | |
4940 FF(InterlockedIncrement, -1) | |
4941 FF(InterlockedDecrement, -1) | |
4942 FF(GetTimeZoneInformation, -1) | |
4943 FF(OutputDebugStringA, -1) | |
4944 FF(GetLocalTime, -1) | |
4945 FF(GetSystemTime, -1) | |
7386 | 4946 FF(GetSystemTimeAsFileTime, -1) |
3465 | 4947 FF(GetEnvironmentVariableA, -1) |
5744
16a7eee0aca3
added SetEnvironmentVariableA for UCOD-ClearVideo DLL
alex
parents:
5742
diff
changeset
|
4948 FF(SetEnvironmentVariableA, -1) |
3465 | 4949 FF(RtlZeroMemory,-1) |
4950 FF(RtlMoveMemory,-1) | |
4951 FF(RtlFillMemory,-1) | |
4952 FF(GetTempPathA,-1) | |
4953 FF(FindFirstFileA,-1) | |
4954 FF(FindNextFileA,-1) | |
4955 FF(FindClose,-1) | |
4956 FF(FileTimeToLocalFileTime,-1) | |
4957 FF(DeleteFileA,-1) | |
4958 FF(ReadFile,-1) | |
4959 FF(WriteFile,-1) | |
4960 FF(SetFilePointer,-1) | |
4961 FF(GetTempFileNameA,-1) | |
4962 FF(CreateFileA,-1) | |
4963 FF(GetSystemDirectoryA,-1) | |
4964 FF(GetWindowsDirectoryA,-1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4965 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4966 FF(GetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4967 FF(SetCurrentDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4968 FF(CreateDirectoryA,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4969 #endif |
5234 | 4970 FF(GetShortPathNameA,-1) |
5739
b7e0cf4cb7a9
fixed mp_msg, fixed CreateFile for VDub, added GetFullPathName for VDub, cleaned up a bit the critisecs
alex
parents:
5234
diff
changeset
|
4971 FF(GetFullPathNameA,-1) |
3465 | 4972 FF(SetErrorMode, -1) |
4973 FF(IsProcessorFeaturePresent, -1) | |
4974 FF(GetProcessAffinityMask, -1) | |
4975 FF(InterlockedExchange, -1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
4976 FF(InterlockedCompareExchange, -1) |
3465 | 4977 FF(MulDiv, -1) |
4978 FF(lstrcmpiA, -1) | |
4979 FF(lstrlenA, -1) | |
4980 FF(lstrcpyA, -1) | |
4981 FF(lstrcatA, -1) | |
4982 FF(lstrcpynA,-1) | |
4983 FF(GetProcessVersion,-1) | |
4984 FF(GetCurrentThread,-1) | |
4985 FF(GetOEMCP,-1) | |
4986 FF(GetCPInfo,-1) | |
4987 FF(DuplicateHandle,-1) | |
4988 FF(GetTickCount, -1) | |
4989 FF(SetThreadAffinityMask,-1) | |
5234 | 4990 FF(GetCurrentProcessId,-1) |
4991 FF(GlobalMemoryStatus,-1) | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
4992 FF(GetThreadPriority,-1) |
5234 | 4993 FF(SetThreadPriority,-1) |
4994 FF(ExitProcess,-1) | |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
4995 {"LoadLibraryExA", -1, (void*)&LoadLibraryExA}, |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
4996 FF(SetThreadIdealProcessor,-1) |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
4997 FF(SetProcessAffinityMask, -1) |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
4998 UNDEFF(FlsAlloc, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
4999 UNDEFF(FlsGetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5000 UNDEFF(FlsSetValue, -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5001 UNDEFF(FlsFree, -1) |
1 | 5002 }; |
5003 | |
5004 struct exports exp_msvcrt[]={ | |
3465 | 5005 FF(malloc, -1) |
5006 FF(_initterm, -1) | |
7386 | 5007 FF(__dllonexit, -1) |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5008 FF(_snprintf,-1) |
3465 | 5009 FF(free, -1) |
5010 {"??3@YAXPAX@Z", -1, expdelete}, | |
5011 {"??2@YAPAXI@Z", -1, expnew}, | |
5012 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
16632
bdc49c9c419e
Several minor fixes: Correctly advertise SSE and SSE2 instruction sets,
reimar
parents:
16338
diff
changeset
|
5013 {"_winver",-1,(void*)&_winver}, |
3465 | 5014 FF(strrchr, -1) |
5015 FF(strchr, -1) | |
5016 FF(strlen, -1) | |
5017 FF(strcpy, -1) | |
9397 | 5018 FF(strncpy, -1) |
3465 | 5019 FF(wcscpy, -1) |
5020 FF(strcmp, -1) | |
5021 FF(strncmp, -1) | |
5022 FF(strcat, -1) | |
5023 FF(_stricmp,-1) | |
5024 FF(_strdup,-1) | |
5025 FF(_setjmp3,-1) | |
5026 FF(isalnum, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5027 FF(isspace, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5028 FF(isalpha, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5029 FF(isdigit, -1) |
3465 | 5030 FF(memmove, -1) |
5031 FF(memcmp, -1) | |
3672
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5032 FF(memset, -1) |
1d48df12001b
fixes for vdub plugin support - by Fredrik Kuivinen <freku045@student.liu.se>
arpi
parents:
3547
diff
changeset
|
5033 FF(memcpy, -1) |
3465 | 5034 FF(time, -1) |
5035 FF(rand, -1) | |
5036 FF(srand, -1) | |
5037 FF(log10, -1) | |
5038 FF(pow, -1) | |
5039 FF(cos, -1) | |
5040 FF(_ftol,-1) | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5041 FF(_CIpow,-1) |
13751 | 5042 FF(_CIcos,-1) |
5043 FF(_CIsin,-1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5044 FF(_CIsqrt,-1) |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5045 FF(ldexp,-1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5046 FF(frexp,-1) |
3465 | 5047 FF(sprintf,-1) |
5048 FF(sscanf,-1) | |
5049 FF(fopen,-1) | |
5050 FF(fprintf,-1) | |
5051 FF(printf,-1) | |
5052 FF(getenv,-1) | |
13598
7a626d236929
Windows Media Image (WMVP) can be decoded with WMV9 dmo codec
rtognimp
parents:
13379
diff
changeset
|
5053 FF(floor,-1) |
15474 | 5054 /* needed by frapsvid.dll */ |
5055 {"strstr",-1,(char *)&strstr}, | |
5056 {"qsort",-1,(void *)&qsort}, | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5057 FF(_EH_prolog,-1) |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5058 FF(calloc,-1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5059 {"ceil",-1,(void*)&ceil}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5060 /* needed by imagepower mjpeg2k */ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5061 {"clock",-1,(void*)&clock}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5062 {"memchr",-1,(void*)&memchr}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5063 {"vfprintf",-1,(void*)&vfprintf}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5064 // {"realloc",-1,(void*)&realloc}, |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5065 FF(realloc,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5066 {"puts",-1,(void*)&puts} |
1 | 5067 }; |
5068 struct exports exp_winmm[]={ | |
3465 | 5069 FF(GetDriverModuleHandle, -1) |
5070 FF(timeGetTime, -1) | |
5071 FF(DefDriverProc, -1) | |
5072 FF(OpenDriverA, -1) | |
5073 FF(OpenDriver, -1) | |
5234 | 5074 FF(timeGetDevCaps, -1) |
5075 FF(timeBeginPeriod, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5076 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5077 FF(timeEndPeriod, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5078 FF(waveOutGetNumDevs, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5079 #endif |
1 | 5080 }; |
5081 struct exports exp_user32[]={ | |
12066
792eec413bd5
Support for Alparysoft lossless video codec (DShow and VfW)
rtognimp
parents:
12059
diff
changeset
|
5082 FF(LoadIconA,-1) |
3465 | 5083 FF(LoadStringA, -1) |
5084 FF(wsprintfA, -1) | |
5085 FF(GetDC, -1) | |
5086 FF(GetDesktopWindow, -1) | |
5087 FF(ReleaseDC, -1) | |
5088 FF(IsRectEmpty, -1) | |
5089 FF(LoadCursorA,-1) | |
5090 FF(SetCursor,-1) | |
5091 FF(GetCursorPos,-1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5092 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5093 FF(ShowCursor,-1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5094 #endif |
3465 | 5095 FF(RegisterWindowMessageA,-1) |
5096 FF(GetSystemMetrics,-1) | |
5097 FF(GetSysColor,-1) | |
5098 FF(GetSysColorBrush,-1) | |
5099 FF(GetWindowDC, -1) | |
5100 FF(DrawTextA, -1) | |
5234 | 5101 FF(MessageBoxA, -1) |
5752
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5102 FF(RegisterClassA, -1) |
3f6b724efe83
RegisterClassA and UnregisterClassA for VoxWare RT24 speech codec ACM
alex
parents:
5751
diff
changeset
|
5103 FF(UnregisterClassA, -1) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5104 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5105 FF(GetWindowRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5106 FF(MonitorFromWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5107 FF(MonitorFromRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5108 FF(MonitorFromPoint, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5109 FF(EnumDisplayMonitors, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5110 FF(GetMonitorInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5111 FF(EnumDisplayDevicesA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5112 FF(GetClientRect, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5113 FF(ClientToScreen, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5114 FF(IsWindowVisible, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5115 FF(GetActiveWindow, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5116 FF(GetClassNameA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5117 FF(GetClassInfoA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5118 FF(GetWindowLongA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5119 FF(EnumWindows, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5120 FF(GetWindowThreadProcessId, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5121 FF(CreateWindowExA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5122 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5123 FF(MessageBeep, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5124 FF(DialogBoxParamA, -1) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5125 FF(RegisterClipboardFormatA, -1) |
17071 | 5126 FF(CharNextA, -1) |
20652
0c342e00c63d
Dummy EnumDisplaySettingsA, required by frapsvid.dll 2.8.1
rtogni
parents:
18878
diff
changeset
|
5127 FF(EnumDisplaySettingsA, -1) |
1 | 5128 }; |
5129 struct exports exp_advapi32[]={ | |
3465 | 5130 FF(RegCloseKey, -1) |
12059
937a520811e9
Add support for Lead MCMW 2.0 wavelet codec eval version
rtognimp
parents:
11853
diff
changeset
|
5131 FF(RegCreateKeyA, -1) |
3465 | 5132 FF(RegCreateKeyExA, -1) |
5133 FF(RegEnumKeyExA, -1) | |
5134 FF(RegEnumValueA, -1) | |
5135 FF(RegOpenKeyA, -1) | |
5136 FF(RegOpenKeyExA, -1) | |
5137 FF(RegQueryValueExA, -1) | |
5138 FF(RegSetValueExA, -1) | |
9896
acf96aea152c
Vanguard codecs support, patch by Andreas Hess <jaska (at) gmx (dot) net>
rtognimp
parents:
9592
diff
changeset
|
5139 FF(RegQueryInfoKeyA, -1) |
1 | 5140 }; |
5141 struct exports exp_gdi32[]={ | |
3465 | 5142 FF(CreateCompatibleDC, -1) |
5143 FF(CreateFontA, -1) | |
5144 FF(DeleteDC, -1) | |
5145 FF(DeleteObject, -1) | |
5146 FF(GetDeviceCaps, -1) | |
5147 FF(GetSystemPaletteEntries, -1) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5148 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5149 FF(CreatePalette, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5150 FF(GetObjectA, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5151 FF(CreateRectRgn, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5152 #endif |
1 | 5153 }; |
5154 struct exports exp_version[]={ | |
3465 | 5155 FF(GetFileVersionInfoSizeA, -1) |
1 | 5156 }; |
128 | 5157 struct exports exp_ole32[]={ |
3465 | 5158 FF(CoCreateFreeThreadedMarshaler,-1) |
5159 FF(CoCreateInstance, -1) | |
5160 FF(CoInitialize, -1) | |
24770
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5161 FF(CoInitializeEx, -1) |
6a8be4b73d07
Add Coinitialize function to vfw encoder and win32 loader.
compn
parents:
24401
diff
changeset
|
5162 FF(CoUninitialize, -1) |
3465 | 5163 FF(CoTaskMemAlloc, -1) |
5164 FF(CoTaskMemFree, -1) | |
5165 FF(StringFromGUID2, -1) | |
18580
d444160ee47c
Support WVC1 decoding via dmo binary codec wvc1dmod.dll
rtogni
parents:
17932
diff
changeset
|
5166 FF(PropVariantClear, -1) |
128 | 5167 }; |
3465 | 5168 // do we really need crtdll ??? |
5169 // msvcrt is the correct place probably... | |
130 | 5170 struct exports exp_crtdll[]={ |
3465 | 5171 FF(memcpy, -1) |
5172 FF(wcscpy, -1) | |
130 | 5173 }; |
2069 | 5174 struct exports exp_comctl32[]={ |
3465 | 5175 FF(StringFromGUID2, -1) |
5176 FF(InitCommonControls, 17) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5177 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5178 FF(CreateUpDownControl, 16) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5179 #endif |
2069 | 5180 }; |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5181 struct exports exp_wsock32[]={ |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5182 FF(htonl,8) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5183 FF(ntohl,14) |
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5184 }; |
3465 | 5185 struct exports exp_msdmo[]={ |
5186 FF(memcpy, -1) // just test | |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5187 FF(MoCopyMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5188 FF(MoCreateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5189 FF(MoDeleteMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5190 FF(MoDuplicateMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5191 FF(MoFreeMediaType, -1) |
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5192 FF(MoInitMediaType, -1) |
7386 | 5193 }; |
5194 struct exports exp_oleaut32[]={ | |
5195 FF(VariantInit, 8) | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5196 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5197 FF(SysStringByteLen, 149) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5198 #endif |
3465 | 5199 }; |
6359 | 5200 |
5201 /* realplayer8: | |
5202 DLL Name: PNCRT.dll | |
5203 vma: Hint/Ord Member-Name | |
5204 22ff4 615 free | |
5205 2302e 250 _ftol | |
5206 22fea 666 malloc | |
5207 2303e 609 fprintf | |
5208 2305e 167 _adjust_fdiv | |
5209 23052 280 _initterm | |
5210 | |
5211 22ffc 176 _beginthreadex | |
5212 23036 284 _iob | |
5213 2300e 85 __CxxFrameHandler | |
5214 23022 411 _purecall | |
5215 */ | |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5216 #ifdef REALPLAYER |
6359 | 5217 struct exports exp_pncrt[]={ |
5218 FF(malloc, -1) // just test | |
5219 FF(free, -1) // just test | |
5220 FF(fprintf, -1) // just test | |
5221 {"_adjust_fdiv", -1, (void*)&_adjust_fdiv}, | |
5222 FF(_ftol,-1) | |
5223 FF(_initterm, -1) | |
9397 | 5224 {"??3@YAXPAX@Z", -1, expdelete}, |
5225 {"??2@YAPAXI@Z", -1, expnew}, | |
5226 FF(__dllonexit, -1) | |
5227 FF(strncpy, -1) | |
5228 FF(_CIpow,-1) | |
5229 FF(calloc,-1) | |
5230 FF(memmove, -1) | |
17072
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5231 FF(ldexp, -1) |
4c50b2f11ad8
export ldexp() and frexp() in pncrt, they are needed by rp8 sipr dll
rtognimp
parents:
17071
diff
changeset
|
5232 FF(frexp, -1) |
6359 | 5233 }; |
7386 | 5234 #endif |
3465 | 5235 |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5236 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5237 struct exports exp_ddraw[]={ |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5238 FF(DirectDrawCreate, -1) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5239 }; |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5240 #endif |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5241 |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5242 struct exports exp_comdlg32[]={ |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5243 FF(GetOpenFileNameA, -1) |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5244 }; |
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5245 |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5246 struct exports exp_shlwapi[]={ |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5247 FF(PathFindExtensionA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5248 FF(PathFindFileNameA, -1) |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5249 }; |
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5250 |
1 | 5251 #define LL(X) \ |
3465 | 5252 {#X".dll", sizeof(exp_##X)/sizeof(struct exports), exp_##X}, |
1 | 5253 |
5254 struct libs libraries[]={ | |
3465 | 5255 LL(kernel32) |
5256 LL(msvcrt) | |
5257 LL(winmm) | |
5258 LL(user32) | |
5259 LL(advapi32) | |
5260 LL(gdi32) | |
5261 LL(version) | |
5262 LL(ole32) | |
7386 | 5263 LL(oleaut32) |
3465 | 5264 LL(crtdll) |
5265 LL(comctl32) | |
5742
310c836e3fb3
added _EH_prolog and some wsock32 funcs needed by mss1 codec -> mss1 codec works now
alex
parents:
5740
diff
changeset
|
5266 LL(wsock32) |
3465 | 5267 LL(msdmo) |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5268 #ifdef REALPLAYER |
6359 | 5269 LL(pncrt) |
7386 | 5270 #endif |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5271 #ifdef QTX |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5272 LL(ddraw) |
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5273 #endif |
10818
fa41f83edff0
ViVD v2 codec (fourcc gxve) support with vfw dll ViVD2.dll
rtognimp
parents:
10139
diff
changeset
|
5274 LL(comdlg32) |
16338
cbd034008ee0
Support On2 VP7 via binary decoder by implementing USER32.RegisterClipboardFormatA,
reimar
parents:
15566
diff
changeset
|
5275 LL(shlwapi) |
1 | 5276 }; |
7386 | 5277 |
22406
9977fe541c4d
The original asm code for the stub returned 0, restore that behaviour.
reimar
parents:
22367
diff
changeset
|
5278 static WIN_BOOL WINAPI ext_stubs(void) |
3465 | 5279 { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5280 volatile int idx = 0xdeadabcd; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5281 // make sure gcc does not do eip-relative call or something like that |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5282 volatile void (*my_printf)(char *, char *) = (void *)0xdeadfbcd; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5283 my_printf("Called unk_%s\n", export_names[idx]); |
22406
9977fe541c4d
The original asm code for the stub returned 0, restore that behaviour.
reimar
parents:
22367
diff
changeset
|
5284 return 0; |
3465 | 5285 } |
5286 | |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5287 #define MAX_STUB_SIZE 0x60 |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5288 #define MAX_NUM_STUBS 200 |
7386 | 5289 static int pos=0; |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5290 static char *extcode = NULL; |
3465 | 5291 |
8293
f436f419e5ab
avifile sync (added only the new functions, all cosmetics ignored)
arpi
parents:
8285
diff
changeset
|
5292 static void* add_stub(void) |
3465 | 5293 { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5294 int i; |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5295 int found = 0; |
7386 | 5296 // generated code in runtime! |
21462
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5297 char* answ; |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5298 if (!extcode) |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5299 extcode = mmap_anon(NULL, MAX_NUM_STUBS * MAX_STUB_SIZE, |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5300 PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, 0); |
bd6a451d2588
mmap memory area for generated code to avoid crashes on machines which
reimar
parents:
21461
diff
changeset
|
5301 answ = extcode + pos * MAX_STUB_SIZE; |
21366
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5302 if (pos >= MAX_NUM_STUBS) { |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5303 printf("too many stubs, expect crash\n"); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5304 return NULL; |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5305 } |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5306 memcpy(answ, ext_stubs, MAX_STUB_SIZE); |
516351d9a796
Some extra checks and safety space for add_stub function.
reimar
parents:
21365
diff
changeset
|
5307 for (i = 0; i < MAX_STUB_SIZE - 3; i++) { |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5308 int *magic = (int *)(answ + i); |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5309 if (*magic == 0xdeadabcd) { |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5310 *magic = pos; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5311 found |= 1; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5312 } |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5313 if (*magic == 0xdeadfbcd) { |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5314 *magic = (intptr_t)printf; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5315 found |= 2; |
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5316 } |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5317 } |
21461
71235c49d6ac
Fix 21381, make sure gcc does not make any ip-relative calls or similar.
reimar
parents:
21368
diff
changeset
|
5318 if (found != 3) { |
21365
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5319 printf("magic code not found in ext_subs, expect crash\n"); |
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5320 return NULL; |
fef7a6713be2
Change add_stub code to also work without -fomit-frame-pointer
reimar
parents:
21313
diff
changeset
|
5321 } |
3465 | 5322 pos++; |
5323 return (void*)answ; | |
5324 } | |
2069 | 5325 |
1 | 5326 void* LookupExternal(const char* library, int ordinal) |
5327 { | |
5328 int i,j; | |
5329 if(library==0) | |
5330 { | |
5331 printf("ERROR: library=0\n"); | |
5332 return (void*)ext_unknown; | |
5333 } | |
3465 | 5334 // printf("%x %x\n", &unk_exp1, &unk_exp2); |
1 | 5335 |
13379 | 5336 dbgprintf("External func %s:%d\n", library, ordinal); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5337 |
5770
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5338 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5339 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5340 if(strcasecmp(library, libraries[i].name)) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5341 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5342 for(j=0; j<libraries[i].length; j++) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5343 { |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5344 if(ordinal!=libraries[i].exps[j].id) |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5345 continue; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5346 //printf("Hit: 0x%p\n", libraries[i].exps[j].func); |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5347 return libraries[i].exps[j].func; |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5348 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5349 } |
ec71380bdbca
fixed IsRectEmpty, added expcalloc, ceil, exporting LoadLibraryExA, IC* for some new codecs
alex
parents:
5752
diff
changeset
|
5350 |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5351 #ifndef LOADLIB_TRY_NATIVE |
9897 | 5352 /* hack for truespeech and vssh264*/ |
13748 | 5353 if (!strcmp(library, "tsd32.dll") || !strcmp(library,"vssh264dec.dll") || !strcmp(library,"LCMW2.dll") || !strcmp(library,"VDODEC32.dll")) |
9592
b20b0c80298b
Fix for truespeech dll, patch by <dimakar(at)yahoo.com>
rtognimp
parents:
9397
diff
changeset
|
5354 #endif |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5355 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5356 { |
7386 | 5357 int hand; |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5358 WINE_MODREF *wm; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5359 void *func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5360 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5361 hand = LoadLibraryA(library); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5362 if (!hand) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5363 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5364 wm = MODULE32_LookupHMODULE(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5365 if (!wm) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5366 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5367 FreeLibrary(hand); |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5368 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5369 } |
7386 | 5370 func = PE_FindExportedFunction(wm, (LPCSTR) ordinal, 0); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5371 if (!func) |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5372 { |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5373 printf("No such ordinal in external dll\n"); |
7386 | 5374 FreeLibrary((int)hand); |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5375 goto no_dll; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5376 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5377 |
7386 | 5378 printf("External dll loaded (offset: 0x%x, func: %p)\n", |
5379 hand, func); | |
5751
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5380 return func; |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5381 } |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5382 |
271bd43aed88
loading requested library if available, and try to find function there in LookupExternal, needed for Truespeech codec
alex
parents:
5744
diff
changeset
|
5383 no_dll: |
1 | 5384 if(pos>150)return 0; |
5385 sprintf(export_names[pos], "%s:%d", library, ordinal); | |
7386 | 5386 return add_stub(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5387 } |
1 | 5388 |
5389 void* LookupExternalByName(const char* library, const char* name) | |
5390 { | |
5391 int i,j; | |
3465 | 5392 // return (void*)ext_unknown; |
1 | 5393 if(library==0) |
5394 { | |
5395 printf("ERROR: library=0\n"); | |
5396 return (void*)ext_unknown; | |
5397 } | |
22476 | 5398 if((unsigned long)name<=0xffff) |
1 | 5399 { |
22476 | 5400 return LookupExternal(library, (int)name); |
1 | 5401 } |
8279
fade8f754da0
_qtx support_ and m3jpeg,mjpeg2k fixes (some cleanup and _lot of testing needed_)
alex
parents:
8141
diff
changeset
|
5402 dbgprintf("External func %s:%s\n", library, name); |
1 | 5403 for(i=0; i<sizeof(libraries)/sizeof(struct libs); i++) |
5404 { | |
5405 if(strcasecmp(library, libraries[i].name)) | |
5406 continue; | |
5407 for(j=0; j<libraries[i].length; j++) | |
5408 { | |
5409 if(strcmp(name, libraries[i].exps[j].name)) | |
5410 continue; | |
22475
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5411 if((unsigned int)(libraries[i].exps[j].func) == -1) |
9edc4cfaeaed
Allow declaring special undefined functions that will return NULL
reimar
parents:
22406
diff
changeset
|
5412 return NULL; //undefined func |
3465 | 5413 // printf("Hit: 0x%08X\n", libraries[i].exps[j].func); |
1 | 5414 return libraries[i].exps[j].func; |
5415 } | |
5416 } | |
9897 | 5417 |
5418 #ifndef LOADLIB_TRY_NATIVE | |
5419 /* hack for vss h264 */ | |
22367
97639699240b
Update 3ivx decoder to latest version and allow it to load required library.
voroshil
parents:
21462
diff
changeset
|
5420 if (!strcmp(library,"vssh264core.dll") || !strcmp(library,"3ivx.dll")) |
9897 | 5421 #endif |
5422 /* ok, this is a hack, and a big memory leak. should be fixed. - alex */ | |
5423 { | |
5424 int hand; | |
5425 WINE_MODREF *wm; | |
5426 void *func; | |
5427 | |
5428 hand = LoadLibraryA(library); | |
5429 if (!hand) | |
5430 goto no_dll_byname; | |
5431 wm = MODULE32_LookupHMODULE(hand); | |
5432 if (!wm) | |
5433 { | |
5434 FreeLibrary(hand); | |
5435 goto no_dll_byname; | |
5436 } | |
5437 func = PE_FindExportedFunction(wm, name, 0); | |
5438 if (!func) | |
5439 { | |
5440 printf("No such name in external dll\n"); | |
5441 FreeLibrary((int)hand); | |
5442 goto no_dll_byname; | |
5443 } | |
5444 | |
5445 printf("External dll loaded (offset: 0x%x, func: %p)\n", | |
5446 hand, func); | |
5447 return func; | |
5448 } | |
5449 | |
5450 no_dll_byname: | |
3465 | 5451 if(pos>150)return 0;// to many symbols |
1 | 5452 strcpy(export_names[pos], name); |
7386 | 5453 return add_stub(); |
1 | 5454 } |
5455 | |
2069 | 5456 void my_garbagecollection(void) |
128 | 5457 { |
5458 #ifdef GARBAGE | |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5459 int unfree = 0, unfreecnt = 0; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5460 |
7386 | 5461 int max_fatal = 8; |
3134 | 5462 free_registry(); |
2651
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5463 while (last_alloc) |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5464 { |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5465 alloc_header* mem = last_alloc + 1; |
958d10763c34
partially synced with avifile... (TODO: migrate to new registry.c and driver.c)
arpi
parents:
2579
diff
changeset
|
5466 unfree += my_size(mem); |
3465 | 5467 unfreecnt++; |
7386 | 5468 if (my_release(mem) != 0) |
5469 // avoid endless loop when memory is trashed | |
5470 if (--max_fatal < 0) | |
5471 break; | |
128 | 5472 } |
12258
25310086fc95
Less verbosity by moving some debug messages from printf --> dbgprintf.
diego
parents:
12074
diff
changeset
|
5473 dbgprintf("Total Unfree %d bytes cnt %d [%p,%d]\n",unfree, unfreecnt, last_alloc, alccnt); |
128 | 5474 #endif |
3134 | 5475 g_tls = NULL; |
5476 list = NULL; | |
128 | 5477 } |