Rev 1635 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1635 | Rev 2010 | ||
---|---|---|---|
Line 53... | Line 53... | ||
53 | MANUAL_DESTROY equ 0x80000000 |
53 | MANUAL_DESTROY equ 0x80000000 |
Line 54... | Line 54... | ||
54 | 54 | ||
55 | DEV_PLAY equ 1 |
55 | DEV_PLAY equ 1 |
56 | DEV_STOP equ 2 |
56 | DEV_STOP equ 2 |
- | 57 | DEV_CALLBACK equ 3 |
|
Line 57... | Line 58... | ||
57 | DEV_CALLBACK equ 3 |
58 | DEV_GET_POS equ 9 |
58 | 59 | ||
59 | struc IOCTL |
60 | struc IOCTL |
60 | { .handle dd ? |
61 | { .handle dd ? |
Line 157... | Line 158... | ||
157 | input equ IOCTL.input |
158 | input equ IOCTL.input |
158 | inp_size equ IOCTL.inp_size |
159 | inp_size equ IOCTL.inp_size |
159 | output equ IOCTL.output |
160 | output equ IOCTL.output |
160 | out_size equ IOCTL.out_size |
161 | out_size equ IOCTL.out_size |
Line -... | Line 162... | ||
- | 162 | ||
- | 163 | ||
161 | 164 | ||
- | 165 | align 4 |
|
- | 166 | ||
- | 167 | srv_calls dd service_proc.srv_getversion ; 0 |
|
- | 168 | dd service_proc.snd_create_buff ; 1 |
|
- | 169 | dd service_proc.snd_destroy_buff ; 2 |
|
- | 170 | dd service_proc.snd_setformat ; 3 |
|
- | 171 | dd service_proc.snd_getformat ; 4 |
|
- | 172 | dd service_proc.snd_reset ; 5 |
|
- | 173 | dd service_proc.snd_setpos ; 6 |
|
- | 174 | dd service_proc.snd_getpos ; 7 |
|
- | 175 | dd service_proc.snd_setbuff ; 8 |
|
- | 176 | dd service_proc.snd_out ; 9 |
|
- | 177 | dd service_proc.snd_play ; 10 |
|
- | 178 | dd service_proc.snd_stop ; 11 |
|
- | 179 | dd service_proc.snd_setvolume ; 12 |
|
- | 180 | dd service_proc.snd_getvolume ; 13 |
|
- | 181 | dd service_proc.snd_setpan ; 14 |
|
- | 182 | dd service_proc.snd_getpan ; 15 |
|
- | 183 | dd service_proc.snd_getbuffsize ; 16 |
|
- | 184 | dd service_proc.snd_getfreespace ; 17 |
|
- | 185 | dd service_proc.snd_settimebase ; 18 |
|
- | 186 | dd service_proc.snd_gettimestamp ; 19 |
|
- | 187 | srv_calls_end: |
|
162 | align 4 |
188 | |
Line 163... | Line 189... | ||
163 | proc service_proc stdcall, ioctl:dword |
189 | proc service_proc stdcall, ioctl:dword |
164 | 190 | ||
Line -... | Line 191... | ||
- | 191 | mov edi, [ioctl] |
|
- | 192 | mov eax, [edi+io_code] |
|
- | 193 | ||
- | 194 | cmp eax, (srv_calls_end-srv_calls)/4 |
|
- | 195 | ja .fail |
|
- | 196 | ||
165 | mov edi, [ioctl] |
197 | cmp eax, SND_DESTROY_BUFF |
166 | mov eax, [edi+io_code] |
198 | jb @F |
- | 199 | ||
- | 200 | ; cmp [edi+inp_size], 4 |
|
- | 201 | ; jb .fali |
|
- | 202 | ||
- | 203 | mov ebx, [edi+input] |
|
- | 204 | mov edx, [ebx] |
|
- | 205 | ||
- | 206 | cmp [edx+STREAM.magic], 'WAVE' |
|
- | 207 | jne .fail |
|
- | 208 | ||
- | 209 | cmp [edx+STREAM.size], STREAM.sizeof |
|
- | 210 | jne .fail |
|
- | 211 | ||
- | 212 | @@: |
|
- | 213 | jmp [srv_calls+eax*4] |
|
- | 214 | ||
- | 215 | ||
- | 216 | .fail: |
|
- | 217 | mov eax, -1 |
|
- | 218 | ret |
|
167 | 219 | ||
168 | cmp eax, SRV_GETVERSION |
220 | align 4 |
169 | jne @F |
221 | .srv_getversion: |
170 | mov eax, [edi+output] |
222 | mov eax, [edi+output] |
171 | cmp [edi+out_size], 4 |
223 | cmp [edi+out_size], 4 |
172 | jne .fail |
224 | jne .fail |
173 | mov eax, [eax] |
225 | mov eax, [eax] |
174 | mov [eax], dword API_VERSION |
226 | mov [eax], dword API_VERSION |
175 | xor eax, eax |
227 | xor eax, eax |
176 | ret |
228 | ret |
177 | @@: |
229 | |
178 | cmp eax, SND_CREATE_BUFF |
230 | align 4 |
179 | jne @F |
231 | .snd_create_buff: |
180 | mov ebx, [edi+input] |
232 | mov ebx, [edi+input] |
181 | stdcall CreateBuffer,[ebx],[ebx+4] |
233 | stdcall CreateBuffer,[ebx],[ebx+4] |
182 | mov edi, [ioctl] |
234 | mov edi, [ioctl] |
183 | mov ecx, [edi+output] |
235 | mov ecx, [edi+output] |
184 | mov ecx, [ecx] |
- | |
185 | mov [ecx], ebx |
- | |
186 | ret |
- | |
187 | @@: |
- | |
188 | mov ebx, [edi+input] |
- | |
189 | mov edx, [ebx] |
- | |
190 | - | ||
191 | cmp [edx+STREAM.magic], 'WAVE' |
- | |
192 | jne .fail |
- | |
Line 193... | Line 236... | ||
193 | 236 | mov ecx, [ecx] |
|
194 | cmp [edx+STREAM.size], STREAM_SIZE |
237 | mov [ecx], ebx |
195 | jne .fail |
238 | ret |
196 | 239 | ||
197 | cmp eax, SND_DESTROY_BUFF |
240 | align 4 |
198 | jne @F |
241 | .snd_destroy_buff: |
199 | mov eax, edx |
242 | mov eax, edx |
200 | call DestroyBuffer ;edx= stream |
243 | call DestroyBuffer |
201 | ret |
244 | ret |
202 | @@: |
245 | |
203 | cmp eax, SND_SETFORMAT |
- | |
204 | jne @F |
- | |
205 | stdcall SetFormat,edx,[ebx+4] |
- | |
Line -... | Line 246... | ||
- | 246 | align 4 |
|
- | 247 | .snd_setformat: |
|
206 | ret |
248 | stdcall SetFormat, edx,[ebx+4] |
207 | @@: |
249 | ret |
208 | cmp eax, SND_GETFORMAT |
250 | |
209 | jne @F |
251 | align 4 |
210 | 252 | .snd_getformat: |
|
211 | movzx eax, word [edx+STREAM.format] |
253 | movzx eax, word [edx+STREAM.format] |
212 | mov ecx, [edi+output] |
254 | mov ecx, [edi+output] |
213 | mov ecx, [ecx] |
255 | mov ecx, [ecx] |
214 | mov [ecx], eax |
256 | mov [ecx], eax |
215 | xor eax, eax |
257 | xor eax, eax |
216 | ret |
258 | ret |
217 | @@: |
259 | |
218 | cmp eax, SND_RESET |
260 | align 4 |
219 | jne @F |
261 | .snd_reset: |
220 | stdcall ResetBuffer,edx,[ebx+4] |
262 | stdcall ResetBuffer,edx,[ebx+4] |
221 | ret |
263 | ret |
222 | @@: |
264 | |
223 | cmp eax, SND_SETPOS |
265 | align 4 |
224 | jne @F |
266 | .snd_setpos: |
225 | stdcall SetBufferPos,edx,[ebx+4] |
267 | stdcall SetBufferPos,edx,[ebx+4] |
226 | ret |
268 | ret |
227 | @@: |
269 | |
228 | cmp eax, SND_GETPOS |
270 | align 4 |
229 | jne @F |
271 | .snd_getpos: |
230 | stdcall GetBufferPos, edx |
272 | stdcall GetBufferPos, edx |
231 | mov edi, [ioctl] |
273 | mov edi, [ioctl] |
232 | mov ecx, [edi+output] |
274 | mov ecx, [edi+output] |
233 | mov ecx, [ecx] |
275 | mov ecx, [ecx] |
234 | mov [ecx], ebx |
276 | mov [ecx], ebx |
235 | ret |
277 | ret |
236 | @@: |
278 | |
237 | cmp eax, SND_SETBUFF |
279 | align 4 |
- | 280 | .snd_setbuff: |
|
- | 281 | mov eax, [ebx+4] |
|
- | 282 | stdcall set_buffer, edx,eax,[ebx+8],[ebx+12] |
|
238 | jne @F |
283 | ret |
- | 284 | ||
- | 285 | align 4 |
|
- | 286 | .snd_out: |
|
- | 287 | mov eax, [ebx+4] |
|
- | 288 | stdcall wave_out, edx,eax,[ebx+8] |
|
- | 289 | ret |
|
- | 290 | ||
- | 291 | align 4 |
|
- | 292 | .snd_play: |
|
- | 293 | stdcall play_buffer, edx,[ebx+4] |
|
- | 294 | ret |
|
- | 295 | ||
- | 296 | align 4 |
|
239 | mov eax, [ebx+4] |
297 | .snd_stop: |
240 | stdcall set_buffer, edx,eax,[ebx+8],[ebx+12] |
298 | stdcall stop_buffer, edx |
241 | ret |
299 | ret |
242 | @@: |
- | |
243 | cmp eax, SND_SETVOLUME |
- | |
244 | jne @F |
- | |
Line -... | Line 300... | ||
- | 300 | ||
- | 301 | align 4 |
|
245 | stdcall SetBufferVol,edx,[ebx+4],[ebx+8] |
302 | .snd_setvolume: |
246 | ret |
303 | stdcall SetBufferVol,edx,[ebx+4],[ebx+8] |
247 | @@: |
304 | ret |
248 | cmp eax, SND_GETVOLUME |
305 | |
249 | jne @F |
306 | align 4 |
250 | 307 | .snd_getvolume: |
|
251 | mov eax, [edi+output] |
- | |
252 | mov ecx, [eax] |
308 | mov eax, [edi+output] |
253 | mov eax, [eax+4] |
309 | mov ecx, [eax] |
254 | stdcall GetBufferVol,edx,ecx,eax |
310 | mov eax, [eax+4] |
255 | ret |
311 | stdcall GetBufferVol,edx,ecx,eax |
256 | @@: |
312 | ret |
257 | cmp eax, SND_SETPAN |
313 | align 4 |
258 | jne @F |
314 | .snd_setpan: |
259 | stdcall SetBufferPan,edx,[ebx+4] |
315 | stdcall SetBufferPan,edx,[ebx+4] |
260 | ret |
316 | ret |
261 | @@: |
317 | |
262 | cmp eax, SND_GETPAN |
318 | align 4 |
263 | jne @F |
319 | .snd_getpan: |
264 | mov eax, [edx+STREAM.pan] |
- | |
265 | mov ebx, [edi+output] |
- | |
266 | mov ebx, [ebx] |
- | |
267 | mov [ebx], eax |
- | |
268 | xor eax, eax |
- | |
269 | ret |
- | |
270 | @@: |
- | |
271 | cmp eax, SND_OUT |
- | |
272 | jne @F |
- | |
273 | - | ||
274 | mov eax, [ebx+4] |
- | |
275 | stdcall wave_out, edx,eax,[ebx+8] |
- | |
276 | ret |
- | |
277 | @@: |
- | |
278 | cmp eax, SND_PLAY |
- | |
279 | jne @F |
- | |
Line 280... | Line -... | ||
280 | - | ||
281 | stdcall play_buffer, edx,[ebx+4] |
- | |
282 | ret |
320 | mov eax, [edx+STREAM.pan] |
283 | @@: |
- | |
284 | cmp eax, SND_STOP |
321 | mov ebx, [edi+output] |
285 | jne @F |
322 | mov ebx, [ebx] |
286 | 323 | mov [ebx], eax |
|
287 | stdcall stop_buffer, edx |
324 | xor eax, eax |
288 | ret |
325 | ret |
289 | @@: |
326 | |
290 | cmp eax, SND_GETBUFFSIZE |
327 | align 4 |
291 | jne @F |
- | |
292 | mov eax, [edx+STREAM.in_size] |
- | |
293 | mov ecx, [edi+output] |
- | |
Line -... | Line 328... | ||
- | 328 | .snd_getbuffsize: |
|
- | 329 | mov eax, [edx+STREAM.in_size] |
|
294 | mov ecx, [ecx] |
330 | mov ecx, [edi+output] |
295 | mov [ecx], eax |
331 | mov ecx, [ecx] |
Line 296... | Line 332... | ||
296 | xor eax, eax |
332 | mov [ecx], eax |
297 | ret |
333 | xor eax, eax |
298 | @@: |
334 | ret |
299 | cmp eax, SND_GETFREESPACE |
335 | |
300 | jne @F |
336 | align 4 |
- | 337 | .snd_getfreespace: |
|
- | 338 | test [edx+STREAM.format], PCM_OUT |
|
- | 339 | jz .fail |
|
- | 340 | ||
- | 341 | mov ebx, [edx+STREAM.in_free] |
|
- | 342 | mov ecx, [edi+output] |
|
- | 343 | mov [ecx], ebx |
|
- | 344 | xor eax, eax |
|
- | 345 | ret |
|
- | 346 | align 4 |
|
- | 347 | .snd_settimebase: |
|
- | 348 | cmp [edi+inp_size], 12 |
|
- | 349 | jne .fail |
|
- | 350 | ||
- | 351 | mov eax, [ebx] |
|
- | 352 | mov ebx, [ebx+4] |
|
- | 353 | mov dword [edx+STREAM.time_base], eax |
|
- | 354 | mov dword [edx+STREAM.time_base+4], ebx |
|
- | 355 | xor eax, eax |
|
- | 356 | ret |
|
- | 357 | ||
- | 358 | .snd_gettimestamp: |
|
- | 359 | cmp [edi+out_size], 8 |
|
- | 360 | jne .fail |
|
- | 361 | ||
- | 362 | pushfd |
|
- | 363 | cli |
|
- | 364 | ||
- | 365 | xor ebx, ebx |
|
- | 366 | push 48 |
|
- | 367 | push ebx ; local storage |
|
- | 368 | ||
- | 369 | cmp [edx+STREAM.flags], SND_STOP |
|
- | 370 | je @F |
|
- | 371 | ||
- | 372 | mov eax, esp |
|
- | 373 | ||
- | 374 | push edx |
|
- | 375 | push edi |
|
- | 376 | ||
- | 377 | push 4 ;.out_size |
|
- | 378 | push eax ;.output |
|
- | 379 | push ebx ;.inp_size |
|
- | 380 | push ebx ;.input |
|
- | 381 | push DEV_GET_POS ;.code |
|
- | 382 | push dword [hSound] ;.handle |
|
- | 383 | mov eax, esp |
|
- | 384 | ||
- | 385 | stdcall ServiceHandler, eax |
|
301 | 386 | add esp, 6*4 |
|
- | 387 | ||
- | 388 | pop edi |
|
302 | test [edx+STREAM.format], PCM_OUT |
389 | pop edx |
- | 390 | ||
- | 391 | test eax, eax |
|
- | 392 | jz @F |
|
- | 393 | ||
- | 394 | mov dword [esp], 0 ; clear offset |
|
- | 395 | @@: |
|
- | 396 | mov edi, [edi+output] |
|
- | 397 | ||
- | 398 | emms |
|
303 | jz .fail |
399 | fild qword [edx+STREAM.time_stamp] |
304 | 400 | fiadd dword [esp] ; primary buffer offset |
|
305 | mov ebx, [edx+STREAM.in_free] |
401 | fidiv dword [esp+4] ; total_samples / frequency |
Line -... | Line 402... | ||
- | 402 | fadd qword [edx+STREAM.time_base] |
|
306 | mov ecx, [edi+output] |
403 | fstp qword [edi] |
307 | mov [ecx], ebx |
404 | add esp, 8 |
308 | xor eax, eax |
405 | |
309 | ret |
406 | popfd |
310 | @@: |
407 | |
Line 350... | Line 447... | ||
350 | jnz .fail |
447 | jnz .fail |
351 | .test_ok: |
448 | .test_ok: |
Line 352... | Line 449... | ||
352 | 449 | ||
353 | call GetPid |
450 | call GetPid |
354 | mov ebx, eax |
451 | mov ebx, eax |
Line 355... | Line 452... | ||
355 | mov eax, STREAM_SIZE |
452 | mov eax, STREAM.sizeof |
356 | 453 | ||
357 | call CreateObject |
454 | call CreateObject |
358 | test eax, eax |
455 | test eax, eax |
Line 410... | Line 507... | ||
410 | mov edi, [str] |
507 | mov edi, [str] |
411 | mov ecx, [ring_size] |
508 | mov ecx, [ring_size] |
412 | mov [edi+STREAM.in_base], eax |
509 | mov [edi+STREAM.in_base], eax |
413 | mov [edi+STREAM.in_size], ecx |
510 | mov [edi+STREAM.in_size], ecx |
414 | add eax, 128 |
511 | add eax, 128 |
415 | ; sub ecx, 128 |
- | |
416 | mov [edi+STREAM.in_wp], eax |
512 | mov [edi+STREAM.in_wp], eax |
417 | mov [edi+STREAM.in_rp], eax |
513 | mov [edi+STREAM.in_rp], eax |
418 | mov [edi+STREAM.in_count], 0 |
514 | mov [edi+STREAM.in_count], 0 |
Line 419... | Line 515... | ||
419 | 515 | ||
Line 441... | Line 537... | ||
441 | 537 | ||
442 | .out_buff: |
538 | .out_buff: |
Line 443... | Line 539... | ||
443 | stdcall AllocKernelSpace, dword 128*1024 |
539 | stdcall AllocKernelSpace, dword 128*1024 |
- | 540 | ||
- | 541 | mov edi, [str] |
|
444 | 542 | xor ebx, ebx |
|
445 | mov edi, [str] |
543 | |
446 | mov [edi+STREAM.out_base], eax |
544 | mov [edi+STREAM.out_base], eax |
447 | mov [edi+STREAM.out_wp], eax |
545 | mov [edi+STREAM.out_wp], eax |
448 | mov [edi+STREAM.out_rp], eax |
546 | mov [edi+STREAM.out_rp], eax |
449 | mov [edi+STREAM.out_count], 0 |
547 | mov [edi+STREAM.out_count], ebx |
Line -... | Line 548... | ||
- | 548 | add eax, 64*1024 |
|
- | 549 | mov [edi+STREAM.out_top], eax |
|
- | 550 | ||
- | 551 | mov dword [edi+STREAM.time_base], ebx |
|
- | 552 | mov dword [edi+STREAM.time_base+4], ebx |
|
- | 553 | ||
- | 554 | mov dword [edi+STREAM.time_stamp], ebx |
|
450 | add eax, 64*1024 |
555 | mov dword [edi+STREAM.time_stamp+4], ebx |
451 | mov [edi+STREAM.out_top], eax |
556 | mov dword [edi+STREAM.last_ts], ebx |
452 | 557 | ||
453 | stdcall AllocPages, dword 64/4 |
558 | stdcall AllocPages, dword 64/4 |
454 | mov edi, [str] |
559 | mov edi, [str] |
Line 486... | Line 591... | ||
486 | mov [ebx+STREAM.notify_event], eax |
591 | mov [ebx+STREAM.notify_event], eax |
487 | mov [ebx+STREAM.notify_id], edx |
592 | mov [ebx+STREAM.notify_id], edx |
Line 488... | Line 593... | ||
488 | 593 | ||
489 | mov [ebx+STREAM.magic], 'WAVE' |
594 | mov [ebx+STREAM.magic], 'WAVE' |
490 | mov [ebx+STREAM.destroy], DestroyBuffer.destroy |
595 | mov [ebx+STREAM.destroy], DestroyBuffer.destroy |
491 | mov [ebx+STREAM.size], STREAM_SIZE |
596 | mov [ebx+STREAM.size], STREAM.sizeof |
Line 492... | Line 597... | ||
492 | mov [ebx+STREAM.flags], SND_STOP |
597 | mov [ebx+STREAM.flags], SND_STOP |
493 | 598 | ||
494 | pushf |
599 | pushf |
Line 855... | Line 960... | ||
855 | mov edx, [str] |
960 | mov edx, [str] |
856 | stdcall set_vol_param,[l_vol],[r_vol],[edx+STREAM.pan] |
961 | stdcall set_vol_param,[l_vol],[r_vol],[edx+STREAM.pan] |
857 | ret |
962 | ret |
858 | endp |
963 | endp |
Line -... | Line 964... | ||
- | 964 | ||
- | 965 | ||
- | 966 | proc minw stdcall, arg1:dword, arg2:dword |
|
- | 967 | mov ax, word [arg1] |
|
- | 968 | cmp ax, word [arg2] |
|
- | 969 | jle @f |
|
- | 970 | mov eax, [arg2] |
|
- | 971 | @@: |
|
- | 972 | ret |
|
- | 973 | endp |
|
- | 974 | ||
- | 975 | proc maxw stdcall, arg1:dword, arg2:dword |
|
- | 976 | mov ax, word [arg1] |
|
- | 977 | cmp ax, word [arg2] |
|
- | 978 | jge @f |
|
- | 979 | mov eax, [arg2] |
|
- | 980 | @@: |
|
- | 981 | ret |
|
- | 982 | endp |
|
- | 983 | ||
859 | 984 | ||
860 | proc set_vol_param stdcall, l_vol:dword,r_vol:dword,pan:dword |
985 | proc set_vol_param stdcall, l_vol:dword,r_vol:dword,pan:dword |
861 | locals |
986 | locals |
862 | _600 dd ? |
987 | _600 dd ? |
863 | _32767 dd ? |
988 | _32767 dd ? |
Line 868... | Line 993... | ||
868 | mov [_32767], 32767 |
993 | mov [_32767], 32767 |
Line 869... | Line 994... | ||
869 | 994 | ||
870 | lea ebx, [state] |
995 | lea ebx, [state] |
Line -... | Line 996... | ||
- | 996 | fnsave [ebx] |
|
871 | fnsave [ebx] |
997 | |
- | 998 | stdcall minw, [l_vol], [vol_max] |
|
- | 999 | stdcall maxw, eax, [vol_min] |
|
872 | 1000 | mov [l_vol], eax |
|
873 | movq mm0, qword [l_vol] |
1001 | mov [edx+STREAM.l_vol], eax |
874 | pminsw mm0, qword [vol_max] |
1002 | stdcall minw, [r_vol], [vol_max+4] |
875 | pmaxsw mm0, qword [vol_min] |
1003 | stdcall maxw, eax, [vol_min+4] |
876 | movq qword [l_vol], mm0 |
1004 | mov [r_vol], eax |
877 | movq qword [edx+STREAM.l_vol], mm0 |
- | |
878 | 1005 | mov [edx+STREAM.r_vol], eax |
|
879 | movd mm1,[pan] |
1006 | |
880 | pminsw mm1, qword [pan_max] |
1007 | stdcall minw, [pan], [pan_max] |
Line 881... | Line 1008... | ||
881 | pmaxsw mm1, qword [vol_min] |
1008 | stdcall maxw, eax, [vol_min] |
882 | movd [edx+STREAM.pan], mm1 |
1009 | mov [edx+STREAM.pan], eax |
Line 883... | Line 1010... | ||
883 | 1010 | ||
- | 1011 | cmp word [edx+STREAM.pan], 0 |
|
884 | cmp word [edx+STREAM.pan], 0 |
1012 | jl @f |
885 | jl @F |
1013 | |
886 | 1014 | mov ebx, [l_vol] |
|
887 | psubsw mm0,mm1 |
1015 | sub ebx, eax |
888 | pminsw mm0, qword [vol_max] |
1016 | stdcall minw, ebx, [vol_max] |
889 | pmaxsw mm0, qword [vol_min] |
1017 | stdcall maxw, eax, [vol_min] |
890 | movd [l_vol],mm0 |
1018 | mov [l_vol], eax |
891 | jmp .calc_amp |
1019 | jmp .calc_amp |
892 | @@: |
1020 | @@: |
893 | punpckhdq mm0,mm0 |
1021 | mov ebx, [r_vol] |
894 | paddsw mm0,mm1 |
1022 | add ebx, [pan] |
895 | pminsw mm0, qword [vol_max] |
1023 | stdcall minw, ebx, [vol_max+4] |
896 | pmaxsw mm0, qword [vol_min] |
1024 | stdcall maxw, eax, [vol_min+4] |
Line 897... | Line 1025... | ||
897 | movd [r_vol], mm0 |
1025 | mov [r_vol], eax |
Line 933... | Line 1061... | ||
933 | fld st0 |
1061 | fld st0 |
934 | fimul dword [_32767] |
1062 | fimul dword [_32767] |
935 | ret 0 |
1063 | ret 0 |
936 | endp |
1064 | endp |
Line -... | Line 1065... | ||
- | 1065 | ||
937 | 1066 | ||
938 | align 4 |
1067 | align 4 |
Line 939... | Line 1068... | ||
939 | proc GetBufferVol stdcall, str:dword,p_lvol:dword,p_rvol:dword |
1068 | proc GetBufferVol stdcall, str:dword,p_lvol:dword,p_rvol:dword |
940 | 1069 | ||
Line 1037... | Line 1166... | ||
1037 | je .done |
1166 | je .done |
Line 1038... | Line 1167... | ||
1038 | 1167 | ||
1039 | cmp [ebx+STREAM.magic], 'WAVE' |
1168 | cmp [ebx+STREAM.magic], 'WAVE' |
Line 1040... | Line 1169... | ||
1040 | jne .next |
1169 | jne .next |
1041 | 1170 | ||
Line 1042... | Line 1171... | ||
1042 | cmp [ebx+STREAM.size], STREAM_SIZE |
1171 | cmp [ebx+STREAM.size], STREAM.sizeof |
1043 | jne .next |
1172 | jne .next |
Line 1106... | Line 1235... | ||
1106 | je .done |
1235 | je .done |
Line 1107... | Line 1236... | ||
1107 | 1236 | ||
1108 | cmp [edi+STREAM.magic], 'WAVE' |
1237 | cmp [edi+STREAM.magic], 'WAVE' |
Line 1109... | Line 1238... | ||
1109 | jne .next |
1238 | jne .next |
1110 | 1239 | ||
Line 1111... | Line 1240... | ||
1111 | cmp [edi+STREAM.size], STREAM_SIZE |
1240 | cmp [edi+STREAM.size], STREAM.sizeof |
1112 | jne .next |
1241 | jne .next |