Fix a bug when using zaptel timing for playing back files that have a sample rate

other than 8 kHz.  The issue here is that format modules give a "whennext" sample
value, which is used to calculate when to set a timer for to retrieve the next
frame.  However, the zaptel timer operates on 8 kHz samples, so this must be taken
into account.

(another part of issue , reported by milazzo and jsmith, patch by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@110303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.1
Russell Bryant 17 years ago
parent ff9befa36a
commit 4e72f83d3e

@ -665,9 +665,17 @@ static enum fsread_res ast_readaudio_callback(struct ast_filestream *s)
}
if (whennext != s->lasttimeout) {
#ifdef HAVE_ZAPTEL
if (s->owner->timingfd > -1)
ast_settimeout(s->owner, whennext, ast_fsread_audio, s);
else
if (s->owner->timingfd > -1) {
int zap_timer_samples = whennext;
int rate;
/* whennext is in samples, but zaptel timers operate in 8 kHz samples. */
if ((rate = ast_format_rate(s->fmt->format)) != 8000) {
float factor;
factor = ((float) rate) / ((float) 8000.0);
zap_timer_samples = (int) ( ((float) zap_timer_samples) / factor );
}
ast_settimeout(s->owner, zap_timer_samples, ast_fsread_audio, s);
} else
#endif
s->owner->streamid = ast_sched_add(s->owner->sched,
whennext / (ast_format_rate(s->fmt->format) / 1000), ast_fsread_audio, s);

Loading…
Cancel
Save