Summary:ASTERISK-00024: Speex support incomplete for IAX2
Reporter:jwr (jwr)Labels:
Date Opened:2003-07-29 00:02:49Date Closed:2004-09-25 02:40:14
Versions:Frequency of
Description:IAX2 doesn't seem to support speex. When trying to force it
on IAX2 links, error messages related to get_samples appear.


The following simple patch seems to fix the problem.

However, for some reason chan_iax.c tries to return 160*(f->datalen/39), even though codec_speex.c specifically says that "all frames are 20ms long":

f.datalen = sizeof(speex_slin_ex);
/* All frames are 20 ms long */
f.samples = 160;

Please double-check if this patch is correct.

--- chan_iax2.c 16 Jul 2003 18:45:12 -0000      1.33
+++ chan_iax2.c 29 Jul 2003 05:06:08 -0000
@@ -601,6 +601,9 @@
       case AST_FORMAT_ADPCM:
               samples = f->datalen *2;
+       case AST_FORMAT_SPEEX:
+               samples = 160 * f->datalen;
+               break;
               ast_log(LOG_WARNING, "Don't know how to calculate samples on %d packets\n", f->subclass);
Comments:By: Mark Spencer (markster) 2003-07-29 14:44:30

Okay should be fixed in CVS let me know.

By: Malcolm Davenport (mdavenport) 2003-07-29 16:52:36

Yes, if the fix does work, please add a bugnote here, too, so that we can resolve the bug.

By: jwr (jwr) 2003-07-29 21:50:13

It does work for calls. However, another problem shows up: GSM-encoded messages played from disk sound choppy and play very slowly. That's probably an entirely different problem, though, so this bug may as well be closed.

I don't think I'll be able to trace the other problem down.