|
|
@ -44,6 +44,7 @@ the following additional features are available: |
|
|
- Breaking of BUNDLE'd media streams (draft-ietf-mmusic-sdp-bundle-negotiation) |
|
|
- Breaking of BUNDLE'd media streams (draft-ietf-mmusic-sdp-bundle-negotiation) |
|
|
- Recording of media streams, decrypted if possible |
|
|
- Recording of media streams, decrypted if possible |
|
|
- Transcoding and repacketization |
|
|
- Transcoding and repacketization |
|
|
|
|
|
- Transcoding between RFC 2833/4733 DTMF event packets and in-band DTMF tones (and vice versa) |
|
|
- Playback of pre-recorded streams/announcements |
|
|
- Playback of pre-recorded streams/announcements |
|
|
|
|
|
|
|
|
*Rtpengine* does not (yet) support: |
|
|
*Rtpengine* does not (yet) support: |
|
|
@ -408,7 +409,8 @@ the necessary conversions. |
|
|
If repacketization (using the `ptime` option) is requested, the transcoding feature will also be |
|
|
If repacketization (using the `ptime` option) is requested, the transcoding feature will also be |
|
|
engaged for the call, even if no additional codecs were requested. |
|
|
engaged for the call, even if no additional codecs were requested. |
|
|
|
|
|
|
|
|
Non-audio pseudo-codecs (such as T.38 or RFC 4733 `telephone-event`) are not currently supported. |
|
|
|
|
|
|
|
|
Non-audio pseudo-codecs (such as T.38) are not currently supported, with the exception of RFC |
|
|
|
|
|
2833/4733 DTMF event packets (`telephone-event`) as described below. |
|
|
|
|
|
|
|
|
G.729 support |
|
|
G.729 support |
|
|
------------- |
|
|
------------- |
|
|
@ -432,6 +434,34 @@ Set the environment variable |
|
|
`export DEB_BUILD_PROFILES="pkg.ngcp-rtpengine.nobcg729"` (or use the `-P` flag to the *dpkg* tools) |
|
|
`export DEB_BUILD_PROFILES="pkg.ngcp-rtpengine.nobcg729"` (or use the `-P` flag to the *dpkg* tools) |
|
|
and then build the *rtpengine* packages. |
|
|
and then build the *rtpengine* packages. |
|
|
|
|
|
|
|
|
|
|
|
DTMF transcoding |
|
|
|
|
|
---------------- |
|
|
|
|
|
|
|
|
|
|
|
*Rtpengine* supports transcoding between RFC 2833/4733 DTMF event packets (`telephone-event` payloads) |
|
|
|
|
|
and in-band DTMF audio tones. When enabled, *rtpengine* translates DTMF event packets to in-band DTMF |
|
|
|
|
|
audio by generating DTMF tones and injecting them into the audio stream, and translates in-band DTMF |
|
|
|
|
|
tones by running the audio stream through a DSP, and generating DTMF event packets when a DTMF tone |
|
|
|
|
|
is detected. |
|
|
|
|
|
|
|
|
|
|
|
Support for DTMF transcoding can be enabled in one of two ways: |
|
|
|
|
|
|
|
|
|
|
|
* In the forward direction, DTMF transcoding is enabled by adding the codec `telephone-event` to the |
|
|
|
|
|
list of codecs offered for transcoding. Specifically, if the incoming SDP body doesn't yet list |
|
|
|
|
|
`telephone-event` as a supported codec, adding the option *codec → transcode → telephone-event* would |
|
|
|
|
|
enable DTMF transcoding. The receiving RTP client can then accept this codec and start sending DTMF |
|
|
|
|
|
event packets, which *rtpengine* would translate into in-band DTMF audio. If the receiving RTP client |
|
|
|
|
|
also offers `telephone-event` in their behalf, *rtpengine* would then detect in-band DTMF audio coming |
|
|
|
|
|
from the originating RTP client and translate it to DTMF event packets. |
|
|
|
|
|
|
|
|
|
|
|
* In the reverse direction, DTMF transcoding is enabled by adding the option `always transcode` to the |
|
|
|
|
|
`flags` if the incoming SDP body offers `telephone-event` as a supported codec. If the receiving RTP |
|
|
|
|
|
client then rejects the offered `telephone-event` codec, DTMF transcoding is then enabled and is |
|
|
|
|
|
performed in the same way as described above. |
|
|
|
|
|
|
|
|
|
|
|
Enabling DTMF transcoding (in one of the two ways described above) implicitly enables the flag |
|
|
|
|
|
`always transcode` for the call and forces all of the audio to pass through the transcoding engine. |
|
|
|
|
|
Therefore, for performance reasons, this should only be done when really necessary. |
|
|
|
|
|
|
|
|
The *ng* Control Protocol |
|
|
The *ng* Control Protocol |
|
|
========================= |
|
|
========================= |
|
|
|
|
|
|
|
|
|