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:
commit
64e898f6db
7
NEWS
7
NEWS
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user