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