Subversion Repositories Kolibri OS

Rev

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]