Encoding Fast Connect OLCs (Q111)
The information in this article applies to:
The text in H.323 that describes how to encode the OpenLogicalChannel
structure for Fast Connect is kind of confusing. The tables, below, show
how the fastStart component in a typical Setup and response, e.g.,
Connect, is encoded. In this example, the calling EP proposes several
alternatives for primary audio in the outgoing direction on channels 5
through 17, including, for example, G.723.1 with silence suppression at
a maximum of 3 frames per packet, and analogous alternatives in the
incoming direction (see Table 2a). Note that H.323 requires these
outgoing channels to use different logical channel numbers
(8.1.7.1/H.323v4: "Each such OpenLogicalChannel structure shall have a
unique forwardLogicalChannelNumber value."). For the proposed incoming
direction, it does not matter what value is encoded for the
logical-channel number, so 65535 is used here. In this example, the
called EP accepts both channels by filling in the indicated
media-channel fields, encoding a logical-channel number for the calling
EP's incoming channel, and returning the selected
OpenLogicalChannel structures in Connect (see Table 2b).
This list defines the meaning of transport addresses, A, B, C, and D,
used in the tables, below.
- A is the address at the called EP for the outgoing media's RTP channel.
- B is the address at the calling EP for the outgoing media's reverse RTCP channel.
- C is the address at the calling EP for the incoming media's RTP channel.
- D is the address at the called EP for the incoming media's reverse RTCP channel.
This is what it looks like graphically:
Outgoing Media
Calling EP
|
|
Called EP
|
|
------RTP----->
|
A
|
B
|
<-----RTCP-----
|
|
Incoming Media
Calling EP
|
|
Called EP
|
C
|
<-----RTP-----
|
|
|
------RTCP----->
|
D
|
Table 2a — Proposed channels sent by calling EP in Setup
|
forwardLogicalChannelParameters |
reverseLogicalChannelParameters |
fwdLogChanNum |
dataType |
sesID |
mediaChan |
mediaControlChan |
dataType |
sesID |
mediaChan |
mediaControlChan |
5
|
G.723.1 3 SS
|
1
|
(absent)
|
B
|
(absent)
|
6
|
G.723.1 3
|
1
|
(absent)
|
B
|
(absent)
|
7
|
G.723.1 1
|
1
|
(absent)
|
B
|
(absent)
|
8
|
G.711A 200
|
1
|
(absent)
|
B
|
(absent)
|
9
|
G.711A 10
|
1
|
(absent)
|
B
|
(absent)
|
10
|
G.711A 20
|
1
|
(absent)
|
B
|
(absent)
|
11
|
G.711A 30
|
1
|
(absent)
|
B
|
(absent)
|
12
|
G.711A 60
|
1
|
(absent)
|
B
|
(absent)
|
13
|
G.711U 200
|
1
|
(absent)
|
B
|
(absent)
|
14
|
G.711U 10
|
1
|
(absent)
|
B
|
(absent)
|
15
|
G.711U 20
|
1
|
(absent)
|
B
|
(absent)
|
16
|
G.711U 30
|
1
|
(absent)
|
B
|
(absent)
|
17
|
G.711U 60
|
1
|
(absent)
|
B
|
(absent)
|
65535
|
nullData
|
G.723.1 4 SS
|
1
|
C
|
B
|
65535
|
nullData
|
G.711A 200
|
1
|
C
|
B
|
65535
|
nullData
|
G.711U 200
|
1
|
C
|
B
|
Table 2b — Accepted channels returned by called EP in Connect
|
forwardLogicalChannelParameters |
reverseLogicalChannelParameters |
fwdLogChanNum |
dataType |
sesID |
mediaChan |
mediaControlChan |
dataType |
sesID |
mediaChan |
mediaControlChan |
6
|
G.723.1 3
|
1
|
A
|
D
|
(absent)
|
64
|
nullData
|
G.723.1 4 SS
|
1
|
(absent)†
|
D
|
† The Recommendation does not define what the called EP puts
in the mediaChannel element of the reverseLogicalChannelParameters.
Considering the following passage, the called EP is technically required
to leave it alone and pass back whatever the calling EP put there. Per
section 8.1.7.1/H.323v4: "The called endpoint is only allowed to alter
fields in a proposed OpenLogicalChannel structure as specified in this
section." However, this is obviously an oversight and to be symmetric
with how Fast Connect works for the other direction the mediaChannel
could be removed. In practice, it probably doesn't matter what the
called EP puts in that field because there is no reason for the calling
EP to look there.
By contrast, here are the OLC and OLCAcks that might be exchanged for the
same resulting media without Fast Connect.
Table 3a — OLC sent by calling EP
|
forwardLogicalChannelParameters |
reverseLogicalChannelParameters |
fwdLogChanNum |
dataType |
sesID |
mediaChan |
mediaControlChan |
6
|
G.723.1 3
|
1
|
(absent)
|
B
|
(absent)
|
Table 3b — OLCAck sent by called EP
|
reverseLogicalChannelParameters |
forwardMultiplexAckParameters |
fwdLogChanNum |
sesID |
mediaChan |
mediaControlChan |
6
|
(absent)
|
1
|
A
|
D
|
Table 3c -- OLC sent by called EP
|
forwardLogicalChannelParameters |
reverseLogicalChannelParameters |
fwdLogChanNum |
dataType |
sesID |
mediaChan |
mediaControlChan |
64
|
G.723.1 3
|
1
|
(absent)
|
D
|
(absent)
|
Table 3d -- OLCAck sent by calling EP
|
reverseLogicalChannelParameters |
forwardMultiplexAckParameters |
fwdLogChanNum |
sesID |
mediaChan |
mediaControlChan |
64
|
(absent)
|
1
|
C
|
B
|