aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS9
-rw-r--r--configure.ac4
-rw-r--r--src/decoder/mad_decoder_plugin.c21
-rw-r--r--src/decoder/wildmidi_decoder_plugin.c4
-rw-r--r--src/input/curl_input_plugin.c19
5 files changed, 44 insertions, 13 deletions
diff --git a/NEWS b/NEWS
index 25d9f9dce..007da6305 100644
--- a/NEWS
+++ b/NEWS
@@ -103,6 +103,15 @@ ver 0.16 (20??/??/??)
* added libwrap support
+ver 0.15.12 (2010/07/20)
+* input:
+ - curl: remove assertion after curl_multi_fdset()
+* tags:
+ - rva2: set "gain", not "peak"
+* decoders:
+ - wildmidi: support version 0.2.3
+
+
ver 0.15.11 (2010/06/14)
* tags:
- ape: support album artist
diff --git a/configure.ac b/configure.ac
index 3bf956b69..b96fe0a07 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1033,6 +1033,10 @@ if test x$enable_wildmidi = xyes; then
AC_CHECK_LIB(WildMidi, WildMidi_Init,,
AC_MSG_ERROR([libwildmidi not found]))
+ AC_CHECK_LIB(WildMidi, WildMidi_SampledSeek,
+ [AC_DEFINE(HAVE_WILDMIDI_SAMPLED_SEEK, 1,
+ [Defined if WildMidi_SampledSeek() is available (libwildmidi <= 0.2.2)])])
+
CFLAGS=$oldcflags
LIBS=$oldlibs
CPPFLAGS=$oldcppflags
diff --git a/src/decoder/mad_decoder_plugin.c b/src/decoder/mad_decoder_plugin.c
index 32e35f113..037fdfb15 100644
--- a/src/decoder/mad_decoder_plugin.c
+++ b/src/decoder/mad_decoder_plugin.c
@@ -212,14 +212,14 @@ mp3_fill_buffer(struct mp3_data *data)
#ifdef HAVE_ID3TAG
/* Parse mp3 RVA2 frame. Shamelessly stolen from madplay. */
-static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gain_info)
+static bool
+parse_rva2(struct id3_tag *tag, struct replay_gain_info *replay_gain_info)
{
struct id3_frame const * frame;
id3_latin1_t const *id;
id3_byte_t const *data;
id3_length_t length;
- int found;
enum {
CHANNEL_OTHER = 0x00,
@@ -233,18 +233,18 @@ static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gai
CHANNEL_SUBWOOFER = 0x08
};
- found = 0;
-
/* relative volume adjustment information */
frame = id3_tag_findframe(tag, "RVA2", 0);
- if (!frame) return 0;
+ if (frame == NULL)
+ return false;
id = id3_field_getlatin1(id3_frame_field(frame, 0));
data = id3_field_getbinarydata(id3_frame_field(frame, 1),
&length);
- if (!id || !data) return 0;
+ if (id == NULL || data == NULL)
+ return false;
/*
* "The 'identification' string is used to identify the
@@ -280,22 +280,21 @@ static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gai
voladj_float = (double) voladj_fixed / 512;
- replay_gain_info->tuples[REPLAY_GAIN_TRACK].peak = voladj_float;
- replay_gain_info->tuples[REPLAY_GAIN_ALBUM].peak = voladj_float;
+ replay_gain_info->tuples[REPLAY_GAIN_TRACK].gain = voladj_float;
+ replay_gain_info->tuples[REPLAY_GAIN_ALBUM].gain = voladj_float;
g_debug("parseRVA2: Relative Volume "
"%+.1f dB adjustment (%s)\n",
voladj_float, id);
- found = 1;
- break;
+ return true;
}
data += 4 + peak_bytes;
length -= 4 + peak_bytes;
}
- return found;
+ return false;
}
#endif
diff --git a/src/decoder/wildmidi_decoder_plugin.c b/src/decoder/wildmidi_decoder_plugin.c
index 54eed48d9..66e6c61cf 100644
--- a/src/decoder/wildmidi_decoder_plugin.c
+++ b/src/decoder/wildmidi_decoder_plugin.c
@@ -97,7 +97,11 @@ wildmidi_file_decode(struct decoder *decoder, const char *path_fs)
unsigned long seek_where = WILDMIDI_SAMPLE_RATE *
decoder_seek_where(decoder);
+#ifdef HAVE_WILDMIDI_SAMPLED_SEEK
WildMidi_SampledSeek(wm, &seek_where);
+#else
+ WildMidi_FastSeek(wm, &seek_where);
+#endif
decoder_command_finished(decoder);
cmd = DECODE_COMMAND_NONE;
}
diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c
index 839c98074..f1c54cdbe 100644
--- a/src/input/curl_input_plugin.c
+++ b/src/input/curl_input_plugin.c
@@ -245,7 +245,6 @@ input_curl_select(struct input_curl *c, GError **error_r)
fd_set rfds, wfds, efds;
int max_fd, ret;
CURLMcode mcode;
- /* XXX hard coded timeout value.. */
struct timeval timeout = {
.tv_sec = 1,
.tv_usec = 0,
@@ -265,7 +264,23 @@ input_curl_select(struct input_curl *c, GError **error_r)
return -1;
}
- assert(max_fd >= 0);
+#if LIBCURL_VERSION_NUM >= 0x070f00
+ long timeout2;
+ mcode = curl_multi_timeout(c->multi, &timeout2);
+ if (mcode != CURLM_OK) {
+ g_warning("curl_multi_timeout() failed: %s\n",
+ curl_multi_strerror(mcode));
+ return -1;
+ }
+
+ if (timeout2 >= 0) {
+ if (timeout2 > 10000)
+ timeout2 = 10000;
+
+ timeout.tv_sec = timeout2 / 1000;
+ timeout.tv_usec = (timeout2 % 1000) * 1000;
+ }
+#endif
ret = select(max_fd + 1, &rfds, &wfds, &efds, &timeout);
if (ret < 0)