Rev 568 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 568 | Rev 575 | ||
---|---|---|---|
Line 87... | Line 87... | ||
87 | jb @f |
87 | jb @f |
88 | sub eax, 64*1024 |
88 | sub eax, 64*1024 |
89 | @@: |
89 | @@: |
90 | mov [esi+STREAM.out_rp], eax |
90 | mov [esi+STREAM.out_rp], eax |
Line 91... | Line -... | ||
91 | - | ||
92 | cmp word [esi+STREAM.format], PCM_2_16_48 |
- | |
93 | je .copy |
- | |
94 | 91 | ||
95 | cmp [esi+STREAM.out_count], 16384 |
92 | cmp [esi+STREAM.out_count], 16384 |
Line 96... | Line 93... | ||
96 | ja .skip |
93 | ja .skip |
97 | 94 | ||
Line 102... | Line 99... | ||
102 | .skip: |
99 | .skip: |
103 | inc [stream_index] |
100 | inc [stream_index] |
104 | dec [play_count] |
101 | dec [play_count] |
105 | jnz .l1 |
102 | jnz .l1 |
106 | ret |
103 | ret |
107 | - | ||
108 | .ring: |
104 | .ring: |
109 | stdcall refill_ring, esi |
105 | stdcall refill_ring, esi |
110 | jmp .skip |
106 | jmp .skip |
111 | .copy: |
- | |
112 | mov ebx, esi |
- | |
113 | mov esi, [ebx+STREAM.in_rp] |
- | |
114 | mov edi, [ebx+STREAM.out_wp] |
- | |
115 | cmp edi, [ebx+STREAM.out_top] |
- | |
116 | jb @f |
- | |
117 | - | ||
118 | sub edi, 64*1024 |
- | |
119 | mov [ebx+STREAM.out_wp], edi |
- | |
120 | @@: |
- | |
121 | test [ebx+STREAM.format], PCM_RING |
- | |
122 | jnz .stream |
- | |
123 | - | ||
124 | mov ecx, [ebx+STREAM.in_count] |
- | |
125 | test ecx, ecx |
- | |
126 | jz .done |
- | |
127 | - | ||
128 | cmp ecx, 16384 |
- | |
129 | jbe @F |
- | |
130 | mov ecx, 16386 |
- | |
131 | @@: |
- | |
132 | sub [ebx+STREAM.in_count], ecx |
- | |
133 | .stream: |
- | |
134 | add [ebx+STREAM.in_free], ecx |
- | |
135 | add [ebx+STREAM.out_count], ecx |
- | |
136 | - | ||
137 | shr ecx, 2 |
- | |
138 | cld |
- | |
139 | rep movsd |
- | |
140 | - | ||
141 | mov [ebx+STREAM.out_wp], edi |
- | |
142 | cmp esi, [ebx+STREAM.in_top] |
- | |
143 | jb @f |
- | |
144 | - | ||
145 | sub esi, [ebx+STREAM.in_size] |
- | |
146 | @@: |
- | |
147 | mov [ebx+STREAM.in_rp], esi |
- | |
148 | test [ebx+STREAM.format], PCM_RING |
- | |
149 | jz .done |
- | |
150 | - | ||
151 | sub esi, [ebx+STREAM.in_base] |
- | |
152 | sub esi, 128 |
- | |
153 | lea edx, [event] |
- | |
154 | - | ||
155 | mov dword [edx], RT_INP_EMPTY |
- | |
156 | mov dword [edx+4], 0 |
- | |
157 | mov dword [edx+8], ebx |
- | |
158 | mov dword [edx+12], esi |
- | |
159 | - | ||
160 | mov eax, [ebx+STREAM.notify_event] |
- | |
161 | test eax, eax |
- | |
162 | jz .l_end |
- | |
163 | - | ||
164 | mov ebx, [ebx+STREAM.notify_id] |
- | |
165 | xor ecx, ecx |
- | |
166 | call RaiseEvent ;eax, ebx, ecx, edx |
- | |
167 | jmp .l_end |
- | |
168 | .done: |
- | |
169 | mov eax, [ebx+STREAM.notify_event] |
- | |
170 | test eax, eax |
- | |
171 | jz .l_end |
- | |
172 | - | ||
173 | mov ebx, [ebx+STREAM.notify_id] |
- | |
174 | mov ecx, EVENT_WATCHED |
- | |
175 | xor edx, edx |
- | |
176 | call RaiseEvent ;eax, ebx, ecx, edx |
- | |
177 | .l_end: |
- | |
178 | inc [stream_index] |
- | |
179 | dec [play_count] |
- | |
180 | jnz .l1 |
- | |
181 | ret |
- | |
182 | endp |
107 | endp |
Line 183... | Line 108... | ||
183 | 108 | ||
184 | align 4 |
109 | align 4 |
185 | proc refill stdcall, str:dword |
110 | proc refill stdcall, str:dword |
Line 487... | Line 412... | ||
487 | mov ecx, [r_size] |
412 | mov ecx, [r_size] |
488 | mov eax, ecx |
413 | mov eax, ecx |
489 | shr ecx, 2 |
414 | shr ecx, 2 |
490 | mov esi, [src] |
415 | mov esi, [src] |
491 | mov edi, [dest] |
416 | mov edi, [dest] |
- | 417 | cld |
|
492 | rep movsd |
418 | rep movsd |
493 | mov eax, 16384 |
- | |
494 | ret |
419 | ret |
495 | endp |
420 | endp |
Line 496... | Line 421... | ||
496 | 421 | ||
497 | align 4 |
422 | align 4 |