Merge release 0.15.12 from branch 'v0.15.x'
Conflicts: NEWS configure.ac
This commit is contained in:
commit
c0da938d4f
9
NEWS
9
NEWS
@ -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
|
|||||||
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)
|
|||||||
|
|
||||||
#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
|
|||||||
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
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user