Transcoding Free Operation for Local Media Playback
You can configure the SBC to avoid using transcoding resources within certain local media playback scenarios. After establishing a RBT call that includes transcoding, the SBC can trigger this Transcoding Free Operation (TrFO) feature if the P-Acme-TrFO header is present. Having determined that the call can proceed without transcoding, the SBC originates a reINVITE towards the calling party containing the called side codec. Once the reINVITE is completed, the call can continue without transcoding. In addition, the negotiated codec on the called party side must have been included in the calling party's original offer (after ingress codec-policy execution).
The SBC retains the codec list sent by the calling party, usually within the initial offer with all supported codecs. It also monitors the result of the ingress codec-policy. The SBC triggers the TrFO function for RBT when the following conditions are true:
- The P-Acme-TrFO header;
- One of the following are true:
- The voice codecs are different on either side, or
- The voice codecs are the same, but telephone event is missing from one side.
In this case, the SBC originates a reINVITE towards the calling party containing the called side codec. Once the reINVITE is completed, the call can continue without transcoding.
Note:
If the SBC detects fax tone, and you have enabled RTCP generation, the TrFO call flow can proceed, but the DSPs will still be in use afterwards so the feature can still be provided.Navigate to the initial INVITE ingress realm's realm-config and configure the feature-trfo parameter using the syntax below. This is the same realm on which you have configured the ringback-trigger.
ORACLE(realm-config)# feature-trfo rbtThis 'manual' trigger by the SBC to force SDP re-negotiation prevents the call from requiring transcoding.
Related Configuration
You must also configure the following on the SBC for TrFO to work correctly with RBT:
- Transcoding enabled
- realm-config, hide-egress-media-update enabled
- media-manager, options +unique-sdp-id
- media-manager, anonymous-sdp enabled
TRFO reINVITE generation rules
The following table describes the general TrFO reINVITE generation rules when you set the feature-trfo parameter to rbt on the ingress realm and the P-Acme-TrFO header is present in either the provisional messages or the final 200OK.
| Ringback-trigger Configuration | SDP injected | Transcoding | Codec is present in the initial INVITE | Is TRFO reINVITE generated? | Examples |
|---|---|---|---|---|---|
| When not set to any of these values:
180-no-sdp 180-force 183 183-no-sdp |
N/A | N/A | N/A | No | TrFO is not triggered.
TrFO reINVITE is not triggered because the negotiated callee codec was not present in the original INVITE offer. |
|
180-no-sdp 180-force 183 183-no-sdp |
No | N/A | N/A | No | TrFO is not triggered.
TrFO reINVITE is not triggered because SDP was not inserted for RBT. |
|
180-no-sdp 180-force 183 183-no-sdp |
Yes | No | N/A | No | TrFO is not triggered.
TrFO reINVITE is not triggered because there is not transcoding |
|
180-no-sdp 180-force 183 183-no-sdp |
Yes | Yes | No | No | TrFO is not triggered. |
|
180-no-sdp 180-force 183 183-no-sdp |
Yes |
Yes - different caller/callee audio codecs OR - same codec, telephone-event on one side |
Yes | Yes | TrFO is Triggered. |
RBT TrFO Flows
This section describes the TrFO flows when initiated by ringback tone. The flow descriptions use the Session Router as an example of an upstream or downstream service capable of HMR.
P-Acme-TrFO Call Flow
Data call identification is done via HMRs on both the SBC and the Session Router.
The need for TrFO results from HMRs execution (custom logic) and translates into a private header called P-Acme-TrFO, which is included in called party 200 OK or 18x messages ingress using HMR.
The SBC triggers TrFO feature whenever P-Acme-TrFO header is present, provided that:
- RBT triggers transcoding, based on the called party codec the SBC selects during call establishment.
- The negotiated codec on the called party side is included within the calling party side codecs supported in the original offer and after ingress the SBC executes the codec-policy.
TrFO for Data Calls
The need for TrFO results from HMRs execution (custom logic) and translates into a private header called P-Acme-TrFO (included in called party 200 OK ingress to SBC - using HMR).
The SBC triggers the TrFO feature whenever the P-Acme-TrFO header is present, provided that:
- RBT induces transcoding due to called party codec selection by the SBC during call establishment.
- Negotiated codec on the called party side is included within the calling party side codecs supported in the original offer (after ingress codec-policy execution).
The SBC triggers the feature when the header is inserted by HMR or when it is present in the response. The HMR logic that triggers TrFO for data calls is as follows:
- For an Inbound call Flow:
- A known trunk that supports the data call has an Ingress HMR that adds the P-Codec-Profile Header.
- This HMR adds P-Codec-Profile: from the SBC to the Session Router.
- An egress HMR on the Session Router adds the applicable flag based on the reception of P-Codec-Profile to the INVITE Via Header.
- Topology hiding removes the P-Codec-Profile header.
- On the reception of an answer from the distant UA, an Ingress HMR on the Session Router checks for the presence of the flag in the VIA, and for PCMA in the SDP.
- If the previous condition is met, the Session Router sends the P-Acme-Trfo Header to the SBC, which then triggers TrFO.
- If the 4 condition is not satisfied, the Session Router does nothing.

- For an Outbound Call Flow :
- A known trunk that supports the data call has an Ingress HMR that adds the P-Codec-Profile Header.
- This HMR adds P-Codec-Profile: m2m from the Session Router to the SBC.
- An egress HMR on the SBC adds the flag m2m based on the reception of P-Codec-Profile:m2m in the INVITE Via Header.
- Topology hiding removes the P-Codec-Profile header.
- On the reception of an answer from the distant UA, an Ingress HMR on the SBC checks for the presence of the m2m flag in the VIA, and for PCMA in the SDP.
- If the previous condition is met, the SBC adds the P-Acme-Trfo Header to the Ingress Message of the SBC, which then triggers TrFO.
- If condition 5 is not satisfied, the SBC does nothing.

This is an example and other logic can be used the same way to get to the same result.
RBT TrFO Reporting
The show sipd rbt-trfo command shows Ring Back Tone TrFO statistics:
- Initiated: number of initiated TRFO reINVITE transactions
- Success: number of successfully completed TRFO reINVITE transactions
- Failure: number of failed TRFO reINVITE transactions (either error returned or timed out)
Example:
ORACLE# show sipd rbt-trfo
RBT TrFO statistics (2020-10-08 13:19:50.715)
---- Lifetime ----
Recent Total PerMax
Initiated 0 3 2
Success 0 3 2
Failure 0 0 0
You can reset this data back to zero using the reset sipd command.