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