diff options
Diffstat (limited to '')
-rw-r--r-- | src/decoder/mad_decoder_plugin.c | 21 | ||||
-rw-r--r-- | src/decoder/wildmidi_decoder_plugin.c | 4 | ||||
-rw-r--r-- | src/input/curl_input_plugin.c | 19 |
3 files changed, 31 insertions, 13 deletions
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) |