Answer Processing and Examples
Unoffered Codec Reordering
According to RFC 3264, the answerer can add codecs that were not offered to the Answer. The answerer may add new codecs as a means of advertising capabilities. RFC 3264 stipulates that these unoffered codecs must not be used. The RFC does not dictate where in the m= line these codecs can appear and it is valid that they may appear as the most preferred codecs.
In order to simplify the answer processing, the Oracle Communications Session Border Controller moves all unoffered codecs in A0 to the back of the SDP answer before any other answer processing is applied.
Non-transcoded Call
The decision to transcode is based on the top non-signaling codec in A1. If the top A1 codec is present in O1, the call proceeds, non-transcoded. This is the rule for non-signaling codecs (i.e., not RFC 2833 nor FAX).
Transcoded Call
The following two conditions must then be met to transcode the call’s non-signaling media:
- The top A1 codec is not present in the O1 m= line
- The top A1 codec was added by the egress policy
If these rule are met, the Oracle Communications Session Border Controller will transcode between the top A1 codec and the top transcodable, non-signaling O1 codec.
Voice Transcoding
The following examples use the ingress and egress codec policies listed at the top of each scenario. The examples use changing SDP offers and answers, which contribute to unique results, per example. The effects of the SDP offers and answers are explained in each example.
Voice Scenario 1
The following ingress and egress policies are used for scenario 1.
Ingress Policy | Ingress Policy | Egress Policy | Egress Policy |
---|---|---|---|
allow-codecs | PCMU GSM | allow-codecs | G729 GSM G722 |
add-codecs-on-egress | PCMU | add-codecs-on-egress | G729 |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
Note:
The codec in the ingress policy’s add-codecs-on-egress parameter has no effect in the following examples. Its presence would have an effect if a reINVITE was initiated from egress realm, effectively reversing the roles of the codec policies.Voice Scenario 2
The following ingress and egress policies are used for scenario 2.
Ingress Policy | Ingress Policy | Egress Policy | Egress Policy |
---|---|---|---|
allow-codecs | Video:no PCMU:force * PCMA:force | allow-codecs | * PCMA:no |
add-codecs-on-egress | N/A | add-codecs-on-egress | iLBC G726-16 |
order-codecs | N/A | order-codecs | G726-16 * PCMU |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
Voice Scenario 3
Voice scenario 3 involves reINVITEs. The following ingress and egress policies are used for scenario 3.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | PCMU G729 | allow-codecs | * |
add-codecs-on-egress | N/A | add-codecs-on-egress | PCMA |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
RFC 2833 Transcoding
RFC 2833 defines an RTP payload that functions interchangeably with DTMF Digits, Telephony Tones and Telephony Signals. The Oracle Communications Session Border Controller can monitor audio stream for in-band DTMF tones and then can convert them to data-based telephone-events, as sent in RFC2833 packets. This section explains how the Oracle Communications Session Border Controller transcodes between these RTP-based telephone events and in-band DTMF tones carried by G711. DTMF tones can only be transported in non compressed codecs. The Oracle Communications Session Border Controller supports two DTMFable non-compressed codecs: PCMU (G711µ) and PCMA (G711A).
Note:
The following line is added to SDP whenever telephone-event is added on egress: a=fmtp:101 0-15The following two scenarios describe when telephone-event to DTMF transcoding takes place:
RFC 2833 Scenario 1
The following ingress and egress policies are used for scenario 1.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * telephone-event:no | allow-codecs | * PCMA:no |
add-codecs-on-egress | N/A | add-codecs-on-egress | telephone-event |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
dtmf-in-audio | preferred | dtmf-in-audio | preferred |
RFC 2833 Scenario 2
The following ingress and egress policies are used for RFC2833 scenario 2.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * | allow-codecs | * |
add-codecs-on-egress | telephone-event | add-codecs-on-egress | PCMU |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
dtmf-in-audio | preferred | dtmf-in-audio | preferred |
FAX Transcoding
FAXes are transmitted in a call as either T.30 and T.38 media. T.30 FAX is binary in-band media carried over G.711. The Oracle Communications Session Border Controller can transcode between T.38 and a faxable codec. The supported faxable codecs are PCMU and PCMA.
T.30 can only be transported in non-compressed codecs. The two non-compressed codecs supported by the Oracle Communications Session Border Controller are PCMU (G711µ) and PCMA (G711A). If a transcoding realm does not support an uncompressed codec, T.30 can not be supported in that realm. Alternatively, G711FB may be allowed specifically for FAX only.
The Oracle Communications Session Border Controller uses an internal codec called G711FB (G711 - Fall Back) that is an umbrella codec of all FAXable codecs. G711FB will default to PCMU for the purpose of offering a faxable codec. You can remap G711FB to PCMA by configuring the media-profile for it appropriately. G711FB’s only use is for FAX transcoding.
FAX transcoding is triggered when you configure the add on egress parameter with either T.38 or G711FB. In a FAX scenario, when the codec policy adds either T.38 or G711FB, a new m= line is added to the SDP. When adding T.38, the new m= line specifies the T.38 codec. When adding G711FB, the new m= line specifies PCMU (or alternatively PCMA).
Once added, m= lines can not be deleted in the context of a call. The Oracle Communications Session Border Controller maintain all m= lines between itself and an endpoint throughout the course of call. All m= lines not in use can be disabled by setting their receive port to 0, but they can not be removed from the SDP.
Defining G711FB
G711 Fall Back (G711FB) is an internal codec that encompasses PCMU and PCMA for carrying fax information FAXable codecs. The G711FB codec must be configured either way for when the Oracle Communications Session Border Controller inserts a FAXable codec in SDP. G711FB is only used for FAX transcoding scenarios.
To define G711 FB, create a media profile configuration element named g711fb and set the payload-type to 0 or 8.
Codec (supported bit rates) | RTP Payload Type | Default Ptime (ms) | Supported Ptime (ms) |
---|---|---|---|
T.38 | N/A | 30 | 10, 20, 30 |
G711FB (64 kbps) | 0, 8 | 30 | 10, 20, 30 |
FAX Scenario 1
The following ingress and egress policies are used for this FAX scenario.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * | allow-codecs | T.38:no |
add-codecs-on-egress | N/A | add-codecs-on-egress | G711FB |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
FAX Scenario 2
The following ingress and egress policies are used for this FAX scenario.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * | allow-codecs | * |
add-codecs-on-egress | N/A | add-codecs-on-egress | G711FB |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
FAX Scenario 3
The following ingress and egress policies are used for this FAX scenario.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * | allow-codecs | * |
add-codecs-on-egress | N/A | add-codecs-on-egress | PCMU, G729 ,T.38 |
order-codecs | N/A | order-codecs | N/A |
force-ptime | disabled | force-ptime | disabled |
packetization-time | N/A | packetization-time | N/A |
Transrating
The Oracle Communications Session Border Controller can transrate media as it exits the Oracle Communications Session Border Controller into the network. Transrating is also known as forced packetization time (ptime), and is used to enforce a configured ptime within a realm. Transrating is often desirable when devices in a realm can only accept media with a specific ptime, or to optimize bandwidth.
If this feature is configured, the media portion of a call is transrated regardless of which codecs are ultimately chosen for each realm as long as they are transcodable. This allows realms that have devices that can only use a single packetization interval to interwork with devices that may or may not have the same packetization capabilities.
You must enable force-ptime in the egress codec policy and then specify the packetization time to force. When force ptime is enabled, it implicitly masks all codecs not of the specified packetization time that are listed in that codec policy’s allow codecs and add codecs on egress parameters. For example, if force ptime is enabled with a packetization time of 20 ms, then no G723 codecs (which are only available at 30, 60, and 90 ms) may be active via codec policy in that realm.
Transrating occurs when forced-ptime is enabled and the offered and answered ptimes do not match and the top non-Signaling codec of A1 and top non Signaling codec of O1 are Transcodable.
Note:
Answered ptime A1 does not have to be equal to the ptime inserted into the outgoing offer O2, it just has to be different than the offer the Oracle Communications Session Border Controller received (O1).Please refer to Transcodable Codecs for current list of ptimes per codec supported by the DSPs.
Transrating Scenario 1
The following ingress and egress policies are used for this FAX scenario.
Ingress Policy | Egress Policy | ||
---|---|---|---|
allow-codecs | * | allow-codecs | * |
add-codecs-on-egress | N/A | add-codecs-on-egress | PCMA |
order-codecs | G723 * | order-codecs | N/A |
force-ptime | disabled | force-ptime | enabled |
packetization-time | N/A | packetization-time | 40 |