diff options
-rw-r--r-- | src/bank.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -166,10 +166,14 @@ void xas_bank_entry_duration(xas_bank *bank, size_t entry_index, struct timeval *tv) { xas_bank_entry *entry = entry_by_index(bank, entry_index); - size_t count = entry->duration; - tv->tv_sec = count / bank->format.sample_rate; - tv->tv_usec = (count % bank->format.sample_rate) * 1000000; + size_t seconds = entry->duration / bank->format.sample_rate, + remainder = entry->duration % bank->format.sample_rate; + + double subseconds = (double)remainder / (double)bank->format.sample_rate; + + tv->tv_sec = (time_t)seconds; + tv->tv_usec = (suseconds_t)(subseconds * 1000000.0); } int xas_bank_player_set_entry(xas_bank_player *player, size_t entry) { |