Rev 855 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 855 | Rev 864 | ||
---|---|---|---|
Line 79... | Line 79... | ||
79 | stdcall GetService, szSound |
79 | stdcall GetService, szSound |
80 | test eax, eax |
80 | test eax, eax |
81 | jz .fail |
81 | jz .fail |
82 | mov [hSound], eax |
82 | mov [hSound], eax |
Line -... | Line 83... | ||
- | 83 | ||
- | 84 | mov ecx, 16*512 |
|
83 | 85 | mov edx, PG_SW |
|
84 | stdcall KernelAlloc, 16*512 |
86 | call HeapAlloc |
85 | test eax, eax |
87 | test eax, eax |
86 | jz .out_of_mem |
88 | jz .out_of_mem |
Line 87... | Line 89... | ||
87 | mov [mix_buff], eax |
89 | mov [mix_buff], eax |
Line 323... | Line 325... | ||
323 | align 4 |
325 | align 4 |
324 | proc CreateBuffer stdcall, format:dword, size:dword |
326 | proc CreateBuffer stdcall, format:dword, size:dword |
325 | locals |
327 | locals |
326 | str dd ? |
328 | str dd ? |
327 | ring_size dd ? |
329 | ring_size dd ? |
328 | ring_pages dd ? |
- | |
329 | endl |
330 | endl |
Line 330... | Line 331... | ||
330 | 331 | ||
331 | mov eax, [format] |
332 | mov eax, [format] |
332 | cmp ax, PCM_1_8_8 |
333 | cmp ax, PCM_1_8_8 |
Line 400... | Line 401... | ||
400 | and ebx, -4096 |
401 | and ebx, -4096 |
401 | add ebx, ebx |
402 | add ebx, ebx |
402 | .waveout: |
403 | .waveout: |
403 | mov [ring_size], ebx |
404 | mov [ring_size], ebx |
404 | mov eax, ebx |
405 | mov eax, ebx |
405 | shr ebx, 12 |
- | |
406 | mov [ring_pages], ebx |
- | |
Line 407... | Line 406... | ||
407 | 406 | ||
Line 408... | Line 407... | ||
408 | stdcall CreateRingBuffer, eax, PG_SW |
407 | stdcall CreateRingBuffer, eax, PG_SW |
409 | 408 | ||
Line 424... | Line 423... | ||
424 | jmp .out_buff |
423 | jmp .out_buff |
425 | .static: |
424 | .static: |
426 | mov ecx, [size] |
425 | mov ecx, [size] |
427 | add ecx, 128 ;resampler required |
426 | add ecx, 128 ;resampler required |
428 | mov [eax+STREAM.in_size], ecx |
427 | mov [eax+STREAM.in_size], ecx |
- | 428 | mov edx, PG_SW |
|
429 | stdcall KernelAlloc, ecx |
429 | call HeapAlloc |
Line 430... | Line 430... | ||
430 | 430 | ||
431 | mov edi, [str] |
431 | mov edi, [str] |
432 | mov [edi+STREAM.in_base], eax |
432 | mov [edi+STREAM.in_base], eax |
433 | add eax, 128 |
433 | add eax, 128 |
Line 438... | Line 438... | ||
438 | mov [edi+STREAM.in_free], ebx |
438 | mov [edi+STREAM.in_free], ebx |
439 | add eax, ebx |
439 | add eax, ebx |
440 | mov [edi+STREAM.in_top], eax |
440 | mov [edi+STREAM.in_top], eax |
Line 441... | Line 441... | ||
441 | 441 | ||
442 | .out_buff: |
442 | .out_buff: |
Line 443... | Line 443... | ||
443 | stdcall AllocKernelSpace, dword 128*1024 |
443 | stdcall CreateRingBuffer, 64*1024, PG_SW |
444 | 444 | ||
445 | mov edi, [str] |
445 | mov edi, [str] |
446 | mov [edi+STREAM.out_base], eax |
446 | mov [edi+STREAM.out_base], eax |
447 | mov [edi+STREAM.out_wp], eax |
447 | mov [edi+STREAM.out_wp], eax |
448 | mov [edi+STREAM.out_rp], eax |
448 | mov [edi+STREAM.out_rp], eax |
449 | mov [edi+STREAM.out_count], 0 |
449 | mov [edi+STREAM.out_count], 0 |
Line 450... | Line -... | ||
450 | add eax, 64*1024 |
- | |
451 | mov [edi+STREAM.out_top], eax |
- | |
452 | - | ||
453 | stdcall AllocPages, dword 64/4 |
- | |
454 | mov edi, [str] |
- | |
455 | mov ebx, [edi+STREAM.out_base] |
- | |
456 | mov ecx, 16 |
- | |
457 | or eax, PG_SW |
- | |
458 | push eax |
- | |
459 | push ebx |
- | |
460 | call CommitPages ;eax, ebx, ecx |
- | |
461 | mov ecx, 16 |
- | |
462 | pop ebx |
- | |
463 | pop eax |
- | |
464 | add ebx, 64*1024 |
- | |
465 | call CommitPages ;double mapped |
450 | add eax, 64*1024 |
466 | 451 | mov [edi+STREAM.out_top], eax |
|
467 | mov edi, [str] |
452 | |
468 | mov ecx, [edi+STREAM.in_top] |
453 | mov ecx, [edi+STREAM.in_top] |
469 | mov edi, [edi+STREAM.in_base] |
454 | mov edi, [edi+STREAM.in_base] |