Summary:ASTERISK-01624: [patch] libiax2: combined sync with iaxclient: jitterbuffer, acking, PING response, and more.
Reporter:stevekstevek (stevekstevek)Labels:
Date Opened:2004-05-14 18:16:59Date Closed:2004-09-25 02:46:01
Versions:Frequency of
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..
- quelch_moh

Comments:By: stevekstevek (stevekstevek) 2004-05-14 18:19:17

NOTE: We're still testing this stuff, especially the following:

- ACKs
- 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