bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues.
authorJoshua Colp <jcolp@digium.com>
Mon, 17 Jul 2017 16:01:24 +0000 (16:01 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 19 Jul 2017 13:23:26 +0000 (13:23 +0000)
commit680c491a6238274132bff3608ae17b1371c2af2a
treef46bcf51b940482bdde1f7496842cdac312b4a59
parent47084ad09e30ad75a97500de7378414edccc01c0
bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues.

This change does a few things to improve packet loss and renegotiation:

1. On outgoing RTP streams we will now properly reflect out of order
packets and packet loss in the sequence number. This allows the
remote jitterbuffer to better reorder things.

2. Video updates can now be discarded for a period of time
after one has been sent to prevent flooding of clients.

3. For declined and removed streams we will now release any
media session resources associated with them. This was not
previously done and caused an issue where old state was being
used for a new stream.

4. RTP bundling was not actually removing bundled RTP instances
from the parent. This has been resolved by removing based on
the RTP instance itself and not the SSRC.

5. The code did not properly handle explicitly unbundling an
RTP instance from its parent. This now works as expected.

ASTERISK-27143

Change-Id: Ibd91362f0e4990b6129638e712bc8adf0899fd45
12 files changed:
apps/app_confbridge.c
apps/confbridge/conf_config_parser.c
apps/confbridge/include/confbridge.h
bridges/bridge_softmix.c
bridges/bridge_softmix/include/bridge_softmix_internal.h
configs/samples/confbridge.conf.sample
include/asterisk/bridge.h
include/asterisk/frame.h
main/bridge.c
main/rtp_engine.c
res/res_pjsip_session.c
res/res_rtp_asterisk.c