diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-12-20 10:26:53 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-12-20 10:26:53 +0000 |
commit | cabac00beeb882f9cdbb3d8375dd1215face1b27 (patch) | |
tree | 51b598626d5418157658d460d276bf224517a64d /apps | |
parent | b5a869b53c73c2f7c09dcafdca333915b0cab279 (diff) |
Fix choppy audio with > 20ms audio frames (bug #5697)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7542 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_meetme.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c index fb5f660ea..2c7970bb7 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -263,14 +263,17 @@ static char *istalking(int x) return "(not talking)"; } -static int careful_write(int fd, unsigned char *data, int len) +static int careful_write(int fd, unsigned char *data, int len, int block) { int res; int x; while (len) { - x = ZT_IOMUX_WRITE | ZT_IOMUX_SIGEVENT; - res = ioctl(fd, ZT_IOMUX, &x); + if (block) { + x = ZT_IOMUX_WRITE | ZT_IOMUX_SIGEVENT; + res = ioctl(fd, ZT_IOMUX, &x); + } else + res = 0; if (res >= 0) res = write(fd, data, len); if (res < 1) { @@ -423,7 +426,7 @@ static void conf_play(struct ast_channel *chan, struct ast_conference *conf, int len = 0; } if (data) - careful_write(conf->fd, data, len); + careful_write(conf->fd, data, len, 1); ast_mutex_unlock(&conflock); @@ -1308,7 +1311,11 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c audio frames (in which case carefully writing would only have delayed the audio even further). */ - write(fd, f->data, f->datalen); + /* As it turns out, we do want to use careful write. We just + don't want to block, but we do want to at least *try* + to write out all the samples. + */ + careful_write(fd, f->data, f->datalen, 0); } } else if ((f->frametype == AST_FRAME_DTMF) && (confflags & CONFFLAG_EXIT_CONTEXT)) { char tmp[2]; |