}
conf.period.ticks = 1;
} else {
- conf.period.ticks = get_ticks_per_sec() / conf.period.hertz;
+ conf.period.ticks =
+ muldiv64 (1, get_ticks_per_sec (), conf.period.hertz);
}
e = qemu_add_vm_change_state_handler (audio_vm_change_state_handler, s);
return 0;
}
- return (delta * sw->hw->info.freq) / 1000000;
+ return muldiv64 (delta, sw->hw->info.freq, 1000000);
}
#undef TYPE
now = qemu_get_clock (vm_clock);
ticks = now - no->old_ticks;
- bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
+ bytes = muldiv64 (ticks, hw->info.bytes_per_second, get_ticks_per_sec ());
bytes = audio_MIN (bytes, INT_MAX);
samples = bytes >> hw->info.shift;
if (dead) {
int64_t now = qemu_get_clock (vm_clock);
int64_t ticks = now - no->old_ticks;
- int64_t bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
+ int64_t bytes =
+ muldiv64 (ticks, hw->info.bytes_per_second, get_ticks_per_sec ());
no->old_ticks = now;
bytes = audio_MIN (bytes, INT_MAX);
struct st_sample *src;
int64_t now = qemu_get_clock (vm_clock);
int64_t ticks = now - wav->old_ticks;
- int64_t bytes = (ticks * hw->info.bytes_per_second) / get_ticks_per_sec();
+ int64_t bytes =
+ muldiv64 (ticks, hw->info.bytes_per_second, get_ticks_per_sec ());
if (bytes > INT_MAX) {
samples = INT_MAX >> hw->info.shift;
}
s->left = samples;
-reset:
- gus_irqgen (&s->emu, (double) (net * 1000000) / s->freq);
+ reset:
+ gus_irqgen (&s->emu, muldiv64 (net, 1000000, s->freq));
}
int GUS_irqrequest (GUSEmuState *emu, int hwirq, int n)
freq = s->freq > 0 ? s->freq : 11025;
samples = dsp_get_lohi (s) + 1;
bytes = samples << s->fmt_stereo << (s->fmt_bits == 16);
- ticks = (bytes * get_ticks_per_sec()) / freq;
- if (ticks < get_ticks_per_sec() / 1024) {
+ ticks = muldiv64 (bytes, get_ticks_per_sec (), freq);
+ if (ticks < get_ticks_per_sec () / 1024) {
qemu_irq_raise (s->pic);
}
else {