This document describes configuring the H.323 Signaling Interface (HSI) to be capable of working with multiple voice codecs in H.245. The default codec used in the HSI is often not enough for Cisco Call Control solutions with H.323 Adjunct (HSI) to interwork with existing VoIP running networks. Cisco will explain the necessary steps used to enable the HSI to work with codecs other than G.711.
This introductory document provides a description of the subject matter and any contextual information describing a real-world scenario in which this information might be used.
Readers of this document should be knowledgeable of the following:
Provisioning the HSI (see the Related Information section)
H.323 Protocol Recommendations - International Telecommunication Union (ITU)
The information in this document is based on the software and hardware versions:
HSI versions 2.21 and 4.1
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, see the Cisco Technical Tips Conventions.
H.245 control signaling is used during every call to exchange control messages. Before a call is established, the capabilities of the H.323 endpoints are exchanged. From the H.323 protocol specification an Audio Codec support is mandatory because it is the minimum service provided by the H.323 standard. All H.323 terminals must have at least one Audio Codec supported, which is G.711. Additional Codec support such as G.722, G.728, and G.729 is optional. At this time the HSI does not support dynamic codec types (G.729 Annex type) that are defined outside RFC 1890. The HSI also supports G.723.1
Parameter Name | Type |
---|---|
caps.table[i].entryNo | INTEGER(1, 65535) |
caps.table[i].audio.g711Alaw64k | INTEGER(1, 256) |
caps.table[i].audio.g711Alaw56k | INTEGER(1, 256) |
caps.table[i].audio.g711Ulaw64k | INTEGER(1, 256) |
caps.table[i].audio.g711Ulaw56k | INTEGER(1, 256) |
caps.table[i].audio.g722at64k | INTEGER(1, 256) |
caps.table[i].audio.g722at56k | INTEGER(1, 256) |
caps.table[i].audio.g722at48k | INTEGER(1, 256) |
caps.table[i].audio.g728 | INTEGER(1, 256) |
caps.table[i].audio.g729 | INTEGER(1, 256) |
Parameter Name | Type |
---|---|
chan[i].name | String |
chan[i].audio.g711Alaw64k | INTEGER(1, 256) |
chan[i].audio.g711Alaw56k | INTEGER(1, 256) |
chan[i].audio.g711Ulaw64k | INTEGER(1, 256) |
chan[i].audio.g711Ulaw56k | INTEGER(1, 256) |
chan[i].audio.g722at64k | INTEGER(1, 256) |
chan[i].audio.g722at56k | INTEGER(1, 256) |
chan[i].audio.g722at48k | INTEGER(1, 256) |
chan[i].audio.g728 | INTEGER(1, 256) |
chan[i].audio.g729 | INTEGER(1, 256) |
Parameter Name | Type |
---|---|
modes[i].name | String |
modes[i].audio.g711Alaw64k | NULL |
modes[i].audio.g711Alaw56k | NULL |
modes[i].audio.g711Ulaw64k | NULL |
modes[i].audio.g711Ulaw56k | NULL |
modes[i].audio.g722at64k | NULL |
modes[i].audio.g722at56k | NULL |
modes[i].audio.g722at48k | NULL |
modes[i].audio.g728 | NULL |
modes[i].audio.g729 | NULL |
It is mandatory to only support G.711 with regards to the H.323 standard. Therefore, G.711 is the default Audio Codec in the HSI. If you want to use another codec, you have to configure it. The value of the h245.caps.table[x].audio and h245.chan[x].audio fields are representing the Audio Capabilities from the chosen codec. The Audio Capabilities are integer values that describe the maximum frames per packet, not the number of milliseconds or bytes per packet.
G.711 is a sample-based codec with an ITU recommendation of 8000 samples per second over a frame of eight samples. G.711 represents (in one frame) 1 ms of speech. G.729 is compared to G.711 frame-based and represents (in one frame) 10 ms of speech. This leads you to a yy value (see below) that is actually a multiplier for the capability the H.323 endpoint has.
For example, if an EP is capable of receiving 20 ms worth of audio per packet, the yy value for G.711 is 20 and is 2 for G.729. For other codecs, refer to the ITU recommendations.
h245.caps.table[1].audio.g711Ulaw64k = 20 h245.caps.table[1].entryNo = 7111 h245.caps.table[2].audio.g711Alaw64k = 20 h245.caps.table[2].entryNo = 7110 h245.chan[1].audio.g711Alaw64k = 20 h245.chan[1].name = g711Alaw64k h245.chan[2].audio.g711Ulaw64k = 20 h245.chan[2].name = g711Ulaw64k h245.modes[1].audio.g711Alaw64k = h245.modes[1].name = g711Alaw64k h245.modes[2].audio.g711Ulaw64k = h245.modes[2].name = g711Ulaw64k
h245.caps.table[x].audio.name = yy h245.caps.table[x].entryNo = zz h245.chan[x].audio.name = yy h245.chan[x].name = name h245.modes[x].audio.name = h245.modes[x].name = name
x is an array index [x] that must be replaced by a valid number between 1 and 20. It must be continuous and unique in the configuration. yy is the frame multiplier that is derived from the frames per packet that a specific codec can support per ITU. zz is a number that is chosen to identify the codec in the application. For a valid range, see the H.245 Terminal Capability Codec section of this document.
prov-sta::srcver=”active”,dstver=”Add_Codec_G729” prov-add:name="H245",caps.table[4].audio.g729="2" prov-add:name="H245",caps.table[4].entryno="729" prov-add:name="H245",chan[4].audio.g729="2" prov-add:name="H245",chan[4].name="g729" prov-add:name="H245",modes[3].audio.g729="" prov-add:name="H245",modes[3].name="g729" prov-cpy
Revision | Publish Date | Comments |
---|---|---|
1.0 |
02-Feb-2006 |
Initial Release |