|Summary:||ASTERISK-01624: [patch] libiax2: combined sync with iaxclient: jitterbuffer, acking, PING response, and more.|
|Date Opened:||2004-05-14 18:16:59||Date Closed:||2004-09-25 02:46:01|
|Environment:||Attachments:||( 0) libiax2-digium.patch|
Here's some changes from iaxclient: all are either by me/my company and disclaimed, or from contributors with digium disclaimers on file [Steve Sokol or Michael van Donselaar]
Jitter Buffering / timestamps
- Only update history on voice frames, and not on retransmitted frames.
- Defensiveness: drop wacko-timestamped voice frames.
- always set min timestamp increment to 3, allowing shrinking by 2 on remote j/b without reordering.
- basic port of asterisk's timestamp prediction to libiax2 [please let me know if this is OK, Mark GPL vs LGPL].
- don't update j/b history on non-voice or retransmitted frames.
- use a larger jitter window [history], and shrink more slowly.
- Never turn last_ts backwards (i.e. an old retransmit making miniframe time-reconstruction broken)
- Act upon PING/PONG immediately, not through jitter buffer.
- Send ACKS when we should (we only did for IAX and VOICE frames, not for things like answer/text
etc), but we _would_ ack those on retransmit..
- Remove old iax_do_event: It's value as a reference is negated by the real annoyance it makes in searching/debugging. If you want to see the old code, look at iax-0.2.3 or whatnot..
|Comments:||By: stevekstevek (stevekstevek) 2004-05-14 18:19:17|
NOTE: We're still testing this stuff, especially the following:
- immediate PING/PONG
- last_ts backward
The other parts we've been testing for 1 or more weeks.
By: Mark Spencer (markster) 2004-05-15 01:03:18
I went ahead and put it in. If it's broken just reopen