From 1648c7aa5baf86583b057943337e4fade8616022 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sat, 14 Nov 2009 02:03:03 +0100
Subject: decoder/mikmod: sample rate is configurable

The new option "sample_rate" sets the sample rate for libmikmod.
---
 src/decoder/mikmod_plugin.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

(limited to 'src/decoder')

diff --git a/src/decoder/mikmod_plugin.c b/src/decoder/mikmod_plugin.c
index 720196333..74eb48ee9 100644
--- a/src/decoder/mikmod_plugin.c
+++ b/src/decoder/mikmod_plugin.c
@@ -100,11 +100,20 @@ static MDRIVER drv_mpd = {
 	VC_VoiceRealVolume
 };
 
+static unsigned mikmod_sample_rate;
+
 static bool
-mikmod_decoder_init(G_GNUC_UNUSED const struct config_param *param)
+mikmod_decoder_init(const struct config_param *param)
 {
+	unsigned sample_rate;
 	static char params[] = "";
 
+	mikmod_sample_rate = config_get_block_unsigned(param, "sample_rate",
+						       44100);
+	if (!audio_valid_sample_rate(mikmod_sample_rate))
+		g_error("Invalid sample rate in line %d: %u",
+			param->line, sample_rate);
+
 	md_device = 0;
 	md_reverb = 0;
 
@@ -112,7 +121,7 @@ mikmod_decoder_init(G_GNUC_UNUSED const struct config_param *param)
 	MikMod_RegisterAllLoaders();
 
 	md_pansep = 64;
-	md_mixfreq = 44100;
+	md_mixfreq = mikmod_sample_rate;
 	md_mode = (DMODE_SOFT_MUSIC | DMODE_INTERP | DMODE_STEREO |
 		   DMODE_16BITS);
 
@@ -155,7 +164,7 @@ mikmod_decoder_file_decode(struct decoder *decoder, const char *path_fs)
 	/* Prevent module from looping forever */
 	handle->loop = 0;
 
-	audio_format_init(&audio_format, 44100, 16, 2);
+	audio_format_init(&audio_format, mikmod_sample_rate, 16, 2);
 	assert(audio_format_valid(&audio_format));
 
 	secPerByte =
-- 
cgit v1.2.3