aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/decoder/flac_plugin.c22
-rw-r--r--src/decoder/oggflac_plugin.c8
2 files changed, 16 insertions, 14 deletions
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))) {