From 5c4bd11d9172717be3ebb37390e6e55cfa369ed9 Mon Sep 17 00:00:00 2001 From: Michael Giacomelli Date: Wed, 26 Oct 2011 18:18:34 +0000 Subject: [PATCH] =?UTF-8?q?Add=20option=20to=20exchange=20the=20left=20and?= =?UTF-8?q?=20right=20stereo=20channels.=20=20Patch=20by=20Dave=20Chapman?= =?UTF-8?q?=20and=20Martin=20S=C3=A4gm=C3=BCller.=20=20Also=20add=20manual?= =?UTF-8?q?=20entry=20(by=20Michael=20Giacomelli).=20=20Note=20that=20this?= =?UTF-8?q?=20setting=20will=20confuse=20non-software=20effect=20options?= =?UTF-8?q?=20like=20channel=20balance.=20=20This=20should=20be=20addresse?= =?UTF-8?q?d=20in=20a=20future=20commit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30837 a1c6a512-1295-4272-9138-f99709370657 --- apps/dsp.c | 13 +++++++++++++ apps/lang/english.lang | 17 +++++++++++++++++ apps/settings_list.c | 7 ++++--- manual/configure_rockbox/sound_settings.tex | 2 ++ 4 files changed, 36 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[]) } #endif /* DSP_HAVE_ASM_SOUND_CHAN_KARAOKE */ +static void channels_process_sound_chan_swap(int count, int32_t *buf[]) +{ + int32_t *sl = buf[0], *sr = buf[1]; + + while (count-- > 0) + { + int32_t ch = *sl; + *sl++ = *sr; + *sr++ = ch; + } +} + static void dsp_set_channel_config(int value) { static const channels_process_fn_type channels_process_functions[] = @@ -1186,6 +1198,7 @@ static void dsp_set_channel_config(int value) [SOUND_CHAN_MONO_LEFT] = channels_process_sound_chan_mono_left, [SOUND_CHAN_MONO_RIGHT] = channels_process_sound_chan_mono_right, [SOUND_CHAN_KARAOKE] = channels_process_sound_chan_karaoke, + [SOUND_CHAN_SWAP] = channels_process_sound_chan_swap, }; 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 @@ *: "Cancel Sleep Timer" + + id: LANG_CHANNEL_SWAP + desc: in sound_settings + user: core + + *: none + swcodec: "Swap channels" + + + *: none + swcodec: "Swap channels" + + + *: none + swcodec: "Swap channels" + + 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[] = { CHOICE_SETTING(F_SOUNDSETTING, channel_config, LANG_CHANNEL_CONFIGURATION, 0,"channels", - "stereo,mono,custom,mono left,mono right,karaoke", - sound_set_channels, 6, + "stereo,mono,custom,mono left,mono right,karaoke,swap", + sound_set_channels, 7, ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO), ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT), - ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)), + ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE), + ID2P(LANG_CHANNEL_SWAP)), SOUND_SETTING(F_SOUNDSETTING, stereo_width, LANG_STEREO_WIDTH, "stereo_width", SOUND_STEREO_WIDTH), #ifdef AUDIOHW_HAVE_DEPTH_3D diff --git a/manual/configure_rockbox/sound_settings.tex b/manual/configure_rockbox/sound_settings.tex index 76965d00cb..54031c5a20 100644 --- a/manual/configure_rockbox/sound_settings.tex +++ b/manual/configure_rockbox/sound_settings.tex @@ -169,6 +169,8 @@ change to customise your listening experience. to make the singer sound centrally placed, this often (but not always) has the effect of removing the voice track from a song. This setting also very often has other undesirable effects on the sound. + \item[Swap Channels] + Exchanges the left and right channels. \end{description} \section{Stereo Width}