aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
Diffstat (limited to 'src/decoder')
-rw-r--r--src/decoder/plugins/SndfileDecoderPlugin.cxx14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/decoder/plugins/SndfileDecoderPlugin.cxx b/src/decoder/plugins/SndfileDecoderPlugin.cxx
index 558101089..6adba02cc 100644
--- a/src/decoder/plugins/SndfileDecoderPlugin.cxx
+++ b/src/decoder/plugins/SndfileDecoderPlugin.cxx
@@ -140,11 +140,10 @@ static SF_VIRTUAL_IO vio = {
/**
* Converts a frame number to a timestamp (in seconds).
*/
-static SongTime
-frame_to_time(sf_count_t frame, const AudioFormat *audio_format)
+static constexpr SongTime
+sndfile_duration(const SF_INFO &info)
{
- return SongTime::FromScale<uint64_t>(frame,
- audio_format->sample_rate);
+ return SongTime::FromScale<uint64_t>(info.frames, info.samplerate);
}
static void
@@ -174,7 +173,7 @@ sndfile_stream_decode(Decoder &decoder, InputStream &is)
}
decoder_initialized(decoder, audio_format, info.seekable,
- frame_to_time(info.frames, &audio_format));
+ sndfile_duration(info));
int buffer[4096];
@@ -246,9 +245,8 @@ sndfile_scan_stream(InputStream &is,
return false;
}
- const auto duration =
- SongTime::FromScale<uint64_t>(info.frames, info.samplerate);
- tag_handler_invoke_duration(handler, handler_ctx, duration);
+ tag_handler_invoke_duration(handler, handler_ctx,
+ sndfile_duration(info));
for (auto i : sndfile_tags)
sndfile_handle_tag(sf, i.str, i.tag, handler, handler_ctx);