aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-11-14 02:03:03 +0100
committerMax Kellermann <max@duempel.org>2009-11-14 02:24:42 +0100
commit1648c7aa5baf86583b057943337e4fade8616022 (patch)
tree8ead3e7f7237b2aa640127685f0f9dd8404878e1 /src
parentedaf017908f153091f0e3da073729bc2522a56f4 (diff)
decoder/mikmod: sample rate is configurable
The new option "sample_rate" sets the sample rate for libmikmod.
Diffstat (limited to 'src')
-rw-r--r--src/decoder/mikmod_plugin.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/decoder/mikmod_plugin.c b/src/decoder/mikmod_plugin.c
index 72019633..74eb48ee 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 =