aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/flac_plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/decoder/flac_plugin.c')
-rw-r--r--src/decoder/flac_plugin.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c
index 98bcd64d3..7a4f11451 100644
--- a/src/decoder/flac_plugin.c
+++ b/src/decoder/flac_plugin.c
@@ -400,6 +400,11 @@ flac_decoder_initialize(struct flac_data *data, FLAC__StreamDecoder *sd,
return false;
}
+ if (!data->have_stream_info) {
+ g_warning("no STREAMINFO packet found");
+ return false;
+ }
+
if (!audio_format_valid(&data->audio_format)) {
g_warning("Invalid audio format: %u:%u:%u\n",
data->audio_format.sample_rate,
@@ -408,12 +413,13 @@ flac_decoder_initialize(struct flac_data *data, FLAC__StreamDecoder *sd,
return false;
}
- if (duration != 0)
- data->total_time = (float)duration /
- (float)data->audio_format.sample_rate;
+ if (duration == 0)
+ duration = data->stream_info.total_samples;
decoder_initialized(data->decoder, &data->audio_format,
- seekable, data->total_time);
+ seekable,
+ (float)duration /
+ (float)data->audio_format.sample_rate);
return true;
}