Asterisk transcoding
As seen in the diagram, when asterisk requires transcoding between its endpoints the transcoding codec module (codec_sangoma.so) first sends the transcoding request down to the sngtc_server serially in SOAP TCP protocol. This type of protocol is utilized so that application will be able to access the transcoder resources from other networks. This means that the codec module can be installed in a distributed format (is not required to be installed on the same machine as the sngtc_server). This makes it possible to use the transcoder when the Asterisk server is located in a remote location with respect to the sngtc_server/transcoder.
The sngtc_server is responsible for detecting, controlling, and setting up transcoding sessions with the transcoding module. The communication between the sngtc_server and transcoder is over Ethernet, which means both must be located on the same network (This requirement must be remembered if a distributed format will be used). When the sngtc_server receives a transcoding session request from the codec module, it sets up 2 RTP legs with the transcoder, sending codec and host port/ip information of the application (asterisk). The transcoder module replies with its own port/ip information to indicate where the application above should send the RTP media to. After this point, the sngtc_server is no longer required, and RTP media flows directly between the application and the transcoder card.
In the above example, when Endpoint A sends audio to End point B, one transcoding session is requested by Asterisk (alaw-> G729). This creates 2 RTP legs between the transcoder and Asterisk. The audio gets transcoded from alaw to G729 directly, and the audio is sent out to the G729 End point B. When End point B wants to sends audio back to End point A, a G729->alaw transcoding session request is required. Since the opposite direction of both RTP legs are un-used by the initial alaw->G729 transcoding request (yellow colour arrows) they are used for this transcoding request (G729->alaw). This means, for one two-way call between two end points, only 1 hardware transcoding session request is required because the RTP sessions are re-used.