diff options
author | Sebastian Thorarensen <sebth@naju.se> | 2013-10-18 04:12:36 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-10-18 14:23:24 +0200 |
commit | b6ac249c3c009dc45ba758d2dbe6b2959215959b (patch) | |
tree | 0628ff9923c16d740361bbe5b846b28069d2163d | |
parent | 5e103b5fb7aa8da5000ecd25815f979df45cffa6 (diff) |
decoder/mikmod: Add loop configuration parameter
This patch allows the user to configure the mikmod decoder plugin to loop
modules. It adds a configuration parameter to the mikmod decoder called
"loop" which can be "no" (the old behaviour, default) or "yes" to allow
modules to use backward loops.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | doc/user.xml | 10 | ||||
-rw-r--r-- | src/decoder/MikmodDecoderPlugin.cxx | 5 |
3 files changed, 14 insertions, 2 deletions
@@ -17,6 +17,7 @@ ver 0.18 (2012/??/??) - flac: support FLAC files inside archives - opus: new decoder plugin for the Opus codec - vorbis: skip 16 bit quantisation, provide float samples + - mikmod: add "loop" configuration parameter - mp4ff: obsolete plugin removed * encoder: - opus: new encoder plugin for the Opus codec diff --git a/doc/user.xml b/doc/user.xml index 61d02c162..b3ab8d447 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -978,6 +978,16 @@ systemctl start mpd.socket</programlisting> <tbody> <row> <entry> + <varname>loop</varname> + <parameter>yes|no</parameter> + </entry> + <entry> + Allow backward loops in modules. Default is + <parameter>no</parameter>. + </entry> + </row> + <row> + <entry> <varname>sample_rate</varname> </entry> <entry> diff --git a/src/decoder/MikmodDecoderPlugin.cxx b/src/decoder/MikmodDecoderPlugin.cxx index fb82eb732..6f2fd039d 100644 --- a/src/decoder/MikmodDecoderPlugin.cxx +++ b/src/decoder/MikmodDecoderPlugin.cxx @@ -104,6 +104,7 @@ static MDRIVER drv_mpd = { VC_VoiceRealVolume }; +static bool mikmod_loop; static unsigned mikmod_sample_rate; static bool @@ -111,6 +112,7 @@ mikmod_decoder_init(const config_param ¶m) { static char params[] = ""; + mikmod_loop = param.GetBlockValue("loop", false); mikmod_sample_rate = param.GetBlockValue("sample_rate", 44100u); if (!audio_valid_sample_rate(mikmod_sample_rate)) FormatFatalError("Invalid sample rate in line %d: %u", @@ -161,8 +163,7 @@ mikmod_decoder_file_decode(struct decoder *decoder, const char *path_fs) return; } - /* Prevent module from looping forever */ - handle->loop = 0; + handle->loop = mikmod_loop; const AudioFormat audio_format(mikmod_sample_rate, SampleFormat::S16, 2); assert(audio_format.IsValid()); |