aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlder Hornbridge <ahornbridge@yahoo.co.in>2010-10-27 21:16:24 +0200
committerMax Kellermann <max@duempel.org>2010-10-27 21:16:24 +0200
commit4e945169127fcd8aae418cc3e6a05fc011963492 (patch)
tree185bab44dcfbff8a2e862cc859be9cb20ebef1e2
parentdadb6747adc88495e2c10daf26fdc0509a0d5dc0 (diff)
downloadmpd-4e945169127fcd8aae418cc3e6a05fc011963492.tar.gz
mpd-4e945169127fcd8aae418cc3e6a05fc011963492.tar.xz
mpd-4e945169127fcd8aae418cc3e6a05fc011963492.zip
decoder/sidplay: play monaural SID tunes in mono
-rw-r--r--NEWS1
-rw-r--r--src/decoder/sidplay_decoder_plugin.cxx12
2 files changed, 11 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 1a1952175..df84bfd22 100644
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,7 @@ ver 0.16 (20??/??/??)
- sidplay: support sub-tunes
- sidplay: implemented songlength database
- sidplay: support seeking
+ - sidplay: play monaural SID tunes in mono
- wavpack: activate 32 bit support
- wavpack: allow more than 2 channels
- mp4ff: rename plugin "mp4" to "mp4ff"
diff --git a/src/decoder/sidplay_decoder_plugin.cxx b/src/decoder/sidplay_decoder_plugin.cxx
index a2eb21ae4..dad0759e0 100644
--- a/src/decoder/sidplay_decoder_plugin.cxx
+++ b/src/decoder/sidplay_decoder_plugin.cxx
@@ -201,6 +201,7 @@ static void
sidplay_file_decode(struct decoder *decoder, const char *path_fs)
{
int ret;
+ int channels;
/* load the tune */
@@ -256,7 +257,7 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
config.clockSpeed = SID2_CLOCK_CORRECT;
config.frequency = 48000;
config.optimisation = SID2_DEFAULT_OPTIMISATION;
- config.playback = sid2_stereo;
+
config.precision = 16;
config.sidDefault = SID2_MOS6581;
config.sidEmulation = &builder;
@@ -267,6 +268,13 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
#else
config.sampleFormat = SID2_BIG_SIGNED;
#endif
+ if (tune.isStereo()) {
+ config.playback = sid2_stereo;
+ channels = 2;
+ } else {
+ config.playback = sid2_mono;
+ channels = 1;
+ }
iret = player.config(config);
if (iret != 0) {
@@ -277,7 +285,7 @@ sidplay_file_decode(struct decoder *decoder, const char *path_fs)
/* initialize the MPD decoder */
struct audio_format audio_format;
- audio_format_init(&audio_format, 48000, SAMPLE_FORMAT_S16, 2);
+ audio_format_init(&audio_format, 48000, SAMPLE_FORMAT_S16, channels);
assert(audio_format_valid(&audio_format));
decoder_initialized(decoder, &audio_format, true, (float)song_len);