Local Side
Remote Side
FT=4 (7.4 kbit/s), CMR=5 (7.95 kbits/s)
FT=5 (7.95 kbit/s), CMR=6 (10.2 kbit/s)
FT=4 (7.4 kbit/s), CMR=5 (7.95 kbits/s)
FT=5 (7.95 kbit/s), CMR=3 (6.7 kbit/s)
FT=3 (6.7kbit/s), CMR=5 (7.95 kbit/s)
Note: While the diagram above implies an immediate reaction to a CMR from the other side, in reality, the other side’s response to a CMR may take a few packets.
The sequence of activities is as follows:
1.The host is transmitting at the preferred bit rate set by the host application via the remote audio coder settings, in this case 7.4 kbit/s.
2.The host sets its initial CMR value to 7.95 kbit/s via the local audio coder setting.
3.The host sets its RTP payload to efficient bandwidth and CMR limit mode.
4.The host receives it first packet from the remote side with the CMR value higher than the preferred rate.
5.The host leaves the transmitted bit rate at the preferred value.
6.The host receives a packet from the remote side with a CMR value less than the preferred rate.
7.The host changes the transmitted bit rate to match the received CMR value.
The following code demonstrates the configuration required to handle this scenario.
...
/* Setup IP address here */
// Local Audio Coder
ipmMediaInfo.MediaData[unCount].eMediaType = MEDIATYPE_AUDIO_LOCAL_CODER_INFO; ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.eCoderType = CODER_TYPE_AMRNB_7_95k; ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.eFrameSize = CODER_FRAMESIZE_20; ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.unFramesPerPkt = 1; ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.eVadEnable = CODER_VAD_ENABLE ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.unCoderPayloadType = 96; ipmMediaInfo.MediaData[unCount].mediaInfo.AudioCoderInfo.unRedPayloadType = 0 unCount++;
// Remote Audio Coder
ipmMediaInfo.MediaData[unCount].eMediaType = MEDIATYPE_AUDIO_REMOTE_CODER_INFO;
36Dialogic® Multimedia Software for ATCA Release 1.0 Release Update, Rev 06 — January 23, 2008 Dialogic Corporation