diff options
author | Max Kellermann <max@duempel.org> | 2014-08-29 20:52:39 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-08-29 21:40:15 +0200 |
commit | d9d97bd17bf0d9469dcf00120d3d3fdab87299bc (patch) | |
tree | d7abd9d0cbc6e417aaf4427740bf47207f47d7fa /src/decoder/plugins/AudiofileDecoderPlugin.cxx | |
parent | 94f6380d693b8bece655885d37495a3a73c78b62 (diff) | |
download | mpd-d9d97bd17bf0d9469dcf00120d3d3fdab87299bc.tar.gz mpd-d9d97bd17bf0d9469dcf00120d3d3fdab87299bc.tar.xz mpd-d9d97bd17bf0d9469dcf00120d3d3fdab87299bc.zip |
DecoderAPI: pass SignedSongTime to decoder_initialized()
Diffstat (limited to 'src/decoder/plugins/AudiofileDecoderPlugin.cxx')
-rw-r--r-- | src/decoder/plugins/AudiofileDecoderPlugin.cxx | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/decoder/plugins/AudiofileDecoderPlugin.cxx b/src/decoder/plugins/AudiofileDecoderPlugin.cxx index 412cda1e3..8d04f9596 100644 --- a/src/decoder/plugins/AudiofileDecoderPlugin.cxx +++ b/src/decoder/plugins/AudiofileDecoderPlugin.cxx @@ -64,13 +64,11 @@ struct AudioFileInputStream { }; gcc_pure -static double +static SongTime audiofile_get_duration(AFfilehandle fh) { - double frame_count = afGetFrameCount(fh, AF_DEFAULT_TRACK); - double rate = afGetRate(fh, AF_DEFAULT_TRACK); - - return frame_count / rate; + return SongTime::FromScale<uint64_t>(afGetFrameCount(fh, AF_DEFAULT_TRACK), + afGetRate(fh, AF_DEFAULT_TRACK)); } static ssize_t @@ -208,10 +206,10 @@ audiofile_stream_decode(Decoder &decoder, InputStream &is) return; } - const double total_time = audiofile_get_duration(fh); + const auto total_time = audiofile_get_duration(fh); const uint16_t kbit_rate = (uint16_t) - (is.GetSize() * 8.0 / total_time / 1000.0 + 0.5); + (is.GetSize() * uint64_t(8000) / total_time.ToMS()); const unsigned frame_size = (unsigned) afGetVirtualFrameSize(fh, AF_DEFAULT_TRACK, true); @@ -258,7 +256,7 @@ audiofile_get_duration(InputStream &is) if (fh == AF_NULL_FILEHANDLE) return -1; - int duration = int(audiofile_get_duration(fh)); + int duration = audiofile_get_duration(fh).RoundS(); afCloseFile(fh); return duration; } |