aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/plugins/DsdiffDecoderPlugin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/decoder/plugins/DsdiffDecoderPlugin.cxx')
-rw-r--r--src/decoder/plugins/DsdiffDecoderPlugin.cxx15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/decoder/plugins/DsdiffDecoderPlugin.cxx b/src/decoder/plugins/DsdiffDecoderPlugin.cxx
index 37dabc72d..112de8b90 100644
--- a/src/decoder/plugins/DsdiffDecoderPlugin.cxx
+++ b/src/decoder/plugins/DsdiffDecoderPlugin.cxx
@@ -351,15 +351,9 @@ bit_reverse_buffer(uint8_t *p, uint8_t *end)
}
static offset_type
-TimeToFrame(double t, unsigned sample_rate)
+FrameToOffset(uint64_t frame, unsigned channels)
{
- return offset_type(t * sample_rate / 8);
-}
-
-static offset_type
-TimeToOffset(double t, unsigned channels, unsigned sample_rate)
-{
- return TimeToFrame(t, sample_rate) * channels;
+ return frame * channels;
}
/**
@@ -383,9 +377,8 @@ dsdiff_decode_chunk(Decoder &decoder, InputStream &is,
for (offset_type remaining_bytes = total_bytes;
remaining_bytes >= frame_size && cmd != DecoderCommand::STOP;) {
if (cmd == DecoderCommand::SEEK) {
- double t = decoder_seek_where(decoder);
- offset_type offset = TimeToOffset(t, channels,
- sample_rate);
+ uint64_t frame = decoder_seek_where_frame(decoder);
+ offset_type offset = FrameToOffset(frame, channels);
if (offset >= total_bytes) {
decoder_command_finished(decoder);
break;