From 8bd82ebc0d6a57cc71f6e5207dfb0925bf506449 Mon Sep 17 00:00:00 2001
From: Jason Parker <jparker@digium.com>
Date: Wed, 20 Sep 2006 17:39:59 +0000
Subject: [PATCH] Add documentation on rtp packetization.

Technically, ooh323 doesn't support it yet, but there is a patch that should be committed very soon.

Issue #7989, patch by DEA, slightly modified.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43344 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 configs/h323.conf.sample   |  1 +
 configs/sip.conf.sample    |  2 +-
 configs/skinny.conf.sample |  2 +-
 doc/rtp-packetization.txt  | 73 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 76 insertions(+), 2 deletions(-)
 create mode 100644 doc/rtp-packetization.txt

diff --git a/configs/h323.conf.sample b/configs/h323.conf.sample
index 1962f2167a..4b558ec0b0 100644
--- a/configs/h323.conf.sample
+++ b/configs/h323.conf.sample
@@ -24,6 +24,7 @@ port = 1720
 ;allow=all		; turns on all installed codecs
 ;disallow=g723.1	; Hm...  Proprietary, don't use it...
 ;allow=gsm		; Always allow GSM, it's cool :)
+;allow=ulaw		; see doc/rtp-packetization for framing options
 ;
 ; User-Input Mode (DTMF)
 ;
diff --git a/configs/sip.conf.sample b/configs/sip.conf.sample
index f931780b9b..07389e16bc 100644
--- a/configs/sip.conf.sample
+++ b/configs/sip.conf.sample
@@ -70,7 +70,7 @@ srvlookup=yes			; Enable DNS SRV lookups on outbound calls
 				; defaults to "asterisk"
 ;disallow=all			; First disallow all codecs
 ;allow=ulaw			; Allow codecs in order of preference
-;allow=ilbc			; 
+;allow=ilbc			; see doc/rtp-packetization for framing options
 ;
 ; This option specifies a preference for which music on hold class this channel
 ; should listen to when put on hold if the music class has not been set on the
diff --git a/configs/skinny.conf.sample b/configs/skinny.conf.sample
index 709cebd6e4..9950120831 100644
--- a/configs/skinny.conf.sample
+++ b/configs/skinny.conf.sample
@@ -7,7 +7,7 @@ bindport=2000		; Port to bind to, default tcp/2000
 dateformat=M-D-Y	; M,D,Y in any order (5 chars max)
 keepalive=120
 
-;allow=all
+;allow=all		; see doc/rtp-packetization for framing options
 ;disallow=
 
 ;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
diff --git a/doc/rtp-packetization.txt b/doc/rtp-packetization.txt
new file mode 100644
index 0000000000..b38acf8e4f
--- /dev/null
+++ b/doc/rtp-packetization.txt
@@ -0,0 +1,73 @@
+Overview
+-------
+Asterisk currently supports configurable RTP packetization per codec for 
+select RTP-based channels.
+
+Channels
+-------
+These channel drivers allow RTP packetization on a user/peer/friend
+or global level:
+    chan_sip
+    chan_skinny
+    chan_h323
+    chan_ooh323 (Asterisk-Addons)
+
+Configuration
+-------
+To set a desired packetization interval on a specific codec,
+append that inteval to the allow= statement.
+
+Example:
+allow=ulaw:30,alaw,g729:60
+
+No packetization is specified in the case of alaw in this example,
+so the default of 20ms is used.
+
+Autoframing
+-------
+In addition, chan_sip has the ability to negotiate the desired
+framing at call establishment.
+
+In sip.conf if autoframing=yes is set in the global section, then
+all calls will try to set the packetization based on the remote
+endpoint's preferences.  This behaviour depends on the endpoints
+ability to present the desired packetization (ptime:) in the SDP.
+If the endpoint does not include a ptime attribute, the call will 
+be established with 20ms packetization.
+
+Autoframing can be set at the global level or on a user/peer/friend
+basis.  If it is enabled at the global level, it applies to all
+users/peers/friends regardless of their prefered codec packetization.
+
+Codec framing options
+-------
+The following table lists the minimum and maximum values that are
+valid per codec, as well as the increment value used for each.
+Please note that the maximum values here are only recommended
+maximums, and should not exceed the RTP MTU.
+
+Name		Min		Max		Default		Increment
+g723		30		300		30		30
+gsm		20		60		20		20
+ulaw		10		30		20		10
+alaw		10		30		20		10
+g726		10		50		20		10
+ADPCM		10		30		20		10
+SLIN		10		70		20		10
+lpc10		20		20		20		20
+g729		10		230		20		10
+speex		10		60		20		10
+ilbc		30		30		30		30
+g726_aal2	10		50		20		10
+
+Invalid framing options are handled based on the following rules:
+  1.  If the specified framing is less than the codec's minimum, then
+        the minimum value is used.
+  2.  If the specific framing is greater than the codec's maximum, then
+        the maximum value is used
+  3.  If the specificed framing does not meet the increment requirement,
+        the specified framing is rounded down to the closest valid
+        framing options.
+                example allow=ulaw:33 will set the codec to 30ms framing
+  4.  If no framing is specified in the allow= directive, then the
+        codec default is used.
-- 
GitLab