mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-03 04:16:43 +00:00
Merged revisions 110303 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r110303 | russell | 2008-03-20 15:08:26 -0500 (Thu, 20 Mar 2008) | 8 lines 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 #12164, reported by milazzo and jsmith, patch by me) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@110304 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
14
main/file.c
14
main/file.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user