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