summaryrefslogtreecommitdiff
path: root/firmware/mp3_playback.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-06-21 13:42:37 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-06-21 13:42:37 +0000
commit3db9c833647a59edd1dc800808a2d404286e5ceb (patch)
tree876ce8d0e4be89dc7411729557af0335e4f17265 /firmware/mp3_playback.c
parentbdfc932accb1eb2c655887fce74717a8894c6cc3 (diff)
downloadrockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.tar.gz
rockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.zip
Simplified the settings code by removing the phys2val conversions. This has the side effect of increasing the resolution for the balance setting from 2% steps to 1% steps, and bass boost from 10% steps to 1% steps.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4782 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/mp3_playback.c')
-rw-r--r--firmware/mp3_playback.c134
1 files changed, 31 insertions, 103 deletions
diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c
index 239f987c56..28d14eae64 100644
--- a/firmware/mp3_playback.c
+++ b/firmware/mp3_playback.c
@@ -94,9 +94,14 @@ static int numdecimals[] =
94static int minval[] = 94static int minval[] =
95{ 95{
96 0, /* Volume */ 96 0, /* Volume */
97 0, /* Bass */ 97#ifdef HAVE_MAS3587F
98 0, /* Treble */ 98 -12, /* Bass */
99 -50, /* Balance */ 99 -12, /* Treble */
100#else
101 -15, /* Bass */
102 -15, /* Treble */
103#endif
104 -100, /* Balance */
100 0, /* Loudness */ 105 0, /* Loudness */
101 0, /* Bass boost */ 106 0, /* Bass boost */
102 -1, /* AVC */ 107 -1, /* AVC */
@@ -110,15 +115,15 @@ static int maxval[] =
110{ 115{
111 100, /* Volume */ 116 100, /* Volume */
112#ifdef HAVE_MAS3587F 117#ifdef HAVE_MAS3587F
113 24, /* Bass */ 118 12, /* Bass */
114 24, /* Treble */ 119 12, /* Treble */
115#else 120#else
116 30, /* Bass */ 121 15, /* Bass */
117 30, /* Treble */ 122 15, /* Treble */
118#endif 123#endif
119 50, /* Balance */ 124 100, /* Balance */
120 17, /* Loudness */ 125 17, /* Loudness */
121 10, /* Bass boost */ 126 100, /* Bass boost */
122 3, /* AVC */ 127 3, /* AVC */
123 6, /* Channels */ 128 6, /* Channels */
124 15, /* Left gain */ 129 15, /* Left gain */
@@ -130,11 +135,11 @@ static int defaultval[] =
130{ 135{
131 70, /* Volume */ 136 70, /* Volume */
132#ifdef HAVE_MAS3587F 137#ifdef HAVE_MAS3587F
133 12+6, /* Bass */ 138 6, /* Bass */
134 12+6, /* Treble */ 139 6, /* Treble */
135#else 140#else
136 15+7, /* Bass */ 141 7, /* Bass */
137 15+7, /* Treble */ 142 7, /* Treble */
138#endif 143#endif
139 0, /* Balance */ 144 0, /* Balance */
140 0, /* Loudness */ 145 0, /* Loudness */
@@ -614,30 +619,27 @@ void mpeg_sound_set(int setting, int value)
614#ifdef HAVE_MAS3587F 619#ifdef HAVE_MAS3587F
615 tmp = ((value * 127 / 100) & 0xff) << 8; 620 tmp = ((value * 127 / 100) & 0xff) << 8;
616 mas_codec_writereg(0x11, tmp & 0xff00); 621 mas_codec_writereg(0x11, tmp & 0xff00);
617#else
618 /* Convert to percent */
619 current_balance = value * 2;
620#endif 622#endif
621 break; 623 break;
622 624
623 case SOUND_BASS: 625 case SOUND_BASS:
624#ifdef HAVE_MAS3587F 626#ifdef HAVE_MAS3587F
625 tmp = (((value-12) * 8) & 0xff) << 8; 627 tmp = ((value * 8) & 0xff) << 8;
626 mas_codec_writereg(0x14, tmp & 0xff00); 628 mas_codec_writereg(0x14, tmp & 0xff00);
627#else 629#else
628 mas_writereg(MAS_REG_KBASS, bass_table[value]); 630 mas_writereg(MAS_REG_KBASS, bass_table[value+15]);
629 current_bass = (value-15) * 10; 631 current_bass = (value) * 10;
630 set_prescaled_volume(); 632 set_prescaled_volume();
631#endif 633#endif
632 break; 634 break;
633 635
634 case SOUND_TREBLE: 636 case SOUND_TREBLE:
635#ifdef HAVE_MAS3587F 637#ifdef HAVE_MAS3587F
636 tmp = (((value-12) * 8) & 0xff) << 8; 638 tmp = ((value * 8) & 0xff) << 8;
637 mas_codec_writereg(0x15, tmp & 0xff00); 639 mas_codec_writereg(0x15, tmp & 0xff00);
638#else 640#else
639 mas_writereg(MAS_REG_KTREBLE, treble_table[value]); 641 mas_writereg(MAS_REG_KTREBLE, treble_table[value+15]);
640 current_treble = (value-15) * 10; 642 current_treble = (value) * 10;
641 set_prescaled_volume(); 643 set_prescaled_volume();
642#endif 644#endif
643 break; 645 break;
@@ -645,7 +647,7 @@ void mpeg_sound_set(int setting, int value)
645#ifdef HAVE_MAS3587F 647#ifdef HAVE_MAS3587F
646 case SOUND_SUPERBASS: 648 case SOUND_SUPERBASS:
647 if (value) { 649 if (value) {
648 tmp = MAX(MIN(value * 12, 0x7f), 0); 650 tmp = MAX(MIN(value * 127 / 100, 0x7f), 0);
649 mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8); 651 mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8);
650 tmp = 0x30; /* MDB_HAR: Space for experiment here */ 652 tmp = 0x30; /* MDB_HAR: Space for experiment here */
651 mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8); 653 mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8);
@@ -700,43 +702,11 @@ void mpeg_sound_set(int setting, int value)
700 702
701int mpeg_val2phys(int setting, int value) 703int mpeg_val2phys(int setting, int value)
702{ 704{
705#ifdef HAVE_MAS3587F
703 int result = 0; 706 int result = 0;
704 707
705 switch(setting) 708 switch(setting)
706 { 709 {
707 case SOUND_VOLUME:
708 result = value;
709 break;
710
711 case SOUND_BALANCE:
712 result = value * 2;
713 break;
714
715 case SOUND_BASS:
716#ifdef HAVE_MAS3587F
717 result = value - 12;
718#else
719 result = value - 15;
720#endif
721 break;
722
723 case SOUND_TREBLE:
724#ifdef HAVE_MAS3587F
725 result = value - 12;
726#else
727 result = value - 15;
728#endif
729 break;
730
731#ifdef HAVE_MAS3587F
732 case SOUND_LOUDNESS:
733 result = value;
734 break;
735
736 case SOUND_SUPERBASS:
737 result = value * 10;
738 break;
739
740 case SOUND_LEFT_GAIN: 710 case SOUND_LEFT_GAIN:
741 case SOUND_RIGHT_GAIN: 711 case SOUND_RIGHT_GAIN:
742 result = (value - 2) * 15; 712 result = (value - 2) * 15;
@@ -745,60 +715,18 @@ int mpeg_val2phys(int setting, int value)
745 case SOUND_MIC_GAIN: 715 case SOUND_MIC_GAIN:
746 result = value * 15 + 210; 716 result = value * 15 + 210;
747 break; 717 break;
748#endif
749 }
750 return result;
751}
752
753int mpeg_phys2val(int setting, int value)
754{
755 int result = 0;
756
757 switch(setting)
758 {
759 case SOUND_VOLUME:
760 result = value;
761 break;
762
763 case SOUND_BALANCE:
764 result = value / 2;
765 break;
766
767 case SOUND_BASS:
768#ifdef HAVE_MAS3587F
769 result = value + 12;
770#else
771 result = value + 15;
772#endif
773 break;
774
775 case SOUND_TREBLE:
776#ifdef HAVE_MAS3587F
777 result = value + 12;
778#else
779 result = value + 15;
780#endif
781 break;
782 718
783#ifdef HAVE_MAS3587F 719 default:
784 case SOUND_SUPERBASS:
785 result = value / 10;
786 break;
787
788 case SOUND_LOUDNESS:
789 case SOUND_AVC:
790 case SOUND_LEFT_GAIN:
791 case SOUND_RIGHT_GAIN:
792 case SOUND_MIC_GAIN:
793 result = value; 720 result = value;
794 break; 721 break;
795#endif
796 } 722 }
797
798 return result; 723 return result;
724#else
725 (void)setting;
726 return value;
727#endif
799} 728}
800 729
801
802void mpeg_sound_channel_config(int configuration) 730void mpeg_sound_channel_config(int configuration)
803{ 731{
804#ifdef SIMULATOR 732#ifdef SIMULATOR