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