comparison src/linuxplay.c @ 203:850242ba4a81 r20-3b28

Import from CVS: tag r20-3b28
author cvs
date Mon, 13 Aug 2007 10:02:21 +0200
parents 538048ae2ab8
children 41ff10fd062f
comparison
equal deleted inserted replaced
202:61eefc8fc970 203:850242ba4a81
405 } 405 }
406 406
407 /* Convert 8 bit unsigned stereo data to 8 bit unsigned mono data */ 407 /* Convert 8 bit unsigned stereo data to 8 bit unsigned mono data */
408 static size_t sndcnv8U_2mono(void **data,size_t *sz,void **outbuf) 408 static size_t sndcnv8U_2mono(void **data,size_t *sz,void **outbuf)
409 { 409 {
410 register unsigned char *src; 410 REGISTER unsigned char *src;
411 register unsigned char *dest; 411 REGISTER unsigned char *dest;
412 int rc,count; 412 int rc,count;
413 413
414 count = *sz / 2; 414 count = *sz / 2;
415 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 415 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
416 else *sz = 0; 416 else *sz = 0;
426 } 426 }
427 427
428 /* Convert 8 bit signed stereo data to 8 bit signed mono data */ 428 /* Convert 8 bit signed stereo data to 8 bit signed mono data */
429 static size_t sndcnv8S_2mono(void **data,size_t *sz,void **outbuf) 429 static size_t sndcnv8S_2mono(void **data,size_t *sz,void **outbuf)
430 { 430 {
431 register unsigned char *src; 431 REGISTER unsigned char *src;
432 register unsigned char *dest; 432 REGISTER unsigned char *dest;
433 int rc,count; 433 int rc,count;
434 434
435 count = *sz / 2; 435 count = *sz / 2;
436 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 436 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
437 else *sz = 0; 437 else *sz = 0;
447 } 447 }
448 448
449 /* Convert 8 bit signed stereo data to 8 bit unsigned mono data */ 449 /* Convert 8 bit signed stereo data to 8 bit unsigned mono data */
450 static size_t sndcnv2monounsigned(void **data,size_t *sz,void **outbuf) 450 static size_t sndcnv2monounsigned(void **data,size_t *sz,void **outbuf)
451 { 451 {
452 register unsigned char *src; 452 REGISTER unsigned char *src;
453 register unsigned char *dest; 453 REGISTER unsigned char *dest;
454 int rc,count; 454 int rc,count;
455 455
456 count = *sz / 2; 456 count = *sz / 2;
457 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 457 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
458 else *sz = 0; 458 else *sz = 0;
468 } 468 }
469 469
470 /* Convert 8 bit signed mono data to 8 bit unsigned mono data */ 470 /* Convert 8 bit signed mono data to 8 bit unsigned mono data */
471 static size_t sndcnv2unsigned(void **data,size_t *sz,void **outbuf) 471 static size_t sndcnv2unsigned(void **data,size_t *sz,void **outbuf)
472 { 472 {
473 register unsigned char *src; 473 REGISTER unsigned char *src;
474 register unsigned char *dest; 474 REGISTER unsigned char *dest;
475 int rc,count; 475 int rc,count;
476 476
477 count = *sz; 477 count = *sz;
478 if (count > SNDBUFSZ) { *sz -= SNDBUFSZ; count = SNDBUFSZ; } 478 if (count > SNDBUFSZ) { *sz -= SNDBUFSZ; count = SNDBUFSZ; }
479 else *sz = 0; 479 else *sz = 0;
495 static short int t_bits[128] = { 495 static short int t_bits[128] = {
496 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 496 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
497 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 497 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
498 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 498 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
499 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7}; 499 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};
500 register int bits,logi; 500 REGISTER int bits,logi;
501 501
502 /* unrolling this condition (hopefully) improves execution speed */ 502 /* unrolling this condition (hopefully) improves execution speed */
503 if (i < 0) { 503 if (i < 0) {
504 if ((i = (132-i)) > 0x7FFF) i = 0x7FFF; 504 if ((i = (132-i)) > 0x7FFF) i = 0x7FFF;
505 logi = (i >> ((bits = t_bits[i/256])+4)); 505 logi = (i >> ((bits = t_bits[i/256])+4));
547 +186, +178, +170, +162, +154, +146, +138, +130, 547 +186, +178, +170, +162, +154, +146, +138, +130,
548 +122, +114, +106, +98, +90, +82, +74, +66, 548 +122, +114, +106, +98, +90, +82, +74, +66,
549 +60, +56, +52, +48, +44, +40, +36, +32, 549 +60, +56, +52, +48, +44, +40, +36, +32,
550 +28, +24, +20, +16, +12, +8, +4, +0}; 550 +28, +24, +20, +16, +12, +8, +4, +0};
551 551
552 register unsigned char *src; 552 REGISTER unsigned char *src;
553 register unsigned char *dest; 553 REGISTER unsigned char *dest;
554 int rc,count; 554 int rc,count;
555 555
556 count = *sz / 2; 556 count = *sz / 2;
557 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 557 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
558 else *sz = 0; 558 else *sz = 0;
572 572
573 /* Convert 16 bit little endian signed stereo data to 16 bit little endian 573 /* Convert 16 bit little endian signed stereo data to 16 bit little endian
574 signed mono data */ 574 signed mono data */
575 static size_t sndcnv16_2monoLE(void **data,size_t *sz,void **outbuf) 575 static size_t sndcnv16_2monoLE(void **data,size_t *sz,void **outbuf)
576 { 576 {
577 register unsigned char *src; 577 REGISTER unsigned char *src;
578 register unsigned char *dest; 578 REGISTER unsigned char *dest;
579 int rc,count; 579 int rc,count;
580 signed short i; 580 signed short i;
581 581
582 count = *sz / 2; 582 count = *sz / 2;
583 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 583 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
600 600
601 /* Convert 16 bit big endian signed stereo data to 16 bit big endian 601 /* Convert 16 bit big endian signed stereo data to 16 bit big endian
602 signed mono data */ 602 signed mono data */
603 static size_t sndcnv16_2monoBE(void **data,size_t *sz,void **outbuf) 603 static size_t sndcnv16_2monoBE(void **data,size_t *sz,void **outbuf)
604 { 604 {
605 register unsigned char *src; 605 REGISTER unsigned char *src;
606 register unsigned char *dest; 606 REGISTER unsigned char *dest;
607 int rc,count; 607 int rc,count;
608 signed short i; 608 signed short i;
609 609
610 count = *sz / 2; 610 count = *sz / 2;
611 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 611 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
627 } 627 }
628 628
629 /* Convert 16 bit little endian signed data to 8 bit unsigned data */ 629 /* Convert 16 bit little endian signed data to 8 bit unsigned data */
630 static size_t sndcnv2byteLE(void **data,size_t *sz,void **outbuf) 630 static size_t sndcnv2byteLE(void **data,size_t *sz,void **outbuf)
631 { 631 {
632 register unsigned char *src; 632 REGISTER unsigned char *src;
633 register unsigned char *dest; 633 REGISTER unsigned char *dest;
634 int rc,count; 634 int rc,count;
635 635
636 count = *sz / 2; 636 count = *sz / 2;
637 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 637 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
638 else *sz = 0; 638 else *sz = 0;
648 } 648 }
649 649
650 /* Convert 16 bit big endian signed data to 8 bit unsigned data */ 650 /* Convert 16 bit big endian signed data to 8 bit unsigned data */
651 static size_t sndcnv2byteBE(void **data,size_t *sz,void **outbuf) 651 static size_t sndcnv2byteBE(void **data,size_t *sz,void **outbuf)
652 { 652 {
653 register unsigned char *src; 653 REGISTER unsigned char *src;
654 register unsigned char *dest; 654 REGISTER unsigned char *dest;
655 int rc,count; 655 int rc,count;
656 656
657 count = *sz / 2; 657 count = *sz / 2;
658 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } 658 if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; }
659 else *sz = 0; 659 else *sz = 0;
670 670
671 /* Convert 16 bit little endian signed stereo data to 8 bit unsigned 671 /* Convert 16 bit little endian signed stereo data to 8 bit unsigned
672 mono data */ 672 mono data */
673 static size_t sndcnv2monobyteLE(void **data,size_t *sz,void **outbuf) 673 static size_t sndcnv2monobyteLE(void **data,size_t *sz,void **outbuf)
674 { 674 {
675 register unsigned char *src; 675 REGISTER unsigned char *src;
676 register unsigned char *dest; 676 REGISTER unsigned char *dest;
677 int rc,count; 677 int rc,count;
678 678
679 count = *sz / 4; 679 count = *sz / 4;
680 if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; } 680 if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; }
681 else *sz = 0; 681 else *sz = 0;
693 693
694 /* Convert 16 bit big endian signed stereo data to 8 bit unsigned 694 /* Convert 16 bit big endian signed stereo data to 8 bit unsigned
695 mono data */ 695 mono data */
696 static size_t sndcnv2monobyteBE(void **data,size_t *sz,void **outbuf) 696 static size_t sndcnv2monobyteBE(void **data,size_t *sz,void **outbuf)
697 { 697 {
698 register unsigned char *src; 698 REGISTER unsigned char *src;
699 register unsigned char *dest; 699 REGISTER unsigned char *dest;
700 int rc,count; 700 int rc,count;
701 701
702 count = *sz / 4; 702 count = *sz / 4;
703 if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; } 703 if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; }
704 else *sz = 0; 704 else *sz = 0;