You can subscribe to this list here.
2003 |
Jan
|
Feb
(3) |
Mar
(16) |
Apr
(11) |
May
(3) |
Jun
(109) |
Jul
(70) |
Aug
(22) |
Sep
(19) |
Oct
(4) |
Nov
(25) |
Dec
(46) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(68) |
Feb
(52) |
Mar
(54) |
Apr
(57) |
May
(13) |
Jun
(15) |
Jul
(16) |
Aug
(3) |
Sep
(43) |
Oct
(95) |
Nov
(106) |
Dec
(142) |
2005 |
Jan
(62) |
Feb
(190) |
Mar
(75) |
Apr
(117) |
May
(123) |
Jun
(64) |
Jul
(122) |
Aug
(95) |
Sep
(63) |
Oct
(102) |
Nov
(99) |
Dec
(85) |
2006 |
Jan
(59) |
Feb
(64) |
Mar
(138) |
Apr
(82) |
May
(62) |
Jun
(62) |
Jul
(72) |
Aug
(50) |
Sep
(21) |
Oct
(95) |
Nov
(95) |
Dec
(29) |
2007 |
Jan
(26) |
Feb
(36) |
Mar
(45) |
Apr
(12) |
May
(53) |
Jun
(38) |
Jul
(19) |
Aug
(87) |
Sep
(63) |
Oct
(272) |
Nov
(102) |
Dec
(63) |
2008 |
Jan
(54) |
Feb
(19) |
Mar
(84) |
Apr
(111) |
May
(17) |
Jun
(26) |
Jul
(18) |
Aug
(10) |
Sep
(14) |
Oct
(9) |
Nov
(4) |
Dec
(12) |
2009 |
Jan
(5) |
Feb
(7) |
Mar
(4) |
Apr
(8) |
May
(4) |
Jun
(7) |
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(6) |
Mar
(6) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(3) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Steve K. <st...@st...> - 2004-04-12 14:03:09
|
al...@of... wrote: >On Fri, Apr 09, 2004 at 08:37:01PM -0400, Steve Kann wrote: > > >>On Apr 9, 2004, at 7:55 PM, Steven Sokol wrote: >> >>The most important thing is to modularize the interface to the codecs. >>Whether or not the codecs are included in the library is less important >>(although, for iLBC, there's licensing issues to consider, because it's >>not GPL-compatible). >> >> > >Is really Not GPL-Compatible? > > Read the license and decide for yourself. It seems pretty clear that they are not. >The code for ilbc is in the asterisk source code (a GPLv2 application), see codecs/ilbc >in the cvs. > >If they are not compatible, will have to leave the sources. > > Firstly, having GPL and non-GPL sources in the same repository doesn't violate the GPL. That's why there's no real problem with having the iLBC sources in the iaxclient repository. However, once you link iLBC into iaxclient, the result is no longer entirely LGPL. So, you couldn't use it with a GPL-licensed front-end, for example. Secondly, I believe that asterisk's license is really a GPL with exceptions, for iLBC and perhaps some other things that are not GPL-compatible. Since digium holds the copyright for all of asterisk, they can make exceptions like that. >If iaxclient will be use the ilbc codec, must use the same source code as asterisk. >To use different drafts will become a great problem in the future. > > You don't need to use the same source code to be compatible. I believe that GIPS has several implementations of iLBC, for example, that are compatible. As long as the actual binary formats are the same, you can have different implementations. >>For each codec, you'll make a codec_xxx.c file [a codec_xxx.h file too, >>perhaps, but I'm not sure it's necessary]. This file will have an >>"init" function that will initialize the encode and decode states, >>stash those in it's private storage area, and return a struct >>iaxc_codec function. >> >> > >Something like in asterisk? ;) > > Yes, or any other modular software. There's tons of similar examples. -SteveK |
From: <al...@of...> - 2004-04-12 13:28:04
|
On Fri, Apr 09, 2004 at 08:37:01PM -0400, Steve Kann wrote: > > On Apr 9, 2004, at 7:55 PM, Steven Sokol wrote: > > The most important thing is to modularize the interface to the codecs. > Whether or not the codecs are included in the library is less important > (although, for iLBC, there's licensing issues to consider, because it's > not GPL-compatible). Is really Not GPL-Compatible? The code for ilbc is in the asterisk source code (a GPLv2 application), see codecs/ilbc in the cvs. If they are not compatible, will have to leave the sources. If iaxclient will be use the ilbc codec, must use the same source code as asterisk. To use different drafts will become a great problem in the future. > For each codec, you'll make a codec_xxx.c file [a codec_xxx.h file too, > perhaps, but I'm not sure it's necessary]. This file will have an > "init" function that will initialize the encode and decode states, > stash those in it's private storage area, and return a struct > iaxc_codec function. Something like in asterisk? ;) -- Alejandro Escanero Blanco Administrador Sistemas CEC. |
From: John <st...@un...> - 2004-04-12 05:18:11
|
i'm trying to compile the snapshot http://iaxclient.sourceforge.net/snapshots/iaxclient.tar.gz seems to be from 11-Apr-2004 22:05 This is the error i'm getting. > make (cd ../../lib; make libiaxclient.a) make[1]: Entering directory `/home/strgout/iaxclient/lib' make[1]: `libiaxclient.a' is up to date. make[1]: Leaving directory `/home/strgout/iaxclient/lib' g++ -I../../lib -g -Wall `wx-config --cflags` `gtk-config --cflags` -c -o main.o main.cc g++ -I../../lib -g -Wall `wx-config --cflags` `gtk-config --cflags` -c -o prefs.o prefs.cc g++ -I../../lib -g -Wall `wx-config --cflags` `gtk-config --cflags` -c -o calls.o calls.cc calls.cc: In member function `void CallList::OnSelect(wxListEvent&)': calls.cc:125: error: `iaxc_unquelch' undeclared (first use this function) calls.cc:125: error: (Each undeclared identifier is reported only once for each function it appears in.) calls.cc: In member function `int CallList::HandleStateEvent(iaxc_ev_call_state)': calls.cc:244: error: `iaxc_unquelch' undeclared (first use this function) make: *** [calls.o] Error 1 The end result i'd like to work towards is a staticly link iaxcomm binary so that i can dump this onto my freebsd box. or if someone has a patch set for freebsd .. :) |
From: Steve K. <st...@st...> - 2004-04-10 00:37:04
|
On Apr 9, 2004, at 7:55 PM, Steven Sokol wrote: > Ok. I bit the bullet and went out to the iLBC web site to download the > code. Odd thing is, the code there is embedded in the RFC for the > codec. > SO... After jacking around with an Awk script for a whie, I was able > to pull > out the code. While I'm sure that was fun, it's just as easy to take the code from the iLBC directory in iaxclient. > I got it to compile under Windows (gcc) without any issues. I now > have a > nice libilbc.a file sitting here. The real question is, how do I go > about > making it a part of the library? Or do I? My inclination is to try to > "externalize" the codecs - move both iLBC and GSM outside of the > library (as > DLLs in Windows -- presumably SOs in Linux). The most important thing is to modularize the interface to the codecs. Whether or not the codecs are included in the library is less important (although, for iLBC, there's licensing issues to consider, because it's not GPL-compatible). Anyway, I'd start out with something simpler than iLBC, although it won't make much difference. That way you don't need to mess with Makefiles and stuff too much. First, you need to make an interface to the codecs. This will look something like the interface to audio drivers, or asterisk's interface to codecs (translators). I think that an IAX conversation currently needs to use the same codec in both directions, so you can make something like struct iaxc_codec. The definition of struct iaxc_codec goes in iaxclient_lib.h The structure will contain pointers to codec functions, as well as a pointer to a codec-specific data structure (or pair of structures). For each codec, you'll make a codec_xxx.c file [a codec_xxx.h file too, perhaps, but I'm not sure it's necessary]. This file will have an "init" function that will initialize the encode and decode states, stash those in it's private storage area, and return a struct iaxc_codec function. I'd actually start by making codec_gsm.c and codec_ulaw.c the ulaw function is pretty simple, there's several examples of it out there. Once that work is done, adding more codecs like speex will be easy. iLBC adds one additional complication, in that it it uses a 30ms frame size instead of 20ms like gsm, ulaw and speex. It isn't really a big deal, since our input and output is buffered anyway. I'd work on the basics first before you work on any specific (and very platform-dependent) details about shared libraries. There's two drawbacks to shared libraries: 1) they are very platform-dependent, different on Windows, Mac and Linux, 2) If your architecture requires them, it makes it impossible to distribute a single-file binary. I've also done some benchmarking on the different codecs. The "common wisdom" here was that iLBC was as fast as GSM, and speex was much slower, and that speex and iLBC sounded similar, and both were better than GSM. I actually found that iLBC and speex encode speeds were about the same, and GSM was still much faster for encode. For decode, speex beats everyone. Here's some results, on my Athlon 1.4Ghz (XP1800+). The tests also include some work I did to find ideal gcc optimizations (gcc-3.3): iLBC -O2: Encode/Decode = 38.3X/112.2X iLBC -O3 -ffast-math -funroll-all-loops -march=pentium3 -fprefetch-loop-arrays -fsingle-precision-constant: Encode/Decode = 48.8X/183.8X GSM -O2: Encode/Decode = 146x/280x For speex, some things depend on the bandwidth choices you use. If we use speex in iaxclient, we might want some codec-specific way to choose these (for people who want/need lower bandwidth. The default is about 15kbps). With sse enabled (for speex, which includes this now) and the flags -O3 -msse -ffast-math -funroll-all-loops -march=pentium3 -fprefetch-loop-arrays -fsingle-precision-constant): 8kbps complexity 1: Encode/Decode = 69x / 460x realtime. Default complexity and bandwidth: Encode/Decode = 28x/409x So, speex really isn't that slow, and it gets faster the lower bandwidth you use (although it gets pretty bad below about 6.5 kbps). Also, speex decodes _much_ faster than anything else.. [none of this matters too much for single-user clients. Using 1/28 of your CPU isn't a big deal. I did this benchmarking to determine load on the other side]. > Before I go hacking away, does anybody have any thoughts about this? > > Thanks, > > Steve > > Steven Sokol > Owner/Manager > Sokol & Associates, LLC > > Phone: 816.822.1807 > IaxTel: 700.613.9004 > Web: http://www.sokol-associates.com > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click > _______________________________________________ > Iaxclient-devel mailing list > Iax...@li... > https://lists.sourceforge.net/lists/listinfo/iaxclient-devel > |
From: Steven S. <ss...@so...> - 2004-04-09 23:55:59
|
Ok. I bit the bullet and went out to the iLBC web site to download the code. Odd thing is, the code there is embedded in the RFC for the codec. SO... After jacking around with an Awk script for a whie, I was able to pull out the code. I got it to compile under Windows (gcc) without any issues. I now have a nice libilbc.a file sitting here. The real question is, how do I go about making it a part of the library? Or do I? My inclination is to try to "externalize" the codecs - move both iLBC and GSM outside of the library (as DLLs in Windows -- presumably SOs in Linux). Before I go hacking away, does anybody have any thoughts about this? Thanks, Steve Steven Sokol Owner/Manager Sokol & Associates, LLC Phone: 816.822.1807 IaxTel: 700.613.9004 Web: http://www.sokol-associates.com |
From: Gary <ga...@au...> - 2004-04-08 22:36:19
|
On Thu, 08 Apr 2004 10:14:09 -0400, Steve Kann wrote: >Gary wrote: > >>I have noticed lack of codec negotiation with calls thru a registrated >>asterisk box. >> >>No seen problems with outbound calls, (though I haven't specifically >>tried it), but the problem exists inbound. >> >>Easiest method for testing this was ring in via a sip client set to >>ulaw, ringing a registered iaxcomm extension. >> >>currently using iaxcom-win-20040228 >> >> >> >>I might add DIAX.097a continually bombs out on making calls as well. >> >>current machine here is a compaq 910a running xp-home. >> >>Any thoughts of what I might have missed ?? >> >> > >You forgot to write the code to support multiple codecs :) > >Ok, seriously -- iaxclient currently supports only GSM. Nobody has >stepped up to write the code necessary to support multiple codecs. At >some point, I probably will, if only because I spend more time talking >about it than it would take to do it. > >On a similar note, I benchmarked GSM vs Speex vs ILBC. GSM is fastest >to encode, but speex is fastest to decode. Speex and ILBC are similar >in encode speed. (Speex encode speed depends on the quality/bitrate >settings you use; ILBC/GSM have no such settings). > >Speex would be easiest to do (along with uLaw), but it shouldn't be much >harder to include iLBC (just need to ensure the 30ms frames are dealt >with), except for licensing issues (you can't use iLBC with GPL, for >example). > >Back to your question, though: Asterisk should translate codecs for you >in this case, as your call from Sip-client to iaxclient needs to go >through asterisk. There may be a setting in iax.conf to tell asterisk >we only support GSM. [but we probably should be able to tell asterisk >this in our protocol exchange]. This is something which seems to be missing (maybe) in asterisk.... I haven't been doing much with thus stuff lately, but if on setting a registration in IAX.con it would be nice to actually list there which codecs are allow for this client on an individual basis, same for SIP.conf etc... . |
From: Steve K. <st...@st...> - 2004-04-08 14:14:30
|
Gary wrote: >I have noticed lack of codec negotiation with calls thru a registrated >asterisk box. > >No seen problems with outbound calls, (though I haven't specifically >tried it), but the problem exists inbound. > >Easiest method for testing this was ring in via a sip client set to >ulaw, ringing a registered iaxcomm extension. > >currently using iaxcom-win-20040228 > > > >I might add DIAX.097a continually bombs out on making calls as well. > >current machine here is a compaq 910a running xp-home. > >Any thoughts of what I might have missed ?? > > You forgot to write the code to support multiple codecs :) Ok, seriously -- iaxclient currently supports only GSM. Nobody has stepped up to write the code necessary to support multiple codecs. At some point, I probably will, if only because I spend more time talking about it than it would take to do it. On a similar note, I benchmarked GSM vs Speex vs ILBC. GSM is fastest to encode, but speex is fastest to decode. Speex and ILBC are similar in encode speed. (Speex encode speed depends on the quality/bitrate settings you use; ILBC/GSM have no such settings). Speex would be easiest to do (along with uLaw), but it shouldn't be much harder to include iLBC (just need to ensure the 30ms frames are dealt with), except for licensing issues (you can't use iLBC with GPL, for example). Back to your question, though: Asterisk should translate codecs for you in this case, as your call from Sip-client to iaxclient needs to go through asterisk. There may be a setting in iax.conf to tell asterisk we only support GSM. [but we probably should be able to tell asterisk this in our protocol exchange]. -SteveK |
From: Gary <ga...@au...> - 2004-04-08 13:50:49
|
I have noticed lack of codec negotiation with calls thru a registrated asterisk box. No seen problems with outbound calls, (though I haven't specifically tried it), but the problem exists inbound. Easiest method for testing this was ring in via a sip client set to ulaw, ringing a registered iaxcomm extension. currently using iaxcom-win-20040228 I might add DIAX.097a continually bombs out on making calls as well. current machine here is a compaq 910a running xp-home. Any thoughts of what I might have missed ?? Gary. . |
From: Paulo M. <pa...@in...> - 2004-04-07 14:51:25
|
Hi Folks, I'm new to the list, but would like to tell everyone that we just started using Babar Shafiq's Iax OCX within a Delphi application. Things are working quite well, except for a lag between transmit and receive that we still haven't figured out what is causing. Best, PauloHM |
From: Adam H. <ad...@te...> - 2004-03-29 00:43:57
|
Unfortunately, iaxlib doesn't initiate native transfers, that functionally is only asterisk atm - in this case, the client (A) would proxy regardless. Please implement it :) But lets assume that iaxlib had it - the answer to your question, yes, the client should proxy it. If the remote parties can reach each other directly, no worries, otherwise you're the only way to connect the calls - you can't hand ball that off to a PBX (as they might not be able to reach the PBX). As you said, it's peer to peer, asterisk is no different to libiax2 clients in a call. Did that make sense, I apologize if it doesn't -Adam Steven Sokol wrote: >>That's not strange, that's the expected behavior. In order to transfer >>when a call is directly going between endpoints, it will be necessary toe >>execute a supervised transfer. >> >>Mark >> >> > >Ok, that makes sense for IAX2-to-IAX2 transfers. Where I get lost is in >executing a transfer where the destination party (the person you want to >transfer _to_) is not an IAX2 channel. I have a mixed test environment >including a number of SIP devices. Let me see if I get this right... > >1. An original call exists between my IAX2 device (A) and another IAX2 >device (B). The call is established via Asterisk, which drops out of the >call once the native transfer has been successfully established. > >2. I decide to transfer party (B) to another extension which is a SIP >device on my local Asterisk, we'll call it (C). > >3. I place (B) on hold and establish a call to (C) through Asterisk. (C) >answers the call. **IN THIS CASE, FROM A TRANSFER PERSPECTIVE, (C) IS NOT >THE SIP PHONE, BUT IS ACTUALLY THE ASTERISK WHICH IS CONVERTING PROTOCOL AND >AUDIO TO SIP?? > >4. I (A) send a TXREQ to (B). >5. I (A) send a TXREQ to (C). >6. (B) sends a TXCNT to (C). >7. (C) sends a TXCNT to (B). > >If all goes well... > >8. (C) sends a TXACC to (B). >9. (B) sends a TXACC to (C). >10. (B) sends TXREADY to (A). >11. (C) sends TXREADY to (A). >12. (A) sends TXREL to (B). >13. (A) sends TXREL to (C). > >14+. I assume that once this completes both IAX2 on (A) releases both calls >(the 'HELD' call to (B) and the active call to (C)) and returns to an IDLE >state. > >If all does not go well...? > >It would appear that the audio has to bridge through the IAX client (A) >(which is acting as a server, but hey, client, server, what's the difference >in a peer to peer scenario... ;-). What I guess I need to get my mind >around is how to handle scenarios where the native bridge fails in steps >8/9. How do we avoid (A) being forced to remain on-line to bridge (B) and >(C). This really should be the job of the PBX rather than an end-point like >the client. > >This may just be my limited brain trying to work through a scenario that is >beyond it's capacity. If this is the case, please let me know and I'll just >code it up and see what happens. > >Thanks, > >Steve > > > |
From: Steven S. <ss...@so...> - 2004-03-27 18:15:34
|
> That's not strange, that's the expected behavior. In order to transfer > when a call is directly going between endpoints, it will be necessary toe > execute a supervised transfer. > > Mark Ok, that makes sense for IAX2-to-IAX2 transfers. Where I get lost is in executing a transfer where the destination party (the person you want to transfer _to_) is not an IAX2 channel. I have a mixed test environment including a number of SIP devices. Let me see if I get this right... 1. An original call exists between my IAX2 device (A) and another IAX2 device (B). The call is established via Asterisk, which drops out of the call once the native transfer has been successfully established. 2. I decide to transfer party (B) to another extension which is a SIP device on my local Asterisk, we'll call it (C). 3. I place (B) on hold and establish a call to (C) through Asterisk. (C) answers the call. **IN THIS CASE, FROM A TRANSFER PERSPECTIVE, (C) IS NOT THE SIP PHONE, BUT IS ACTUALLY THE ASTERISK WHICH IS CONVERTING PROTOCOL AND AUDIO TO SIP?? 4. I (A) send a TXREQ to (B). 5. I (A) send a TXREQ to (C). 6. (B) sends a TXCNT to (C). 7. (C) sends a TXCNT to (B). If all goes well... 8. (C) sends a TXACC to (B). 9. (B) sends a TXACC to (C). 10. (B) sends TXREADY to (A). 11. (C) sends TXREADY to (A). 12. (A) sends TXREL to (B). 13. (A) sends TXREL to (C). 14+. I assume that once this completes both IAX2 on (A) releases both calls (the 'HELD' call to (B) and the active call to (C)) and returns to an IDLE state. If all does not go well...? It would appear that the audio has to bridge through the IAX client (A) (which is acting as a server, but hey, client, server, what's the difference in a peer to peer scenario... ;-). What I guess I need to get my mind around is how to handle scenarios where the native bridge fails in steps 8/9. How do we avoid (A) being forced to remain on-line to bridge (B) and (C). This really should be the job of the PBX rather than an end-point like the client. This may just be my limited brain trying to work through a scenario that is beyond it's capacity. If this is the case, please let me know and I'll just code it up and see what happens. Thanks, Steve |
From: Mark S. <mar...@di...> - 2004-03-27 15:27:30
|
That's not strange, that's the expected behavior. In order to transfer when a call is directly going between endpoints, it will be necessary toe execute a supervised transfer. Mark On Sat, 27 Mar 2004, Steven Sokol wrote: > Strange one.... > > It appears that call that can successfully native bridge cannot be > transferred using IAX Blind Transfer. Once the Asterisk is out of the loop, > the mechanism for effecting the transfer is gone. I am testing this on set > of lab systems where both boxes plus the Asterisk are in non-routing space > (192.168.1.x) so the can complete a valid native bridge. > > Any thoughts? > > Thanks, > > Steve > > Steven Sokol > Owner/Manager > Sokol & Associates, LLC > > Phone: 816.822.1807 > IaxTel: 700.613.9004 > Web: http://www.sokol-associates.com > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click > _______________________________________________ > Iaxclient-devel mailing list > Iax...@li... > https://lists.sourceforge.net/lists/listinfo/iaxclient-devel > |
From: Steven S. <ss...@so...> - 2004-03-27 15:09:07
|
Strange one.... It appears that call that can successfully native bridge cannot be transferred using IAX Blind Transfer. Once the Asterisk is out of the loop, the mechanism for effecting the transfer is gone. I am testing this on set of lab systems where both boxes plus the Asterisk are in non-routing space (192.168.1.x) so the can complete a valid native bridge. Any thoughts? Thanks, Steve Steven Sokol Owner/Manager Sokol & Associates, LLC Phone: 816.822.1807 IaxTel: 700.613.9004 Web: http://www.sokol-associates.com |
From: Steven S. <ss...@so...> - 2004-03-27 03:47:46
|
After months of delay, I am releasing a second Beta of IAX Phone. This version looks just like the prototype I have had on display for several months. It includes a number of new features and shows signs of others that will be coming soon. New Features: - Speaker phone - Muting - Call Logging - Hold music for held calls - Registration improvements - Direct dial (by IP or machine name) - Better keyboard handling - Hide/Minimize (F12) - Restore/Show (Alt+F12) - Cool new look/feel Coming Soon: - In-Phone call recording - Phone Book or Outlook Integration - Text Messaging - Multiple Talk Paths - DND/FWD/Reject Download it at my site: http://www.sokol-associates.com Please email me or use the bug tracker on my site if/when you find issues. Take a look at the other stuff I'm working on, including an Asterisk GUI. Info and screen shots on the blog on the front page. Thanks, Steve Steven Sokol Sokol & Associates, LLC Phone: 816.822.1807 IaxTel: 700.613.9004 Web: http://www.sokol-associates.com |
From: S <s...@ka...> - 2004-03-26 16:51:08
|
Hi Steve, I haven't found a FAX machine right now to send a FAX to digium. No old fashioned folks out there... Try to find one next week. See comments below : PS : I have published the alpha version of my Zaurus iax client on : http://www.kauss.org/Stephan/ziaxphone/index.html ---------------------------------------------------------------- Steve Kann wrote : > S wrote: > > > Hi Steve, > > > > I will send a FAX to digium. First I have to find a FAX > > machine ;-)) > > (Yes there are people out which have no fax-machine (this > machines are > > old fashioned stuff) If I have send the fax I let you know. > > > > All RISC machines need pointers word align, but some one > > have a > > special handling to remedy the problem. For example the DEC > ALPHA chip > > get a trap and realign the pointer (in the same way I have > done). This > > means for every pointer wich is not align the CPU has to do > some extra > > work. > > Also I think some new compiler have options to handle this > problem. > > (They add some extra code into you program). > > Right, that's what I expected. And, since the majority of your > > changes were in debug code anyway, the extra work to re-align things > really isn't significant. Not true the function iax_parse_ies() is called for every AST_FRAME_IAX package. > > I guess, before I go and commit these things [either the alignment > stuff or the POKE change], I'd like to hear confirmation from others > that (a) these problems are real, and (b) these fixes fix the problem > correctly. It is real, try to use iaxcomm register with asterisk. > > I don't use the registration stuff myself much [my client doesn't > register], but It seems to be working for lots of people using > iaxclient-based clients, so It would be quite surprising that there's > a bug that induces a failure here. > > Similarly, Jason Pattie also has iaxclient working on a zaurus, and I > don't think he needed all these alignment changes to make it work.. > If I understand Jason A. Pattie right, he use a iPAQ also with a ARM CPU. > Is there some documentation you can point me to on the alignment > requirements in C programs for the zaurus? > See http://www.arm.com/support/faqdev/1469.html Section : (3) Unknown alignment and Section Porting code > -SteveK |
From: Steve K. <st...@st...> - 2004-03-25 15:22:25
|
S wrote: > Hi Steve, > > I will send a FAX to digium. First I have to find a FAX machine ;-)) > (Yes there are people out which have no fax-machine (this machines are > old fashioned stuff) If I have send the fax I let you know. > > All RISC machines need pointers word align, but some one have a > special handling to remedy the problem. For example the DEC ALPHA chip > get a trap and realign the pointer (in the same way I have done). This > means for every pointer wich is not align the CPU has to do some extra > work. > Also I think some new compiler have options to handle this problem. > (They add some extra code into you program). Right, that's what I expected. And, since the majority of your changes were in debug code anyway, the extra work to re-align things really isn't significant. I guess, before I go and commit these things [either the alignment stuff or the POKE change], I'd like to hear confirmation from others that (a) these problems are real, and (b) these fixes fix the problem correctly. I don't use the registration stuff myself much [my client doesn't register], but It seems to be working for lots of people using iaxclient-based clients, so It would be quite surprising that there's a bug that induces a failure here. Similarly, Jason Pattie also has iaxclient working on a zaurus, and I don't think he needed all these alignment changes to make it work.. Is there some documentation you can point me to on the alignment requirements in C programs for the zaurus? -SteveK > > ------------------------------------------------------------ > > I found a other problem in iax.c function iax_header_to_event() in > case IAX_COMMAND_TXREQ: > > In the new version there is a new assignment to session->transfer . > If I let the line in I get instantly a crash. Do you know why this > line is added ? You should look in the CVS history to get information about the changes, as well as in the sourceforge lists. For example: > > > case IAX_COMMAND_TXREQ: > #if 0 > session->transfer = *e->ies.apparent_addr; > #endif > session->transfer.sin_family = AF_INET; > session->transfercallno = e->ies.callno; > session->transferring = TRANSFER_BEGIN; > > ----------------------------------------------------------------- > > Do you have any comments about the registry problem and my > IAX_COMMAND_POKE fix ? > > It fix the registry problem but after a time the client is unregisterd > and registed again. So there must be a other problem to. > > > Regards > > Stephan > > PS : See comments in the mail below. > > Steve Kann wrote: > > > > Stephan, > > > > Can you (or have you already) faxed in a disclaimer to digium for > > your libiax2 changes? > > > > If you have, than I'd gladly take this change and send it up to > Digium. > > > > As far as your alignment patch, I guess my questions are: > > > > 1) First, the patches are definitely not needed for all RISC platforms; > > the code works just fine on PPC, for example. > Maybe the PPC has some special handling for not align pointer. > > > > > 2) Why haven't others who are using iaxclient on zaurus running into > > this same problem? > Maybe they use some special compiler (or compiler options) > > > > > That patch seems like a lot of clutter to add to the code if it isn't > > really necessary.. > You are right it looks out like clutter, but the problem is the design > mistake in the IAX protocol. I hope in a future version of IAX they > take care of word align. On 64Bit CPU's the problem getting bigger.... > Most porting problems are align bugs. A good candiate to find a align > bug is the Sparc CPU (32bit) and Super Sparc III CPU (64bit), Or the > Alpha CPU (where the align warning are not disabled). > I have no idea how sensitively the AMD Opteron CPU is. > > > > > -SteveK > > > > S wrote: > > > > > Hi Steve, > > > > > > I found the registry bug in the libiax2/src/iax2.c, > > > In function iax_header_to_event(...) is no POKE command handle, so I > > > add this line and it work (only POKE case section) : > > > > > > case IAX_COMMAND_PING: > > > /* Just immediately reply */ > > > e->etype = IAX_EVENT_PING; > > > e->ts = ts; > > > e = schedule_delivery(e, ts); > > > break; > > > case IAX_COMMAND_POKE: /* SKA fix registry problem */ > > > send_command_immediate( session, > > > AST_FRAME_IAX, > > > IAX_COMMAND_PONG, > > > ts, NULL, 0, fh->iseqno); > > > e = NULL; > > > break; > > > case IAX_COMMAND_PONG: > > > > > > Please add the POKE case section to libiax2/src/iax2.c line 2119 > > > > > > iax2 show peers > > > skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 OK (22 ms) > > > > > > I suspect there is still a other bug, because afer a while ( and 4 > > > times refreshing registration ) I get a UNREACHABLE and a while later > > > I get a REACHABLE > > > > > > Regards > > > > > > Stephan > > > > > > PS : This is the next stop to iax phone on a ARM RISC Zaurs PDA. > > > PS : There are still some align patches for iax2-parser.c out... > > > > > > > > > > > > S wrote: > > > > > >> Hi IAX Guru's, > > >> > > >> I have the problem to register a iaxclient (iaxcomm or my own Zaurus > > >> client) to asterisk. > > >> Here is my observation on asterisk with iax2 debug on where a > > >> iaxclient try to register : > > >> > > >> Rx --> REGREQ > > >> TX <-- REGAUTH > > >> Rx --> REGREQ > > >> TX <-- POKE > > >> TX <-- REGACK > > >> RX --> ACK > > >> RX --> ACK > > >> TX <--POKE > > >> > > >> iax2 show peers > > >> Name/Username Host Mask Port Status > > >> muggel/muggel (Unspecified) (D) 255.255.255.255 0 UNKNOWN > > >> skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 > UNREACHABLE > > >> ska/ska (Unspecified) (D) 255.255.255.255 0 UNKNOWN > > >> > > >> > > >> And here is the iax2 debug while one asterisk register on a > second one. > > >> RX --> REGREQ > > >> TX <-- REGAUTH > > >> RX --> REGREQ > > >> TX <-- REGACK > > >> RX --> ACK > > >> TX <-- POKE > > >> RX --> PONG > > >> Peer 'XXX' is now REACHABLE! > > >> TX <-- ACK > > >> > > >> The different between both traces is the POKE PONG sequence. > > >> In the libiax2/src/iax.c file is no code for the POKE request ? > > >> > > >> Any comment's ? > > >> What is going wrong ? > > >> > > >> Is there anyone able to register a iaxclient to asterisk ? > > >> ( iax2 show peers --> Status OK ) > > >> > > >> Regards > > >> > > >> Stephan > > >> > > >> > > > > > // strings attachment.doc | more > |
From: S <s...@ka...> - 2004-03-25 09:14:25
|
Hi Steve, I will send a FAX to digium. First I have to find a FAX machine ;-)) (Yes there are people out which have no fax-machine (this machines are old fashioned stuff) If I have send the fax I let you know. All RISC machines need pointers word align, but some one have a special handling to remedy the problem. For example the DEC ALPHA chip get a trap and realign the pointer (in the same way I have done). This means for every pointer wich is not align the CPU has to do some extra work. Also I think some new compiler have options to handle this problem. (They add some extra code into you program). ------------------------------------------------------------ I found a other problem in iax.c function iax_header_to_event() in case IAX_COMMAND_TXREQ: In the new version there is a new assignment to session->transfer . If I let the line in I get instantly a crash. Do you know why this line is added ? case IAX_COMMAND_TXREQ: #if 0 session->transfer = *e->ies.apparent_addr; #endif session->transfer.sin_family = AF_INET; session->transfercallno = e->ies.callno; session->transferring = TRANSFER_BEGIN; ----------------------------------------------------------------- Do you have any comments about the registry problem and my IAX_COMMAND_POKE fix ? It fix the registry problem but after a time the client is unregisterd and registed again. So there must be a other problem to. Regards Stephan PS : See comments in the mail below. Steve Kann wrote: > > Stephan, > > Can you (or have you already) faxed in a disclaimer to digium for > your libiax2 changes? > > If you have, than I'd gladly take this change and send it up to Digium. > > As far as your alignment patch, I guess my questions are: > > 1) First, the patches are definitely not needed for all RISC platforms; > the code works just fine on PPC, for example. Maybe the PPC has some special handling for not align pointer. > > 2) Why haven't others who are using iaxclient on zaurus running into > this same problem? Maybe they use some special compiler (or compiler options) > > That patch seems like a lot of clutter to add to the code if it isn't > really necessary.. You are right it looks out like clutter, but the problem is the design mistake in the IAX protocol. I hope in a future version of IAX they take care of word align. On 64Bit CPU's the problem getting bigger.... Most porting problems are align bugs. A good candiate to find a align bug is the Sparc CPU (32bit) and Super Sparc III CPU (64bit), Or the Alpha CPU (where the align warning are not disabled). I have no idea how sensitively the AMD Opteron CPU is. > > -SteveK > > S wrote: > > > Hi Steve, > > > > I found the registry bug in the libiax2/src/iax2.c, > > In function iax_header_to_event(...) is no POKE command handle, so I > > add this line and it work (only POKE case section) : > > > > case IAX_COMMAND_PING: > > /* Just immediately reply */ > > e->etype = IAX_EVENT_PING; > > e->ts = ts; > > e = schedule_delivery(e, ts); > > break; > > case IAX_COMMAND_POKE: /* SKA fix registry problem */ > > send_command_immediate( session, > > AST_FRAME_IAX, > > IAX_COMMAND_PONG, > > ts, NULL, 0, fh->iseqno); > > e = NULL; > > break; > > case IAX_COMMAND_PONG: > > > > Please add the POKE case section to libiax2/src/iax2.c line 2119 > > > > iax2 show peers > > skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 OK (22 ms) > > > > I suspect there is still a other bug, because afer a while ( and 4 > > times refreshing registration ) I get a UNREACHABLE and a while later > > I get a REACHABLE > > > > Regards > > > > Stephan > > > > PS : This is the next stop to iax phone on a ARM RISC Zaurs PDA. > > PS : There are still some align patches for iax2-parser.c out... > > > > > > > > S wrote: > > > >> Hi IAX Guru's, > >> > >> I have the problem to register a iaxclient (iaxcomm or my own Zaurus > >> client) to asterisk. > >> Here is my observation on asterisk with iax2 debug on where a > >> iaxclient try to register : > >> > >> Rx --> REGREQ > >> TX <-- REGAUTH > >> Rx --> REGREQ > >> TX <-- POKE > >> TX <-- REGACK > >> RX --> ACK > >> RX --> ACK > >> TX <--POKE > >> > >> iax2 show peers > >> Name/Username Host Mask Port Status > >> muggel/muggel (Unspecified) (D) 255.255.255.255 0 UNKNOWN > >> skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 UNREACHABLE > >> ska/ska (Unspecified) (D) 255.255.255.255 0 UNKNOWN > >> > >> > >> And here is the iax2 debug while one asterisk register on a second one. > >> RX --> REGREQ > >> TX <-- REGAUTH > >> RX --> REGREQ > >> TX <-- REGACK > >> RX --> ACK > >> TX <-- POKE > >> RX --> PONG > >> Peer 'XXX' is now REACHABLE! > >> TX <-- ACK > >> > >> The different between both traces is the POKE PONG sequence. > >> In the libiax2/src/iax.c file is no code for the POKE request ? > >> > >> Any comment's ? > >> What is going wrong ? > >> > >> Is there anyone able to register a iaxclient to asterisk ? > >> ( iax2 show peers --> Status OK ) > >> > >> Regards > >> > >> Stephan > >> > >> > > // strings attachment.doc | more |
From: Steve K. <st...@st...> - 2004-03-23 18:56:46
|
Stephan, Can you (or have you already) faxed in a disclaimer to digium for your libiax2 changes? If you have, than I'd gladly take this change and send it up to Digium. As far as your alignment patch, I guess my questions are: 1) First, the patches are definitely not needed for all RISC platforms; the code works just fine on PPC, for example. 2) Why haven't others who are using iaxclient on zaurus running into this same problem? That patch seems like a lot of clutter to add to the code if it isn't really necessary.. -SteveK S wrote: > Hi Steve, > > I found the registry bug in the libiax2/src/iax2.c, > In function iax_header_to_event(...) is no POKE command handle, so I > add this line and it work (only POKE case section) : > > case IAX_COMMAND_PING: > /* Just immediately reply */ > e->etype = IAX_EVENT_PING; > e->ts = ts; > e = schedule_delivery(e, ts); > break; > case IAX_COMMAND_POKE: /* SKA fix registry problem */ > send_command_immediate( session, > AST_FRAME_IAX, > IAX_COMMAND_PONG, > ts, NULL, 0, fh->iseqno); > e = NULL; > break; > case IAX_COMMAND_PONG: > > Please add the POKE case section to libiax2/src/iax2.c line 2119 > > iax2 show peers > skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 OK (22 ms) > > I suspect there is still a other bug, because afer a while ( and 4 > times refreshing registration ) I get a UNREACHABLE and a while later > I get a REACHABLE > > Regards > > Stephan > > PS : This is the next stop to iax phone on a ARM RISC Zaurs PDA. > PS : There are still some align patches for iax2-parser.c out... > > > > S wrote: > >> Hi IAX Guru's, >> >> I have the problem to register a iaxclient (iaxcomm or my own Zaurus >> client) to asterisk. >> Here is my observation on asterisk with iax2 debug on where a >> iaxclient try to register : >> >> Rx --> REGREQ >> TX <-- REGAUTH >> Rx --> REGREQ >> TX <-- POKE >> TX <-- REGACK >> RX --> ACK >> RX --> ACK >> TX <--POKE >> >> iax2 show peers >> Name/Username Host Mask Port Status >> muggel/muggel (Unspecified) (D) 255.255.255.255 0 UNKNOWN >> skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 UNREACHABLE >> ska/ska (Unspecified) (D) 255.255.255.255 0 UNKNOWN >> >> >> And here is the iax2 debug while one asterisk register on a second one. >> RX --> REGREQ >> TX <-- REGAUTH >> RX --> REGREQ >> TX <-- REGACK >> RX --> ACK >> TX <-- POKE >> RX --> PONG >> Peer 'XXX' is now REACHABLE! >> TX <-- ACK >> >> The different between both traces is the POKE PONG sequence. >> In the libiax2/src/iax.c file is no code for the POKE request ? >> >> Any comment's ? >> What is going wrong ? >> >> Is there anyone able to register a iaxclient to asterisk ? >> ( iax2 show peers --> Status OK ) >> >> Regards >> >> Stephan >> >> > |
From: S <s...@ka...> - 2004-03-23 17:32:13
|
Hi Steve, I found the registry bug in the libiax2/src/iax2.c, In function iax_header_to_event(...) is no POKE command handle, so I add this line and it work (only POKE case section) : case IAX_COMMAND_PING: /* Just immediately reply */ e->etype = IAX_EVENT_PING; e->ts = ts; e = schedule_delivery(e, ts); break; case IAX_COMMAND_POKE: /* SKA fix registry problem */ send_command_immediate( session, AST_FRAME_IAX, IAX_COMMAND_PONG, ts, NULL, 0, fh->iseqno); e = NULL; break; case IAX_COMMAND_PONG: Please add the POKE case section to libiax2/src/iax2.c line 2119 iax2 show peers skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 OK (22 ms) I suspect there is still a other bug, because afer a while ( and 4 times refreshing registration ) I get a UNREACHABLE and a while later I get a REACHABLE Regards Stephan PS : This is the next stop to iax phone on a ARM RISC Zaurs PDA. PS : There are still some align patches for iax2-parser.c out... S wrote: > Hi IAX Guru's, > > I have the problem to register a iaxclient (iaxcomm or my own Zaurus > client) to asterisk. > Here is my observation on asterisk with iax2 debug on where a iaxclient > try to register : > > Rx --> REGREQ > TX <-- REGAUTH > Rx --> REGREQ > TX <-- POKE > TX <-- REGACK > RX --> ACK > RX --> ACK > TX <--POKE > > iax2 show peers > Name/Username Host Mask Port Status > muggel/muggel (Unspecified) (D) 255.255.255.255 0 UNKNOWN > skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 UNREACHABLE > ska/ska (Unspecified) (D) 255.255.255.255 0 UNKNOWN > > > And here is the iax2 debug while one asterisk register on a second one. > RX --> REGREQ > TX <-- REGAUTH > RX --> REGREQ > TX <-- REGACK > RX --> ACK > TX <-- POKE > RX --> PONG > Peer 'XXX' is now REACHABLE! > TX <-- ACK > > The different between both traces is the POKE PONG sequence. > In the libiax2/src/iax.c file is no code for the POKE request ? > > Any comment's ? > What is going wrong ? > > Is there anyone able to register a iaxclient to asterisk ? > ( iax2 show peers --> Status OK ) > > Regards > > Stephan > > |
From: S <s...@ka...> - 2004-03-22 17:26:08
|
Hi IAX Guru's, I have the problem to register a iaxclient (iaxcomm or my own Zaurus client) to asterisk. Here is my observation on asterisk with iax2 debug on where a iaxclient try to register : Rx --> REGREQ TX <-- REGAUTH Rx --> REGREQ TX <-- POKE TX <-- REGACK RX --> ACK RX --> ACK TX <--POKE iax2 show peers Name/Username Host Mask Port Status muggel/muggel (Unspecified) (D) 255.255.255.255 0 UNKNOWN skaAtHome 172.16.16.160 (D) 255.255.255.255 4569 UNREACHABLE ska/ska (Unspecified) (D) 255.255.255.255 0 UNKNOWN And here is the iax2 debug while one asterisk register on a second one. RX --> REGREQ TX <-- REGAUTH RX --> REGREQ TX <-- REGACK RX --> ACK TX <-- POKE RX --> PONG Peer 'XXX' is now REACHABLE! TX <-- ACK The different between both traces is the POKE PONG sequence. In the libiax2/src/iax.c file is no code for the POKE request ? Any comment's ? What is going wrong ? Is there anyone able to register a iaxclient to asterisk ? ( iax2 show peers --> Status OK ) Regards Stephan |
From: Lim H. S. <li...@in...> - 2004-03-22 02:20:05
|
Hi, I am new to IAX, i had compile the IAX2 library and try with the testcall program and its work fine. After that, i try to build application under windows with Visual Basic 6. I wrap the lib , build into dll file and exports the function, then i call the dll from the VB application. When u compile and run, it also can work fine which mean i can connect server and chat..but When i close the application, the program crash, it throw few memory Errors and shut down the VB IDE... i dont know what happen to it...i just call five function to testing only...which is 1. initialize 2. setEncodeFormat 3.setSilenceThreshold 4.StartProcessing Thead 5 Call all function is direct call from dll, so i dont think is problem coz by code... Then i try to dumpCalls and stopProcessingThread while application exit, but it still crash.=( .After that, i add in few milliSleep function when application exit, this time the application start properly and can close normally without shut down the VB IDE...but the problem is i found out the application only can work for first time only, which mean after start the application first time and it work fine, the cant work at second time and above.... I need to close the VB IDE and reopen again the IDE, the application can work again but only the first time, then i need to close and reopen again.. so , what problem with that, is it any resource capture by application didnt release properly ? any one can help me..? How to make the application work smoothly...? thanks for reply... HSL |
From: Steve K. <st...@st...> - 2004-03-18 19:53:42
|
Mark, We've recently uncovered a problem with the jitter buffer code in IAX2 (probably also 1, for what it's worth). We see this mostly on the chan_iax2 side, but it's also incorrect in libiax2 and iaxclient. For discussion, let's say there's a call between machines A and B. We'll describe the problem here with the jitter buffer on B: The problem occurs when: * The jitter buffer on B is currently shrinking (so it's getting set 2ms smaller each time it processes a frame from A). * A is sending a sequence of frames that are timed 2ms or less apart. This can happen if scheduling difficulties on A cause it to get temporarily behind. For example, on Win98, we get generally get scheduled once every 50-60ms, so we end up sending frames in bunches of 2 or 3. * The sequentially-timestamped frames from A arrive roughly at the same time to B. What happens here is that in this case, the frames get scheduled out-of-order, and the result is very bad voice quality. The rough sequence of processing (at B) is as follows: Start/First Packet: Jitter buffer is set to size J, first packet with timestamp "TS" is scheduled for delivery in M ms. Second Packet: Jitter buffer is set to size J-2; second packet with timestamp TS+1 is scheduled for delivery in M-1 ms. Third Packet: Jitter buffer is set to size J-4; third packet with timestamp TS+2 is scheduled for delivery in M-2ms. (etc, for as many consecutive packets there are). The out-of-order delivery of packets is really a problem, regardless of what's on the other side of the channel: Whether it's bridged to another channel, or in an application. Possible solutions: * Cheap/simple solution: Instead of enforcing a 1ms difference between consecutive frames, enforce a 3ms difference (i.e. the "shrink-interval" +1). This seems like it would work OK in the cases we see. A partial drawback seems to be that it restricts the number of frames from 1000/sec to 333/sec, but I don't see that actually being a problem. I'm not sure if this holds up in the case where packets actually arrive out-of-order. * More complicated (and expensive) solutions require looking around at the queue of scheduled packets when shrinking, and either: o Just looking to see if there is a frame scheduled for the time range where the shrinking would cause out-of-orderedness, and if so, delaying the frame in hand until after that one. o Actually re-scheduling the queue to account for the jitter buffer size change. We're going to test implementing the Cheap Solution, in a local copy of iaxclient, to see if it solves our observed and reported problem. As it stands, calls from Win9x to us are relatively unintelligible because of this, and I suspect that this also affects other platforms when they're busy. Either of these solutions, however, really needs to be implemented in both chan_iax2 as well as in iaxclient, because the error can happen on either end. The cheap solution, of course, is actually a [backwards compatibly] change to the protocol, while the "more complicated" solutions actually correct the implementation. Thoughts? |
From: Matt R. <ma...@su...> - 2004-03-17 23:44:23
|
Don't know if this is of interest to anyone but maybe you can store it in the back of your brain and if someone asks about these symptoms... These are easily reproducable on my machine: If I use the C-Media AC97 card for mic, and the same for headphones, I had echo. If I use the Aureal Vortex 2 for headphones, the sound breaks up. So...now I have AV2 for ring and mic, C-Media for headset...fixed. Also, I made a batch file with: SET PA_MIN_LATENCY_MSEC=50 DIAX and I tested it at values from 5->400. At 45 it broke up, and 50 seems to be the best setting. The decrease in delay is really great. BTW in case you're thinking I did all of the soundcard test multiple times with multiple headphones and headsets. I am currently using DIAX, but have most soft phones installed. Kind regards, Matt Riddell P.S. Win98SE |
From: Steve K. <st...@st...> - 2004-03-15 16:52:21
|
Steven Sokol wrote: >I have been playing with IAX Phone and the library in an attempt to >determine what is the cause of the fairly large delay that seems to take >place when using IAX phone. > >From what I can tell, the process of encoding the PC's linear PCM stream >into GSM packets is fairly fast. The process of decoding GSM frames into a >linear PCM stream is fairly slow. This is anecdotal, but is seems fairly >consistent from PC to PC. > >The delay for audio data coming FROM my IAX Phone and going TO my >Grandstream BT101 (and through my Asterisk where it is trans-coded from GSM >to G.711) is minimal - perhaps 100-200ms. The delay for sound FROM the >Grandstream to IAX Phone through Asterisk (which again trans-codes the g.711 >to GSM) is MUCH larger -- perhaps as much as 750-1000ms. > >I suppose the additional delay could be the fault of the Asterisk in the >middle, but somehow I seriously doubt it. Does anybody out there have any >guess as to the culprit? In testing the same scenarios with Firefly, I >found that the latency is noticeably less. Does this indicate PA, or >perhaps the version of the GSM code, or is it the set of ring buffers in the >audio interface? > >Any suggestions would be helpful! > > It's not the decoding; the major source of delays is portaudio, and you can control this to some extent with the environment variable. See http://sourceforge.net/mailarchive/message.php?msg_id=7258386 and the messages it refers to earlier in the list archives. We are looking at this ourselves, in order to try and tune out some latency. Currently, we're a) Using the portaudio defaults, which may or may not be too conservative. b) Not necessarily shrinking internal ringbuffers as we could. So, what I'd suggest that would be helpful, is to play with the environment variable a bit, and post results to the list. You can definitely cut it down, and get an immediate and measurable decrease in playback latency. |
From: Steven S. <ss...@so...> - 2004-03-15 16:20:04
|
I have been playing with IAX Phone and the library in an attempt to determine what is the cause of the fairly large delay that seems to take place when using IAX phone. From what I can tell, the process of encoding the PC's linear PCM stream into GSM packets is fairly fast. The process of decoding GSM frames into a linear PCM stream is fairly slow. This is anecdotal, but is seems fairly consistent from PC to PC. The delay for audio data coming FROM my IAX Phone and going TO my Grandstream BT101 (and through my Asterisk where it is trans-coded from GSM to G.711) is minimal - perhaps 100-200ms. The delay for sound FROM the Grandstream to IAX Phone through Asterisk (which again trans-codes the g.711 to GSM) is MUCH larger -- perhaps as much as 750-1000ms. I suppose the additional delay could be the fault of the Asterisk in the middle, but somehow I seriously doubt it. Does anybody out there have any guess as to the culprit? In testing the same scenarios with Firefly, I found that the latency is noticeably less. Does this indicate PA, or perhaps the version of the GSM code, or is it the set of ring buffers in the audio interface? Any suggestions would be helpful! Thanks Steve Steven Sokol Owner/Manager Sokol & Associates, LLC Phone: 816.822.1807 IaxTel: 700.613.9004 Web: http://www.sokol-associates.com |