summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dsp.c13
-rw-r--r--apps/lang/english.lang17
-rw-r--r--apps/settings_list.c7
3 files changed, 34 insertions, 3 deletions
diff --git a/apps/dsp.c b/apps/dsp.c
index 2113d251a1..4bf1ab92d6 100644
--- a/apps/dsp.c
+++ b/apps/dsp.c
@@ -1175,6 +1175,18 @@ static void channels_process_sound_chan_karaoke(int count, int32_t *buf[])
1175} 1175}
1176#endif /* DSP_HAVE_ASM_SOUND_CHAN_KARAOKE */ 1176#endif /* DSP_HAVE_ASM_SOUND_CHAN_KARAOKE */
1177 1177
1178static void channels_process_sound_chan_swap(int count, int32_t *buf[])
1179{
1180 int32_t *sl = buf[0], *sr = buf[1];
1181
1182 while (count-- > 0)
1183 {
1184 int32_t ch = *sl;
1185 *sl++ = *sr;
1186 *sr++ = ch;
1187 }
1188}
1189
1178static void dsp_set_channel_config(int value) 1190static void dsp_set_channel_config(int value)
1179{ 1191{
1180 static const channels_process_fn_type channels_process_functions[] = 1192 static const channels_process_fn_type channels_process_functions[] =
@@ -1186,6 +1198,7 @@ static void dsp_set_channel_config(int value)
1186 [SOUND_CHAN_MONO_LEFT] = channels_process_sound_chan_mono_left, 1198 [SOUND_CHAN_MONO_LEFT] = channels_process_sound_chan_mono_left,
1187 [SOUND_CHAN_MONO_RIGHT] = channels_process_sound_chan_mono_right, 1199 [SOUND_CHAN_MONO_RIGHT] = channels_process_sound_chan_mono_right,
1188 [SOUND_CHAN_KARAOKE] = channels_process_sound_chan_karaoke, 1200 [SOUND_CHAN_KARAOKE] = channels_process_sound_chan_karaoke,
1201 [SOUND_CHAN_SWAP] = channels_process_sound_chan_swap,
1189 }; 1202 };
1190 1203
1191 if ((unsigned)value >= ARRAYLEN(channels_process_functions) || 1204 if ((unsigned)value >= ARRAYLEN(channels_process_functions) ||
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 5a59473681..d3fac86448 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12903,3 +12903,20 @@
12903 *: "Cancel Sleep Timer" 12903 *: "Cancel Sleep Timer"
12904 </voice> 12904 </voice>
12905</phrase> 12905</phrase>
12906<phrase>
12907 id: LANG_CHANNEL_SWAP
12908 desc: in sound_settings
12909 user: core
12910 <source>
12911 *: none
12912 swcodec: "Swap channels"
12913 </source>
12914 <dest>
12915 *: none
12916 swcodec: "Swap channels"
12917 </dest>
12918 <voice>
12919 *: none
12920 swcodec: "Swap channels"
12921 </voice>
12922</phrase>
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 521d565f3b..6602ec206a 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -678,11 +678,12 @@ const struct settings_list settings[] = {
678 678
679 CHOICE_SETTING(F_SOUNDSETTING, channel_config, LANG_CHANNEL_CONFIGURATION, 679 CHOICE_SETTING(F_SOUNDSETTING, channel_config, LANG_CHANNEL_CONFIGURATION,
680 0,"channels", 680 0,"channels",
681 "stereo,mono,custom,mono left,mono right,karaoke", 681 "stereo,mono,custom,mono left,mono right,karaoke,swap",
682 sound_set_channels, 6, 682 sound_set_channels, 7,
683 ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO), 683 ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO),
684 ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT), 684 ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT),
685 ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)), 685 ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE),
686 ID2P(LANG_CHANNEL_SWAP)),
686 SOUND_SETTING(F_SOUNDSETTING, stereo_width, LANG_STEREO_WIDTH, 687 SOUND_SETTING(F_SOUNDSETTING, stereo_width, LANG_STEREO_WIDTH,
687 "stereo_width", SOUND_STEREO_WIDTH), 688 "stereo_width", SOUND_STEREO_WIDTH),
688#ifdef AUDIOHW_HAVE_DEPTH_3D 689#ifdef AUDIOHW_HAVE_DEPTH_3D