rtp: Add support for RTP extension negotiation and abs-send-time.
authorJoshua Colp <jcolp@digium.com>
Mon, 23 Apr 2018 14:04:01 +0000 (14:04 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 23 May 2018 15:41:59 +0000 (09:41 -0600)
commita507c73a784d35cd35a67efc85e44714bee9fb60
treecabd59afa79c6203df6841f64a7607f564918d0a
parent21dd609e77e2debb945b7cf05c7e101c2ec92f48
rtp: Add support for RTP extension negotiation and abs-send-time.

When RTP was originally created it had the ability to place a single
extension in an RTP packet. In practice people wanted to potentially
put multiple extensions in one and so RFC 5285 (obsoleted by RFC
8285) came into existence. This allows RTP extensions to be negotiated
with a unique identifier to be used in the RTP packet, allowing
multiple extensions to be present in the packet.

This change extends the RTP engine API to add support for this. A
user of it can enable extensions and the API provides the ability to
retrieve the information (to construct SDP for example) and to provide
negotiated information (from SDP). The end result is that the RTP
engine can then query to see if the extension has been negotiated and
what unique identifier is to be used. It is then up to the RTP engine
implementation to construct the packet appropriately.

The first extension to use this support is abs-send-time which is
defined in the REMB draft[1] and is a second timestamp placed in an
RTP packet which is for when the packet has left the sending system.
It is used to more accurately determine the available bandwidth.

ASTERISK-27831

[1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03

Change-Id: I508deac557867b1e27fc7339be890c8018171588
include/asterisk/rtp_engine.h
main/rtp_engine.c
res/res_pjsip_sdp_rtp.c
res/res_rtp_asterisk.c