Commit c0da938d authored by Max Kellermann's avatar Max Kellermann

Merge release 0.15.12 from branch 'v0.15.x'

Conflicts: NEWS configure.ac
parents fb19aa35 0fec8e08
...@@ -103,6 +103,15 @@ ver 0.16 (20??/??/??) ...@@ -103,6 +103,15 @@ ver 0.16 (20??/??/??)
* added libwrap support * 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) ver 0.15.11 (2010/06/14)
* tags: * tags:
- ape: support album artist - ape: support album artist
......
...@@ -1033,6 +1033,10 @@ if test x$enable_wildmidi = xyes; then ...@@ -1033,6 +1033,10 @@ if test x$enable_wildmidi = xyes; then
AC_CHECK_LIB(WildMidi, WildMidi_Init,, AC_CHECK_LIB(WildMidi, WildMidi_Init,,
AC_MSG_ERROR([libwildmidi not found])) 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 CFLAGS=$oldcflags
LIBS=$oldlibs LIBS=$oldlibs
CPPFLAGS=$oldcppflags CPPFLAGS=$oldcppflags
......
...@@ -212,14 +212,14 @@ mp3_fill_buffer(struct mp3_data *data) ...@@ -212,14 +212,14 @@ mp3_fill_buffer(struct mp3_data *data)
#ifdef HAVE_ID3TAG #ifdef HAVE_ID3TAG
/* Parse mp3 RVA2 frame. Shamelessly stolen from madplay. */ /* 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; struct id3_frame const * frame;
id3_latin1_t const *id; id3_latin1_t const *id;
id3_byte_t const *data; id3_byte_t const *data;
id3_length_t length; id3_length_t length;
int found;
enum { enum {
CHANNEL_OTHER = 0x00, CHANNEL_OTHER = 0x00,
...@@ -233,18 +233,18 @@ static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gai ...@@ -233,18 +233,18 @@ static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gai
CHANNEL_SUBWOOFER = 0x08 CHANNEL_SUBWOOFER = 0x08
}; };
found = 0;
/* relative volume adjustment information */ /* relative volume adjustment information */
frame = id3_tag_findframe(tag, "RVA2", 0); 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)); id = id3_field_getlatin1(id3_frame_field(frame, 0));
data = id3_field_getbinarydata(id3_frame_field(frame, 1), data = id3_field_getbinarydata(id3_frame_field(frame, 1),
&length); &length);
if (!id || !data) return 0; if (id == NULL || data == NULL)
return false;
/* /*
* "The 'identification' string is used to identify the * "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 ...@@ -280,22 +280,21 @@ static int parse_rva2(struct id3_tag * tag, struct replay_gain_info * replay_gai
voladj_float = (double) voladj_fixed / 512; voladj_float = (double) voladj_fixed / 512;
replay_gain_info->tuples[REPLAY_GAIN_TRACK].peak = voladj_float; replay_gain_info->tuples[REPLAY_GAIN_TRACK].gain = voladj_float;
replay_gain_info->tuples[REPLAY_GAIN_ALBUM].peak = voladj_float; replay_gain_info->tuples[REPLAY_GAIN_ALBUM].gain = voladj_float;
g_debug("parseRVA2: Relative Volume " g_debug("parseRVA2: Relative Volume "
"%+.1f dB adjustment (%s)\n", "%+.1f dB adjustment (%s)\n",
voladj_float, id); voladj_float, id);
found = 1; return true;
break;
} }
data += 4 + peak_bytes; data += 4 + peak_bytes;
length -= 4 + peak_bytes; length -= 4 + peak_bytes;
} }
return found; return false;
} }
#endif #endif
......
...@@ -97,7 +97,11 @@ wildmidi_file_decode(struct decoder *decoder, const char *path_fs) ...@@ -97,7 +97,11 @@ wildmidi_file_decode(struct decoder *decoder, const char *path_fs)
unsigned long seek_where = WILDMIDI_SAMPLE_RATE * unsigned long seek_where = WILDMIDI_SAMPLE_RATE *
decoder_seek_where(decoder); decoder_seek_where(decoder);
#ifdef HAVE_WILDMIDI_SAMPLED_SEEK
WildMidi_SampledSeek(wm, &seek_where); WildMidi_SampledSeek(wm, &seek_where);
#else
WildMidi_FastSeek(wm, &seek_where);
#endif
decoder_command_finished(decoder); decoder_command_finished(decoder);
cmd = DECODE_COMMAND_NONE; cmd = DECODE_COMMAND_NONE;
} }
......
...@@ -245,7 +245,6 @@ input_curl_select(struct input_curl *c, GError **error_r) ...@@ -245,7 +245,6 @@ input_curl_select(struct input_curl *c, GError **error_r)
fd_set rfds, wfds, efds; fd_set rfds, wfds, efds;
int max_fd, ret; int max_fd, ret;
CURLMcode mcode; CURLMcode mcode;
/* XXX hard coded timeout value.. */
struct timeval timeout = { struct timeval timeout = {
.tv_sec = 1, .tv_sec = 1,
.tv_usec = 0, .tv_usec = 0,
...@@ -265,7 +264,23 @@ input_curl_select(struct input_curl *c, GError **error_r) ...@@ -265,7 +264,23 @@ input_curl_select(struct input_curl *c, GError **error_r)
return -1; 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); ret = select(max_fd + 1, &rfds, &wfds, &efds, &timeout);
if (ret < 0) if (ret < 0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment