diff options
author | Max Kellermann <max@duempel.org> | 2009-11-11 15:14:20 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-11-11 15:14:20 +0100 |
commit | 5cc3c4f5039cc57b414de3b94bb3ab0e54f28556 (patch) | |
tree | c466f210381ac70e1dd84aa10d529cb6c31394cd | |
parent | 96204ea3dc70521b6df1b01dd6f7c799e6d42ec1 (diff) | |
parent | dca4d9cf83849877206379a20a1e478ed1b5dc55 (diff) | |
download | mpd-5cc3c4f5039cc57b414de3b94bb3ab0e54f28556.tar.gz mpd-5cc3c4f5039cc57b414de3b94bb3ab0e54f28556.tar.xz mpd-5cc3c4f5039cc57b414de3b94bb3ab0e54f28556.zip |
Merge remote branch 'origin/v0.15.x'
Diffstat (limited to '')
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | src/decoder/flac_plugin.c | 22 | ||||
-rw-r--r-- | src/decoder/oggflac_plugin.c | 8 |
3 files changed, 18 insertions, 14 deletions
@@ -79,6 +79,8 @@ ver 0.15.6 (2009/??/??) - zzip: require libzzip 0.13 * decoders: - ffmpeg: convert metadata + - oggflac: rewind stream after FLAC detection + - flac: fixed CUE seeking range check * output_thread: check again if output is open on PAUSE * update: delete ignored symlinks from database * database: increased maximum line length to 32 kB diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index cdb74e72d..17d0e8519 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -632,21 +632,15 @@ flac_container_decode(struct decoder* decoder, FLAC__uint64 seek_sample = t_start + (decoder_seek_where(decoder) * data.audio_format.sample_rate); - //if (seek_sample >= t_start && seek_sample <= t_end && data.total_time > 30) - if (seek_sample >= t_start && seek_sample <= t_end) - { - if (flac_seek_absolute(flac_dec, (FLAC__uint64)seek_sample)) - { - data.time = (float)(seek_sample - t_start) / - data.audio_format.sample_rate; - data.position = 0; + if (seek_sample >= t_start && seek_sample <= t_end && + flac_seek_absolute(flac_dec, (FLAC__uint64)seek_sample)) { + data.time = (float)(seek_sample - t_start) / + data.audio_format.sample_rate; + data.position = 0; - decoder_command_finished(decoder); - } - else - decoder_seek_error(decoder); - //decoder_command_finished(decoder); - } + decoder_command_finished(decoder); + } else + decoder_seek_error(decoder); } else if (flac_get_state(flac_dec) == flac_decoder_eof) break; diff --git a/src/decoder/oggflac_plugin.c b/src/decoder/oggflac_plugin.c index 8fc2a6c96..d4ba7b213 100644 --- a/src/decoder/oggflac_plugin.c +++ b/src/decoder/oggflac_plugin.c @@ -261,6 +261,10 @@ oggflac_tag_dup(const char *file) return NULL; } + /* rewind the stream, because ogg_stream_type_detect() has + moved it */ + input_stream_seek(&input_stream, 0, SEEK_SET); + flac_data_init(&data, NULL, &input_stream); data.tag = tag_new(); @@ -292,6 +296,10 @@ oggflac_decode(struct decoder * mpd_decoder, struct input_stream *input_stream) if (ogg_stream_type_detect(input_stream) != FLAC) return; + /* rewind the stream, because ogg_stream_type_detect() has + moved it */ + input_stream_seek(input_stream, 0, SEEK_SET); + flac_data_init(&data, mpd_decoder, input_stream); if (!(decoder = full_decoder_init_and_read_metadata(&data, 0))) { |