comparison mpegaudiodec.c @ 3598:181b0e8f6d81 libavcodec

reorder butterflies to reduce memory load/store
author michael
date Sun, 20 Aug 2006 22:18:26 +0000
parents ef69fc364d98
children 9a069376b7e3
comparison
equal deleted inserted replaced
3597:19fafe90977a 3598:181b0e8f6d81
580 /* DCT32 without 1/sqrt(2) coef zero scaling. */ 580 /* DCT32 without 1/sqrt(2) coef zero scaling. */
581 static void dct32(int32_t *out, int32_t *tab) 581 static void dct32(int32_t *out, int32_t *tab)
582 { 582 {
583 int tmp0, tmp1; 583 int tmp0, tmp1;
584 584
585
585 /* pass 1 */ 586 /* pass 1 */
586 BF(0, 31, COS0_0); 587 BF(0, 31, COS0_0);
587 BF(1, 30, COS0_1); 588 BF(15, 16, COS0_15);
588 BF(2, 29, COS0_2); 589 /* pass 2 */
589 BF(3, 28, COS0_3); 590 BF(0, 15, COS1_0);
590 BF(4, 27, COS0_4); 591 BF(16, 31, -COS1_0);
591 BF(5, 26, COS0_5); 592 /* pass 1 */
592 BF(6, 25, COS0_6);
593 BF(7, 24, COS0_7); 593 BF(7, 24, COS0_7);
594 BF(8, 23, COS0_8); 594 BF(8, 23, COS0_8);
595 BF(9, 22, COS0_9);
596 BF(10, 21, COS0_10);
597 BF(11, 20, COS0_11);
598 BF(12, 19, COS0_12);
599 BF(13, 18, COS0_13);
600 BF(14, 17, COS0_14);
601 BF(15, 16, COS0_15);
602
603 /* pass 2 */ 595 /* pass 2 */
604 BF(0, 15, COS1_0);
605 BF(1, 14, COS1_1);
606 BF(2, 13, COS1_2);
607 BF(3, 12, COS1_3);
608 BF(4, 11, COS1_4);
609 BF(5, 10, COS1_5);
610 BF(6, 9, COS1_6);
611 BF(7, 8, COS1_7); 596 BF(7, 8, COS1_7);
612
613 BF(16, 31, -COS1_0);
614 BF(17, 30, -COS1_1);
615 BF(18, 29, -COS1_2);
616 BF(19, 28, -COS1_3);
617 BF(20, 27, -COS1_4);
618 BF(21, 26, -COS1_5);
619 BF(22, 25, -COS1_6);
620 BF(23, 24, -COS1_7); 597 BF(23, 24, -COS1_7);
621
622 /* pass 3 */ 598 /* pass 3 */
623 BF(0, 7, COS2_0); 599 BF(0, 7, COS2_0);
624 BF(1, 6, COS2_1); 600 BF(8, 15, -COS2_0);
625 BF(2, 5, COS2_2); 601 BF(16, 23, COS2_0);
602 BF(24, 31, -COS2_0);
603 /* pass 1 */
604 BF(3, 28, COS0_3);
605 BF(12, 19, COS0_12);
606 /* pass 2 */
607 BF(3, 12, COS1_3);
608 BF(19, 28, -COS1_3);
609 /* pass 1 */
610 BF(4, 27, COS0_4);
611 BF(11, 20, COS0_11);
612 /* pass 2 */
613 BF(4, 11, COS1_4);
614 BF(20, 27, -COS1_4);
615 /* pass 3 */
626 BF(3, 4, COS2_3); 616 BF(3, 4, COS2_3);
627
628 BF(8, 15, -COS2_0);
629 BF(9, 14, -COS2_1);
630 BF(10, 13, -COS2_2);
631 BF(11, 12, -COS2_3); 617 BF(11, 12, -COS2_3);
632
633 BF(16, 23, COS2_0);
634 BF(17, 22, COS2_1);
635 BF(18, 21, COS2_2);
636 BF(19, 20, COS2_3); 618 BF(19, 20, COS2_3);
637
638 BF(24, 31, -COS2_0);
639 BF(25, 30, -COS2_1);
640 BF(26, 29, -COS2_2);
641 BF(27, 28, -COS2_3); 619 BF(27, 28, -COS2_3);
642
643 /* pass 4 */ 620 /* pass 4 */
644 BF(0, 3, COS3_0); 621 BF(0, 3, COS3_0);
622 BF(4, 7, -COS3_0);
623 BF(8, 11, COS3_0);
624 BF(12, 15, -COS3_0);
625 BF(16, 19, COS3_0);
626 BF(20, 23, -COS3_0);
627 BF(24, 27, COS3_0);
628 BF(28, 31, -COS3_0);
629
630
631
632 /* pass 1 */
633 BF(1, 30, COS0_1);
634 BF(14, 17, COS0_14);
635 /* pass 2 */
636 BF(1, 14, COS1_1);
637 BF(17, 30, -COS1_1);
638 /* pass 1 */
639 BF(6, 25, COS0_6);
640 BF(9, 22, COS0_9);
641 /* pass 2 */
642 BF(6, 9, COS1_6);
643 BF(22, 25, -COS1_6);
644 /* pass 3 */
645 BF(1, 6, COS2_1);
646 BF(9, 14, -COS2_1);
647 BF(17, 22, COS2_1);
648 BF(25, 30, -COS2_1);
649
650 /* pass 1 */
651 BF(2, 29, COS0_2);
652 BF(13, 18, COS0_13);
653 /* pass 2 */
654 BF(2, 13, COS1_2);
655 BF(18, 29, -COS1_2);
656 /* pass 1 */
657 BF(5, 26, COS0_5);
658 BF(10, 21, COS0_10);
659 /* pass 2 */
660 BF(5, 10, COS1_5);
661 BF(21, 26, -COS1_5);
662 /* pass 3 */
663 BF(2, 5, COS2_2);
664 BF(10, 13, -COS2_2);
665 BF(18, 21, COS2_2);
666 BF(26, 29, -COS2_2);
667 /* pass 4 */
645 BF(1, 2, COS3_1); 668 BF(1, 2, COS3_1);
646
647 BF(4, 7, -COS3_0);
648 BF(5, 6, -COS3_1); 669 BF(5, 6, -COS3_1);
649
650 BF(8, 11, COS3_0);
651 BF(9, 10, COS3_1); 670 BF(9, 10, COS3_1);
652
653 BF(12, 15, -COS3_0);
654 BF(13, 14, -COS3_1); 671 BF(13, 14, -COS3_1);
655
656 BF(16, 19, COS3_0);
657 BF(17, 18, COS3_1); 672 BF(17, 18, COS3_1);
658
659 BF(20, 23, -COS3_0);
660 BF(21, 22, -COS3_1); 673 BF(21, 22, -COS3_1);
661
662 BF(24, 27, COS3_0);
663 BF(25, 26, COS3_1); 674 BF(25, 26, COS3_1);
664
665 BF(28, 31, -COS3_0);
666 BF(29, 30, -COS3_1); 675 BF(29, 30, -COS3_1);
667 676
668 /* pass 5 */ 677 /* pass 5 */
669 BF1(0, 1, 2, 3); 678 BF1(0, 1, 2, 3);
670 BF2(4, 5, 6, 7); 679 BF2(4, 5, 6, 7);