Subversion Repositories Kolibri OS

Rev

Rev 281 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 281 Rev 285
Line 221... Line 221...
221
 
221
 
222
           mov [ebx+STREAM.work_write], edi
222
           mov [ebx+STREAM.work_write], edi
223
.m2:
223
.m2:
224
           mov esi, [ebx+STREAM.curr_seg]
224
           mov esi, [ebx+STREAM.curr_seg]
225
           mov edi, [ebx+STREAM.work_write]
-
 
Line 226... Line 225...
226
           mov edx, [ebx+STREAM.r_buff]
225
           mov edi, [ebx+STREAM.work_write]
227
 
226
 
Line 228... Line 227...
228
           stdcall [ebx+STREAM.resample], edi, esi, edx,\
227
           stdcall [ebx+STREAM.resample], edi, esi, \
Line 229... Line 228...
229
           [ebx+STREAM.r_dt],[ebx+STREAM.r_size],[ebx+STREAM.r_end]
228
           [ebx+STREAM.r_dt],[ebx+STREAM.r_size],[ebx+STREAM.r_end]
Line 236... Line 235...
236
           mov eax, [ebx+STREAM.curr_seg]
235
           mov eax, [ebx+STREAM.curr_seg]
237
           add eax, [ebx+STREAM.r_size]
236
           add eax, [ebx+STREAM.r_size]
238
           cmp eax, [ebx+STREAM.lim_0]
237
           cmp eax, [ebx+STREAM.lim_0]
239
           jb @f
238
           jb @f
Line -... Line 239...
-
 
239
 
-
 
240
           mov esi, [ebx+STREAM.seg_0]
-
 
241
           lea edi, [esi-128]
-
 
242
           add esi, 0x7F80
-
 
243
           mov ecx, 128/4
-
 
244
           cld
-
 
245
           rep movsd
240
 
246
 
241
           mov eax, [ebx+STREAM.seg_0]
247
           mov eax, [ebx+STREAM.seg_0]
242
           mov ecx, [ebx+STREAM.lim_0]
248
           mov ecx, [ebx+STREAM.lim_0]
243
           xchg eax, [ebx+STREAM.seg_1]
249
           xchg eax, [ebx+STREAM.seg_1]
244
           xchg ecx, [ebx+STREAM.lim_1]
250
           xchg ecx, [ebx+STREAM.lim_1]
Line 271... Line 277...
271
@@:
277
@@:
272
	   ret
278
	   ret
273
endp
279
endp
Line 274... Line 280...
274
 
280
 
275
align 4
281
align 4
276
proc resample_1 stdcall, dest:dword,src:dword,r_buff:dword,\
282
proc resample_1 stdcall, dest:dword,src:dword,\
Line 277... Line 283...
277
		       r_dt:dword, r_size:dword,r_end:dword
283
		       r_dt:dword, r_size:dword,r_end:dword
278
 
284
 
279
	   mov edi, [r_buff]
285
; dest equ esp+8
280
	   add edi, 32*2
286
; src  equ esp+12
281
	   mov esi, [src]
287
; r_dt equ esp+16
282
	   mov ecx, [r_size]
-
 
Line 283... Line 288...
283
	   shr ecx, 2
288
; r_size equ esp+20
284
	   rep movsd
289
;r_end equ esp+24
-
 
290
 
285
 
291
           mov edi, [dest]
Line 286... Line 292...
286
	   mov edi, [dest]
292
           mov edx, [src]
287
	   mov edx, [r_buff]
293
           sub edx, 32*2
288
	   mov eax, 16
294
           mov eax, 16
Line 316... Line 322...
316
	   shl ebx, 16
322
	   shl ebx, 16
317
	   mov bx, cx
323
	   mov bx, cx
318
	   mov [edi], ebx
324
	   mov [edi], ebx
319
	   add edi, 4
325
	   add edi, 4
Line 320... Line 326...
320
 
326
 
321
	   add eax, [esp+20]  ;rdt
327
    add eax, [esp+16]
322
	   cmp eax, [esp+28]  ;r_end
328
    cmp eax, [esp+24]
Line 323... Line 329...
323
	   jb .l1
329
	   jb .l1
Line 324... Line -...
324
 
-
 
325
	   mov ebp, esp
-
 
326
 
-
 
327
	   mov esi, [src]
-
 
328
	   add esi, [r_size]
-
 
329
	   sub esi, 32*2
-
 
330
	   mov edx, [r_buff]
-
 
331
	   mov ecx, 16
-
 
332
@@:
-
 
333
	   mov ebx, [esi]
-
 
334
	   mov [edx], ebx
-
 
335
	   add esi, 4
-
 
336
	   add edx, 4
-
 
337
	   dec ecx
330
 
338
	   jnz @B
331
	   mov ebp, esp
339
 
332
 
340
	   sub edi, [dest]
333
	   sub edi, [dest]
Line 341... Line 334...
341
	   mov eax, edi
334
	   mov eax, edi
342
	   ret
335
	   ret
343
endp
336
endp
Line 344... Line -...
344
 
-
 
345
align 4
-
 
346
proc resample_18 stdcall, dest:dword,src:dword,r_buff:dword,\
-
 
347
		       r_dt:dword, r_size:dword,r_end:dword
-
 
348
 
-
 
349
	   mov edi, [r_buff]
-
 
Line 350... Line 337...
350
	   add edi, 32
337
 
351
	   mov esi, [src]
338
align 4
-
 
339
proc resample_18 stdcall, dest:dword,src:dword,\
-
 
340
		       r_dt:dword, r_size:dword,r_end:dword
352
	   mov ecx, [r_size]
341
 
Line 353... Line 342...
353
	   shr ecx, 2
342
 
354
	   rep movsd
343
	   mov edi, [dest]
355
 
344
           mov edx, [src]
Line 391... Line 380...
391
	   shl ebx, 16
380
	   shl ebx, 16
392
	   mov bx, cx
381
	   mov bx, cx
393
	   mov [edi], ebx
382
	   mov [edi], ebx
394
	   add edi, 4
383
	   add edi, 4
Line 395... Line 384...
395
 
384
 
396
	   add esi, [esp+20]  ;rdt
385
    add esi, [esp+16]
397
	   cmp esi, [esp+28]  ;r_end
386
    cmp esi, [esp+24]
Line 398... Line 387...
398
	   jb .l1
387
	   jb .l1
399
 
-
 
400
	   mov ebp, esp
-
 
401
 
-
 
402
	   mov esi, [src]
-
 
403
	   add esi, [r_size]
-
 
404
	   sub esi, 32
-
 
405
	   mov edx, [r_buff]
-
 
406
	   mov ecx, 8
-
 
407
@@:
-
 
408
	   mov ebx, [esi]
-
 
409
	   mov [edx], ebx
-
 
410
	   add esi, 4
-
 
411
	   add edx, 4
-
 
412
	   dec ecx
-
 
413
	   jnz @B
388
 
414
 
389
	   mov ebp, esp
415
	   sub edi, [dest]
390
	   sub edi, [dest]
416
	   mov eax, edi
391
	   mov eax, edi
Line 417... Line 392...
417
	   ret
392
	   ret
418
endp
393
endp
419
 
394
 
Line 420... Line 395...
420
align 4
395
align 4
421
proc copy_stream stdcall, dest:dword,src:dword,r_buff:dword,\
396
proc copy_stream stdcall, dest:dword,src:dword,\
422
		       r_dt:dword, r_size:dword,r_end:dword
397
		       r_dt:dword, r_size:dword,r_end:dword
Line 430... Line 405...
430
           mov eax, 16384
405
           mov eax, 16384
431
           ret
406
           ret
432
endp
407
endp
Line 433... Line 408...
433
 
408
 
434
align 4
409
align 4
435
proc resample_2 stdcall, dest:dword,src:dword,r_buff:dword,\
410
proc resample_2 stdcall, dest:dword,src:dword,\
Line 436... Line -...
436
		       r_dt:dword, r_size:dword,r_end:dword
-
 
437
 
-
 
438
	   mov edi, [r_buff]
411
		       r_dt:dword, r_size:dword,r_end:dword
439
	   add edi, 32*4
-
 
440
	   mov esi, [src]
412
 
441
	   mov ecx, [r_size]
-
 
442
	   shr ecx, 2
-
 
443
	   rep movsd	  ;call memcpy
-
 
444
 
413
           mov edx, [src]
445
	   mov edx, [r_buff]
414
           sub edx, 32*4
446
	   mov edi, [dest]
415
           mov edi, [dest]
447
	   mov ebx, [r_dt]
416
           mov ebx, [r_dt]
Line 459... Line 428...
459
	   movq mm0, [esi]
428
           movq mm0, [esi]
460
	   movq mm1, mm0
429
           movq mm1, mm0
Line 461... Line 430...
461
 
430
 
462
	   movd mm2, ecx
431
           movd mm2, ecx
463
	   punpcklwd mm2, mm2
432
           punpcklwd mm2, mm2
Line 464... Line 433...
464
	   movq mm3, qword [m7] ;                  // 0x8000
433
           movq mm3, qword [m7]    ;0x8000
465
 
434
 
Line 466... Line 435...
466
	   psubw mm3, mm2	;         // 0x8000 - iconst
435
           psubw mm3, mm2 ;        ;0x8000 - iconst
467
	   punpckldq mm3, mm2
436
           punpckldq mm3, mm2
Line 481... Line 450...
481
	   add eax, ebx
450
           add eax, ebx
482
	   cmp eax, [r_end]
451
           cmp eax, [r_end]
483
	   jb .l1
452
           jb .l1
484
	   emms
453
           emms
Line 485... Line -...
485
 
-
 
486
	   mov esi, [src]
-
 
487
	   add esi, [r_size]
-
 
488
	   sub esi, 32*4
-
 
489
	   mov edx, [r_buff]
-
 
490
	   mov ecx, 32
-
 
491
@@:
-
 
492
	   mov ebx, [esi]
-
 
493
	   mov [edx], ebx
-
 
494
	   add esi, 4
-
 
495
	   add edx, 4
-
 
496
	   dec ecx
-
 
497
	   jnz @B
-
 
498
 
454
 
499
	   sub edi, [dest]
455
           sub edi, [dest]
500
	   mov eax, edi
456
           mov eax, edi
501
	   ret
457
           ret
Line 502... Line 458...
502
endp
458
endp
503
 
459
 
504
align 4
460
align 4
Line 505... Line -...
505
proc resample_28 stdcall, dest:dword,src:dword,r_buff:dword,\
-
 
506
		       r_dt:dword, r_size:dword,r_end:dword
-
 
507
 
461
proc resample_28 stdcall, dest:dword,src:dword,\
508
	   mov edi, [r_buff]
-
 
509
	   add edi, 32*2
462
		       r_dt:dword, r_size:dword,r_end:dword
510
	   mov esi, [src]
-
 
511
	   mov ecx, [r_size]
-
 
512
	   shr ecx, 2
-
 
513
	   rep movsd	  ;call memcpy
463
 
514
 
464
           mov edx, [src]
515
	   mov edx, [r_buff]
465
           sub edx, 32*2
516
	   mov edi, [dest]
466
           mov edi, [dest]
517
	   mov ebx, [r_dt]
467
           mov ebx, [r_dt]
Line 557... Line 507...
557
	   add eax, ebx
507
	   add eax, ebx
558
	   cmp eax, [r_end]
508
	   cmp eax, [r_end]
559
	   jb .l1
509
	   jb .l1
560
	   emms
510
	   emms
Line 561... Line -...
561
 
-
 
562
	   mov esi, [src]
-
 
563
	   add esi, [r_size]
-
 
564
	   sub esi, 32*2
-
 
565
	   mov edx, [r_buff]
-
 
566
	   mov ecx, 16
-
 
567
@@:
-
 
568
	   mov ebx, [esi]
-
 
569
	   mov [edx], ebx
-
 
570
	   add esi, 4
-
 
571
	   add edx, 4
-
 
572
	   dec ecx
-
 
Line 573... Line 511...
573
	   jnz @B
511
 
574
 
512
 
575
	   sub edi, [dest]
513
	   sub edi, [dest]
576
	   mov eax, edi
514
	   mov eax, edi
Line 577... Line 515...
577
	   ret
515
	   ret
578
endp
516
endp
Line 579... Line 517...
579
 
517
 
580
 
518
 
581
proc m16_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
519
proc m16_stereo stdcall, dest:dword,src:dword,\
Line 605... Line 543...
605
	   add eax, eax
543
	   add eax, eax
606
	   ret
544
	   ret
607
endp
545
endp
Line 608... Line 546...
608
 
546
 
609
align 4
547
align 4
610
proc s8_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
548
proc s8_stereo stdcall, dest:dword,src:dword,\
Line 611... Line 549...
611
		       r_dt:dword, r_size:dword,r_end:dword
549
		       r_dt:dword, r_size:dword,r_end:dword
612
 
550
 
613
           mov esi, [src]
551
           mov esi, [src]
Line 636... Line 574...
636
           mov eax, [r_size]
574
           mov eax, [r_size]
637
           add eax, eax
575
           add eax, eax
638
           ret
576
           ret
639
endp
577
endp
Line 640... Line 578...
640
 
578
 
641
proc m8_stereo stdcall, dest:dword,src:dword,r_buff:dword,\
579
proc m8_stereo stdcall, dest:dword,src:dword,\
Line 642... Line 580...
642
		       r_dt:dword, r_size:dword,r_end:dword
580
		       r_dt:dword, r_size:dword,r_end:dword
643
 
581
 
644
           mov esi, [src]
582
           mov esi, [src]