Commit 07dc2626 authored by Max Kellermann's avatar Max Kellermann

decoder/dsf: use integer seek times

parent 6bf8d5b9
...@@ -244,9 +244,9 @@ InterleaveDsfBlock(uint8_t *gcc_restrict dest, const uint8_t *gcc_restrict src, ...@@ -244,9 +244,9 @@ InterleaveDsfBlock(uint8_t *gcc_restrict dest, const uint8_t *gcc_restrict src,
} }
static offset_type static offset_type
TimeToBlock(double t, unsigned sample_rate) FrameToBlock(uint64_t frame)
{ {
return offset_type(t * sample_rate / DSF_BLOCK_BITS); return frame / DSF_BLOCK_SIZE;
} }
/** /**
...@@ -264,8 +264,8 @@ dsf_decode_chunk(Decoder &decoder, InputStream &is, ...@@ -264,8 +264,8 @@ dsf_decode_chunk(Decoder &decoder, InputStream &is,
auto cmd = decoder_get_command(decoder); auto cmd = decoder_get_command(decoder);
for (offset_type i = 0; i < n_blocks && cmd != DecoderCommand::STOP;) { for (offset_type i = 0; i < n_blocks && cmd != DecoderCommand::STOP;) {
if (cmd == DecoderCommand::SEEK) { if (cmd == DecoderCommand::SEEK) {
double t = decoder_seek_where(decoder); uint64_t frame = decoder_seek_where_frame(decoder);
offset_type block = TimeToBlock(t, sample_rate); offset_type block = FrameToBlock(frame);
if (block >= n_blocks) { if (block >= n_blocks) {
decoder_command_finished(decoder); decoder_command_finished(decoder);
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment