fprintf(fp, "subformat : %s\n", assoc(pcm->subformat, snd_pcm_subformat_names));
fprintf(fp, "channels : %d\n", pcm->channels);
fprintf(fp, "rate : %d\n", pcm->rate);
- fprintf(fp, "exact rate : %g (%d/%d)\n", (double) pcm->rate_master / pcm->rate_divisor, pcm->rate_master, pcm->rate_divisor);
+ fprintf(fp, "exact rate : %g (%d/%d)\n", (double) pcm->rate_num / pcm->rate_den, pcm->rate_num, pcm->rate_den);
fprintf(fp, "msbits : %d\n", pcm->msbits);
fprintf(fp, "fragment_size: %ld\n", (long)pcm->fragment_size);
fprintf(fp, "fragments : %d\n", pcm->fragments);
if (bits_min == bits_max)
info->msbits = bits_min;
}
- if (info->rate_divisor == 0 &&
+ if (info->rate_den == 0 &&
info->rate_min == info->rate_max) {
- info->rate_master = info->rate_min;
- info->rate_divisor = 1;
+ info->rate_num = info->rate_min;
+ info->rate_den = 1;
}
return 0;
}
snd_pcm_t *pcm)
{
unsigned long min, max;
- unsigned long d1, d2;
unsigned long max1, min2;
snd_pcm_hw_info_t i1, i2;
int err1 = -EINVAL;
i1 = *info;
i2 = *info;
if (value < 0) {
- d1 = 0;
- d2 = 0;
+ max1 = best;
+ min2 = best + 1;
} else {
long diff = value - best;
if (diff < 0) {
- d1 = -diff + 1;
- d2 = -diff;
+ if (value > 1)
+ max1 = value - 1;
+ else
+ max1 = 0;
+ min2 = best - diff;
} else {
- d1 = diff + 1;
- d2 = diff + 1;
+ if (best > (unsigned long) diff)
+ max1 = best - diff - 1;
+ else
+ max1 = 0;
+ min2 = value + 1;
}
}
- if (best > d1)
- max1 = best - d1;
- else
- max1 = 0;
- min2 = best + d2;
max1 = snd_pcm_hw_info_par_refine_max(&i1, param, max1);
min2 = snd_pcm_hw_info_par_refine_min(&i2, param, min2);
if (min <= max1) {
pcm->info = info.info;
pcm->msbits = info.msbits;
- pcm->rate_master = info.rate_master;
- pcm->rate_divisor = info.rate_divisor;
+ pcm->rate_num = info.rate_num;
+ pcm->rate_den = info.rate_den;
pcm->fifo_size = info.fifo_size;
/* Default sw params */
size_t boundary; /* pointers wrap point */
unsigned int info; /* Info for returned setup */
unsigned int msbits; /* used most significant bits */
- unsigned int rate_master; /* Exact rate is rate_master / */
- unsigned int rate_divisor; /* rate_divisor */
+ unsigned int rate_num; /* rate numerator */
+ unsigned int rate_den; /* rate denominator */
size_t fifo_size; /* chip FIFO size in frames */
size_t buffer_size;
size_t bits_per_sample;