From: Steve K. <st...@st...> - 2003-06-10 23:48:47
|
1) (most relevant): put iax call processing (including audio) into a separate thread. This helps the most when you do things that block the GUI thread, like resizing the window (Win32 only?). And it seems to also help the Mac a bit(*) (*) The volume meters, implemented with progress bars via wxwindows on the mac, eat a lot of CPU for their animation. Not that it doesn't look good. I think that this caused some skips on the Mac. 2) Fixed the DTMF buttons that I broke sometime today or last night. 3) Fixed PTT a bit. (looking for feedback on how this works). Also, due to a byproduct of the way I did things, if you enable then disable PTT, you'll also be enabling silence detection/suppression. This will make the client not spit out any audio frames until the input audio level reaches -40 DB. There's been a lot of interest here on the list and on IRC from a growing community. That's cool. People asked what they can help with, so here's some ideas for adventurous souls: 1) IAX2: You can build it via my Makefiles by setting IAXVER=2 at the top of the library Makefile, or building the library by running "make IAXVER=2". It doesn't work quite right, though, so if someone could try and figure that one out, it would be good. Once it's working, IAX2 should offer us a bunch of quality improvements, especially over the internet. 2) Registration: People out there want this, and it will make the apps/library more useful to the community. Shouldn't be too hard, but will need to be a bit careful about keeping track of calls, sessions, peers, etc. 3) A maintainer for VC++ Makefiles and/or .dsw files. I don't know this stuff, and I don't like tools you need your mouse for. But, if it helps people get more involved, I'm all for keeping a current .dsw/dsp or whatever file in CVS, one for each of the Makefiles, I guess (lib, testcall, wx). 4) Exposing Audio Settings: Make controls (library functions and GUI) for enumerating and choosing audio input/output devices. This may require either moving to the standard portaudio callback interface, or hacking pablio to allow you to choose particular devices. Also, expose setting the input and output "levels". It's probably best to allow them to change this while the app is running, so you'll need to close/re-open the audio device, etc. 5) MacOSX Mono audio problem: Currently MacOSX audio comes only out of the left channel. Seems like a portaudio problem to track down. 6) silence detection / dynamic range compression: Figure out good values or algorithms to make the client automatically (a) not send any packets when there's no speech, (b) put out good consistent volume when there is speech, even if people don't have consistent microphone/soundcard settings, use laptop microphones or nice headsets. 7) Additional codec support: I'd start with uLaw, to make some #iaxclient user happy, but also because it's pretty easy to implement, then also try iLBC and/or Speex. Probably want one way for the user to choose their preferred codec. Hmm, that's a bunch of stuff :) If anyone wants to step up for this stuff, let the list know, so we all don't duplicate each other's work. Happy IAX clienting! -SteveK -- Steve Kann - Chief Engineer - 520 8th Ave #2300 NY 10018 - (212) 533-1775 HorizonLive.com - collaborate . interact . learn "The box said 'Requires Windows 95, NT, or better,' so I installed Linux." |