From 196de8c7588845eaca86d4447dfed70753393003 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 23 Feb 2016 10:57:03 +0100 Subject: [PATCH] decoder/thread: load APE replay gain from remote files --- NEWS | 1 + src/decoder/DecoderThread.cxx | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/NEWS b/NEWS index 133edf2e0..11484947a 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ ver 0.20 (not yet released) (most importantly some mp3s) - id3: remove the "id3v1_encoding" setting; by definition, all ID3v1 tags are ISO-Latin-1 + - ape: support APE replay gain on remote files * decoder - improved error logging - report I/O errors to clients diff --git a/src/decoder/DecoderThread.cxx b/src/decoder/DecoderThread.cxx index 3ba7922b0..1f044a6c9 100644 --- a/src/decoder/DecoderThread.cxx +++ b/src/decoder/DecoderThread.cxx @@ -241,6 +241,18 @@ decoder_run_stream_fallback(Decoder &decoder, InputStream &is) decoder_stream_decode(*plugin, decoder, is); } +/** + * Attempt to load replay gain data, and pass it to + * decoder_replay_gain(). + */ +static void +LoadReplayGain(Decoder &decoder, InputStream &is) +{ + ReplayGainInfo info; + if (replay_gain_ape_read(is, info)) + decoder_replay_gain(decoder, &info); +} + /** * Try decoding a stream. * @@ -256,6 +268,8 @@ decoder_run_stream(Decoder &decoder, const char *uri) if (input_stream == nullptr) return false; + LoadReplayGain(decoder, *input_stream); + const ScopeLock protect(dc.mutex); bool tried = false;