Transcoding Processing Overview
Transcoding processing is viewed in terms of the ingress and egress realms. The ingress realm is where the SDP offer is received by the Oracle® Enterprise Session Border Controller. The egress realm is where the SDP offer is sent, and where the SDP answer is expected to be received from (i.e., the answerer's realm). A call is defined as transcodable if an egress or ingress policy exists for the session and if the session is not subject to media release, as specified in the realm configuration.
To understand the details of transcoding processing, refer to the following diagram. An SDP offer, O0, is received by the Oracle® Enterprise Session Border Controller in the ingress realm. The ingress codec policy is applied here and the SDP offer is transformed into O1. O1 is then passed to and processed by the egress codec policy. This SDP message is then forwarded to the answerer as O2. The answerer replies with A0 to the Oracle® Enterprise Session Border Controller, which is subjected to the egress codec policy again and transformed into A1.
When policy dictates not to transcode the call, the Result SDP sent back to the offerer is based on the common codecs shared between A1 and O1. The Oracle® Enterprise Session Border Controller first constructs the list of codecs that are present in both in O1 and A1. Then, the Oracle® Enterprise Session Border Controller maintains the codec order from A1 for the Result as it is sent to the offerer.
When policy dictates to transcode the call, the top transcodable codec in O1 is used in the ingress realm and the top non-signaling codec in A1 is used in the egress realm.
![This illustration shows the ingres and egress flow of call traffic from an offerer to an answerer across the SBC. This illustration shows the ingres and egress flow of call traffic from an offerer to an answerer across the SBC.](img/transcoding.gif)
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® Enterprise 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® Enterprise Session Border Controller will transcode between the top A1 codec and the top transcodable, non-signaling O1 codec.
Note:
During an iLBC call establishment, when force-time is enabled and the offered and answered ptime are the same but with different iLBC mode, Oracle® Enterprise Session Border Controller will disable transcoding and force the call into a transparent call.Post Processing
If any errors are encountered during the Ingress and Egress policy application, or other violations of RFC3264 occur, the call is rejected. If O2 does not contain any enabled m= lines at the conclusion of the initial call setup, the call is rejected. If O2 does not contain any enabled m= lines at the conclusion of a reINVITE, the reINVITE is rejected and the call reverts back to its previous state.
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® Enterprise 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® Enterprise 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® Enterprise 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 or T.38 media. T.30 FAX is binary in-band media carried over G.711. The Oracle® Enterprise Session Border Controller (ESBC) can transcode between T.38 and a faxable codec. The supported faxable codecs are PCMU and PCMA.
T.30 can be transported only in non-compressed codecs. The two non-compressed codecs supported by the ESBC are PCMU (G711µ) and PCMA (G711A). If a transcoding realm does not support an uncompressed codec, T.30 cannot be supported in that realm. Alternatively, G711FB may be allowed specifically for FAX only.
The ESBC 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 re-map 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).
When added, m= lines cannot be deleted in the context of a call. The ESBC maintains 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 cannot be removed from the SDP.
Defining G711FB
G711 Fall Back (G711FB) is an internal codec that encompasses PCMU and PCMA for carrying fax information in FAXable codecs. You must configure the G711FB codec for either PCMU or PCMA for when the Oracle® Enterprise Session Border Controller inserts a FAXable codec in SDP. G711FB is used only 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® Enterprise Session Border Controller can transrate media as it exits the Oracle® Enterprise 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® Enterprise Session Border Controller received (O1).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 |
Reactive Transcoding
When setting up transcoded calls the Oracle® Enterprise Session Border Controller (ESBC) reserves a Digital Signaling Processor (DSP) resource for the incoming SDP offers that need transcoding. The default behavior is to pre-book the DSP resource and use it when the system's egress policy qualifies the SDP offer for transcoding.
Alternatively, the ESBC offers a reactive-transcoding option where the DSP resource is reserved after the SDP answer is received. Reactive transcoding is enabled by setting media-manager-config, reactive-transcoding to enabled. The advantage of this process is for every call that comes in the DSPs need not be pre-booked and instead can be dynamically reserved. The ideal situation for this behavior is when only a few calls need transcoding and the network traffic pattern is well known.
The ESBC does not perform reactive transcoding on all transcoding call flows. When you configure support for the following features, the ESBC reserves DSP resources:
- Pooled-transcoding
- dtmf-in-audio detection
- 140-Baudot transcode
- Fax call
- RTCP generation
- FAX tone detection
![This process diagram contrasts the OCSBC process with and without reactive transcoding enabled. This process diagram contrasts the OCSBC process with and without reactive transcoding enabled.](img/current-vs-new-flowchart.png)
![This diagram shows the OCSBC reserving resources when reactive transcoding is enabled. This diagram shows the OCSBC reserving resources when reactive transcoding is enabled.](img/transcoded-call.png)
Note:
The DSPs will be reserved only for the call currently being transcoded. This avoids DSP exhaustion when there are multiple incoming offers.
Reactive Transcoding Examples
Scenario 1: Current Call : Transcoded, New offer: Transcoded
When a new offer is processed, the Oracle® Enterprise Session Border Controller checks if the call is transcoded. Oracle® Enterprise Session Border Controller pre-books DSP resources while processing new a SDP offer. After getting the SDP answer if the Oracle® Enterprise Session Border Controller finds that the call still needs transcoding, it continues to keep the DSP resources.
![Reactive Transcoding Example - Currently transcoded call, new SDP offer for another transcoded call. Reactive Transcoding Example - Currently transcoded call, new SDP offer for another transcoded call.](img/currently-transcoded-call-new-sdp-offer-another-transcoded-call.bmp)
Scenario 2: Current Call : Transcoded, New offer: Non-Transcoded
When a Re-INVITE offer is processed, the Oracle® Enterprise Session Border Controller checks if the call is already transcoded. Oracle® Enterprise Session Border Controllerpre-books DSP resources during SDP offer of re-invite to avoid failure to grab DSP after SDP answer during DSP exhaustion case. After getting the SDP answer, if the Oracle® Enterprise Session Border Controller finds that the call does not need transcoding any more, it releases the DSP resources.
![Reactive Transcoding Example - Currently transcoded call, new SDP offer for non-transcoded call. Reactive Transcoding Example - Currently transcoded call, new SDP offer for non-transcoded call.](img/currently-transcoded-call-new-sdp-offer-non-transcoded-call.png)
Scenario 3: Current Call : Non-Transcoded, New offer: Transcoded
If a Re-INVITE is received when the reactive-transcoding mode is enabled, it will be handled as a regular offer. The DSP resource will only be reserved after receiving the SDP answer, as necessary.
![Reactive Transcoding Example - Currently transcoded call, new SDP offer for transcoded call. Reactive Transcoding Example - Currently transcoded call, new SDP offer for transcoded call.](img/currently-non-transcoded-call-new-sdp-offer-transcoded-call.bmp)