decoder/modplug: Add "loop_count" parameter
The "loop_count" configuration parameter allows the user to set how many times a module with backward loops shall loop. "0" (the default) means a module is not allowed to use backward loops at all. "-1" enables inifinite looping.
This commit is contained in:
parent
d6553fc6a7
commit
db44a6e948
1
NEWS
1
NEWS
|
@ -18,6 +18,7 @@ ver 0.18 (2012/??/??)
|
||||||
- opus: new decoder plugin for the Opus codec
|
- opus: new decoder plugin for the Opus codec
|
||||||
- vorbis: skip 16 bit quantisation, provide float samples
|
- vorbis: skip 16 bit quantisation, provide float samples
|
||||||
- mikmod: add "loop" configuration parameter
|
- mikmod: add "loop" configuration parameter
|
||||||
|
- modplug: add "loop_count" configuration parameter
|
||||||
- mp4ff: obsolete plugin removed
|
- mp4ff: obsolete plugin removed
|
||||||
* encoder:
|
* encoder:
|
||||||
- opus: new encoder plugin for the Opus codec
|
- opus: new encoder plugin for the Opus codec
|
||||||
|
|
31
doc/user.xml
31
doc/user.xml
|
@ -1000,6 +1000,37 @@ systemctl start mpd.socket</programlisting>
|
||||||
</informaltable>
|
</informaltable>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title><varname>modplug</varname></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Module player based on MODPlug.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<informaltable>
|
||||||
|
<tgroup cols="2">
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Setting</entry>
|
||||||
|
<entry>Description</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
<varname>loop_count</varname>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
Number of times to loop the module if it uses backward loops.
|
||||||
|
Default is <parameter>0</parameter> which prevents looping.
|
||||||
|
<parameter>-1</parameter> loops forever.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title><varname>wildmidi</varname></title>
|
<title><varname>wildmidi</varname></title>
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "DecoderAPI.hxx"
|
#include "DecoderAPI.hxx"
|
||||||
#include "InputStream.hxx"
|
#include "InputStream.hxx"
|
||||||
#include "tag/TagHandler.hxx"
|
#include "tag/TagHandler.hxx"
|
||||||
|
#include "system/FatalError.hxx"
|
||||||
#include "util/Domain.hxx"
|
#include "util/Domain.hxx"
|
||||||
#include "Log.hxx"
|
#include "Log.hxx"
|
||||||
|
|
||||||
|
@ -38,6 +39,19 @@ static constexpr size_t MODPLUG_PREALLOC_BLOCK = 256 * 1024;
|
||||||
static constexpr size_t MODPLUG_READ_BLOCK = 128 * 1024;
|
static constexpr size_t MODPLUG_READ_BLOCK = 128 * 1024;
|
||||||
static constexpr input_stream::offset_type MODPLUG_FILE_LIMIT = 100 * 1024 * 1024;
|
static constexpr input_stream::offset_type MODPLUG_FILE_LIMIT = 100 * 1024 * 1024;
|
||||||
|
|
||||||
|
static int modplug_loop_count;
|
||||||
|
|
||||||
|
static bool
|
||||||
|
modplug_decoder_init(const config_param ¶m)
|
||||||
|
{
|
||||||
|
modplug_loop_count = param.GetBlockValue("loop_count", 0);
|
||||||
|
if (modplug_loop_count < -1)
|
||||||
|
FormatFatalError("Invalid loop count in line %d: %i",
|
||||||
|
param.line, modplug_loop_count);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static GByteArray *
|
static GByteArray *
|
||||||
mod_loadfile(struct decoder *decoder, struct input_stream *is)
|
mod_loadfile(struct decoder *decoder, struct input_stream *is)
|
||||||
{
|
{
|
||||||
|
@ -114,6 +128,7 @@ mod_decode(struct decoder *decoder, struct input_stream *is)
|
||||||
settings.mChannels = 2;
|
settings.mChannels = 2;
|
||||||
settings.mBits = 16;
|
settings.mBits = 16;
|
||||||
settings.mFrequency = 44100;
|
settings.mFrequency = 44100;
|
||||||
|
settings.mLoopCount = modplug_loop_count;
|
||||||
/* insert more setting changes here */
|
/* insert more setting changes here */
|
||||||
ModPlug_SetSettings(&settings);
|
ModPlug_SetSettings(&settings);
|
||||||
|
|
||||||
|
@ -192,7 +207,7 @@ static const char *const mod_suffixes[] = {
|
||||||
|
|
||||||
const struct decoder_plugin modplug_decoder_plugin = {
|
const struct decoder_plugin modplug_decoder_plugin = {
|
||||||
"modplug",
|
"modplug",
|
||||||
nullptr,
|
modplug_decoder_init,
|
||||||
nullptr,
|
nullptr,
|
||||||
mod_decode,
|
mod_decode,
|
||||||
nullptr,
|
nullptr,
|
||||||
|
|
Loading…
Reference in New Issue