release v0.18.6

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.15 (GNU/Linux)
 
 iQIcBAABAgAGBQJSuWnsAAoJECNuiljG20US3qwP/0WGxzRFU2/dLzX6KG5/n+8R
 LqVeX7Ap7vLncA2UQQ2BiddPtF0u9lJOnex64pYCkwwpr4JBmkBa6kTKVGbbXDv5
 /tuHeUJk/aWhBJ8Qz/rxmNFBW6tNGlhf+7FVt8vHQqvHn7tWWKRlsQNk6Pd4gGM/
 UiMyuA8EtfTJZACPRRZK26H7g7EKIjsGt6vwiuWAh3MxGHWL5R2chuP5Mapi1U4U
 Qa1YOUAHlChRxGT+LmNMyKlgq+mqltbKQj+pOLPFuT6Q6BqgZp2Ept5Svod/JamC
 yCFRGWYsmRxZ0ZOhtRZACfm/yNzyIhkkvgW8FqM6tINOPrwL2MwAJVMVH3DZM7Aj
 /8ltz0OH2s9x9sUfOtxQkK/3bJpBwaDnl+dFQtGIFwigvYLR2Jv2Bl1zQO6+zICu
 bdbJS+IcOrElxTnxfir0CVEDysifUQ7/ZSQkwDqpF+RI8E07ZMZZLmXk3S2yX6Fx
 6dCwdfIsBAotF7RYsdn4cmRaSEx6Ze+aQr0l5yLh+5sKPEdDRSMrBEnCgPGU94ub
 VNl3Cp3dtq5kuSfJ90Mk0QzwVd/kCdKZKBMcTX2zv38NLcX0LCSylM4K9yCi+GR2
 gvgAJq9cmbmTEN3+grVdApNx0sqNFrD6pB27KhUKWD0VYypPu7yPPptkOWzSldbz
 8JGa8lryMbRmgiXVyivp
 =Z823
 -----END PGP SIGNATURE-----

Merge tag 'release-0.18.6'
This commit is contained in:
Max Kellermann 2013-12-24 12:20:24 +01:00
commit 64e898f6db
6 changed files with 21 additions and 8 deletions

7
NEWS
View File

@ -5,14 +5,19 @@ ver 0.19 (not yet released)
- alsa: new input plugin - alsa: new input plugin
* new resampler option using libsoxr * new resampler option using libsoxr
ver 0.18.6 (not yet released) ver 0.18.6 (2013/12/24)
* input * input
- cdio_paranoia: support libcdio-paranoia 0.90 - cdio_paranoia: support libcdio-paranoia 0.90
* tags
- riff: recognize upper-case "ID3" chunk name
* decoder
- ffmpeg: use relative timestamps
* output * output
- openal: fix build failure on Mac OS X - openal: fix build failure on Mac OS X
- osx: fix build failure - osx: fix build failure
* mixer * mixer
- alsa: fix build failure with uClibc - alsa: fix build failure with uClibc
* fix replay gain during cross-fade
* accept files without metadata * accept files without metadata
ver 0.18.5 (2013/11/23) ver 0.18.5 (2013/11/23)

View File

@ -96,6 +96,8 @@ audio_output_set_replay_gain_mode(struct audio_output *ao,
{ {
if (ao->replay_gain_filter != nullptr) if (ao->replay_gain_filter != nullptr)
replay_gain_filter_set_mode(ao->replay_gain_filter, mode); 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 void

View File

@ -1080,8 +1080,11 @@ Player::Run()
delete cross_fade_tag; 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(); song->Free();
}
pc.Lock(); pc.Lock();

View File

@ -250,13 +250,14 @@ static DecoderCommand
ffmpeg_send_packet(Decoder &decoder, InputStream &is, ffmpeg_send_packet(Decoder &decoder, InputStream &is,
const AVPacket *packet, const AVPacket *packet,
AVCodecContext *codec_context, AVCodecContext *codec_context,
const AVRational *time_base, const AVStream *stream,
AVFrame *frame, AVFrame *frame,
uint8_t **buffer, int *buffer_size) uint8_t **buffer, int *buffer_size)
{ {
if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE) if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE)
decoder_timestamp(decoder, decoder_timestamp(decoder,
time_from_ffmpeg(packet->pts, *time_base)); time_from_ffmpeg(packet->pts - stream->start_time,
stream->time_base));
AVPacket packet2 = *packet; AVPacket packet2 = *packet;
@ -469,7 +470,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (packet.stream_index == audio_stream) if (packet.stream_index == audio_stream)
cmd = ffmpeg_send_packet(decoder, input, cmd = ffmpeg_send_packet(decoder, input,
&packet, codec_context, &packet, codec_context,
&av_stream->time_base, av_stream,
frame, frame,
&interleaved_buffer, &interleaved_buffer_size); &interleaved_buffer, &interleaved_buffer_size);
else else
@ -480,7 +481,8 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (cmd == DecoderCommand::SEEK) { if (cmd == DecoderCommand::SEEK) {
int64_t where = int64_t where =
time_to_ffmpeg(decoder_seek_where(decoder), 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, if (av_seek_frame(format_context, audio_stream, where,
AV_TIME_BASE) < 0) AV_TIME_BASE) < 0)

View File

@ -43,7 +43,7 @@
#include <assert.h> #include <assert.h>
#ifdef HAVE_CDIO_PARANOIA_PARANOIA_H #ifdef HAVE_CDIO_PARANOIA_PARANOIA_H
#include <cdio/parannoia/paranoia.h> #include <cdio/paranoia/paranoia.h>
#else #else
#include <cdio/paranoia.h> #include <cdio/paranoia.h>
#endif #endif

View File

@ -86,7 +86,8 @@ riff_seek_id3(FILE *file)
/* pad byte */ /* pad byte */
++size; ++size;
if (memcmp(chunk.id, "id3 ", 4) == 0) if (memcmp(chunk.id, "id3 ", 4) == 0 ||
memcmp(chunk.id, "ID3 ", 4) == 0)
/* found it! */ /* found it! */
return size; return size;