SIP-H.323 IWF Support for H.264 and H.263+

Signaling protocol interworking between SIP and H.323 supports the H.264 and H.263+ video codecs.

H.264 in H.323 (H.241)

This section describes the H.264 capabilities and media packetization in H.323. Capability exchange signaling looks like this:

openLogicalChannel .  SEQUENCE [EMPTY -1] ...
forwardLogicalChannelNumber = 3 .  INTEGER [EMPTY -1] (1..65535)
forwardLogicalChannelParameters .  SEQUENCE [EMPTY -1] ...
 ..   dataType .  CHOICE [EMPTY -1] ...
. . . . . videoData .  CHOICE [EMPTY -1] ...
. . . . . . genericVideoCapability .  SEQUENCE [EMPTY -1] ...
. . . . . . . capabilityIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . standard = 7 {itu-t recommendation h 241 0 0 1}.OBJECT IDENTIFIER [EMPTY-1]
. . . . . . . maxBitRate = 4480 .  INTEGER [EMPTY -1] (0..-1)
. . . . . . . collapsing .  SEQUENCE OF [EMPTY -1] SEQUENCE [EMPTY -1] ...
. . . . . . . . * .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . parameterIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . . . standard = 41 .  INTEGER [EMPTY -1] (0..127)
. . . . . . . . . parameterValue .  CHOICE [EMPTY -1] ...
. . . . . . . . . . booleanArray = 64 .  INTEGER [EMPTY -1] (0..255)
. . . . . . . . * .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . parameterIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . . . standard = 42 .  INTEGER [EMPTY -1] (0..127)
. . . . . . . . . parameterValue .  CHOICE [EMPTY -1] ...
. . . . . . . . . . unsignedMin = 29 .  INTEGER [EMPTY -1] (0..65535)
. . . . . . . . * .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . parameterIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . . . standard = 3 .  INTEGER [EMPTY -1] (0..127)
. . . . . . . . . parameterValue .  CHOICE [EMPTY -1] ...
. . . . . . . . . . unsignedMin = 81 .  INTEGER [EMPTY -1] (0..65535)
. . . . . . . . * .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . parameterIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . . . standard = 6 .  INTEGER [EMPTY -1] (0..127)
. . . . . . . . . parameterValue .  CHOICE [EMPTY -1] ...
. . . . . . . . . . unsignedMin = 15 .  INTEGER [EMPTY -1] (0..65535)
. . . . . . . . * .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . parameterIdentifier .  CHOICE [EMPTY -1] ...
. . . . . . . . . . standard = 4 .  INTEGER [EMPTY -1] (0..127)
. . . . . . . . . parameterValue .  CHOICE [EMPTY -1] ...
. . . . . . . . . . unsignedMin = 7 .  INTEGER [EMPTY -1] (0..65535)
. . . . multiplexParameters .  CHOICE [EMPTY -1] ...
. . . . . h2250LogicalChannelParameters .  SEQUENCE [EMPTY -1] ...
. . . . . . sessionID = 2 .  INTEGER [EMPTY -1] (0..255)
. . . . . . mediaControlChannel .  CHOICE [EMPTY -1] ...
. . . . . . . unicastAddress .  CHOICE [EMPTY -1] ...
. . . . . . . . iPAddress .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . network = 4 '.e.' =0xac10650b <172.16.101.11> .OCTET STRING [EMPTY -1]
. . . . . . . . . tsapIdentifier = 50137 .  INTEGER [EMPTY -1] (0..65535)
. . . . . . dynamicRTPPayloadType = 109 .  INTEGER [EMPTY -1] (96..127)
. . . . . . mediaPacketization .  CHOICE [EMPTY -1] ...
. . . . . . . rtpPayloadType .  SEQUENCE [EMPTY -1] ...
. . . . . . . . payloadDescriptor .  CHOICE [EMPTY -1] ...
. . . . . . . . . oid = 8 {itu-t recommendation h 241 0 0 0 0}.OBJECT IDENTIFIER [EMPTY -1]
. . . . . . . . payloadType = 109 .  INTEGER [EMPTY -1] (0..127)

This table outlines H.241 to H.264 mappings.

Identifier Description
Capability name ITU-T Rec H.241 H.264 Video Capabilities
Capability identifier type Standard
Capability identifier value {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0)

h264(0) generic-capabilities(1)}

maxBitRate This field shall be included, in units of 100 bit/s. This field represents the maximum bitrate of the H.264 Type II bitstream as defined in Annex C/H.264.
collapsing This field shall contain the H.264 Capability Parameters as given below.

Capabilities

The H.264 capability set is structured as a list of one or more H.264 capabilities, each of which has:

  • Profile (mandatory)
  • Level (mandatory)
  • Zero or more additional parameters

These capabilities communicate the ability to decode using one or more H.264 profiles contained in a GenericCapability structure. For each H.264 capability, optional parameters can appear. These parameters permits a terminal to communicate that it has capabilities in addition to meeting the support requirements for the signaled profile and level.

Optional parameters include: CustomMaxMBPS, CustomMaxDPB, CustomMaxBRandCPB, MaxStaticMBPS, max-rcmd-unit-size, max-nal-unit-size, SampleAspectRatiosSupported, AdditionalModesSupported, amd AdditionalDisplayCapabilities.

H.264 Media Packetization

For H.323, systems signal their H.264 mediaPacketization by including: MediaPacketizationCapability.rtpPayload.Type.payloadDescriptor.oid, with the OID having the value {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0) iPpacketization(0) h241AnnexA(0)}.

In compliance with RFC 3984’s non-interleaved mode, the following is supported: MediaPacketizationCapability.rtpPayloadType.payloadDescriptor.oid, with the OID having the value {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0) iPpacketization(0) RFC3984NonInterleaved(1)}.

In compliance with RFC 3984’s interleaved mode, the following is supported: MediaPacketizationCapability.rtpPayloadType.payloadDescriptor.oid, with the OID having the value {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0)iPpacketization(0) RFC3984Interleaved(2)}.

H.264 in SIP

H.264 in SIP can contain these optional parameters, which be included in the "a=fmtp" line of SDP if they appear: profile-level-id, max-mbps, max-fs, max-cpb, max-dpb, maxbr, redundant-pic-cap, sprop-parameter-sets, parameter-add, packetization-mode, spropinterleaving-depth, deint-buf-cap, sprop-deint-buf-req, sprop-init-buf-time, sprop-max-dondiff, and max-rcmd-nalu- size.

The profile-level-id parameter is a base 16[6] hexidecimal representation of the following three bytes in sequence:

  1. profile_idc
  2. profile_oip—Composed of the values from constraint_set0_flag, constraint_set1_flag, constraint_set2_flag, and reserved_zero_5bits—in order of bit significance, starting from the most significant bit.
  3. level_idc—Note that reserved_zero_5bits is required to be equal to 0 in [1], but other values for it may be specified in the future by ITU-T or ISO/IEC.

H.264 Packetization Mode

In SIP, the packetization-mode parameter signals the properties of the RTP payload type or the capabilities of a receiver’s implementation. Only a single configuration point can be indicated. So when capabilities support more than one packetization-mode are declared, multiple configuration points (RTP payload types) must be used.

  • When the value of packetization-mode equals 0 or packetization-mode is not present, the single NAL mode is used.
  • When the value of packetization-mode equals 1, the non- interleaved mode is used.
  • When the value of packetization-mode equals 2, the interleaved mode is used.

This example shows a SIP offer-answer exchange. Here is the offer SDP:

m=video 49170 RTP/AVP 100 99 98
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42A01E; packetization-mode=0;
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1;
a=rtpmap:100 H264/90000
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2;

And here is the answer SDP for the example:

m=video 49170 RTP/AVP 100 99 97
a=rtpmap:97 H264/90000
a=fmtp:97 profile-level-id=42A01E; packetization-mode=0;
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42A01E; packetization-mode=1;
a=rtpmap:100 H264/90000
a=fmtp:100 profile-level-id=42A01E; packetization-mode=2;

H.264 IWF Conversions

This section contains two table that show profile, level, and media packetization conversions for H.264 undergoing interworking.

Profile H.264 in SIP H.264 (H.241 in H.323)
H264_PROFILE_STR_BASELINE 66 64
H264_PROFILE_STR_MAIN 77 32
H264_PROFILE_STR_EXTENDED 88 32
H.264 Level H.2264 in SIP H.264 (H.241 in H.323) Constraints
1 10 15 0x00
1b 11 19 0x10
1.1 11 22 0x00
1.2 12 29 0x00
1.3 13 36 0x00
2 20 43 0x00
2.1 21 50 0x00
2.2 22 57 0x00
3 30 64 0x00
3.1 31 71 0x00
3.2 32 78 0x00
4 40 85 0x00
4.1 41 92 0x00
4.2 42 99 0x00
5 50 106 0x00
5.1 51 113 0x00
H.264 SIP Packetization H.264 (H.241 in H.323) OID in mediaPacketization
packetization-mode=0 {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0)

iPpacketization(0) h241AnnexA(0)}

packetization-mode=1 {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0)

iPpacketization(0) RFC3984NonInterleaved(1)}

packetization-mode=2 {itu-t(0) recommendation(0) h(8) 241 specificVideoCodecCapabilities(0) h264(0)

iPpacketization(0) RFC3984Interleaved(2)}

IWF Unsupported Parameters

The following H.241 parameters are not supported for interworking: CustomMaxMBPS, CustomMaxFS CustomMaxDPB, CustomMaxBRandCPB, MaxStaticMBPS, max-rcmd-nal-unit-size, max-nal-unit-size, SampleAspectRatiosSupported, AdditionalModesSupported, and AdditionalDisplayCapabilities.

The following SDP parameters are not supported for interworking: max-mbps, max-fs, max-cpb, max-dpb, maxbr, redundant-pic-cap, sprop-parameter-sets, parameter-add, spropinterleaving-depth, deint-buf-cap, sprop-deint-buf-req, sprop-init-buf-time, sprop-max-dondiff, and max-rcmd-nalu-size.

H.263+ in H.323

This section describes the H.264 capabilities and media packetization in H.323. Capability exchange signaling looks like this:

. . . . . capability .  CHOICE [EMPTY -1] ...
. . . . . . receiveVideoCapability .  CHOICE [EMPTY -1] ...
. . . . . . . h263VideoCapability .  SEQUENCE [EMPTY -1] ...
. . . . . . . . sqcifMPI = 1 .  INTEGER [EMPTY -1] (1..32)
. . . . . . . . qcifMPI = 1 .  INTEGER [EMPTY -1] (1..32)
. . . . . . . . cifMPI = 1 .  INTEGER [EMPTY -1] (1..32)
. . . . . . . . maxBitRate = 1000 .  INTEGER [EMPTY -1] (1..192400)
. . . . . . . . unrestrictedVector = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . arithmeticCoding = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . advancedPrediction = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . pbFrames = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . temporalSpatialTradeOffCapability = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . errorCompensation = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . h263Options .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . advancedIntraCodingMode = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . deblockingFilterMode = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . improvedPBFramesMode = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . unlimitedMotionVectors = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . fullPictureFreeze = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . partialPictureFreezeAndRelease = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . resizingPartPicFreezeAndRelease = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . fullPictureSnapshot = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . partialPictureSnapshot = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . videoSegmentTagging = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . progressiveRefinement = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . dynamicPictureResizingByFour = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . dynamicPictureResizingSixteenthPel = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . dynamicWarpingHalfPel = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . dynamicWarpingSixteenthPel = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . independentSegmentDecoding = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . slicesInOrder-NonRect = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . slicesInOrder-Rect = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . slicesNoOrder-NonRect = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . slicesNoOrder-Rect = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . alternateInterVLCMode = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . modifiedQuantizationMode = 1 .  BOOLEAN [EMPTY -1]
. . . . . . . . . reducedResolutionUpdate = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . separateVideoBackChannel = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . videoBadMBsCap = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . h263Version3Options .  SEQUENCE [EMPTY -1] ...
. . . . . . . . . . dataPartitionedSlices = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . fixedPointIDCT0 = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . interlacedFields = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . currentPictureHeaderRepetition = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . previousPictureHeaderRepetition = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . nextPictureHeaderRepetition = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . pictureNumber = 0 .  BOOLEAN [EMPTY -1]
. . . . . . . . . . spareReferencePictures = 0 .  BOOLEAN [EMPTY -1]

H.263+ in SIP

H.263+ in SIP appears looks like this:

a=rtpmap:100 H263-1998/90000
a=fmtp:100 CIF=1; QCIF=1; SQCIF=1; D=1; F=1; I=1; J=1; L=1; S=1; T=1
a=rtpmap:34 H263/90000
a=fmtp:34 CIF=1; QCIF=1; SQCIF=1

H.263+ IWF Conversions

This section contains a table showing H.263+ conversions for SIP-h.323 interworking.

H.263+ in H.323 Parameters (Annex) in ftmp line H.263+ in SIP
sqcifMPI SQCIF
qcifMPI QCIF
cifMPI
  • CIF
  • CIF4
  • CIF16
maxBitRate N/A
unrestrictedVector D
arithmeticCoding E
advancedPrediction F
pbFrames G
temporalSpatialTradeOffCapability N/A
errorCompensation H
h263Options N/A
advancedIntraCodingMode I
deblockingFilterMode J
improvedPBFramesMode N/A
unlimitedMotionVectors N/A
fullPictureFreeze L
partialPictureFreezeAndRelease N/A
resizingPartPicFreezeAndRelease N/A
fullPictureSnapshot N/A
partialPictureSnapshot N/A
videoSegmentTagging N/A
progressiveRefinement N/A
dynamicPictureResizingByFour P = 1
dynamicPictureResizingSixteenthPel P = 2
dynamicWarpingHalfPel P = 3
DynamicWarpingSixteenthPel P = 4
independentSegmentDecoding R
slicesInOrder-NonRect K = 1
slicesInOrder-Rect K = 2
slicesNoOrder-NonRect K = 3
slicesNoOrder-Rect K = 4
alternateInterVLCMode S
modifiedQuantizationMode T
reducedResolutionUpdate Q
separateVideoBackChannel N/A
videoBadMBsCap
  • PAR
  • CPCF
  • CUSTOM
h263Version3Options N/A

IWF Unsupported Parameters

The following optional SDP parameters are not supported for H.263+ interworking: SQCIF, QCIF, CIF, CIF4, CIF16, CUSTOM, PAR, CPCF.