diff options
author | Max Kellermann <max@duempel.org> | 2014-08-28 13:04:45 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-08-28 13:08:44 +0200 |
commit | f02998b106a73281356d69cc7b19d069aea8cf0d (patch) | |
tree | e6a574eb9c6cf1fbe91bb92ce6261ec863b77737 /src/decoder/DecoderAPI.cxx | |
parent | 127fe6ecf001a7bfb7f9a1d704d22c5a866896a5 (diff) | |
download | mpd-f02998b106a73281356d69cc7b19d069aea8cf0d.tar.gz mpd-f02998b106a73281356d69cc7b19d069aea8cf0d.tar.xz mpd-f02998b106a73281356d69cc7b19d069aea8cf0d.zip |
DecoderControl: use std::chrono::duration for start_ms and end_ms
Diffstat (limited to 'src/decoder/DecoderAPI.cxx')
-rw-r--r-- | src/decoder/DecoderAPI.cxx | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/decoder/DecoderAPI.cxx b/src/decoder/DecoderAPI.cxx index 83acb8a89..f34894b6a 100644 --- a/src/decoder/DecoderAPI.cxx +++ b/src/decoder/DecoderAPI.cxx @@ -179,7 +179,7 @@ decoder_command_finished(Decoder &decoder) assert(dc.pipe->IsEmpty()); decoder.initial_seek_running = false; - decoder.timestamp = dc.start_ms / 1000.; + decoder.timestamp = dc.start_time.ToDoubleS(); dc.Unlock(); return; } @@ -212,7 +212,7 @@ decoder_seek_time(Decoder &decoder) assert(dc.pipe != nullptr); if (decoder.initial_seek_running) - return SongTime(dc.start_ms); + return dc.start_time; assert(dc.command == DecoderCommand::SEEK); @@ -226,17 +226,7 @@ decoder_seek_where_frame(Decoder &decoder) { const DecoderControl &dc = decoder.dc; - assert(dc.pipe != nullptr); - - if (decoder.initial_seek_running) - return uint64_t(dc.start_ms) * dc.in_audio_format.sample_rate - / 1000; - - assert(dc.command == DecoderCommand::SEEK); - - decoder.seeking = true; - - return dc.seek_time.ToScale<uint64_t>(dc.in_audio_format.sample_rate); + return decoder_seek_time(decoder).ToScale<uint64_t>(dc.in_audio_format.sample_rate); } void decoder_seek_error(Decoder & decoder) @@ -553,8 +543,8 @@ decoder_data(Decoder &decoder, decoder.timestamp += (double)nbytes / dc.out_audio_format.GetTimeToSize(); - if (dc.end_ms > 0 && - decoder.timestamp >= dc.end_ms / 1000.0) + if (dc.end_time.IsPositive() && + decoder.timestamp >= dc.end_time.ToDoubleS()) /* the end of this range has been reached: stop decoding */ return DecoderCommand::STOP; |