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