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