diff options
author | Jens Arnold <amiconn@rockbox.org> | 2005-01-12 00:24:15 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2005-01-12 00:24:15 +0000 |
commit | 76b257fd40217013b3107148090c2062f06097e5 (patch) | |
tree | edb08fb3b29d3fc930c7f48c6404dbde421d8a27 | |
parent | 01c484c5d27906f30f7fd9f2cc3f1d9073269c95 (diff) | |
download | rockbox-76b257fd40217013b3107148090c2062f06097e5.tar.gz rockbox-76b257fd40217013b3107148090c2062f06097e5.zip |
New channel configuration setting, allowing fine-grained control of the stereo width. This replaces the 'stereo narrow' and 'stereo wide' modes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5559 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/lang/deutsch.lang | 37 | ||||
-rw-r--r-- | apps/lang/english.lang | 31 | ||||
-rw-r--r-- | apps/main.c | 2 | ||||
-rw-r--r-- | apps/settings.c | 22 | ||||
-rw-r--r-- | apps/settings.h | 3 | ||||
-rw-r--r-- | apps/sound_menu.c | 18 | ||||
-rw-r--r-- | firmware/export/mp3_playback.h | 30 | ||||
-rw-r--r-- | firmware/mp3_playback.c | 186 |
8 files changed, 191 insertions, 138 deletions
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang index 8aa8425c47..1010493231 100644 --- a/apps/lang/deutsch.lang +++ b/apps/lang/deutsch.lang | |||
@@ -1261,22 +1261,22 @@ voice: "LCD-Modus" | |||
1261 | new: "LCD-Modus" | 1261 | new: "LCD-Modus" |
1262 | 1262 | ||
1263 | id: LANG_CHANNEL_STEREO_NARROW_PLAYER | 1263 | id: LANG_CHANNEL_STEREO_NARROW_PLAYER |
1264 | desc: in sound_settings | 1264 | desc: DEPRECATED |
1265 | eng: "St. Narrow" | 1265 | eng: "" |
1266 | voice: "Stereo schmal" | 1266 | voice: "" |
1267 | new: "St. schmal" | 1267 | new: |
1268 | 1268 | ||
1269 | id: LANG_CHANNEL_STEREO_NARROW_RECORDER | 1269 | id: LANG_CHANNEL_STEREO_NARROW_RECORDER |
1270 | desc: in sound_settings | 1270 | desc: DEPRECATED |
1271 | eng: "Stereo Narrow" | 1271 | eng: "" |
1272 | voice: "Stereo schmal" | 1272 | voice: "" |
1273 | new: "Stereo schmal" | 1273 | new: |
1274 | 1274 | ||
1275 | id: LANG_CHANNEL_STEREO_WIDE | 1275 | id: LANG_CHANNEL_STEREO_WIDE |
1276 | desc: in sound_settings | 1276 | desc: DEPRECATED |
1277 | eng: "Stereo Wide" | 1277 | eng: "" |
1278 | voice: "Stereo breit" | 1278 | voice: "" |
1279 | new: "Stereo breit" | 1279 | new: |
1280 | 1280 | ||
1281 | id: LANG_CHANNEL_KARAOKE | 1281 | id: LANG_CHANNEL_KARAOKE |
1282 | desc: in sound_settings | 1282 | desc: in sound_settings |
@@ -2846,3 +2846,16 @@ eng: "" | |||
2846 | voice: " " | 2846 | voice: " " |
2847 | new: | 2847 | new: |
2848 | 2848 | ||
2849 | id: LANG_STEREO_WIDTH | ||
2850 | desc: in sound_settings | ||
2851 | eng: "Stereo width" | ||
2852 | voice: "Stereobasisbreite" | ||
2853 | new: "Stereobasisbreite" | ||
2854 | |||
2855 | id: LANG_CHANNEL_CUSTOM | ||
2856 | desc: in sound_settings | ||
2857 | eng: "Custom" | ||
2858 | voice: "Angepasst" | ||
2859 | new: "Angepasst" | ||
2860 | |||
2861 | |||
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 1f2dd4d9e3..4cc95b8383 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -1274,21 +1274,21 @@ voice: "LCD Mode" | |||
1274 | new: | 1274 | new: |
1275 | 1275 | ||
1276 | id: LANG_CHANNEL_STEREO_NARROW_PLAYER | 1276 | id: LANG_CHANNEL_STEREO_NARROW_PLAYER |
1277 | desc: in sound_settings | 1277 | desc: DEPRECATED |
1278 | eng: "St. Narrow" | 1278 | eng: "" |
1279 | voice: "Stereo Narrow" | 1279 | voice: "" |
1280 | new: | 1280 | new: |
1281 | 1281 | ||
1282 | id: LANG_CHANNEL_STEREO_NARROW_RECORDER | 1282 | id: LANG_CHANNEL_STEREO_NARROW_RECORDER |
1283 | desc: in sound_settings | 1283 | desc: DEPRECATED |
1284 | eng: "Stereo Narrow" | 1284 | eng: "" |
1285 | voice: "Stereo Narrow" | 1285 | voice: "" |
1286 | new: | 1286 | new: |
1287 | 1287 | ||
1288 | id: LANG_CHANNEL_STEREO_WIDE | 1288 | id: LANG_CHANNEL_STEREO_WIDE |
1289 | desc: in sound_settings | 1289 | desc: DEPRECATED |
1290 | eng: "Stereo Wide" | 1290 | eng: "" |
1291 | voice: "Stereo Wide" | 1291 | voice: "" |
1292 | new: | 1292 | new: |
1293 | 1293 | ||
1294 | id: LANG_CHANNEL_KARAOKE | 1294 | id: LANG_CHANNEL_KARAOKE |
@@ -2860,3 +2860,16 @@ eng: "" | |||
2860 | voice: " " | 2860 | voice: " " |
2861 | new: | 2861 | new: |
2862 | 2862 | ||
2863 | id: LANG_STEREO_WIDTH | ||
2864 | desc: in sound_settings | ||
2865 | eng: "Stereo width" | ||
2866 | voice: "Stereo width" | ||
2867 | new: | ||
2868 | |||
2869 | id: LANG_CHANNEL_CUSTOM | ||
2870 | desc: in sound_settings | ||
2871 | eng: "Custom" | ||
2872 | voice: "Custom" | ||
2873 | new: | ||
2874 | |||
2875 | |||
diff --git a/apps/main.c b/apps/main.c index 964a7c8b4f..cc270ba136 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -140,6 +140,7 @@ void init(void) | |||
140 | global_settings.loudness, | 140 | global_settings.loudness, |
141 | global_settings.avc, | 141 | global_settings.avc, |
142 | global_settings.channel_config, | 142 | global_settings.channel_config, |
143 | global_settings.stereo_width, | ||
143 | global_settings.mdb_strength, | 144 | global_settings.mdb_strength, |
144 | global_settings.mdb_harmonics, | 145 | global_settings.mdb_harmonics, |
145 | global_settings.mdb_center, | 146 | global_settings.mdb_center, |
@@ -272,6 +273,7 @@ void init(void) | |||
272 | global_settings.loudness, | 273 | global_settings.loudness, |
273 | global_settings.avc, | 274 | global_settings.avc, |
274 | global_settings.channel_config, | 275 | global_settings.channel_config, |
276 | global_settings.stereo_width, | ||
275 | global_settings.mdb_strength, | 277 | global_settings.mdb_strength, |
276 | global_settings.mdb_harmonics, | 278 | global_settings.mdb_harmonics, |
277 | global_settings.mdb_center, | 279 | global_settings.mdb_center, |
diff --git a/apps/settings.c b/apps/settings.c index d4945d4431..ca1b900ef4 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -71,7 +71,7 @@ const char rec_base_directory[] = REC_BASE_DIR; | |||
71 | 71 | ||
72 | 72 | ||
73 | 73 | ||
74 | #define CONFIG_BLOCK_VERSION 18 | 74 | #define CONFIG_BLOCK_VERSION 19 |
75 | #define CONFIG_BLOCK_SIZE 512 | 75 | #define CONFIG_BLOCK_SIZE 512 |
76 | #define RTC_BLOCK_SIZE 44 | 76 | #define RTC_BLOCK_SIZE 44 |
77 | 77 | ||
@@ -170,8 +170,9 @@ static const struct bit_entry rtc_bits[] = | |||
170 | {3, S_O(avc), 0, "auto volume", "off,20ms,2,4,8" }, | 170 | {3, S_O(avc), 0, "auto volume", "off,20ms,2,4,8" }, |
171 | {1, S_O(superbass), false, "superbass", off_on }, | 171 | {1, S_O(superbass), false, "superbass", off_on }, |
172 | #endif | 172 | #endif |
173 | {3, S_O(channel_config), 6, "channels", | 173 | {3, S_O(channel_config), 0, "channels", |
174 | "stereo,stereo narrow,mono,mono left,mono right,karaoke,stereo wide" }, | 174 | "stereo,mono,custom,mono left,mono right,karaoke" }, |
175 | {8, S_O(stereo_width), 100, "stereo width", NULL}, | ||
175 | /* playback */ | 176 | /* playback */ |
176 | {2, S_O(resume), RESUME_ASK, "resume", "off,ask,ask once,on" }, | 177 | {2, S_O(resume), RESUME_ASK, "resume", "off,ask,ask once,on" }, |
177 | {1, S_O(playlist_shuffle), false, "shuffle", off_on }, | 178 | {1, S_O(playlist_shuffle), false, "shuffle", off_on }, |
@@ -206,7 +207,7 @@ static const struct bit_entry rtc_bits[] = | |||
206 | #endif | 207 | #endif |
207 | {1, S_O(show_icons), true, "show icons", off_on }, | 208 | {1, S_O(show_icons), true, "show icons", off_on }, |
208 | /* system */ | 209 | /* system */ |
209 | {4, S_O(poweroff), 10, | 210 | {4, S_O(poweroff), 10, |
210 | "idle poweroff", "off,1,2,3,4,5,6,7,8,9,10,15,30,45,60" }, | 211 | "idle poweroff", "off,1,2,3,4,5,6,7,8,9,10,15,30,45,60" }, |
211 | {18, S_O(runtime), 0, NULL, NULL }, | 212 | {18, S_O(runtime), 0, NULL, NULL }, |
212 | {18, S_O(topruntime), 0, NULL, NULL }, | 213 | {18, S_O(topruntime), 0, NULL, NULL }, |
@@ -221,19 +222,20 @@ static const struct bit_entry rtc_bits[] = | |||
221 | #endif | 222 | #endif |
222 | {12, S_O(battery_capacity), BATTERY_CAPACITY_MIN, "battery capacity", | 223 | {12, S_O(battery_capacity), BATTERY_CAPACITY_MIN, "battery capacity", |
223 | NULL }, /* 1500...3200 for NiMH, 2200...3200 for LiIon, | 224 | NULL }, /* 1500...3200 for NiMH, 2200...3200 for LiIon, |
224 | 1000...2000 for Alkaline */ | 225 | 500...1500 for Alkaline */ |
225 | #ifdef HAVE_CHARGING | 226 | #ifdef HAVE_CHARGING |
226 | {1, S_O(car_adapter_mode), false, "car adapter mode", off_on }, | 227 | {1, S_O(car_adapter_mode), false, "car adapter mode", off_on }, |
227 | #endif | 228 | #endif |
228 | 229 | /* tuner */ | |
229 | /* new stuff to be added here */ | ||
230 | /* If values are just added to the end, no need to bump the version. */ | ||
231 | #ifdef CONFIG_TUNER | 230 | #ifdef CONFIG_TUNER |
232 | {1, S_O(fm_force_mono), false, "force fm mono", off_on }, | 231 | {1, S_O(fm_force_mono), false, "force fm mono", off_on }, |
233 | {8, S_O(last_frequency), 0, NULL, NULL }, /* Default: MIN_FREQ */ | 232 | {8, S_O(last_frequency), 0, NULL, NULL }, /* Default: MIN_FREQ */ |
234 | #endif | 233 | #endif |
235 | 234 | ||
236 | /* Current sum of bits: 286 (worst case) */ | 235 | /* new stuff to be added here */ |
236 | /* If values are just added to the end, no need to bump the version. */ | ||
237 | |||
238 | /* Current sum of bits: 259 (worst case) */ | ||
237 | /* Sum of all bit sizes must not grow beyond 288! */ | 239 | /* Sum of all bit sizes must not grow beyond 288! */ |
238 | }; | 240 | }; |
239 | 241 | ||
@@ -716,6 +718,7 @@ void sound_settings_apply(void) | |||
716 | mpeg_sound_set(SOUND_BALANCE, global_settings.balance); | 718 | mpeg_sound_set(SOUND_BALANCE, global_settings.balance); |
717 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 719 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); |
718 | mpeg_sound_set(SOUND_CHANNELS, global_settings.channel_config); | 720 | mpeg_sound_set(SOUND_CHANNELS, global_settings.channel_config); |
721 | mpeg_sound_set(SOUND_STEREO_WIDTH, global_settings.stereo_width); | ||
719 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 722 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
720 | mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness); | 723 | mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness); |
721 | mpeg_sound_set(SOUND_AVC, global_settings.avc); | 724 | mpeg_sound_set(SOUND_AVC, global_settings.avc); |
@@ -1261,6 +1264,7 @@ void settings_reset(void) { | |||
1261 | global_settings.loudness = mpeg_sound_default(SOUND_LOUDNESS); | 1264 | global_settings.loudness = mpeg_sound_default(SOUND_LOUDNESS); |
1262 | global_settings.avc = mpeg_sound_default(SOUND_AVC); | 1265 | global_settings.avc = mpeg_sound_default(SOUND_AVC); |
1263 | global_settings.channel_config = mpeg_sound_default(SOUND_CHANNELS); | 1266 | global_settings.channel_config = mpeg_sound_default(SOUND_CHANNELS); |
1267 | global_settings.stereo_width = mpeg_sound_default(SOUND_STEREO_WIDTH); | ||
1264 | global_settings.mdb_strength = mpeg_sound_default(SOUND_MDB_STRENGTH); | 1268 | global_settings.mdb_strength = mpeg_sound_default(SOUND_MDB_STRENGTH); |
1265 | global_settings.mdb_harmonics = mpeg_sound_default(SOUND_MDB_HARMONICS); | 1269 | global_settings.mdb_harmonics = mpeg_sound_default(SOUND_MDB_HARMONICS); |
1266 | global_settings.mdb_center = mpeg_sound_default(SOUND_MDB_CENTER); | 1270 | global_settings.mdb_center = mpeg_sound_default(SOUND_MDB_CENTER); |
diff --git a/apps/settings.h b/apps/settings.h index 8d92aa9ad1..88bc71804a 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -129,7 +129,8 @@ struct user_settings | |||
129 | int treble; /* treble eq: 0-100 0=low 100=high */ | 129 | int treble; /* treble eq: 0-100 0=low 100=high */ |
130 | int loudness; /* loudness eq: 0-100 0=off 100=max */ | 130 | int loudness; /* loudness eq: 0-100 0=off 100=max */ |
131 | int avc; /* auto volume correct: 0=off, 1=20ms, 2=2s 3=4s 4=8s */ | 131 | int avc; /* auto volume correct: 0=off, 1=20ms, 2=2s 3=4s 4=8s */ |
132 | int channel_config; /* Stereo, Mono, Mono left, Mono right */ | 132 | int channel_config; /* Stereo, Mono, Custom, Mono left, Mono right, Karaoke */ |
133 | int stereo_width; /* 0-255% */ | ||
133 | int mdb_strength; /* 0-127dB */ | 134 | int mdb_strength; /* 0-127dB */ |
134 | int mdb_harmonics; /* 0-100% */ | 135 | int mdb_harmonics; /* 0-100% */ |
135 | int mdb_center; /* 20-300Hz */ | 136 | int mdb_center; /* 20-300Hz */ |
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index de5b8c0a8c..6e5b74bfa3 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -385,19 +385,20 @@ static bool chanconf(void) | |||
385 | { | 385 | { |
386 | static const struct opt_items names[] = { | 386 | static const struct opt_items names[] = { |
387 | { STR(LANG_CHANNEL_STEREO) }, | 387 | { STR(LANG_CHANNEL_STEREO) }, |
388 | #ifdef HAVE_LCD_CHARCELLS | ||
389 | { STR(LANG_CHANNEL_STEREO_NARROW_PLAYER) }, | ||
390 | #else | ||
391 | { STR(LANG_CHANNEL_STEREO_NARROW_RECORDER) }, | ||
392 | #endif | ||
393 | { STR(LANG_CHANNEL_MONO) }, | 388 | { STR(LANG_CHANNEL_MONO) }, |
389 | { STR(LANG_CHANNEL_CUSTOM) }, | ||
394 | { STR(LANG_CHANNEL_LEFT) }, | 390 | { STR(LANG_CHANNEL_LEFT) }, |
395 | { STR(LANG_CHANNEL_RIGHT) }, | 391 | { STR(LANG_CHANNEL_RIGHT) }, |
396 | { STR(LANG_CHANNEL_KARAOKE) }, | 392 | { STR(LANG_CHANNEL_KARAOKE) } |
397 | { STR(LANG_CHANNEL_STEREO_WIDE) } | ||
398 | }; | 393 | }; |
399 | return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT, | 394 | return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT, |
400 | names, 7, set_chanconf ); | 395 | names, 6, set_chanconf ); |
396 | } | ||
397 | |||
398 | static bool stereo_width(void) | ||
399 | { | ||
400 | return set_sound(str(LANG_STEREO_WIDTH), &global_settings.stereo_width, | ||
401 | SOUND_STEREO_WIDTH); | ||
401 | } | 402 | } |
402 | 403 | ||
403 | bool sound_menu(void) | 404 | bool sound_menu(void) |
@@ -410,6 +411,7 @@ bool sound_menu(void) | |||
410 | { ID2P(LANG_TREBLE), treble }, | 411 | { ID2P(LANG_TREBLE), treble }, |
411 | { ID2P(LANG_BALANCE), balance }, | 412 | { ID2P(LANG_BALANCE), balance }, |
412 | { ID2P(LANG_CHANNEL_MENU), chanconf }, | 413 | { ID2P(LANG_CHANNEL_MENU), chanconf }, |
414 | { ID2P(LANG_STEREO_WIDTH), stereo_width }, | ||
413 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 415 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
414 | { ID2P(LANG_LOUDNESS), loudness }, | 416 | { ID2P(LANG_LOUDNESS), loudness }, |
415 | { ID2P(LANG_AUTOVOL), avc }, | 417 | { ID2P(LANG_AUTOVOL), avc }, |
diff --git a/firmware/export/mp3_playback.h b/firmware/export/mp3_playback.h index 456569342b..aced6ddc94 100644 --- a/firmware/export/mp3_playback.h +++ b/firmware/export/mp3_playback.h | |||
@@ -25,8 +25,8 @@ | |||
25 | #include <stdbool.h> | 25 | #include <stdbool.h> |
26 | 26 | ||
27 | /* functions formerly in mpeg.c */ | 27 | /* functions formerly in mpeg.c */ |
28 | void mp3_init(int volume, int bass, int treble, int balance, | 28 | void mp3_init(int volume, int bass, int treble, int balance, int loudness, |
29 | int loudness, int avc, int channel_config, | 29 | int avc, int channel_config, int stereo_width, |
30 | int mdb_strength, int mdb_harmonics, | 30 | int mdb_strength, int mdb_harmonics, |
31 | int mdb_center, int mdb_shape, bool mdb_enable, | 31 | int mdb_center, int mdb_shape, bool mdb_enable, |
32 | bool superbass); | 32 | bool superbass); |
@@ -70,23 +70,23 @@ void mp3_shutdown(void); | |||
70 | #define SOUND_LOUDNESS 4 | 70 | #define SOUND_LOUDNESS 4 |
71 | #define SOUND_AVC 5 | 71 | #define SOUND_AVC 5 |
72 | #define SOUND_CHANNELS 6 | 72 | #define SOUND_CHANNELS 6 |
73 | #define SOUND_LEFT_GAIN 7 | 73 | #define SOUND_STEREO_WIDTH 7 |
74 | #define SOUND_RIGHT_GAIN 8 | 74 | #define SOUND_LEFT_GAIN 8 |
75 | #define SOUND_MIC_GAIN 9 | 75 | #define SOUND_RIGHT_GAIN 9 |
76 | #define SOUND_MDB_STRENGTH 10 | 76 | #define SOUND_MIC_GAIN 10 |
77 | #define SOUND_MDB_HARMONICS 11 | 77 | #define SOUND_MDB_STRENGTH 11 |
78 | #define SOUND_MDB_CENTER 12 | 78 | #define SOUND_MDB_HARMONICS 12 |
79 | #define SOUND_MDB_SHAPE 13 | 79 | #define SOUND_MDB_CENTER 13 |
80 | #define SOUND_MDB_ENABLE 14 | 80 | #define SOUND_MDB_SHAPE 14 |
81 | #define SOUND_SUPERBASS 15 | 81 | #define SOUND_MDB_ENABLE 15 |
82 | #define SOUND_NUMSETTINGS 16 | 82 | #define SOUND_SUPERBASS 16 |
83 | #define SOUND_NUMSETTINGS 17 | ||
83 | 84 | ||
84 | #define MPEG_SOUND_STEREO 0 | 85 | #define MPEG_SOUND_STEREO 0 |
85 | #define MPEG_SOUND_STEREO_NARROW 1 | 86 | #define MPEG_SOUND_MONO 1 |
86 | #define MPEG_SOUND_MONO 2 | 87 | #define MPEG_SOUND_CUSTOM 2 |
87 | #define MPEG_SOUND_MONO_LEFT 3 | 88 | #define MPEG_SOUND_MONO_LEFT 3 |
88 | #define MPEG_SOUND_MONO_RIGHT 4 | 89 | #define MPEG_SOUND_MONO_RIGHT 4 |
89 | #define MPEG_SOUND_KARAOKE 5 | 90 | #define MPEG_SOUND_KARAOKE 5 |
90 | #define MPEG_SOUND_STEREO_WIDE 6 | ||
91 | 91 | ||
92 | #endif /* #ifndef _MP3_PLAYBACK_H_ */ | 92 | #endif /* #ifndef _MP3_PLAYBACK_H_ */ |
diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c index 140d1ff75b..f2c588c6b5 100644 --- a/firmware/mp3_playback.c +++ b/firmware/mp3_playback.c | |||
@@ -72,6 +72,7 @@ static const char* const units[] = | |||
72 | "dB", /* Loudness */ | 72 | "dB", /* Loudness */ |
73 | "", /* AVC */ | 73 | "", /* AVC */ |
74 | "", /* Channels */ | 74 | "", /* Channels */ |
75 | "%", /* Stereo width */ | ||
75 | "dB", /* Left gain */ | 76 | "dB", /* Left gain */ |
76 | "dB", /* Right gain */ | 77 | "dB", /* Right gain */ |
77 | "dB", /* Mic gain */ | 78 | "dB", /* Mic gain */ |
@@ -92,6 +93,7 @@ static const int numdecimals[] = | |||
92 | 0, /* Loudness */ | 93 | 0, /* Loudness */ |
93 | 0, /* AVC */ | 94 | 0, /* AVC */ |
94 | 0, /* Channels */ | 95 | 0, /* Channels */ |
96 | 0, /* Stereo width */ | ||
95 | 1, /* Left gain */ | 97 | 1, /* Left gain */ |
96 | 1, /* Right gain */ | 98 | 1, /* Right gain */ |
97 | 1, /* Mic gain */ | 99 | 1, /* Mic gain */ |
@@ -112,6 +114,7 @@ static const int steps[] = | |||
112 | 1, /* Loudness */ | 114 | 1, /* Loudness */ |
113 | 1, /* AVC */ | 115 | 1, /* AVC */ |
114 | 1, /* Channels */ | 116 | 1, /* Channels */ |
117 | 1, /* Stereo width */ | ||
115 | 1, /* Left gain */ | 118 | 1, /* Left gain */ |
116 | 1, /* Right gain */ | 119 | 1, /* Right gain */ |
117 | 1, /* Mic gain */ | 120 | 1, /* Mic gain */ |
@@ -137,6 +140,7 @@ static const int minval[] = | |||
137 | 0, /* Loudness */ | 140 | 0, /* Loudness */ |
138 | -1, /* AVC */ | 141 | -1, /* AVC */ |
139 | 0, /* Channels */ | 142 | 0, /* Channels */ |
143 | 0, /* Stereo width */ | ||
140 | 0, /* Left gain */ | 144 | 0, /* Left gain */ |
141 | 0, /* Right gain */ | 145 | 0, /* Right gain */ |
142 | 0, /* Mic gain */ | 146 | 0, /* Mic gain */ |
@@ -161,7 +165,8 @@ static const int maxval[] = | |||
161 | 100, /* Balance */ | 165 | 100, /* Balance */ |
162 | 17, /* Loudness */ | 166 | 17, /* Loudness */ |
163 | 4, /* AVC */ | 167 | 4, /* AVC */ |
164 | 6, /* Channels */ | 168 | 5, /* Channels */ |
169 | 255, /* Stereo width */ | ||
165 | 15, /* Left gain */ | 170 | 15, /* Left gain */ |
166 | 15, /* Right gain */ | 171 | 15, /* Right gain */ |
167 | 15, /* Mic gain */ | 172 | 15, /* Mic gain */ |
@@ -187,6 +192,7 @@ static const int defaultval[] = | |||
187 | 0, /* Loudness */ | 192 | 0, /* Loudness */ |
188 | 0, /* AVC */ | 193 | 0, /* AVC */ |
189 | 0, /* Channels */ | 194 | 0, /* Channels */ |
195 | 100, /* Stereo width */ | ||
190 | 8, /* Left gain */ | 196 | 8, /* Left gain */ |
191 | 8, /* Right gain */ | 197 | 8, /* Right gain */ |
192 | 2, /* Mic gain */ | 198 | 2, /* Mic gain */ |
@@ -566,8 +572,6 @@ static void init_playback(void) | |||
566 | mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); | 572 | mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); |
567 | } while((val & 0x0c) != 0x0c); | 573 | } while((val & 0x0c) != 0x0c); |
568 | 574 | ||
569 | mpeg_sound_channel_config(MPEG_SOUND_STEREO); | ||
570 | |||
571 | #if CONFIG_HWCODEC == MAS3587F | 575 | #if CONFIG_HWCODEC == MAS3587F |
572 | mpeg_mode = MPEG_DECODER; | 576 | mpeg_mode = MPEG_DECODER; |
573 | #endif | 577 | #endif |
@@ -619,6 +623,89 @@ void set_prescaled_volume(void) | |||
619 | #endif /* MAS3507D */ | 623 | #endif /* MAS3507D */ |
620 | #endif /* !SIMULATOR */ | 624 | #endif /* !SIMULATOR */ |
621 | 625 | ||
626 | int channel_configuration = MPEG_SOUND_STEREO; | ||
627 | int stereo_width = 100; | ||
628 | |||
629 | #ifndef SIMULATOR | ||
630 | static void set_channel_config(void) | ||
631 | { | ||
632 | /* default values: stereo */ | ||
633 | unsigned long val_ll = 0x80000; | ||
634 | unsigned long val_lr = 0; | ||
635 | unsigned long val_rl = 0; | ||
636 | unsigned long val_rr = 0x80000; | ||
637 | |||
638 | switch(channel_configuration) | ||
639 | { | ||
640 | /* case MPEG_SOUND_STEREO unnecessary */ | ||
641 | |||
642 | case MPEG_SOUND_MONO: | ||
643 | val_ll = 0xc0000; | ||
644 | val_lr = 0xc0000; | ||
645 | val_rl = 0xc0000; | ||
646 | val_rr = 0xc0000; | ||
647 | break; | ||
648 | |||
649 | case MPEG_SOUND_CUSTOM: | ||
650 | { | ||
651 | /* fixed point variables (matching MAS internal format) | ||
652 | integer part: upper 13 bits (inlcuding sign) | ||
653 | fractional part: lower 19 bits */ | ||
654 | long fp_width, fp_straight, fp_cross; | ||
655 | |||
656 | fp_width = (stereo_width << 19) / 100; | ||
657 | if (stereo_width <= 100) | ||
658 | { | ||
659 | fp_straight = - ((1<<19) + fp_width) / 2; | ||
660 | fp_cross = fp_straight + fp_width; | ||
661 | } | ||
662 | else | ||
663 | { | ||
664 | fp_straight = - (1<<19); | ||
665 | fp_cross = ((2 * fp_width / (((1<<19) + fp_width) >> 10)) | ||
666 | << 9) - (1<<19); | ||
667 | } | ||
668 | val_ll = val_rr = fp_straight & 0xFFFFF; | ||
669 | val_lr = val_rl = fp_cross & 0xFFFFF; | ||
670 | } | ||
671 | break; | ||
672 | |||
673 | case MPEG_SOUND_MONO_LEFT: | ||
674 | val_ll = 0x80000; | ||
675 | val_lr = 0x80000; | ||
676 | val_rl = 0; | ||
677 | val_rr = 0; | ||
678 | break; | ||
679 | |||
680 | case MPEG_SOUND_MONO_RIGHT: | ||
681 | val_ll = 0; | ||
682 | val_lr = 0; | ||
683 | val_rl = 0x80000; | ||
684 | val_rr = 0x80000; | ||
685 | break; | ||
686 | |||
687 | case MPEG_SOUND_KARAOKE: | ||
688 | val_ll = 0x80001; | ||
689 | val_lr = 0x7ffff; | ||
690 | val_rl = 0x7ffff; | ||
691 | val_rr = 0x80001; | ||
692 | break; | ||
693 | } | ||
694 | |||
695 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | ||
696 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LL, &val_ll, 1); /* LL */ | ||
697 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LR, &val_lr, 1); /* LR */ | ||
698 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RL, &val_rl, 1); /* RL */ | ||
699 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RR, &val_rr, 1); /* RR */ | ||
700 | #elif CONFIG_HWCODEC == MAS3507D | ||
701 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_ll, 1); /* LL */ | ||
702 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_lr, 1); /* LR */ | ||
703 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_rl, 1); /* RL */ | ||
704 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_rr, 1); /* RR */ | ||
705 | #endif | ||
706 | } | ||
707 | #endif /* !SIMULATOR */ | ||
708 | |||
622 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 709 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
623 | unsigned long mdb_shape_shadow = 0; | 710 | unsigned long mdb_shape_shadow = 0; |
624 | unsigned long loudness_shadow = 0; | 711 | unsigned long loudness_shadow = 0; |
@@ -766,7 +853,14 @@ void mpeg_sound_set(int setting, int value) | |||
766 | break; | 853 | break; |
767 | #endif | 854 | #endif |
768 | case SOUND_CHANNELS: | 855 | case SOUND_CHANNELS: |
769 | mpeg_sound_channel_config(value); | 856 | channel_configuration = value; |
857 | set_channel_config(); | ||
858 | break; | ||
859 | |||
860 | case SOUND_STEREO_WIDTH: | ||
861 | stereo_width = value; | ||
862 | if (channel_configuration == MPEG_SOUND_CUSTOM) | ||
863 | set_channel_config(); | ||
770 | break; | 864 | break; |
771 | } | 865 | } |
772 | #endif /* SIMULATOR */ | 866 | #endif /* SIMULATOR */ |
@@ -799,82 +893,6 @@ int mpeg_val2phys(int setting, int value) | |||
799 | #endif | 893 | #endif |
800 | } | 894 | } |
801 | 895 | ||
802 | void mpeg_sound_channel_config(int configuration) | ||
803 | { | ||
804 | #ifdef SIMULATOR | ||
805 | (void)configuration; | ||
806 | #else | ||
807 | unsigned long val_ll = 0x80000; | ||
808 | unsigned long val_lr = 0; | ||
809 | unsigned long val_rl = 0; | ||
810 | unsigned long val_rr = 0x80000; | ||
811 | |||
812 | switch(configuration) | ||
813 | { | ||
814 | case MPEG_SOUND_STEREO: | ||
815 | val_ll = 0x80000; | ||
816 | val_lr = 0; | ||
817 | val_rl = 0; | ||
818 | val_rr = 0x80000; | ||
819 | break; | ||
820 | |||
821 | case MPEG_SOUND_MONO: | ||
822 | val_ll = 0xc0000; | ||
823 | val_lr = 0xc0000; | ||
824 | val_rl = 0xc0000; | ||
825 | val_rr = 0xc0000; | ||
826 | break; | ||
827 | |||
828 | case MPEG_SOUND_MONO_LEFT: | ||
829 | val_ll = 0x80000; | ||
830 | val_lr = 0x80000; | ||
831 | val_rl = 0; | ||
832 | val_rr = 0; | ||
833 | break; | ||
834 | |||
835 | case MPEG_SOUND_MONO_RIGHT: | ||
836 | val_ll = 0; | ||
837 | val_lr = 0; | ||
838 | val_rl = 0x80000; | ||
839 | val_rr = 0x80000; | ||
840 | break; | ||
841 | |||
842 | case MPEG_SOUND_STEREO_NARROW: | ||
843 | val_ll = 0xa0000; | ||
844 | val_lr = 0xe0000; | ||
845 | val_rl = 0xe0000; | ||
846 | val_rr = 0xa0000; | ||
847 | break; | ||
848 | |||
849 | case MPEG_SOUND_STEREO_WIDE: | ||
850 | val_ll = 0x80000; | ||
851 | val_lr = 0x40000; | ||
852 | val_rl = 0x40000; | ||
853 | val_rr = 0x80000; | ||
854 | break; | ||
855 | |||
856 | case MPEG_SOUND_KARAOKE: | ||
857 | val_ll = 0x80001; | ||
858 | val_lr = 0x7ffff; | ||
859 | val_rl = 0x7ffff; | ||
860 | val_rr = 0x80001; | ||
861 | break; | ||
862 | } | ||
863 | |||
864 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | ||
865 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LL, &val_ll, 1); /* LL */ | ||
866 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LR, &val_lr, 1); /* LR */ | ||
867 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RL, &val_rl, 1); /* RL */ | ||
868 | mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RR, &val_rr, 1); /* RR */ | ||
869 | #else | ||
870 | mas_writemem(MAS_BANK_D1, 0x7f8, &val_ll, 1); /* LL */ | ||
871 | mas_writemem(MAS_BANK_D1, 0x7f9, &val_lr, 1); /* LR */ | ||
872 | mas_writemem(MAS_BANK_D1, 0x7fa, &val_rl, 1); /* RL */ | ||
873 | mas_writemem(MAS_BANK_D1, 0x7fb, &val_rr, 1); /* RR */ | ||
874 | #endif | ||
875 | #endif | ||
876 | } | ||
877 | |||
878 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 896 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
879 | /* This function works by telling the decoder that we have another | 897 | /* This function works by telling the decoder that we have another |
880 | crystal frequency than we actually have. It will adjust its internal | 898 | crystal frequency than we actually have. It will adjust its internal |
@@ -901,7 +919,7 @@ void mpeg_set_pitch(int pitch) | |||
901 | #endif | 919 | #endif |
902 | 920 | ||
903 | void mp3_init(int volume, int bass, int treble, int balance, int loudness, | 921 | void mp3_init(int volume, int bass, int treble, int balance, int loudness, |
904 | int avc, int channel_config, | 922 | int avc, int channel_config, int stereo_width, |
905 | int mdb_strength, int mdb_harmonics, | 923 | int mdb_strength, int mdb_harmonics, |
906 | int mdb_center, int mdb_shape, bool mdb_enable, | 924 | int mdb_center, int mdb_shape, bool mdb_enable, |
907 | bool superbass) | 925 | bool superbass) |
@@ -914,6 +932,7 @@ void mp3_init(int volume, int bass, int treble, int balance, int loudness, | |||
914 | (void)loudness; | 932 | (void)loudness; |
915 | (void)avc; | 933 | (void)avc; |
916 | (void)channel_config; | 934 | (void)channel_config; |
935 | (void)stereo_width; | ||
917 | (void)mdb_strength; | 936 | (void)mdb_strength; |
918 | (void)mdb_harmonics; | 937 | (void)mdb_harmonics; |
919 | (void)mdb_center; | 938 | (void)mdb_center; |
@@ -1015,8 +1034,6 @@ void mp3_init(int volume, int bass, int treble, int balance, int loudness, | |||
1015 | 1034 | ||
1016 | mas_writereg(MAS_REG_KPRESCALE, 0xe9400); | 1035 | mas_writereg(MAS_REG_KPRESCALE, 0xe9400); |
1017 | dac_enable(true); | 1036 | dac_enable(true); |
1018 | |||
1019 | mpeg_sound_channel_config(channel_config); | ||
1020 | #endif | 1037 | #endif |
1021 | 1038 | ||
1022 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 1039 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
@@ -1031,9 +1048,10 @@ void mp3_init(int volume, int bass, int treble, int balance, int loudness, | |||
1031 | mpeg_sound_set(SOUND_TREBLE, treble); | 1048 | mpeg_sound_set(SOUND_TREBLE, treble); |
1032 | mpeg_sound_set(SOUND_BALANCE, balance); | 1049 | mpeg_sound_set(SOUND_BALANCE, balance); |
1033 | mpeg_sound_set(SOUND_VOLUME, volume); | 1050 | mpeg_sound_set(SOUND_VOLUME, volume); |
1051 | mpeg_sound_set(SOUND_CHANNELS, channel_config); | ||
1052 | mpeg_sound_set(SOUND_STEREO_WIDTH, stereo_width); | ||
1034 | 1053 | ||
1035 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) | 1054 | #if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) |
1036 | mpeg_sound_channel_config(channel_config); | ||
1037 | mpeg_sound_set(SOUND_LOUDNESS, loudness); | 1055 | mpeg_sound_set(SOUND_LOUDNESS, loudness); |
1038 | mpeg_sound_set(SOUND_AVC, avc); | 1056 | mpeg_sound_set(SOUND_AVC, avc); |
1039 | mpeg_sound_set(SOUND_MDB_STRENGTH, mdb_strength); | 1057 | mpeg_sound_set(SOUND_MDB_STRENGTH, mdb_strength); |