H.245 ASN.1 HTML

Version 13

MULTIMEDIA-SYSTEM-CONTROL DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

-- Export all symbols
-- =======================================================================
-- Top level Messages
-- =======================================================================
MultimediaSystemControlMessage ::= CHOICE {
  request     RequestMessage,
  response    ResponseMessage,
  command     CommandMessage,
  indication  IndicationMessage,
  ...}

-- A RequestMessage results in action and requires an immediate response
RequestMessage ::= CHOICE {
  nonStandard                NonStandardMessage,
  masterSlaveDetermination   MasterSlaveDetermination,
  terminalCapabilitySet      TerminalCapabilitySet,
  openLogicalChannel         OpenLogicalChannel,
  closeLogicalChannel        CloseLogicalChannel,
  requestChannelClose        RequestChannelClose,
  multiplexEntrySend         MultiplexEntrySend,
  requestMultiplexEntry      RequestMultiplexEntry,
  requestMode                RequestMode,
  roundTripDelayRequest      RoundTripDelayRequest,
  maintenanceLoopRequest     MaintenanceLoopRequest,
  ...,
  communicationModeRequest   CommunicationModeRequest,
  conferenceRequest          ConferenceRequest,
  multilinkRequest           MultilinkRequest,
  logicalChannelRateRequest  LogicalChannelRateRequest,
  genericRequest             GenericMessage}

-- A ResponseMessage is the response to a RequestMessage
ResponseMessage ::= CHOICE {
  nonStandard                     NonStandardMessage,
  masterSlaveDeterminationAck     MasterSlaveDeterminationAck,
  masterSlaveDeterminationReject  MasterSlaveDeterminationReject,
  terminalCapabilitySetAck        TerminalCapabilitySetAck,
  terminalCapabilitySetReject     TerminalCapabilitySetReject,
  openLogicalChannelAck           OpenLogicalChannelAck,
  openLogicalChannelReject        OpenLogicalChannelReject,
  closeLogicalChannelAck          CloseLogicalChannelAck,
  requestChannelCloseAck          RequestChannelCloseAck,
  requestChannelCloseReject       RequestChannelCloseReject,
  multiplexEntrySendAck           MultiplexEntrySendAck,
  multiplexEntrySendReject        MultiplexEntrySendReject,
  requestMultiplexEntryAck        RequestMultiplexEntryAck,
  requestMultiplexEntryReject     RequestMultiplexEntryReject,
  requestModeAck                  RequestModeAck,
  requestModeReject               RequestModeReject,
  roundTripDelayResponse          RoundTripDelayResponse,
  maintenanceLoopAck              MaintenanceLoopAck,
  maintenanceLoopReject           MaintenanceLoopReject,
  ...,
  communicationModeResponse       CommunicationModeResponse,
  conferenceResponse              ConferenceResponse,
  multilinkResponse               MultilinkResponse,
  logicalChannelRateAcknowledge   LogicalChannelRateAcknowledge,
  logicalChannelRateReject        LogicalChannelRateReject,
  genericResponse                 GenericMessage}

-- A CommandMessage requires action, but no explicit response
CommandMessage ::= CHOICE {
  nonStandard                            NonStandardMessage,
  maintenanceLoopOffCommand              MaintenanceLoopOffCommand,
  sendTerminalCapabilitySet              SendTerminalCapabilitySet,
  encryptionCommand                      EncryptionCommand,
  flowControlCommand                     FlowControlCommand,
  endSessionCommand                      EndSessionCommand,
  miscellaneousCommand                   MiscellaneousCommand,
  ...,
  communicationModeCommand               CommunicationModeCommand,
  conferenceCommand                      ConferenceCommand,
  h223MultiplexReconfiguration           H223MultiplexReconfiguration,
  newATMVCCommand                        NewATMVCCommand,
  mobileMultilinkReconfigurationCommand  MobileMultilinkReconfigurationCommand,
  genericCommand                         GenericMessage}

-- An IndicationMessage is information that does not require action or response
IndicationMessage ::= CHOICE {
  nonStandard                               NonStandardMessage,
  functionNotUnderstood                     FunctionNotUnderstood,
  masterSlaveDeterminationRelease           MasterSlaveDeterminationRelease,
  terminalCapabilitySetRelease              TerminalCapabilitySetRelease,
  openLogicalChannelConfirm                 OpenLogicalChannelConfirm,
  requestChannelCloseRelease                RequestChannelCloseRelease,
  multiplexEntrySendRelease                 MultiplexEntrySendRelease,
  requestMultiplexEntryRelease              RequestMultiplexEntryRelease,
  requestModeRelease                        RequestModeRelease,
  miscellaneousIndication                   MiscellaneousIndication,
  jitterIndication                          JitterIndication,
  h223SkewIndication                        H223SkewIndication,
  newATMVCIndication                        NewATMVCIndication,
  userInput                                 UserInputIndication,
  ...,
  h2250MaximumSkewIndication                H2250MaximumSkewIndication,
  mcLocationIndication                      MCLocationIndication,
  conferenceIndication                      ConferenceIndication,
  vendorIdentification                      VendorIdentification,
  functionNotSupported                      FunctionNotSupported,
  multilinkIndication                       MultilinkIndication,
  logicalChannelRateRelease                 LogicalChannelRateRelease,
  flowControlIndication                     FlowControlIndication,
  mobileMultilinkReconfigurationIndication
    MobileMultilinkReconfigurationIndication,
  genericIndication                         GenericMessage}

-- SequenceNumber is defined here as it is used in a number of Messages
SequenceNumber ::= INTEGER(0..255)

-- =============================================================================
-- Generic Message definitions
-- =============================================================================
GenericMessage ::= SEQUENCE {
  messageIdentifier     CapabilityIdentifier,
  subMessageIdentifier  INTEGER(0..127) OPTIONAL,
  messageContent        SEQUENCE OF GenericParameter OPTIONAL,
  ...}

GenericInformation ::= GenericMessage

-- =============================================================================
-- Non-standard Message definitions
-- =============================================================================
NonStandardMessage ::= SEQUENCE {nonStandardData  NonStandardParameter,
                                 ...}

NonStandardParameter ::= SEQUENCE {
  nonStandardIdentifier  NonStandardIdentifier,
  data                   OCTET STRING}

NonStandardIdentifier ::= CHOICE {
  object           OBJECT IDENTIFIER,
  h221NonStandard
    SEQUENCE {t35CountryCode    INTEGER(0..255), -- country, per --
              -- Annex A/T.35
              t35Extension      INTEGER(0..255),
              -- assigned nationally unless 
              -- t35CountryCode is binary
              -- 1111 1111, in which case it shall 
              -- contain the country code
              -- according to Annex B/T.35 
              manufacturerCode  INTEGER(0..65535) -- assigned nationally--}}

-- =============================================================================
-- Master-slave determination definitions
-- =============================================================================
MasterSlaveDetermination ::= SEQUENCE {
  terminalType               INTEGER(0..255),
  statusDeterminationNumber  INTEGER(0..16777215),
  ...}

MasterSlaveDeterminationAck ::= SEQUENCE {
  decision  CHOICE {master  NULL,
                    slave   NULL},
  ...}

MasterSlaveDeterminationReject ::= SEQUENCE {
  cause  CHOICE {identicalNumbers  NULL,
                 ...},
  ...}

MasterSlaveDeterminationRelease ::= SEQUENCE {...}

-- =============================================================================
-- Capability exchange definitions
-- =============================================================================
TerminalCapabilitySet ::= SEQUENCE {
  sequenceNumber         SequenceNumber,
  protocolIdentifier     OBJECT IDENTIFIER,
  -- shall be set to the value
  -- {itu-t (0) recommendation (0) h (8) 245 
  -- version (0) 13}
  multiplexCapability    MultiplexCapability OPTIONAL,
  capabilityTable        SET SIZE (1..256) OF CapabilityTableEntry OPTIONAL,
  capabilityDescriptors  SET SIZE (1..256) OF CapabilityDescriptor OPTIONAL,
  ...,
  genericInformation     SEQUENCE OF GenericInformation OPTIONAL
  -- generic information associated 
  -- with the message--}

CapabilityTableEntry ::= SEQUENCE {
  capabilityTableEntryNumber  CapabilityTableEntryNumber,
  capability                  Capability OPTIONAL}

CapabilityDescriptor ::= SEQUENCE {
  capabilityDescriptorNumber  CapabilityDescriptorNumber,
  simultaneousCapabilities
    SET SIZE (1..256) OF AlternativeCapabilitySet OPTIONAL}

AlternativeCapabilitySet ::=
  SEQUENCE SIZE (1..256) OF CapabilityTableEntryNumber

CapabilityTableEntryNumber ::= INTEGER(1..65535)

CapabilityDescriptorNumber ::= INTEGER(0..255)

TerminalCapabilitySetAck ::= SEQUENCE {
  sequenceNumber         SequenceNumber,
  ...,
  genericInformation     SEQUENCE OF GenericInformation OPTIONAL
  -- generic information associated 
  -- with the message--}

TerminalCapabilitySetReject ::= SEQUENCE {
  sequenceNumber         SequenceNumber,
  cause
    CHOICE {unspecified                 NULL,
            undefinedTableEntryUsed     NULL,
            descriptorCapacityExceeded  NULL,
            tableEntryCapacityExceeded
              CHOICE {highestEntryNumberProcessed  CapabilityTableEntryNumber,
                      noneProcessed                NULL},
            ...},
  ...,
  genericInformation     SEQUENCE OF GenericInformation OPTIONAL
  -- generic information associated 
  -- with the message--}

TerminalCapabilitySetRelease ::= SEQUENCE {
  ...,
  genericInformation     SEQUENCE OF GenericInformation OPTIONAL
  -- generic information associated 
  -- with the message--}

-- =============================================================================
-- Capability exchange definitions: top level capability description
-- =============================================================================
Capability ::= CHOICE {
  nonStandard                                    NonStandardParameter,
  receiveVideoCapability                         VideoCapability,
  transmitVideoCapability                        VideoCapability,
  receiveAndTransmitVideoCapability              VideoCapability,
  receiveAudioCapability                         AudioCapability,
  transmitAudioCapability                        AudioCapability,
  receiveAndTransmitAudioCapability              AudioCapability,
  receiveDataApplicationCapability               DataApplicationCapability,
  transmitDataApplicationCapability              DataApplicationCapability,
  receiveAndTransmitDataApplicationCapability    DataApplicationCapability,
  h233EncryptionTransmitCapability               BOOLEAN,
  h233EncryptionReceiveCapability
    SEQUENCE {h233IVResponseTime  INTEGER(0..255), -- units milliseconds --
              ...},
  ...,
  conferenceCapability                           ConferenceCapability,
  h235SecurityCapability                         H235SecurityCapability,
  maxPendingReplacementFor                       INTEGER(0..255),
  receiveUserInputCapability                     UserInputCapability,
  transmitUserInputCapability                    UserInputCapability,
  receiveAndTransmitUserInputCapability          UserInputCapability,
  genericControlCapability                       GenericCapability,
  receiveMultiplexedStreamCapability             MultiplexedStreamCapability,
  transmitMultiplexedStreamCapability            MultiplexedStreamCapability,
  receiveAndTransmitMultiplexedStreamCapability  MultiplexedStreamCapability,
  receiveRTPAudioTelephonyEventCapability        AudioTelephonyEventCapability,
  receiveRTPAudioToneCapability                  AudioToneCapability,
  depFecCapability                               DepFECCapability, -- Deprecated, do not use
  multiplePayloadStreamCapability
    MultiplePayloadStreamCapability,
  fecCapability                                  FECCapability,
  redundancyEncodingCap                          RedundancyEncodingCapability,
  oneOfCapabilities                              AlternativeCapabilitySet}

H235SecurityCapability ::= SEQUENCE {
  encryptionAuthenticationAndIntegrity  EncryptionAuthenticationAndIntegrity,
  mediaCapability                       CapabilityTableEntryNumber,
  -- NOTE - The mediaCapability shall refer to Capability Table Entries 
  -- that do contain, directly or indirectly, one or more transmit,
  -- receive, or receiveAndTransmit AudioCapability, VideoCapability,
  -- DataApplicationCapability, or similar capabilities indicated by a
  -- NonStandardParameter or GenericCapability only
  ...}

-- =============================================================================
-- Capability exchange definitions: Multiplex capabilities
-- =============================================================================
MultiplexCapability ::= CHOICE {
  nonStandard                 NonStandardParameter,
  h222Capability              H222Capability,
  h223Capability              H223Capability,
  v76Capability               V76Capability,
  ...,
  h2250Capability             H2250Capability,
  genericMultiplexCapability  GenericCapability}

H222Capability ::= SEQUENCE {
  numberOfVCs   INTEGER(1..256),
  vcCapability  SET OF VCCapability,
  ...}

VCCapability ::= SEQUENCE {
  aal1
    SEQUENCE {nullClockRecovery       BOOLEAN,
              srtsClockRecovery       BOOLEAN,
              adaptiveClockRecovery   BOOLEAN,
              nullErrorCorrection     BOOLEAN,
              longInterleaver         BOOLEAN,
              shortInterleaver        BOOLEAN,
              errorCorrectionOnly     BOOLEAN,
              structuredDataTransfer  BOOLEAN,
              partiallyFilledCells    BOOLEAN,
              ...} OPTIONAL,
  aal5
    SEQUENCE {forwardMaximumSDUSize   INTEGER(0..65535), -- units octets--
              backwardMaximumSDUSize  INTEGER(0..65535), -- units octets--
              ...} OPTIONAL,
  transportStream    BOOLEAN,
  programStream      BOOLEAN,
  availableBitRates
    SEQUENCE {type
                CHOICE {singleBitRate    INTEGER(1..65535), -- units 64 kbit/s--
                        rangeOfBitRates
                          SEQUENCE {lowerBitRate   INTEGER(1..65535), -- units 64 kbit/s--
                                    higherBitRate  INTEGER(1..65535) -- units 64 kbit/s--}},
              ...},
  ...,
  aal1ViaGateway
    SEQUENCE {gatewayAddress          SET SIZE (1..256) OF Q2931Address,
              nullClockRecovery       BOOLEAN,
              srtsClockRecovery       BOOLEAN,
              adaptiveClockRecovery   BOOLEAN,
              nullErrorCorrection     BOOLEAN,
              longInterleaver         BOOLEAN,
              shortInterleaver        BOOLEAN,
              errorCorrectionOnly     BOOLEAN,
              structuredDataTransfer  BOOLEAN,
              partiallyFilledCells    BOOLEAN,
              ...} OPTIONAL}

H223Capability ::= SEQUENCE {
  transportWithI-frames                 BOOLEAN, -- I-frame transport 
  
  -- of H.245
  videoWithAL1                          BOOLEAN,
  videoWithAL2                          BOOLEAN,
  videoWithAL3                          BOOLEAN,
  audioWithAL1                          BOOLEAN,
  audioWithAL2                          BOOLEAN,
  audioWithAL3                          BOOLEAN,
  dataWithAL1                           BOOLEAN,
  dataWithAL2                           BOOLEAN,
  dataWithAL3                           BOOLEAN,
  maximumAl2SDUSize                     INTEGER(0..65535), -- units octets
  maximumAl3SDUSize                     INTEGER(0..65535), -- units octets
  maximumDelayJitter                    INTEGER(0..1023), -- units milliseconds
  h223MultiplexTableCapability
    CHOICE {basic     NULL,
            enhanced
              SEQUENCE {maximumNestingDepth        INTEGER(1..15),
                        maximumElementListSize     INTEGER(2..255),
                        maximumSubElementListSize  INTEGER(2..255),
                        ...}},
  ...,
  maxMUXPDUSizeCapability               BOOLEAN,
  nsrpSupport                           BOOLEAN,
  mobileOperationTransmitCapability
    SEQUENCE {modeChangeCapability  BOOLEAN,
              h223AnnexA            BOOLEAN,
              h223AnnexADoubleFlag  BOOLEAN,
              h223AnnexB            BOOLEAN,
              h223AnnexBwithHeader  BOOLEAN,
              ...} OPTIONAL,
  h223AnnexCCapability                  H223AnnexCCapability OPTIONAL,
  bitRate                               INTEGER(1..19200) OPTIONAL, -- units of 
  
  -- 100 bit/s
  mobileMultilinkFrameCapability
    SEQUENCE {maximumSampleSize     INTEGER(1..255), -- units octets--
              maximumPayloadLength  INTEGER(1..65025), -- units octets--
              ...} OPTIONAL}

H223AnnexCCapability ::= SEQUENCE {
  videoWithAL1M        BOOLEAN,
  videoWithAL2M        BOOLEAN,
  videoWithAL3M        BOOLEAN,
  audioWithAL1M        BOOLEAN,
  audioWithAL2M        BOOLEAN,
  audioWithAL3M        BOOLEAN,
  dataWithAL1M         BOOLEAN,
  dataWithAL2M         BOOLEAN,
  dataWithAL3M         BOOLEAN,
  alpduInterleaving    BOOLEAN,
  maximumAL1MPDUSize   INTEGER(0..65535), -- units octets
  maximumAL2MSDUSize   INTEGER(0..65535), -- units octets
  maximumAL3MSDUSize   INTEGER(0..65535), -- units octets
  ...,
  rsCodeCapability     BOOLEAN OPTIONAL}

V76Capability ::= SEQUENCE {
  suspendResumeCapabilitywAddress   BOOLEAN,
  suspendResumeCapabilitywoAddress  BOOLEAN,
  rejCapability                     BOOLEAN,
  sREJCapability                    BOOLEAN,
  mREJCapability                    BOOLEAN,
  crc8bitCapability                 BOOLEAN,
  crc16bitCapability                BOOLEAN,
  crc32bitCapability                BOOLEAN,
  uihCapability                     BOOLEAN,
  numOfDLCS                         INTEGER(2..8191),
  twoOctetAddressFieldCapability    BOOLEAN,
  loopBackTestCapability            BOOLEAN,
  n401Capability                    INTEGER(1..4095),
  maxWindowSizeCapability           INTEGER(1..127),
  v75Capability                     V75Capability,
  ...}

V75Capability ::= SEQUENCE {audioHeader  BOOLEAN,
                            ...}

H2250Capability ::= SEQUENCE {
  maximumAudioDelayJitter                 INTEGER(0..1023), -- units in 
  
  -- milliseconds
  receiveMultipointCapability             MultipointCapability,
  transmitMultipointCapability            MultipointCapability,
  receiveAndTransmitMultipointCapability  MultipointCapability,
  mcCapability
    SEQUENCE {centralizedConferenceMC    BOOLEAN,
              decentralizedConferenceMC  BOOLEAN,
              ...},
  rtcpVideoControlCapability              BOOLEAN, -- FIR and NACK
  mediaPacketizationCapability            MediaPacketizationCapability,
  ...,
  transportCapability                     TransportCapability OPTIONAL,
  redundancyEncodingCapability
    SEQUENCE SIZE (1..256) OF RedundancyEncodingCapability OPTIONAL,
  logicalChannelSwitchingCapability       BOOLEAN,
  t120DynamicPortCapability               BOOLEAN}

MediaPacketizationCapability ::= SEQUENCE {
  h261aVideoPacketization  BOOLEAN,
  ...,
  rtpPayloadType           SEQUENCE SIZE (1..256) OF RTPPayloadType OPTIONAL}

RSVPParameters ::= SEQUENCE {
  qosMode     QOSMode OPTIONAL,
  tokenRate   INTEGER(1..4294967295) OPTIONAL,
  -- rate in bytes/s
  bucketSize  INTEGER(1..4294967295) OPTIONAL,
  -- size in bytes
  peakRate    INTEGER(1..4294967295) OPTIONAL,
  -- peak bandwidth bytes/s
  minPoliced  INTEGER(1..4294967295) OPTIONAL,
  -- 
  maxPktSize  INTEGER(1..4294967295) OPTIONAL,
  -- size in bytes
  ...}

QOSMode ::= CHOICE {guaranteedQOS   NULL,
                    controlledLoad  NULL,
                    ...}

ATMParameters ::= SEQUENCE {
  maxNTUSize  INTEGER(0..65535), -- units in octets
  atmUBR      BOOLEAN, -- unspecified bit rate
  atmrtVBR    BOOLEAN, -- real time variable 
  
  -- bit rate
  atmnrtVBR   BOOLEAN, -- non real time 
  
  -- variable bit rate
  atmABR      BOOLEAN, -- available bit rate
  atmCBR      BOOLEAN, -- constant bit rate
  ...}

ServicePriorityValue ::= SEQUENCE {
  nonStandardParameter  NonStandardParameter OPTIONAL,
  ...}

ServicePriority ::= SEQUENCE {
  nonStandardData           NonStandardParameter OPTIONAL,
  servicePrioritySignalled  BOOLEAN,
  servicePriorityValue      ServicePriorityValue OPTIONAL,
  ...}

AuthorizationParameters ::= SEQUENCE {
  nonStandardData  NonStandardParameter OPTIONAL,
  ...}

QOSType ::= CHOICE {desired   NULL,
                    required  NULL,
                    ...}

QOSClass ::= CHOICE {
  class0  NULL,
  class1  NULL,
  class2  NULL,
  class3  NULL,
  class4  NULL,
  class5  NULL,
  ...}

QOSDescriptor ::= SEQUENCE {
  nonStandardData  NonStandardParameter OPTIONAL,
  qosType          QOSType,
  qosClass         QOSClass,
  ...}

GenericTransportParameters ::= SEQUENCE {
  nonStandardData  NonStandardParameter OPTIONAL,
  averageRate      INTEGER(1..4294967295) OPTIONAL,
  -- average bandwidth bytes/sec
  burst            INTEGER(1..4294967295) OPTIONAL,
  --  size in bytes
  peakRate         INTEGER(1..4294967295) OPTIONAL,
  -- peak bandwidth bytes/sec
  maxPktSize       INTEGER(1..4294967295) OPTIONAL,
  -- size in bytes
  ...}

QOSCapability ::= SEQUENCE {
  nonStandardData                NonStandardParameter OPTIONAL,
  rsvpParameters                 RSVPParameters OPTIONAL,
  atmParameters                  ATMParameters OPTIONAL,
  ...,
  localQoS                       BOOLEAN OPTIONAL,
  genericTransportParameters     GenericTransportParameters OPTIONAL,
  servicePriority                ServicePriority OPTIONAL,
  authorizationParameter         AuthorizationParameters OPTIONAL,
  qosDescriptor                  QOSDescriptor OPTIONAL,
  dscpValue                      INTEGER(0..63) OPTIONAL}

MediaTransportType ::= CHOICE {
  ip-UDP               NULL,
  ip-TCP               NULL,
  atm-AAL5-UNIDIR      NULL, -- virtual circuits used as unidirectional
  atm-AAL5-BIDIR       NULL, -- virtual circuits used as bidirectional
  ...,
  atm-AAL5-compressed  SEQUENCE {variable-delta  BOOLEAN,
                                 ...}}

MediaChannelCapability ::= SEQUENCE {
  mediaTransport  MediaTransportType OPTIONAL,
  ...}

TransportCapability ::= SEQUENCE {
  nonStandard               NonStandardParameter OPTIONAL,
  qOSCapabilities           SEQUENCE SIZE (1..256) OF QOSCapability OPTIONAL,
  mediaChannelCapabilities
    SEQUENCE SIZE (1..256) OF MediaChannelCapability OPTIONAL,
  ...}

RedundancyEncodingCapability ::= SEQUENCE {
  redundancyEncodingMethod  RedundancyEncodingMethod,
  primaryEncoding           CapabilityTableEntryNumber,
  secondaryEncoding
    SEQUENCE SIZE (1..256) OF CapabilityTableEntryNumber OPTIONAL,
  -- must be Audio, Video, or Data capabilities, not derived
  -- capabilities; redundancy order is inferred from number of
  -- secondary encodings
  ...}

RedundancyEncodingMethod ::= CHOICE {
  nonStandard                     NonStandardParameter,
  rtpAudioRedundancyEncoding      NULL,
  ...,
  rtpH263VideoRedundancyEncoding  RTPH263VideoRedundancyEncoding}

RTPH263VideoRedundancyEncoding ::= SEQUENCE {
  numberOfThreads          INTEGER(1..16),
  framesBetweenSyncPoints  INTEGER(1..256),
  frameToThreadMapping
    CHOICE {roundrobin  NULL,
            custom
              SEQUENCE SIZE (1..256) OF RTPH263VideoRedundancyFrameMapping,
            -- empty SEQUENCE for capability negotiation
            -- meaningful contents only OpenLogicalChannel
            ...},
  containedThreads         SEQUENCE SIZE (1..256) OF INTEGER(0..15) OPTIONAL,
  -- only used for opening of logical channels
  ...}

RTPH263VideoRedundancyFrameMapping ::= SEQUENCE {
  threadNumber   INTEGER(0..15),
  frameSequence  SEQUENCE SIZE (1..256) OF INTEGER(0..255),
  ...}

MultipointCapability ::= SEQUENCE {
  multicastCapability          BOOLEAN,
  multiUniCastConference       BOOLEAN,
  mediaDistributionCapability  SEQUENCE OF MediaDistributionCapability,
  ...}

MediaDistributionCapability ::= SEQUENCE {
  centralizedControl  BOOLEAN,
  distributedControl  BOOLEAN, -- for further study in
  
  -- ITU-T Rec. H.323
  centralizedAudio    BOOLEAN,
  distributedAudio    BOOLEAN,
  centralizedVideo    BOOLEAN,
  distributedVideo    BOOLEAN,
  centralizedData     SEQUENCE OF DataApplicationCapability OPTIONAL,
  distributedData     SEQUENCE OF DataApplicationCapability OPTIONAL,
  -- for further study in 
  -- ITU-T Rec. H.323
  ...}

-- =============================================================================
-- Capability exchange definitions: Video capabilities
-- =============================================================================
VideoCapability ::= CHOICE {
  nonStandard              NonStandardParameter,
  h261VideoCapability      H261VideoCapability,
  h262VideoCapability      H262VideoCapability,
  h263VideoCapability      H263VideoCapability,
  is11172VideoCapability   IS11172VideoCapability,
  ...,
  genericVideoCapability   GenericCapability,
  extendedVideoCapability  ExtendedVideoCapability}

ExtendedVideoCapability ::= SEQUENCE {
  videoCapability           SEQUENCE OF VideoCapability,
  videoCapabilityExtension  SEQUENCE OF GenericCapability OPTIONAL,
  ...}

H261VideoCapability ::= SEQUENCE {
  qcifMPI                            INTEGER(1..4) OPTIONAL, -- units 1/29.97 Hz
  cifMPI                             INTEGER(1..4) OPTIONAL, -- units 1/29.97 Hz
  temporalSpatialTradeOffCapability  BOOLEAN,
  maxBitRate                         INTEGER(1..19200), -- units of
  
  -- 100 bit/s
  stillImageTransmission             BOOLEAN, -- Annex D/H.261
  ...,
  videoBadMBsCap                     BOOLEAN}

H262VideoCapability ::= SEQUENCE {
  profileAndLevel-SPatML         BOOLEAN,
  profileAndLevel-MPatLL         BOOLEAN,
  profileAndLevel-MPatML         BOOLEAN,
  profileAndLevel-MPatH-14       BOOLEAN,
  profileAndLevel-MPatHL         BOOLEAN,
  profileAndLevel-SNRatLL        BOOLEAN,
  profileAndLevel-SNRatML        BOOLEAN,
  profileAndLevel-SpatialatH-14  BOOLEAN,
  profileAndLevel-HPatML         BOOLEAN,
  profileAndLevel-HPatH-14       BOOLEAN,
  profileAndLevel-HPatHL         BOOLEAN,
  videoBitRate                   INTEGER(0..1073741823) OPTIONAL, -- units 400 bit/s
  vbvBufferSize                  INTEGER(0..262143) OPTIONAL, -- units 16 384 bits
  samplesPerLine                 INTEGER(0..16383) OPTIONAL, -- units samples/line
  linesPerFrame                  INTEGER(0..16383) OPTIONAL, -- units lines/frame
  framesPerSecond                INTEGER(0..15) OPTIONAL, -- frame_rate_code
  luminanceSampleRate            INTEGER(0..4294967295) OPTIONAL, -- units samples/s   ...,
  videoBadMBsCap                 BOOLEAN}

H263VideoCapability ::= SEQUENCE {
  sqcifMPI                           INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  qcifMPI                            INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cifMPI                             INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cif4MPI                            INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cif16MPI                           INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  maxBitRate                         INTEGER(1..192400), -- units 100 bit/s
  unrestrictedVector                 BOOLEAN,
  arithmeticCoding                   BOOLEAN,
  advancedPrediction                 BOOLEAN,
  pbFrames                           BOOLEAN,
  temporalSpatialTradeOffCapability  BOOLEAN,
  hrd-B                              INTEGER(0..524287) OPTIONAL, -- units 128 bits
  bppMaxKb                           INTEGER(0..65535) OPTIONAL, -- units 1024 bits
  ...,
  slowSqcifMPI                       INTEGER(1..3600) OPTIONAL, --  units seconds/frame
  slowQcifMPI                        INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCifMPI                         INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCif4MPI                        INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCif16MPI                       INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  errorCompensation                  BOOLEAN,
  enhancementLayerInfo               EnhancementLayerInfo OPTIONAL,
  h263Options                        H263Options OPTIONAL}

EnhancementLayerInfo ::= SEQUENCE {
  baseBitRateConstrained  BOOLEAN,
  snrEnhancement          SET SIZE (1..14) OF EnhancementOptions OPTIONAL,
  spatialEnhancement      SET SIZE (1..14) OF EnhancementOptions OPTIONAL,
  bPictureEnhancement     SET SIZE (1..14) OF BEnhancementParameters OPTIONAL,
  ...}

BEnhancementParameters ::= SEQUENCE {
  enhancementOptions  EnhancementOptions,
  numberOfBPictures   INTEGER(1..64),
  ...}

EnhancementOptions ::= SEQUENCE {
  sqcifMPI                           INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  qcifMPI                            INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cifMPI                             INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cif4MPI                            INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  cif16MPI                           INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
  maxBitRate                         INTEGER(1..192400), -- units 100 bit/s
  unrestrictedVector                 BOOLEAN,
  arithmeticCoding                   BOOLEAN,
  temporalSpatialTradeOffCapability  BOOLEAN,
  slowSqcifMPI                       INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowQcifMPI                        INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCifMPI                         INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCif4MPI                        INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  slowCif16MPI                       INTEGER(1..3600) OPTIONAL, -- units seconds/frame
  errorCompensation                  BOOLEAN,
  h263Options                        H263Options OPTIONAL,
  ...}

H263Options ::= SEQUENCE {
  advancedIntraCodingMode             BOOLEAN,
  deblockingFilterMode                BOOLEAN,
  improvedPBFramesMode                BOOLEAN,
  unlimitedMotionVectors              BOOLEAN,
  fullPictureFreeze                   BOOLEAN,
  partialPictureFreezeAndRelease      BOOLEAN,
  resizingPartPicFreezeAndRelease     BOOLEAN,
  fullPictureSnapshot                 BOOLEAN,
  partialPictureSnapshot              BOOLEAN,
  videoSegmentTagging                 BOOLEAN,
  progressiveRefinement               BOOLEAN,
  dynamicPictureResizingByFour        BOOLEAN,
  dynamicPictureResizingSixteenthPel  BOOLEAN,
  dynamicWarpingHalfPel               BOOLEAN,
  dynamicWarpingSixteenthPel          BOOLEAN,
  independentSegmentDecoding          BOOLEAN,
  slicesInOrder-NonRect               BOOLEAN,
  slicesInOrder-Rect                  BOOLEAN,
  slicesNoOrder-NonRect               BOOLEAN,
  slicesNoOrder-Rect                  BOOLEAN,
  alternateInterVLCMode               BOOLEAN,
  modifiedQuantizationMode            BOOLEAN,
  reducedResolutionUpdate             BOOLEAN,
  transparencyParameters              TransparencyParameters OPTIONAL,
  separateVideoBackChannel            BOOLEAN,
  refPictureSelection                 RefPictureSelection OPTIONAL,
  customPictureClockFrequency
    SET SIZE (1..16) OF CustomPictureClockFrequency OPTIONAL,
  customPictureFormat
    SET SIZE (1..16) OF CustomPictureFormat OPTIONAL,
  modeCombos
    SET SIZE (1..16) OF H263VideoModeCombos OPTIONAL,
  ...,
  videoBadMBsCap                      BOOLEAN,
  h263Version3Options                 H263Version3Options}

TransparencyParameters ::= SEQUENCE {
  presentationOrder  INTEGER(1..256),
  offset-x           INTEGER(-262144..262143), -- 1/8 pixels
  offset-y           INTEGER(-262144..262143), -- 1/8 pixels
  scale-x            INTEGER(1..255),
  scale-y            INTEGER(1..255),
  ...}

RefPictureSelection ::= SEQUENCE {
  additionalPictureMemory
    SEQUENCE {sqcifAdditionalPictureMemory   INTEGER(1..256) OPTIONAL, -- units frame--
              qcifAdditionalPictureMemory    INTEGER(1..256) OPTIONAL, -- units frame--
              cifAdditionalPictureMemory     INTEGER(1..256) OPTIONAL, -- units frame--
              cif4AdditionalPictureMemory    INTEGER(1..256) OPTIONAL, -- units frame--
              cif16AdditionalPictureMemory   INTEGER(1..256) OPTIONAL, -- units frame--
              bigCpfAdditionalPictureMemory  INTEGER(1..256) OPTIONAL, -- units frame--
              ...} OPTIONAL,
  videoMux                       BOOLEAN,
  videoBackChannelSend
    CHOICE {none                  NULL,
            ackMessageOnly        NULL,
            nackMessageOnly       NULL,
            ackOrNackMessageOnly  NULL,
            ackAndNackMessage     NULL,
            ...},
  ...,
  enhancedReferencePicSelect
    SEQUENCE {subPictureRemovalParameters
                SEQUENCE {mpuHorizMBs     INTEGER(1..128),
                          mpuVertMBs      INTEGER(1..72),
                          mpuTotalNumber  INTEGER(1..65536),
                          ...} OPTIONAL,
              ...}}

CustomPictureClockFrequency ::= SEQUENCE {
  clockConversionCode  INTEGER(1000..1001),
  clockDivisor         INTEGER(1..127),
  sqcifMPI             INTEGER(1..2048) OPTIONAL,
  qcifMPI              INTEGER(1..2048) OPTIONAL,
  cifMPI               INTEGER(1..2048) OPTIONAL,
  cif4MPI              INTEGER(1..2048) OPTIONAL,
  cif16MPI             INTEGER(1..2048) OPTIONAL,
  ...}

CustomPictureFormat ::= SEQUENCE {
  maxCustomPictureWidth   INTEGER(1..2048), -- units 4 pixels
  maxCustomPictureHeight  INTEGER(1..2048), -- units 4 pixels
  minCustomPictureWidth   INTEGER(1..2048), -- units 4 pixels
  minCustomPictureHeight  INTEGER(1..2048), -- units 4 pixels
  mPI
    SEQUENCE {standardMPI  INTEGER(1..31) OPTIONAL,
              customPCF
                SET SIZE (1..16) OF
                  SEQUENCE {clockConversionCode  INTEGER(1000..1001),
                            clockDivisor         INTEGER(1..127),
                            customMPI            INTEGER(1..2048),
                            ...} OPTIONAL,
              ...},
  pixelAspectInformation
    CHOICE {anyPixelAspectRatio  BOOLEAN,
            pixelAspectCode      SET SIZE (1..14) OF INTEGER(1..14),
            extendedPAR
              SET SIZE (1..256) OF
                SEQUENCE {width   INTEGER(1..255),
                          height  INTEGER(1..255),
                          ...},
            ...},
  ...}

H263VideoModeCombos ::= SEQUENCE {
  h263VideoUncoupledModes  H263ModeComboFlags,
  h263VideoCoupledModes    SET SIZE (1..16) OF H263ModeComboFlags,
  ...}

H263ModeComboFlags ::= SEQUENCE {
  unrestrictedVector                  BOOLEAN,
  arithmeticCoding                    BOOLEAN,
  advancedPrediction                  BOOLEAN,
  pbFrames                            BOOLEAN,
  advancedIntraCodingMode             BOOLEAN,
  deblockingFilterMode                BOOLEAN,
  unlimitedMotionVectors              BOOLEAN,
  slicesInOrder-NonRect               BOOLEAN,
  slicesInOrder-Rect                  BOOLEAN,
  slicesNoOrder-NonRect               BOOLEAN,
  slicesNoOrder-Rect                  BOOLEAN,
  improvedPBFramesMode                BOOLEAN,
  referencePicSelect                  BOOLEAN,
  dynamicPictureResizingByFour        BOOLEAN,
  dynamicPictureResizingSixteenthPel  BOOLEAN,
  dynamicWarpingHalfPel               BOOLEAN,
  dynamicWarpingSixteenthPel          BOOLEAN,
  reducedResolutionUpdate             BOOLEAN,
  independentSegmentDecoding          BOOLEAN,
  alternateInterVLCMode               BOOLEAN,
  modifiedQuantizationMode            BOOLEAN,
  ...,
  enhancedReferencePicSelect          BOOLEAN,
  h263Version3Options                 H263Version3Options}

H263Version3Options ::= SEQUENCE {
  dataPartitionedSlices            BOOLEAN,
  fixedPointIDCT0                  BOOLEAN,
  interlacedFields                 BOOLEAN,
  currentPictureHeaderRepetition   BOOLEAN,
  previousPictureHeaderRepetition  BOOLEAN,
  nextPictureHeaderRepetition      BOOLEAN,
  pictureNumber                    BOOLEAN,
  spareReferencePictures           BOOLEAN,
  ...}

IS11172VideoCapability ::= SEQUENCE {
  constrainedBitstream  BOOLEAN,
  videoBitRate          INTEGER(0..1073741823) OPTIONAL, -- units 400 bit/s
  vbvBufferSize         INTEGER(0..262143) OPTIONAL, -- units 16 384 bits
  samplesPerLine        INTEGER(0..16383) OPTIONAL, -- units samples/line
  linesPerFrame         INTEGER(0..16383) OPTIONAL, -- units lines/frame
  pictureRate           INTEGER(0..15) OPTIONAL,
  luminanceSampleRate   INTEGER(0..4294967295) OPTIONAL, -- units samples/s
  ...,
  videoBadMBsCap        BOOLEAN}

-- =============================================================================
-- Capability exchange definitions: Audio capabilities
-- =============================================================================
-- For an H.222 multiplex, the integers indicate the size of the STD buffer 
-- in units of 256 octets
-- For an H.223 multiplex, the integers indicate the maximum number of audio 
-- frames per AL-SDU
-- For an H.225.0 multiplex, the integers indicate the maximum number of audio 
-- frames per packet
AudioCapability ::= CHOICE {
  nonStandard             NonStandardParameter,
  g711Alaw64k             INTEGER(1..256),
  g711Alaw56k             INTEGER(1..256),
  g711Ulaw64k             INTEGER(1..256),
  g711Ulaw56k             INTEGER(1..256),
  g722-64k                INTEGER(1..256),
  g722-56k                INTEGER(1..256),
  g722-48k                INTEGER(1..256),
  g7231
    SEQUENCE {maxAl-sduAudioFrames  INTEGER(1..256),
              silenceSuppression    BOOLEAN},
  g728                    INTEGER(1..256),
  g729                    INTEGER(1..256),
  g729AnnexA              INTEGER(1..256),
  is11172AudioCapability  IS11172AudioCapability,
  is13818AudioCapability  IS13818AudioCapability,
  ...,
  g729wAnnexB             INTEGER(1..256),
  g729AnnexAwAnnexB       INTEGER(1..256),
  g7231AnnexCCapability   G7231AnnexCCapability,
  gsmFullRate             GSMAudioCapability,
  gsmHalfRate             GSMAudioCapability,
  gsmEnhancedFullRate     GSMAudioCapability,
  genericAudioCapability  GenericCapability,
  g729Extensions          G729Extensions,
  vbd                     VBDCapability,
  audioTelephonyEvent     NoPTAudioTelephonyEventCapability,
  audioTone               NoPTAudioToneCapability}

G729Extensions ::= SEQUENCE {
  audioUnit  INTEGER(1..256) OPTIONAL,
  annexA     BOOLEAN,
  annexB     BOOLEAN,
  annexD     BOOLEAN,
  annexE     BOOLEAN,
  annexF     BOOLEAN,
  annexG     BOOLEAN,
  annexH     BOOLEAN,
  ...}

G7231AnnexCCapability ::= SEQUENCE {
  maxAl-sduAudioFrames  INTEGER(1..256),
  silenceSuppression    BOOLEAN,
  g723AnnexCAudioMode
    SEQUENCE {highRateMode0  INTEGER(27..78), -- units octets--
              highRateMode1  INTEGER(27..78), -- units octets--
              lowRateMode0   INTEGER(23..66), -- units octets--
              lowRateMode1   INTEGER(23..66), -- units octets--
              sidMode0       INTEGER(6..17), -- units octets--
              sidMode1       INTEGER(6..17), -- units octets--
              ...} OPTIONAL,
  ...}

IS11172AudioCapability ::= SEQUENCE {
  audioLayer1        BOOLEAN,
  audioLayer2        BOOLEAN,
  audioLayer3        BOOLEAN,
  audioSampling32k   BOOLEAN,
  audioSampling44k1  BOOLEAN,
  audioSampling48k   BOOLEAN,
  singleChannel      BOOLEAN,
  twoChannels        BOOLEAN,
  bitRate            INTEGER(1..448), -- units kbit/s
  ...}

IS13818AudioCapability ::= SEQUENCE {
  audioLayer1              BOOLEAN,
  audioLayer2              BOOLEAN,
  audioLayer3              BOOLEAN,
  audioSampling16k         BOOLEAN,
  audioSampling22k05       BOOLEAN,
  audioSampling24k         BOOLEAN,
  audioSampling32k         BOOLEAN,
  audioSampling44k1        BOOLEAN,
  audioSampling48k         BOOLEAN,
  singleChannel            BOOLEAN,
  twoChannels              BOOLEAN,
  threeChannels2-1         BOOLEAN,
  threeChannels3-0         BOOLEAN,
  fourChannels2-0-2-0      BOOLEAN,
  fourChannels2-2          BOOLEAN,
  fourChannels3-1          BOOLEAN,
  fiveChannels3-0-2-0      BOOLEAN,
  fiveChannels3-2          BOOLEAN,
  lowFrequencyEnhancement  BOOLEAN,
  multilingual             BOOLEAN,
  bitRate                  INTEGER(1..1130), -- units kbit/s
  ...}

GSMAudioCapability ::= SEQUENCE {
  audioUnitSize  INTEGER(1..256),
  comfortNoise   BOOLEAN,
  scrambled      BOOLEAN,
  ...}

VBDCapability ::= SEQUENCE {type  AudioCapability, -- shall not be "vbd"
                            ...}

-- =============================================================================
-- Capability exchange definitions: Data capabilities
-- =============================================================================
DataApplicationCapability ::= SEQUENCE {
  application
    CHOICE {nonStandard            NonStandardParameter,
            t120                   DataProtocolCapability,
            dsm-cc                 DataProtocolCapability,
            userData               DataProtocolCapability,
            t84
              SEQUENCE {t84Protocol  DataProtocolCapability,
                        t84Profile   T84Profile},
            t434                   DataProtocolCapability,
            h224                   DataProtocolCapability,
            nlpid
              SEQUENCE {nlpidProtocol  DataProtocolCapability,
                        nlpidData      OCTET STRING},
            dsvdControl            NULL,
            h222DataPartitioning   DataProtocolCapability,
            ...,
            t30fax                 DataProtocolCapability,
            t140                   DataProtocolCapability,
            t38fax
              SEQUENCE {t38FaxProtocol  DataProtocolCapability,
                        t38FaxProfile   T38FaxProfile},
            genericDataCapability  GenericCapability},
  maxBitRate   INTEGER(0..4294967295), -- units 100 bit/s
  ...}

DataProtocolCapability ::= CHOICE {
  nonStandard                NonStandardParameter,
  v14buffered                NULL,
  v42lapm                    NULL, -- may negotiate to V.42 bis
  hdlcFrameTunnelling        NULL,
  h310SeparateVCStack        NULL,
  h310SingleVCStack          NULL,
  transparent                NULL,
  ...,
  segmentationAndReassembly  NULL,
  hdlcFrameTunnelingwSAR     NULL,
  v120                       NULL, -- as in H.230
  separateLANStack           NULL,
  v76wCompression
    CHOICE {transmitCompression            CompressionType,
            receiveCompression             CompressionType,
            transmitAndReceiveCompression  CompressionType,
            ...},
  tcp                        NULL,
  udp                        NULL}

CompressionType ::= CHOICE {v42bis  V42bis,
                            ...}

V42bis ::= SEQUENCE {
  numberOfCodewords    INTEGER(1..65536),
  maximumStringLength  INTEGER(1..256),
  ...}

T84Profile ::= CHOICE {
  t84Unrestricted  NULL,
  t84Restricted
    SEQUENCE {qcif              BOOLEAN,
              cif               BOOLEAN,
              ccir601Seq        BOOLEAN,
              ccir601Prog       BOOLEAN,
              hdtvSeq           BOOLEAN,
              hdtvProg          BOOLEAN,
              g3FacsMH200x100   BOOLEAN,
              g3FacsMH200x200   BOOLEAN,
              g4FacsMMR200x100  BOOLEAN,
              g4FacsMMR200x200  BOOLEAN,
              jbig200x200Seq    BOOLEAN,
              jbig200x200Prog   BOOLEAN,
              jbig300x300Seq    BOOLEAN,
              jbig300x300Prog   BOOLEAN,
              digPhotoLow       BOOLEAN,
              digPhotoMedSeq    BOOLEAN,
              digPhotoMedProg   BOOLEAN,
              digPhotoHighSeq   BOOLEAN,
              digPhotoHighProg  BOOLEAN,
              ...}}

T38FaxProfile ::= SEQUENCE {
  fillBitRemoval           BOOLEAN,
  transcodingJBIG          BOOLEAN,
  transcodingMMR           BOOLEAN,
  ...,
  version                  INTEGER(0..255),
  -- Version 0, the default, refers to 
  -- T.38 (2005)
  t38FaxRateManagement     T38FaxRateManagement,
  -- The default Data Rate Management is
  -- determined by the choice of
  -- DataProtocolCapability
  t38FaxUdpOptions         T38FaxUdpOptions OPTIONAL,
  -- For UDP, t38UDPRedundancy is the default
  t38FaxTcpOptions         T38FaxTcpOptions OPTIONAL}

T38FaxRateManagement ::= CHOICE {
  localTCF        NULL,
  transferredTCF  NULL,
  ...}

T38FaxUdpOptions ::= SEQUENCE {
  t38FaxMaxBuffer    INTEGER OPTIONAL,
  t38FaxMaxDatagram  INTEGER OPTIONAL,
  t38FaxUdpEC
    CHOICE {t38UDPFEC         NULL,
            t38UDPRedundancy  NULL,
            ...}}

T38FaxTcpOptions ::= SEQUENCE {t38TCPBidirectionalMode  BOOLEAN,
                               ...}

-- =============================================================================
-- Encryption Capability Definitions
-- =============================================================================
EncryptionAuthenticationAndIntegrity ::= SEQUENCE {
  encryptionCapability              EncryptionCapability OPTIONAL,
  authenticationCapability          AuthenticationCapability OPTIONAL,
  integrityCapability               IntegrityCapability OPTIONAL,
  ...,
  genericH235SecurityCapability     GenericCapability OPTIONAL}

EncryptionCapability ::= SEQUENCE SIZE (1..256) OF MediaEncryptionAlgorithm

MediaEncryptionAlgorithm ::= CHOICE {
  nonStandard  NonStandardParameter,
  algorithm    OBJECT IDENTIFIER, -- many defined 
  
  -- in ISO/IEC 9979
  ...}

AuthenticationCapability ::= SEQUENCE {
  nonStandard           NonStandardParameter OPTIONAL,
  ...,
  antiSpamAlgorithm     OBJECT IDENTIFIER OPTIONAL}

IntegrityCapability ::= SEQUENCE {
  nonStandard  NonStandardParameter OPTIONAL,
  ...}

-- =============================================================================
-- Capability Exchange Definitions: UserInput
-- =============================================================================
UserInputCapability ::= CHOICE {
  nonStandard                 SEQUENCE SIZE (1..16) OF NonStandardParameter,
  basicString                 NULL, -- alphanumeric
  iA5String                   NULL, -- alphanumeric
  generalString               NULL, -- alphanumeric
  dtmf                        NULL, -- supports dtmf using signal 
  
  -- and signalUpdate
  hookflash                   NULL, -- supports hookflash using signal
  ...,
  extendedAlphanumeric        NULL,
  encryptedBasicString        NULL, -- encrypted Basic string in 
  
  -- encryptedAlphanumeric
  encryptedIA5String          NULL, -- encrypted IA5 string in 
  
  -- encryptedSignalType
  encryptedGeneralString      NULL, -- encrypted general string in
  
  -- extendedAlphanumeric.encryptedalphanumeric
  secureDTMF                  NULL, -- secure DTMF using encryptedSignalType
  genericUserInputCapability  GenericCapability}

-- =============================================================================
-- Capability Exchange Definitions: Conference
-- =============================================================================
ConferenceCapability ::= SEQUENCE {
  nonStandardData
    SEQUENCE OF NonStandardParameter OPTIONAL,
  chairControlCapability                BOOLEAN,
  ...,
  videoIndicateMixingCapability         BOOLEAN,
  multipointVisualizationCapability     BOOLEAN OPTIONAL -- same as H.230 MVC--}

-- =============================================================================
-- Capability Exchange Definitions: Generic Capability
-- =============================================================================
GenericCapability ::= SEQUENCE {
  capabilityIdentifier  CapabilityIdentifier,
  maxBitRate            INTEGER(0..4294967295) OPTIONAL,
  -- Units 100 bit/s
  collapsing            SEQUENCE OF GenericParameter OPTIONAL,
  nonCollapsing         SEQUENCE OF GenericParameter OPTIONAL,
  nonCollapsingRaw      OCTET STRING OPTIONAL,
  -- Typically contains ASN.1
  -- PER encoded data describing capability
  transport             DataProtocolCapability OPTIONAL,
  ...}

CapabilityIdentifier ::= CHOICE {
  standard         OBJECT IDENTIFIER,
  -- e.g., { itu-t (0) recommendation (0) h (8) 267 
  -- version (0) 2 subIdentifier (0)}
  h221NonStandard  NonStandardParameter,
  uuid             OCTET STRING(SIZE (16)),
  domainBased      IA5String(SIZE (1..64)),
  ...}

-- NOTE - The ranges of parameter values have been selected to ensure that the 
-- GenericParameter preamble, standard part of ParameterIdentifier and the 
-- encoding of that choice, and the preamble of ParameterValue to fit into 
-- 2 octets.
GenericParameter ::= SEQUENCE {
  parameterIdentifier  ParameterIdentifier,
  parameterValue       ParameterValue,
  supersedes           SEQUENCE OF ParameterIdentifier OPTIONAL,
  ...}

ParameterIdentifier ::= CHOICE {
  standard         INTEGER(0..127), -- Assigned by 
  
  -- Capability 
  -- specifications
  h221NonStandard  NonStandardParameter, -- N.B. 
  
  -- NonStandardIdentifier 
  -- is not sufficient in 
  -- this case
  uuid             OCTET STRING(SIZE (16)), -- For non-
  
  -- standard
  domainBased      IA5String(SIZE (1..64)),
  ...}

ParameterValue ::= CHOICE {
  logical           NULL, -- Only acceptable if 
  
  -- all entities 
  -- include this option
  booleanArray      INTEGER(0..255), -- array of 8 logical 
  
  -- types
  unsignedMin       INTEGER(0..65535), -- Look for min 
  
  -- common value
  unsignedMax       INTEGER(0..65535), -- Look for max 
  
  -- common value
  unsigned32Min     INTEGER(0..4294967295), -- Look for min 
  
  -- common value
  unsigned32Max     INTEGER(0..4294967295), -- Look for max 
  
  -- common value
  octetString       OCTET STRING, -- non-collapsing 
  
  -- octet string
  genericParameter  SEQUENCE OF GenericParameter,
  ...}

-- =============================================================================
-- Capability Exchange Definitions: Multiplexed Stream Capability
-- =============================================================================
MultiplexedStreamCapability ::= SEQUENCE {
  multiplexFormat        MultiplexFormat,
  controlOnMuxStream     BOOLEAN,
  capabilityOnMuxStream  SET SIZE (1..256) OF AlternativeCapabilitySet OPTIONAL,
  ...}

MultiplexFormat ::= CHOICE {
  nonStandard     NonStandardParameter,
  h222Capability  H222Capability,
  h223Capability  H223Capability,
  ...}

-- =============================================================================
-- Capability Exchange Definitions: AudioTelephonyEventCapability and AudioToneCapability
--==============================================================================
AudioTelephonyEventCapability ::= SEQUENCE {
  dynamicRTPPayloadType  INTEGER(96..127),
  audioTelephoneEvent    GeneralString, -- As per <list of values> 
  
  -- in 3.9/RFC 2833
  ...}

AudioToneCapability ::= SEQUENCE {dynamicRTPPayloadType  INTEGER(96..127),
                                  ...}

-- The following definitions are as above but without a Payload Type field.
NoPTAudioTelephonyEventCapability ::= SEQUENCE {
  audioTelephoneEvent  GeneralString, -- As per <list of values> 
  
  -- in 3.9/RFC 2833
  ...}

NoPTAudioToneCapability ::= SEQUENCE {...}

-- =============================================================================
-- Capability Exchange Definitions: MultiplePayloadStreamCapability
-- =============================================================================
MultiplePayloadStreamCapability ::= SEQUENCE {
  capabilities  SET SIZE (1..256) OF AlternativeCapabilitySet,
  ...}

-- =============================================================================
-- Capability Exchange Definitions: FECCapability
-- =============================================================================
DepFECCapability ::= CHOICE -- Deprecated, do not use
                      {
  rfc2733
    SEQUENCE {redundancyEncoding  BOOLEAN,
              separateStream
                SEQUENCE {separatePort  BOOLEAN,
                          samePort      BOOLEAN,
                          ...},
              ...},
  ...}

FECCapability ::= SEQUENCE {
  protectedCapability  CapabilityTableEntryNumber,
  fecScheme            OBJECT IDENTIFIER OPTIONAL,
  -- identifies encoding scheme
  rfc2733Format
    CHOICE {rfc2733rfc2198   MaxRedundancy, -- RFC2198 --
            rfc2733sameport  MaxRedundancy,
            -- separate packet, same port
            rfc2733diffport  MaxRedundancy
            -- separate packet and port--} OPTIONAL,
  ...}

MaxRedundancy ::= INTEGER(1..MAX)

-- =============================================================================
-- Logical channel signalling definitions
-- =============================================================================
-- "Forward" is used to refer to transmission in the direction from the terminal 
-- making the original request for a logical channel to the other terminal, and 
-- "reverse" is used to refer to the opposite direction of transmission, in the 
-- case of a bidirectional channel request.
OpenLogicalChannel ::= SEQUENCE {
  forwardLogicalChannelNumber      LogicalChannelNumber,
  forwardLogicalChannelParameters
    SEQUENCE {portNumber                          INTEGER(0..65535) OPTIONAL,
              dataType                            DataType,
              multiplexParameters
                CHOICE {h222LogicalChannelParameters
                          H222LogicalChannelParameters,
                        h223LogicalChannelParameters
                          H223LogicalChannelParameters,
                        v76LogicalChannelParameters
                          V76LogicalChannelParameters,
                        ...,
                        h2250LogicalChannelParameters
                          H2250LogicalChannelParameters,
                        none
                          NULL-- for use with Separate Stack when--
                        -- multiplexParameters are not 
                        -- required or appropriate--},
              ...,
              forwardLogicalChannelDependency     LogicalChannelNumber OPTIONAL,
              -- also used to refer to the primary 
              -- logical channel when using video 
              -- redundancy coding
              replacementFor                      LogicalChannelNumber OPTIONAL},
  -- Used to specify the reverse channel for bidirectional open request
  reverseLogicalChannelParameters
    SEQUENCE {dataType                            DataType,
              multiplexParameters
                CHOICE {-- H.222 parameters are never present in reverse direction
                        h223LogicalChannelParameters
                          H223LogicalChannelParameters,
                        v76LogicalChannelParameters
                          V76LogicalChannelParameters,
                        ...,
                        h2250LogicalChannelParameters
                          H2250LogicalChannelParameters} OPTIONAL, -- Not present for H.222--
              ...,
              reverseLogicalChannelDependency     LogicalChannelNumber OPTIONAL,
              <