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