aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-24 12:20:24 +0100
committerMax Kellermann <max@duempel.org>2013-12-24 12:20:24 +0100
commit64e898f6dbcfe5e584cb308dd3eca411bfd7667d (patch)
tree6b0e7ea929ad019a8591cc54a3b88febc74e8983
parent1732166328f3e2db3d959b60bbe46f85d36d8e77 (diff)
parentfb34519b96629291d0f26990931ec89c47a4ade2 (diff)
downloadmpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.tar.gz
mpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.tar.xz
mpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.zip
Merge tag 'release-0.18.6'
-rw-r--r--NEWS7
-rw-r--r--src/OutputControl.cxx2
-rw-r--r--src/PlayerThread.cxx5
-rw-r--r--src/decoder/FfmpegDecoderPlugin.cxx10
-rw-r--r--src/input/CdioParanoiaInputPlugin.cxx2
-rw-r--r--src/tag/Riff.cxx3
6 files changed, 21 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index f83f72697..387a1a597 100644
--- a/NEWS
+++ b/NEWS
@@ -5,14 +5,19 @@ ver 0.19 (not yet released)
- alsa: new input plugin
* new resampler option using libsoxr
-ver 0.18.6 (not yet released)
+ver 0.18.6 (2013/12/24)
* input
- cdio_paranoia: support libcdio-paranoia 0.90
+* tags
+ - riff: recognize upper-case "ID3" chunk name
+* decoder
+ - ffmpeg: use relative timestamps
* output
- openal: fix build failure on Mac OS X
- osx: fix build failure
* mixer
- alsa: fix build failure with uClibc
+* fix replay gain during cross-fade
* accept files without metadata
ver 0.18.5 (2013/11/23)
diff --git a/src/OutputControl.cxx b/src/OutputControl.cxx
index be0d2bec9..bcfd6a8c1 100644
--- a/src/OutputControl.cxx
+++ b/src/OutputControl.cxx
@@ -96,6 +96,8 @@ audio_output_set_replay_gain_mode(struct audio_output *ao,
{
if (ao->replay_gain_filter != nullptr)
replay_gain_filter_set_mode(ao->replay_gain_filter, mode);
+ if (ao->other_replay_gain_filter != nullptr)
+ replay_gain_filter_set_mode(ao->other_replay_gain_filter, mode);
}
void
diff --git a/src/PlayerThread.cxx b/src/PlayerThread.cxx
index 42c7120f0..aa42eed49 100644
--- a/src/PlayerThread.cxx
+++ b/src/PlayerThread.cxx
@@ -1080,8 +1080,11 @@ Player::Run()
delete cross_fade_tag;
- if (song != nullptr)
+ if (song != nullptr) {
+ const auto uri = song->GetURI();
+ FormatDefault(player_domain, "played \"%s\"", uri.c_str());
song->Free();
+ }
pc.Lock();
diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx
index a14b04510..01b551bb1 100644
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -250,13 +250,14 @@ static DecoderCommand
ffmpeg_send_packet(Decoder &decoder, InputStream &is,
const AVPacket *packet,
AVCodecContext *codec_context,
- const AVRational *time_base,
+ const AVStream *stream,
AVFrame *frame,
uint8_t **buffer, int *buffer_size)
{
if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE)
decoder_timestamp(decoder,
- time_from_ffmpeg(packet->pts, *time_base));
+ time_from_ffmpeg(packet->pts - stream->start_time,
+ stream->time_base));
AVPacket packet2 = *packet;
@@ -469,7 +470,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (packet.stream_index == audio_stream)
cmd = ffmpeg_send_packet(decoder, input,
&packet, codec_context,
- &av_stream->time_base,
+ av_stream,
frame,
&interleaved_buffer, &interleaved_buffer_size);
else
@@ -480,7 +481,8 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (cmd == DecoderCommand::SEEK) {
int64_t where =
time_to_ffmpeg(decoder_seek_where(decoder),
- av_stream->time_base);
+ av_stream->time_base) +
+ av_stream->start_time;
if (av_seek_frame(format_context, audio_stream, where,
AV_TIME_BASE) < 0)
diff --git a/src/input/CdioParanoiaInputPlugin.cxx b/src/input/CdioParanoiaInputPlugin.cxx
index 73fb8acdd..bf1c3c908 100644
--- a/src/input/CdioParanoiaInputPlugin.cxx
+++ b/src/input/CdioParanoiaInputPlugin.cxx
@@ -43,7 +43,7 @@
#include <assert.h>
#ifdef HAVE_CDIO_PARANOIA_PARANOIA_H
-#include <cdio/parannoia/paranoia.h>
+#include <cdio/paranoia/paranoia.h>
#else
#include <cdio/paranoia.h>
#endif
diff --git a/src/tag/Riff.cxx b/src/tag/Riff.cxx
index 73b2139d3..0f8f265fc 100644
--- a/src/tag/Riff.cxx
+++ b/src/tag/Riff.cxx
@@ -86,7 +86,8 @@ riff_seek_id3(FILE *file)
/* pad byte */
++size;
- if (memcmp(chunk.id, "id3 ", 4) == 0)
+ if (memcmp(chunk.id, "id3 ", 4) == 0 ||
+ memcmp(chunk.id, "ID3 ", 4) == 0)
/* found it! */
return size;