@@ -476,7 +476,6 @@ static int audio_attach_capture (HWVoiceOut *hw)
sw->info = hw->info;
sw->empty = 1;
sw->active = hw->enabled;
- sw->ratio = ((int64_t) hw_cap->info.freq << 32) / sw->info.freq;
sw->vol = nominal_volume;
sw->rate = st_rate_start (sw->info.freq, hw_cap->info.freq);
QLIST_INSERT_HEAD (&hw_cap->sw_head, sw, entries);
@@ -108,7 +108,6 @@ struct SWVoiceOut {
AudioState *s;
struct audio_pcm_info info;
t_sample *conv;
- int64_t ratio;
STSampleBuffer resample_buf;
void *rate;
size_t total_hw_samples_mixed;
@@ -126,7 +125,6 @@ struct SWVoiceIn {
AudioState *s;
int active;
struct audio_pcm_info info;
- int64_t ratio;
void *rate;
size_t total_hw_samples_acquired;
STSampleBuffer resample_buf;
@@ -114,11 +114,7 @@ static int glue (audio_pcm_sw_alloc_resources_, TYPE) (SW *sw)
return 0;
}
-#ifdef DAC
- samples = ((int64_t)sw->HWBUF.size << 32) / sw->ratio;
-#else
- samples = (int64_t)sw->HWBUF.size * sw->ratio >> 32;
-#endif
+ samples = muldiv64(HWBUF.size, sw->info.freq, hw->info.freq);
if (samples == 0) {
size_t f_fe_min;
@@ -159,11 +155,8 @@ static int glue (audio_pcm_sw_init_, TYPE) (
sw->hw = hw;
sw->active = 0;
#ifdef DAC
- sw->ratio = ((int64_t) sw->hw->info.freq << 32) / sw->info.freq;
sw->total_hw_samples_mixed = 0;
sw->empty = 1;
-#else
- sw->ratio = ((int64_t) sw->info.freq << 32) / sw->hw->info.freq;
#endif
if (sw->info.is_float) {