From 2e1347aba4c51060b937751c2a76a5254e89a702 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 10 Jul 2014 08:31:41 +0200 Subject: decoder/audiofile: split audiofile_get_duration() --- src/decoder/plugins/AudiofileDecoderPlugin.cxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/decoder') diff --git a/src/decoder/plugins/AudiofileDecoderPlugin.cxx b/src/decoder/plugins/AudiofileDecoderPlugin.cxx index cd7021631..e78c156f9 100644 --- a/src/decoder/plugins/AudiofileDecoderPlugin.cxx +++ b/src/decoder/plugins/AudiofileDecoderPlugin.cxx @@ -53,18 +53,25 @@ struct AudioFileInputStream { } }; +gcc_pure +static double +audiofile_get_duration(AFfilehandle fh) +{ + double frame_count = afGetFrameCount(fh, AF_DEFAULT_TRACK); + double rate = afGetRate(fh, AF_DEFAULT_TRACK); + + return frame_count / rate; +} + gcc_pure static int audiofile_get_duration(Path path_fs) { - int total_time; AFfilehandle af_fp = afOpenFile(path_fs.c_str(), "r", nullptr); if (af_fp == AF_NULL_FILEHANDLE) { return -1; } - total_time = (int) - ((double)afGetFrameCount(af_fp, AF_DEFAULT_TRACK) - / afGetRate(af_fp, AF_DEFAULT_TRACK)); + int total_time = int(audiofile_get_duration(af_fp)); afCloseFile(af_fp); return total_time; } -- cgit v1.2.3