Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 284 → Rev 285

/kernel/trunk/drivers/infinity.asm
190,22 → 190,22
mov [edi+STREAM.magic], 'WAVE'
mov [edi+STREAM.size], STREAM_SIZE
 
stdcall KernelAlloc, 180*1024
stdcall KernelAlloc, 172*1024
 
mov edi, [str]
mov [edi+STREAM.base], eax
add eax, 0x1000
mov [edi+STREAM.seg_0], eax
mov [edi+STREAM.curr_seg], eax
mov [edi+STREAM.notify_off1], eax
add eax, 0x7FFF
add eax, 0x8000
mov [edi+STREAM.lim_0], eax
inc eax
add eax, 0x1000
mov [edi+STREAM.seg_1], eax
mov [edi+STREAM.notify_off2], eax
add eax, 0x7FFF
add eax, 0x8000
mov [edi+STREAM.limit], eax
mov [edi+STREAM.lim_1], eax
inc eax
 
mov [edi+STREAM.work_buff], eax
mov [edi+STREAM.work_read], eax
213,8 → 213,6
mov [edi+STREAM.work_count], 0
add eax, 0x10000
mov [edi+STREAM.work_top], eax
add eax, 1024*32
mov [edi+STREAM.r_buff], eax
 
mov ebx, [CURRENT_TASK]
shl ebx, 5
245,8 → 243,18
mov ebx, [resampler_params+eax+12]
mov [edi+STREAM.resample], ebx
 
mov edx, [edi+STREAM.base]
lea eax, [edx+0x9000]
call GetPgAddr ;eax
call FreePage ;eax
 
mov eax, edx
lea ebx, [edx+0x9000]
call GetPgAddr ;eax
stdcall MapPage, ebx, eax, dword 3
 
mov edi, [edi+STREAM.base]
mov ecx, 180*1024/4
mov ecx, (168*1024)/4
xor eax, eax
rep stosd
 
338,7 → 346,6
proc play_buffer stdcall, str:dword
 
mov ebx, [str]
 
cmp [ebx+STREAM.magic], 'WAVE'
jne .fail
 
345,46 → 352,51
cmp [ebx+STREAM.size], STREAM_SIZE
jne .fail
 
mov [ebx+STREAM.flags], SND_PLAY
 
mov eax,[ebx+STREAM.work_buff]
mov [ebx+STREAM.work_read], eax
mov [ebx+STREAM.work_write], eax
mov edi,[ebx+STREAM.work_buff]
mov [ebx+STREAM.work_read], edi
mov [ebx+STREAM.work_write], edi
mov [ebx+STREAM.work_count], 0
 
mov eax, [ebx+STREAM.seg_0]
mov [ebx+STREAM.curr_seg], eax
mov edx, [ebx+STREAM.base]
add edx, 0x1000
mov [ebx+STREAM.seg_0], edx
mov [ebx+STREAM.curr_seg], edx
add edx, 0x8000
mov [ebx+STREAM.lim_0], edx
add edx, 0x1000
mov [ebx+STREAM.seg_1], edx
add edx, 0x8000
mov [ebx+STREAM.lim_1], edx
 
mov esi, [ebx+STREAM.curr_seg]
mov edi, [ebx+STREAM.work_write]
mov edx, [ebx+STREAM.r_buff]
 
mov ecx, 32
mov edx, [ebx+STREAM.seg_0]
mov ecx, -128
mov eax, [ebx+STREAM.r_silence]
@@:
mov [edx], eax
add edx, 4
dec ecx
mov [edx+ecx], eax
add ecx, 4
jnz @B
 
mov edx, [ebx+STREAM.r_buff]
 
stdcall [ebx+STREAM.resample], edi, esi, edx,\
stdcall [ebx+STREAM.resample], edi, edx,\
[ebx+STREAM.r_dt],[ebx+STREAM.r_size],[ebx+STREAM.r_end]
 
mov ebx, [str]
 
add [ebx+STREAM.work_count], eax;
add [ebx+STREAM.work_write], eax;
add [ebx+STREAM.work_count], eax
add [ebx+STREAM.work_write], eax
 
mov eax, [ebx+STREAM.r_size]
add [ebx+STREAM.curr_seg], eax
mov edx, [ebx+STREAM.r_size]
add [ebx+STREAM.curr_seg], edx
 
; if DEBUG
; mov esi, msgPlay
; call [SysMsgBoardStr]
; end if
mov [ebx+STREAM.flags], SND_PLAY
 
mov eax, [ebx+STREAM.r_silence]
mov edi, [ebx+STREAM.work_write]
mov ecx, [ebx+STREAM.work_top]
sub ecx, edi
shr ecx, 2
cld
rep stosd
 
stdcall dev_play, [hSound]
xor eax, eax
inc eax
437,27 → 449,35
cmp esi, new_app_base
jb .fail
 
mov ecx, [size]
test ecx, ecx
jz .fail
mov edi, [offs]
mov ecx, 0x8000
 
mov eax, [edx+STREAM.base]
add eax, [offs]
sub ecx, edi
jbe .seg_1
 
cmp eax, [edx+STREAM.base]
sub [size], ecx
jb .fail
 
mov edi, eax
add eax, ecx
sub eax, 1
 
cmp eax, [edx+STREAM.limit]
add edi, [edx+STREAM.base]
add edi, 0x1000
shr ecx, 2
cld
rep movsd
jmp @F
.seg_1:
add edi, [edx+STREAM.base]
add edi, 0x1000
@@:
add edi, 0x1000
mov ecx, [size]
test ecx, ecx
jz .done
cmp ecx, 0x8000
ja .fail
 
shr ecx, 2
cld
rep movsd
 
.done:
xor eax, eax
inc eax
ret
505,34 → 525,7
ret
endp
 
if 0
align 4
proc check_stream
 
xor edx, edx
mov ecx, [play_count]
.l1:
mov esi, [play_list+edx]
 
mov eax, [esi+STR.curr_seg]
cmp eax, [esi+STR.lim_0]
jb .next
 
mov eax, [esi+STREAM.seg_0]
mov ecx, [esi+STREAM.lim_0]
xchg eax, [ebx+STREAM.seg_1]
xchg ecx, [ebx+STREAM.lim_1]
mov [esi+STREAM.seg_0], eax
mov [esi+STREAM.lim_0], ecx
mov [esi+STR.curr_seg], eax
.next:
add edx, 4
loop .l1
ret
endp
end if
 
align 4
proc prepare_playlist
 
.restart:
723,7 → 716,7
mm_mask dq 0xFF00FF00FF00FF00
 
stream_map dd 0xFFFF ; 16
version dd 0x00020002
version dd 0x00030003
 
szInfinity db 'INFINITY',0
szSound db 'SOUND',0