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,
            -- also used to refer to the primary logical channel when using 
            -- video redundancy coding
        replacementFor  LogicalChannelNumber OPTIONAL

    } OPTIONAL, -- Not present for unidirectional channel request
    ...,
    separateStack   NetworkAccessParameters OPTIONAL,
                -- for Open responder to establish the stack
    encryptionSync  EncryptionSync OPTIONAL,
        genericInformation          SEQUENCE OF GenericInformation OPTIONAL
                                    -- generic information associated 
                                    -- with the message


}

LogicalChannelNumber    ::=INTEGER (1..65535)

NetworkAccessParameters ::=SEQUENCE
{
    distribution    CHOICE
    {
        unicast NULL,
        multicast   NULL,   -- for further study in T.120
        ...
    } OPTIONAL,

    networkAddress  CHOICE
    {
        q2931Address    Q2931Address,
        e164Address IA5String(SIZE(1..128)) (FROM ("0123456789#*,")),
        localAreaAddress    TransportAddress,
        ...
    },
    associateConference BOOLEAN,
    externalReference   OCTET STRING(SIZE(1..255)) OPTIONAL,
    ...,
    t120SetupProcedure  CHOICE
    {

        originateCall   NULL,
        waitForCall NULL,
        issueQuery  NULL,
        ...
    } OPTIONAL
}

Q2931Address        ::=SEQUENCE
{
    address     CHOICE
    {
        internationalNumber NumericString(SIZE(1..16)),
        nsapAddress OCTET STRING (SIZE(1..20)),
        ...
    },
    subaddress  OCTET STRING (SIZE(1..20)) OPTIONAL,
    ...
}

V75Parameters       ::= SEQUENCE
{
    audioHeaderPresent  BOOLEAN,
     ...
}   


DataType                ::=CHOICE
{
    nonStandard NonStandardParameter,
    nullData        NULL,
    videoData   VideoCapability,    
    audioData   AudioCapability,
    data            DataApplicationCapability,
    encryptionData  EncryptionMode,
    ...,
    h235Control NonStandardParameter,
    h235Media   H235Media,
    multiplexedStream   MultiplexedStreamParameter,
    redundancyEncoding  RedundancyEncoding,
    multiplePayloadStream   MultiplePayloadStream,
    depFec      DepFECData, -- Deprecated, do not use
    fec         FECData
}

H235Media           ::=SEQUENCE
{
    encryptionAuthenticationAndIntegrity    EncryptionAuthenticationAndIntegrity,

    mediaType   CHOICE
    {
        nonStandard NonStandardParameter,
        videoData   VideoCapability,    
        audioData   AudioCapability,
        data        DataApplicationCapability,
        ...,
        redundancyEncoding  RedundancyEncoding,
        multiplePayloadStream   MultiplePayloadStream,
        depFec  DepFECData, -- Deprecated, do not use
        fec         FECData
    },

    ...
}

MultiplexedStreamParameter  ::=SEQUENCE
{
    multiplexFormat MultiplexFormat,
    controlOnMuxStream  BOOLEAN,
    ...
}

H222LogicalChannelParameters    ::=SEQUENCE
{
    resourceID  INTEGER (0..65535),
    subChannelID    INTEGER (0..8191),
    pcr-pid     INTEGER (0..8191) OPTIONAL,
    programDescriptors  OCTET STRING OPTIONAL,
    streamDescriptors   OCTET STRING OPTIONAL,
    ...
}

H223LogicalChannelParameters    ::=SEQUENCE
{
    adaptationLayerType CHOICE
    {
        nonStandard NonStandardParameter,
        al1Framed   NULL,
        al1NotFramed    NULL,
        al2WithoutSequenceNumbers   NULL,
        al2WithSequenceNumbers  NULL,
        al3         SEQUENCE
        {
            controlFieldOctets  INTEGER (0..2),
            sendBufferSize  INTEGER (0..16777215)   -- units octets
        },
        ...,
        al1M        H223AL1MParameters,
        al2M        H223AL2MParameters,
        al3M        H223AL3MParameters
    },

    segmentableFlag BOOLEAN,
    ...
}   

H223AL1MParameters  ::=SEQUENCE
{
    transferMode    CHOICE
    {
        framed  NULL,
        unframed    NULL,
        ...
    },
    headerFEC   CHOICE
    {
        sebch16-7   NULL,
        golay24-12  NULL,
        ...
    },
    crcLength   CHOICE
    {
        crc4bit NULL,
        crc12bit    NULL,
        crc20bit    NULL,
        crc28bit    NULL,
        ...,
        crc8bit NULL,
        crc16bit    NULL,
        crc32bit    NULL,
        crcNotUsed  NULL
    },

    rcpcCodeRate    INTEGER (8..32),

    arqType     CHOICE
    {
        noArq       NULL,
        typeIArq    H223AnnexCArqParameters,
        typeIIArq   H223AnnexCArqParameters,
        ...
    },
    alpduInterleaving   BOOLEAN,
    alsduSplitting  BOOLEAN,
    ...,
    rsCodeCorrection    INTEGER (0..127) OPTIONAL
}

H223AL2MParameters  ::=SEQUENCE
{
    headerFEC   CHOICE
    {
        sebch16-5   NULL,
        golay24-12  NULL,
        ...
    },
    alpduInterleaving   BOOLEAN,
    ...
}

H223AL3MParameters  ::=SEQUENCE
{
    headerFormat    CHOICE
    {
        sebch16-7   NULL,
        golay24-12  NULL,
        ...
    },
    crcLength   CHOICE
    {
        crc4bit NULL,
        crc12bit    NULL,
        crc20bit    NULL,
        crc28bit    NULL,
        ...,
        crc8bit NULL,
        crc16bit    NULL,
        crc32bit    NULL,
        crcNotUsed  NULL
    },

    rcpcCodeRate    INTEGER (8..32),

    arqType     CHOICE
    {
        noArq       NULL,
        typeIArq    H223AnnexCArqParameters,
        typeIIArq   H223AnnexCArqParameters,
        ...
    },
    
    alpduInterleaving   BOOLEAN,
    ...,
    rsCodeCorrection    INTEGER (0..127) OPTIONAL
}
    

H223AnnexCArqParameters ::=SEQUENCE
{
    numberOfRetransmissions CHOICE
    {
        finite  INTEGER (0..16),
        infinite    NULL,
        ...
    },
    sendBufferSize  INTEGER (0..16777215),     -- units octets
    ...
}

V76LogicalChannelParameters ::=SEQUENCE
{
    hdlcParameters  V76HDLCParameters,
    suspendResume   CHOICE
    { 
        noSuspendResume NULL,
        suspendResumewAddress   NULL,
        suspendResumewoAddress      NULL,
        ...
    },
    uIH         BOOLEAN,
    mode            CHOICE
    {
        eRM         SEQUENCE
        {
            windowSize  INTEGER (1..127) ,
            recovery    CHOICE
            {
                rej NULL,
                sREJ    NULL,
                mSREJ   NULL,
                ...
            },
            ...
        },
        uNERM       NULL,
        ...
    },
    v75Parameters   V75Parameters,
    ...
}



V76HDLCParameters   ::=SEQUENCE
{
    crcLength   CRCLength,
    n401            INTEGER (1..4095),
    loopbackTestProcedure   BOOLEAN,
    ...
}


CRCLength           ::=CHOICE
{
    crc8bit     NULL,
    crc16bit        NULL,
    crc32bit        NULL,
    ...
}

H2250LogicalChannelParameters   ::=SEQUENCE
{
    nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
    sessionID   INTEGER(0..255),
    associatedSessionID INTEGER(1..255) OPTIONAL,
    mediaChannel    TransportAddress OPTIONAL,
    mediaGuaranteedDelivery BOOLEAN OPTIONAL,
    mediaControlChannel TransportAddress OPTIONAL, -- reverse 
                                 -- RTCP channel
    mediaControlGuaranteedDelivery  BOOLEAN OPTIONAL,
    silenceSuppression  BOOLEAN OPTIONAL,
    destination TerminalLabel OPTIONAL,
    
    dynamicRTPPayloadType   INTEGER(96..127) OPTIONAL,
    mediaPacketization  CHOICE
    {
        h261aVideoPacketization NULL,
        ...,
        rtpPayloadType  RTPPayloadType
    } OPTIONAL,
    ...,
    transportCapability TransportCapability OPTIONAL,
    redundancyEncoding  RedundancyEncoding OPTIONAL,
    source      TerminalLabel OPTIONAL
}

RTPPayloadType      ::= SEQUENCE
{
    payloadDescriptor   CHOICE
    {
        nonStandardIdentifier   NonStandardParameter,
        rfc-number  INTEGER (1..32768, ...),
        oid         OBJECT IDENTIFIER,
        ...
    },
    payloadType INTEGER (0..127) OPTIONAL,
    ...
}

RedundancyEncoding  ::=SEQUENCE
{
    redundancyEncodingMethod    RedundancyEncodingMethod,
    secondaryEncoding   DataType OPTIONAL,  -- depends on method
    ...,

    -- The sequence below may be used in place of the above secondaryEncoding field

    rtpRedundancyEncoding   SEQUENCE
    {
        primary RedundancyEncodingElement OPTIONAL,
                    -- Present when redundancyEncoding
                    -- is selected as the dataType
                    -- in an OpenLogicalChannel or
                    -- as part of a MultiplePayloadSteam

        secondary   SEQUENCE OF RedundancyEncodingElement OPTIONAL,
        ...
    } OPTIONAL
}

RedundancyEncodingElement   ::=SEQUENCE
{
    dataType        DataType,
    payloadType INTEGER(0..127) OPTIONAL,
    ...
}

MultiplePayloadStream   ::=SEQUENCE
{
    elements        SEQUENCE OF MultiplePayloadStreamElement,
    ...
}

MultiplePayloadStreamElement    ::=SEQUENCE
{
    dataType        DataType,
    payloadType INTEGER(0..127) OPTIONAL,
    ...
}

DepFECData          ::=CHOICE -- Deprecated, do not use
{
    rfc2733     SEQUENCE
    {
        mode        CHOICE
        {
            redundancyEncoding  NULL,
            separateStream  CHOICE
            {
                differentPort   SEQUENCE
                {
                protectedSessionID  INTEGER(1..255),
                protectedPayloadType    INTEGER(0..127) OPTIONAL,
                  ...
                },
                samePort    SEQUENCE
                {
                protectedPayloadType    INTEGER(0..127),
                  ...
                },
                ...
            },
            ...
        },
        ...
    }
}

FECData             ::= CHOICE
{
    rfc2733         SEQUENCE
    {
        protectedPayloadType    INTEGER(0..127), 
        fecScheme   OBJECT IDENTIFIER OPTIONAL, 
        pktMode CHOICE
        {
            rfc2198coding   NULL, 
            rfc2733sameport SEQUENCE
            {
                ... 
            },
            rfc2733diffport SEQUENCE
            {
                protectedChannel    LogicalChannelNumber, 
                ... 
            },
            ... 
        },
        ... 
    },
    ... 
}

TransportAddress    ::=CHOICE
{
    unicastAddress  UnicastAddress,
    multicastAddress    MulticastAddress,
    ...
}

UnicastAddress      ::=CHOICE
{
    iPAddress   SEQUENCE
    {
        network OCTET STRING (SIZE(4)),
        tsapIdentifier  INTEGER(0..65535),
        ...
    },
    iPXAddress  SEQUENCE
    {
        node        OCTET STRING (SIZE(6)),
        netnum  OCTET STRING (SIZE(4)),
        tsapIdentifier  OCTET STRING (SIZE(2)),
        ...
    },
    iP6Address  SEQUENCE
    {
        network OCTET STRING (SIZE(16)),
        tsapIdentifier  INTEGER(0..65535), 
        ...
    },
    netBios     OCTET STRING (SIZE(16)),
    iPSourceRouteAddress    SEQUENCE
    {
        routing CHOICE
        {
            strict  NULL,
            loose   NULL
        },
        network OCTET STRING (SIZE(4)),
        tsapIdentifier  INTEGER(0..65535),
        route       SEQUENCE OF OCTET STRING (SIZE(4)),
        ...
    },
    ...,
    nsap            OCTET STRING (SIZE(1..20)),
    nonStandardAddress  NonStandardParameter
}

MulticastAddress    ::=CHOICE
{
    iPAddress   SEQUENCE
    {
        network OCTET STRING (SIZE(4)),
        tsapIdentifier  INTEGER(0..65535),
        ...
    },
    iP6Address  SEQUENCE
    {
        network OCTET STRING (SIZE(16)),
        tsapIdentifier  INTEGER(0..65535), 
        ...
    },
    ...,
    nsap            OCTET STRING (SIZE(1..20)),
    nonStandardAddress  NonStandardParameter
}

EncryptionSync      ::=SEQUENCE 
                     -- used to supply new key and synchronization point
{
    nonStandard             NonStandardParameter OPTIONAL,
    synchFlag   INTEGER(0..255) , -- may need to be larger 
                                      -- for H.324, etc.
                                      -- shall be the Dynamic 
                                      -- Payload# for H.323 
    h235Key     OCTET STRING (SIZE(1..65535)), -- H.235.0 
                        -- encoded value
    escrowentry SEQUENCE SIZE(1..256) OF EscrowData OPTIONAL,
    ...,
    genericParameter    GenericParameter OPTIONAL
}

EscrowData          ::=SEQUENCE
{
    escrowID        OBJECT IDENTIFIER,
    escrowValue BIT STRING (SIZE(1..65535)),
    ...
}

OpenLogicalChannelAck   ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,

    reverseLogicalChannelParameters SEQUENCE
    {
        reverseLogicalChannelNumber LogicalChannelNumber,
        portNumber  INTEGER (0..65535) OPTIONAL,
        multiplexParameters CHOICE
        {
            h222LogicalChannelParameters    H222LogicalChannelParameters,
            -- H.223 parameters are never present in reverse direction
            ...,
            h2250LogicalChannelParameters H2250LogicalChannelParameters

        } OPTIONAL, -- not present for H.223
        ...,
        replacementFor  LogicalChannelNumber OPTIONAL

    } OPTIONAL, -- not present for unidirectional channel 
                    -- request
    ...,
    separateStack   NetworkAccessParameters OPTIONAL, 
                    -- for Open requester to establish 
                    -- the stack
    forwardMultiplexAckParameters   CHOICE
    {
        -- H.222 parameters are never present in the Ack
        -- H.223 parameters are never present in the Ack
        -- V.76 parameters are never present in the Ack
        h2250LogicalChannelAckParameters H2250LogicalChannelAckParameters,
        ...
    } OPTIONAL,
    encryptionSync  EncryptionSync OPTIONAL, -- used only by Master 
    genericInformation          SEQUENCE OF GenericInformation OPTIONAL
                                    -- generic information associated 
                                    -- with the message
}

OpenLogicalChannelReject    ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    cause           CHOICE
    {
        unspecified NULL,
        unsuitableReverseParameters NULL,
        dataTypeNotSupported    NULL,
        dataTypeNotAvailable    NULL,
        unknownDataType NULL,
        dataTypeALCombinationNotSupported   NULL,
        ...,
        multicastChannelNotAllowed  NULL,
        insufficientBandwidth   NULL,
        separateStackEstablishmentFailed    NULL,
        invalidSessionID    NULL,
        masterSlaveConflict NULL,
        waitForCommunicationMode    NULL,
        invalidDependentChannel NULL,
        replacementForRejected  NULL,
        securityDenied  NULL
    },
    ...,
        genericInformation          SEQUENCE OF GenericInformation OPTIONAL
                                    -- generic information associated 
                                    -- with the message
}

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

H2250LogicalChannelAckParameters    ::=SEQUENCE
{
    nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
    sessionID   INTEGER(1..255) OPTIONAL,
    mediaChannel    TransportAddress OPTIONAL,
    mediaControlChannel TransportAddress OPTIONAL, -- forward RTCP 
                             -- channel
    dynamicRTPPayloadType   INTEGER(96..127) OPTIONAL, -- used only by 
                             -- the master or 
                                -- MC
    ...,
    flowControlToZero   BOOLEAN,
    portNumber  INTEGER (0..65535) OPTIONAL
}



CloseLogicalChannel ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    source      CHOICE
    {
        user        NULL,
        lcse        NULL
    },
    ...,
    reason      CHOICE
    {
        unknown NULL,
        reopen  NULL,
        reservationFailure  NULL,
        ...
    }
}

CloseLogicalChannelAck  ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    ...
}

RequestChannelClose ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    ...,
    qosCapability   QOSCapability OPTIONAL,
    reason      CHOICE
    {
        unknown NULL,
        normal  NULL,
        reopen  NULL,
        reservationFailure  NULL,
        ...
    }
}

RequestChannelCloseAck  ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    ...
}

RequestChannelCloseReject   ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    cause           CHOICE
    {
        unspecified NULL,
        ...
    },
    ...
}

RequestChannelCloseRelease  ::=SEQUENCE
{
    forwardLogicalChannelNumber LogicalChannelNumber,
    ...
}

-- =============================================================================
-- H.223 multiplex table definitions
-- =============================================================================

MultiplexEntrySend  ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    multiplexEntryDescriptors   SET SIZE (1..15) OF MultiplexEntryDescriptor,
    ...
}

MultiplexEntryDescriptor    ::=SEQUENCE
{
    multiplexTableEntryNumber   MultiplexTableEntryNumber,
    elementList SEQUENCE SIZE (1..256) OF MultiplexElement OPTIONAL
}

MultiplexElement    ::=SEQUENCE
{
    type            CHOICE
    {
        logicalChannelNumber    INTEGER(0..65535),
        subElementList  SEQUENCE SIZE (2..255) OF MultiplexElement
    },
    repeatCount CHOICE
    {
        finite  INTEGER (1..65535), -- repeats of type
        untilClosingFlag    NULL    -- used for last element 
    }
}

MultiplexTableEntryNumber   ::=INTEGER (1..15)

MultiplexEntrySendAck   ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    multiplexTableEntryNumber   SET SIZE (1..15) OF 
                    MultiplexTableEntryNumber,
    ...
}

MultiplexEntrySendReject    ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    rejectionDescriptions   SET SIZE (1..15) OF 
                    MultiplexEntryRejectionDescriptions,
    ...
}

MultiplexEntryRejectionDescriptions ::=SEQUENCE
{
    multiplexTableEntryNumber   MultiplexTableEntryNumber,
    cause           CHOICE
    {
        unspecifiedCause    NULL,
        descriptorTooComplex    NULL,
        ...
    },
    ...
}

MultiplexEntrySendRelease   ::=SEQUENCE
{
    multiplexTableEntryNumber   SET SIZE (1..15) OF 
                    MultiplexTableEntryNumber,
    ...
}

RequestMultiplexEntry   ::=SEQUENCE
{
    entryNumbers    SET SIZE (1..15) OF 
                    MultiplexTableEntryNumber,
    ...
}

RequestMultiplexEntryAck    ::=SEQUENCE
{
    entryNumbers        SET SIZE (1..15) OF MultiplexTableEntryNumber,
    ...
}

RequestMultiplexEntryReject ::=SEQUENCE
{
    entryNumbers    SET SIZE (1..15) OF 
                        MultiplexTableEntryNumber,
    rejectionDescriptions   SET SIZE (1..15) OF 
                    RequestMultiplexEntryRejectionDescriptions,
    ...
}

RequestMultiplexEntryRejectionDescriptions  ::=SEQUENCE
{
    multiplexTableEntryNumber   MultiplexTableEntryNumber,
    cause           CHOICE
    {
        unspecifiedCause    NULL,
        ...
    },
    ...
}

RequestMultiplexEntryRelease    ::=SEQUENCE
{
    entryNumbers    SET SIZE (1..15) OF 
                    MultiplexTableEntryNumber,
    ...
}

-- =============================================================================
-- Request mode definitions
-- =============================================================================

-- RequestMode is a list, in order or preference, of modes that a terminal would 
-- like to have transmitted to it.

RequestMode         ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    requestedModes  SEQUENCE SIZE (1..256) OF ModeDescription,
    ...
}

RequestModeAck      ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    response        CHOICE
    {
        willTransmitMostPreferredMode   NULL,
        willTransmitLessPreferredMode   NULL,
        ...
    },
    ...
}

RequestModeReject   ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    cause           CHOICE
    {
        modeUnavailable NULL,
        multipointConstraint    NULL,
        requestDenied   NULL,
        ...
    },
    ...
}

RequestModeRelease  ::=SEQUENCE
{
    ...
}

-- =============================================================================
-- Request mode definitions: Mode description
-- =============================================================================

ModeDescription ::=SET SIZE (1..256) OF ModeElement

ModeElementType     ::=CHOICE
{
    nonStandard NonStandardParameter,
    videoMode   VideoMode,
    audioMode   AudioMode,
    dataMode        DataMode,
    encryptionMode  EncryptionMode,
    ...,
    h235Mode        H235Mode,
    multiplexedStreamMode   MultiplexedStreamParameter,
    redundancyEncodingDTMode    RedundancyEncodingDTMode,
    multiplePayloadStreamMode   MultiplePayloadStreamMode,
    depFecMode  DepFECMode, -- deprecated, do not use
    fecMode FECMode
}

ModeElement         ::= SEQUENCE
{
    type            ModeElementType,

    h223ModeParameters  H223ModeParameters OPTIONAL,
    ...,
    v76ModeParameters   V76ModeParameters OPTIONAL,
    h2250ModeParameters H2250ModeParameters OPTIONAL,
    genericModeParameters   GenericCapability OPTIONAL,
    multiplexedStreamModeParameters MultiplexedStreamModeParameters OPTIONAL,
    logicalChannelNumber    LogicalChannelNumber OPTIONAL
                             
}

H235Mode                ::=SEQUENCE
{
    encryptionAuthenticationAndIntegrity    EncryptionAuthenticationAndIntegrity,

    mediaMode   CHOICE
    {
        nonStandard NonStandardParameter,
        videoMode   VideoMode,
        audioMode   AudioMode,
        dataMode    DataMode,
        ...
    },
    ...
}

MultiplexedStreamModeParameters ::=SEQUENCE
{
    logicalChannelNumber    LogicalChannelNumber,
    ...
}

RedundancyEncodingDTMode    ::=SEQUENCE
{
    redundancyEncodingMethod    RedundancyEncodingMethod,
    primary     RedundancyEncodingDTModeElement,
    secondary   SEQUENCE OF RedundancyEncodingDTModeElement,
    ...
}

RedundancyEncodingDTModeElement     ::=SEQUENCE
{
    type            CHOICE
    {
        nonStandard NonStandardParameter,
        videoMode   VideoMode,
        audioMode   AudioMode,
        dataMode    DataMode,
        encryptionMode  EncryptionMode,
        h235Mode    H235Mode,
        ...,
        fecMode FECMode
    },
    ...
}

MultiplePayloadStreamMode   ::=SEQUENCE
{
    elements        SEQUENCE OF MultiplePayloadStreamElementMode,
    ...
}

MultiplePayloadStreamElementMode    ::=SEQUENCE
{
    type            ModeElementType,
    ...
}

DepFECMode          ::=CHOICE -- deprecated, do not use
{
    rfc2733Mode SEQUENCE
    {
        mode        CHOICE
        {
            redundancyEncoding  NULL,
            separateStream  CHOICE
            {
                differentPort   SEQUENCE
                {
                    protectedSessionID  INTEGER(1..255),
                    protectedPayloadType    INTEGER(0..127) OPTIONAL,
                   ...
                },
                samePort    SEQUENCE
                {
                    protectedType   ModeElementType,
                   ...
                },
                ...
            },
            ...
        },
        ...
    },
    ...
}

FECMode                 ::= SEQUENCE
{
    protectedElement    ModeElementType, 
    fecScheme   OBJECT IDENTIFIER OPTIONAL,
                      -- identifies encoding scheme
    rfc2733Format   CHOICE
    {
        rfc2733rfc2198  MaxRedundancy, -- RFC2198 redundancy
            rfc2733sameport         MaxRedundancy,
                     -- separate packet, same port
        rfc2733diffport MaxRedundancy
                     -- separate packet and port
    } OPTIONAL, 
    ... 
}

H223ModeParameters  ::=SEQUENCE
{
    adaptationLayerType CHOICE
    {
        nonStandard NonStandardParameter,
        al1Framed   NULL,
        al1NotFramed    NULL,
        al2WithoutSequenceNumbers   NULL,
        al2WithSequenceNumbers  NULL,
        al3         SEQUENCE
        {
            controlFieldOctets  INTEGER(0..2),
            sendBufferSize  INTEGER(0..16777215)    -- units octets
        },
        ...,
        al1M        H223AL1MParameters,
        al2M        H223AL2MParameters,
        al3M        H223AL3MParameters

    },

    segmentableFlag BOOLEAN,
    ...
}

V76ModeParameters   ::=CHOICE
{
    suspendResumewAddress   NULL,
    suspendResumewoAddress  NULL,
    ...
}

H2250ModeParameters ::=SEQUENCE
{
    redundancyEncodingMode  RedundancyEncodingMode OPTIONAL,
    ...
}

RedundancyEncodingMode  ::=SEQUENCE
{
    redundancyEncodingMethod    RedundancyEncodingMethod,
    secondaryEncoding   CHOICE
    {
        nonStandard NonStandardParameter,
        audioData   AudioMode,
        ...
    } OPTIONAL,
    ...
}

-- =============================================================================
-- Request mode definitions: Video modes
-- =============================================================================

VideoMode           ::=CHOICE
{
    nonStandard NonStandardParameter,
    h261VideoMode   H261VideoMode,
    h262VideoMode   H262VideoMode,
    h263VideoMode   H263VideoMode,
    is11172VideoMode    IS11172VideoMode,
    ...,
    genericVideoMode    GenericCapability
}

H261VideoMode       ::=SEQUENCE
{
    resolution  CHOICE
    {
        qcif        NULL,
        cif         NULL
    },
    bitRate     INTEGER (1..19200), -- units 100 bit/s
    stillImageTransmission  BOOLEAN,
    ...
}

H262VideoMode       ::=SEQUENCE
{
    profileAndLevel CHOICE
    {
        profileAndLevel-SPatML  NULL,
        profileAndLevel-MPatLL  NULL,
        profileAndLevel-MPatML  NULL,
        profileAndLevel-MPatH-14    NULL,
        profileAndLevel-MPatHL  NULL,
        profileAndLevel-SNRatLL NULL,
        profileAndLevel-SNRatML NULL,
        profileAndLevel-SpatialatH-14   NULL,
        profileAndLevel-HPatML  NULL,
        profileAndLevel-HPatH-14    NULL,
        profileAndLevel-HPatHL  NULL,
        ...
    },
    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
    ...
}

H263VideoMode       ::=SEQUENCE
{
    resolution  CHOICE
    {
        sqcif       NULL,
        qcif        NULL,
        cif         NULL,
        cif4        NULL,
        cif16       NULL,
        ...,
        custom  NULL
    },
    bitRate     INTEGER (1..19200), -- units 100 bit/s
    unrestrictedVector  BOOLEAN,
    arithmeticCoding    BOOLEAN,
    advancedPrediction  BOOLEAN,
    pbFrames        BOOLEAN,
    ...,

    errorCompensation   BOOLEAN,
    enhancementLayerInfo    EnhancementLayerInfo OPTIONAL,
    h263Options H263Options OPTIONAL
}

IS11172VideoMode    ::=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
    ...
}

-- =============================================================================
-- Request mode definitions: Audio modes
-- =============================================================================

AudioMode           ::=CHOICE
{
    nonStandard NonStandardParameter,
    g711Alaw64k NULL,
    g711Alaw56k NULL,
    g711Ulaw64k NULL,
    g711Ulaw56k NULL,

    g722-64k        NULL,
    g722-56k        NULL,
    g722-48k        NULL,

    g728            NULL,
    g729            NULL,
    g729AnnexA  NULL,

    g7231           CHOICE
    {
        noSilenceSuppressionLowRate NULL,
        noSilenceSuppressionHighRate    NULL,
        silenceSuppressionLowRate   NULL,
        silenceSuppressionHighRate  NULL
    },

    is11172AudioMode    IS11172AudioMode,
    is13818AudioMode    IS13818AudioMode,

    ...,
    g729wAnnexB INTEGER(1..256),
    g729AnnexAwAnnexB   INTEGER(1..256),
    g7231AnnexCMode G7231AnnexCMode,
    gsmFullRate GSMAudioCapability,
    gsmHalfRate GSMAudioCapability,
    gsmEnhancedFullRate GSMAudioCapability,
    genericAudioMode    GenericCapability,
    g729Extensions  G729Extensions,
    vbd         VBDMode
}

IS11172AudioMode    ::=SEQUENCE
{
    audioLayer  CHOICE
    {
        audioLayer1 NULL,
        audioLayer2 NULL,
        audioLayer3 NULL
    },

    audioSampling   CHOICE
    {
        audioSampling32k    NULL,
        audioSampling44k1   NULL,
        audioSampling48k    NULL
    },

    multichannelType    CHOICE
    {
        singleChannel   NULL,
        twoChannelStereo    NULL,
        twoChannelDual  NULL
    },

    bitRate     INTEGER (1..448),   -- units kbit/s
    ...
}

IS13818AudioMode    ::=SEQUENCE
{
    audioLayer  CHOICE
    {
        audioLayer1 NULL,
        audioLayer2 NULL,
        audioLayer3 NULL
    },

    audioSampling   CHOICE
    {
        audioSampling16k    NULL,
        audioSampling22k05  NULL,
        audioSampling24k    NULL,
        audioSampling32k    NULL,
        audioSampling44k1   NULL,
        audioSampling48k    NULL
    },

    multichannelType    CHOICE
    {
        singleChannel   NULL,
        twoChannelStereo    NULL,
        twoChannelDual  NULL,
        threeChannels2-1    NULL,
        threeChannels3-0    NULL,
        fourChannels2-0-2-0 NULL,
        fourChannels2-2 NULL,
        fourChannels3-1 NULL,
        fiveChannels3-0-2-0 NULL,
        fiveChannels3-2 NULL
    },

    lowFrequencyEnhancement BOOLEAN,

    multilingual    BOOLEAN,

    bitRate     INTEGER (1..1130),  -- units kbit/s
    ...
}

G7231AnnexCMode ::= 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
        ...
    },
    ...
}

VBDMode                 ::=SEQUENCE
{
    type            AudioMode,  -- shall not be "vbd"
    ...
}

-- =============================================================================
-- Request mode definitions: Data modes
-- =============================================================================

DataMode                ::=SEQUENCE
{
    application CHOICE
    {
        nonStandard NonStandardParameter,
        t120        DataProtocolCapability,
        dsm-cc  DataProtocolCapability,
        userData    DataProtocolCapability,
        t84         DataProtocolCapability,
        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
        },
        genericDataMode GenericCapability

    },
    bitRate     INTEGER (0..4294967295), -- units 100 bit/s
    ...
}

-- =============================================================================
-- Request mode definitions: Encryption modes
-- =============================================================================

EncryptionMode      ::=CHOICE
{
    nonStandard NonStandardParameter,
    h233Encryption  NULL,
    ...
}

-- =============================================================================
-- Round Trip Delay definitions
-- =============================================================================

RoundTripDelayRequest   ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    ...
}

RoundTripDelayResponse  ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    ...
}

-- =============================================================================
-- Maintenance Loop definitions
-- =============================================================================

MaintenanceLoopRequest  ::=SEQUENCE
{
    type            CHOICE
    {
        systemLoop  NULL,
        mediaLoop   LogicalChannelNumber,
        logicalChannelLoop  LogicalChannelNumber,
        ...
    },
    ...
}

MaintenanceLoopAck  ::=SEQUENCE
{
    type            CHOICE
    {
        systemLoop  NULL,
        mediaLoop   LogicalChannelNumber,
        logicalChannelLoop  LogicalChannelNumber,
        ...
    },
    ...
}

MaintenanceLoopReject   ::=SEQUENCE
{
    type            CHOICE
    {
        systemLoop  NULL,
        mediaLoop   LogicalChannelNumber,
        logicalChannelLoop  LogicalChannelNumber,
        ...
    },
    cause           CHOICE
    {
        canNotPerformLoop   NULL,
        ...
    },
    ...
}

MaintenanceLoopOffCommand   ::=SEQUENCE
{
    ...
}

-- =============================================================================
-- Communication Mode definitions
-- =============================================================================

CommunicationModeCommand    ::=SEQUENCE
{
    communicationModeTable  SET SIZE(1..256) OF CommunicationModeTableEntry,
    ...
}

CommunicationModeRequest    ::=SEQUENCE
{
    ...
}

CommunicationModeResponse   ::=CHOICE
{
    communicationModeTable  SET SIZE(1..256) OF CommunicationModeTableEntry,
    ...
}

CommunicationModeTableEntry ::=SEQUENCE
{
    nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
    sessionID   INTEGER(1..255),
    associatedSessionID INTEGER(1..255) OPTIONAL,

    terminalLabel   TerminalLabel OPTIONAL, -- if not present, 
                              -- it refers to 
                              -- all 
                              -- participants in 
                              -- the conference
    sessionDescription  BMPString (SIZE(1..128)) ,
                    -- Basic ISO/IEC 10646-1 (Unicode)
    dataType        CHOICE
    {
        videoData   VideoCapability,
        audioData   AudioCapability,
        data        DataApplicationCapability,
        ...
    },
    mediaChannel    TransportAddress OPTIONAL,
    mediaGuaranteedDelivery BOOLEAN OPTIONAL,
    mediaControlChannel TransportAddress OPTIONAL, 
                    -- reverse RTCP channel
    mediaControlGuaranteedDelivery  BOOLEAN OPTIONAL,
    ...,
    redundancyEncoding  RedundancyEncoding OPTIONAL,
    sessionDependency   INTEGER (1..255) OPTIONAL,
    destination TerminalLabel OPTIONAL
}

-- =============================================================================
-- Conference Request definitions
-- =============================================================================

ConferenceRequest   ::=CHOICE
{
    
    terminalListRequest NULL,           -- same as H.230 TCU (term->MC)

    makeMeChair NULL,          -- same as H.230 CCA (term->MC)
    cancelMakeMeChair   NULL,          -- same as H.230 CIS (term->MC)

    dropTerminal    TerminalLabel, -- same as H.230 CCD(term->MC)

    requestTerminalID   TerminalLabel, -- same as TCP (term->MC)

    enterH243Password   NULL,          -- same as H.230 TCS1(MC->term)
    enterH243TerminalID NULL,          -- same as H.230 TCS2/TCI
                                                       --  (MC->term)
    enterH243ConferenceID   NULL,          -- same as H.230 TCS3 (MC->term)
    ...,
    enterExtensionAddress   NULL,          -- same as H.230 TCS4 (GW->term)
    requestChairTokenOwner  NULL,          -- same as H.230 TCA (term->MC)
    requestTerminalCertificate  SEQUENCE
    {
        terminalLabel   TerminalLabel OPTIONAL,
        certSelectionCriteria   CertSelectionCriteria OPTIONAL,
        sRandom INTEGER (1..4294967295) OPTIONAL,
                    -- this is the requester's challenge
        ...
    },
    broadcastMyLogicalChannel   LogicalChannelNumber, -- similar to H.230 MCV
    makeTerminalBroadcaster TerminalLabel,  -- similar to H.230 VCB
    sendThisSource  TerminalLabel,  -- similar to H.230 VCS
    requestAllTerminalIDs   NULL,
    remoteMCRequest RemoteMCRequest 
}

CertSelectionCriteria   ::=SEQUENCE SIZE (1..16) OF Criteria

Criteria                ::=SEQUENCE
{
    field           OBJECT IDENTIFIER, -- may include 
                                  -- certificate type
    value           OCTET STRING (SIZE(1..65535)),
    ...
}

TerminalLabel       ::=SEQUENCE
{
        mcuNumber   McuNumber,
        terminalNumber  TerminalNumber,
        ...
}

McuNumber           ::=INTEGER(0..192)
TerminalNumber      ::=INTEGER(0..192)

-- =============================================================================
-- Conference Response definitions
-- =============================================================================

ConferenceResponse  ::=CHOICE
{
    mCTerminalIDResponse    SEQUENCE       -- response to TCP 
                                   -- (same as TIP)
    {                              -- sent by MC only
        terminalLabel   TerminalLabel,
        terminalID  TerminalID,
        ...
    },

    terminalIDResponse  SEQUENCE       -- response to TCS2 or TCI
    {                              -- same as IIS
        terminalLabel   TerminalLabel, -- (term->MC)
        terminalID  TerminalID,
        ...
    },

    conferenceIDResponse    SEQUENCE       -- response to TCS3
    {                              -- same as IIS
        terminalLabel   TerminalLabel, -- (term->MC)
        conferenceID    ConferenceID,
        ...
    },

    passwordResponse    SEQUENCE       -- response to TCS1
    {                              -- same as IIS
        terminalLabel   TerminalLabel, -- (term->MC)
        password    Password,
        ...
    },

    terminalListResponse    SET SIZE (1..256) OF TerminalLabel,

    videoCommandReject  NULL,   -- same as H.230 VCR
    terminalDropReject  NULL,   -- same as H.230 CIR

    makeMeChairResponse CHOICE  -- same as H.230 CCR
    {
        grantedChairToken   NULL,   -- same as H.230 CIT
        deniedChairToken    NULL,   -- same as H.230 CCR
        ...
    },
    ...,
    extensionAddressResponse    SEQUENCE    -- response to TCS4
    {
        extensionAddress    TerminalID, -- same as IIS (term->GW)
        ...
    },
    chairTokenOwnerResponse SEQUENCE  -- response to TCA (same as TIR) 
                              -- sent by MC only
    {
        terminalLabel   TerminalLabel,
        terminalID  TerminalID,
        ...
    },
    terminalCertificateResponse     SEQUENCE
    {
            terminalLabel               TerminalLabel OPTIONAL,
            certificateResponse         OCTET STRING (SIZE(1..65535)) OPTIONAL, 
        ...
    },
    broadcastMyLogicalChannelResponse   CHOICE
    {
        grantedBroadcastMyLogicalChannel    NULL,   -- similar to H.230 MVA
        deniedBroadcastMyLogicalChannel NULL,   -- similar to H.230 MVR
        ...
    },
    makeTerminalBroadcasterResponse CHOICE
    {
        grantedMakeTerminalBroadcaster  NULL,
        deniedMakeTerminalBroadcaster   NULL,
        ...
    },
    sendThisSourceResponse  CHOICE
    {
        grantedSendThisSource   NULL,
        deniedSendThisSource    NULL,
        ...
    },
    requestAllTerminalIDsResponse   RequestAllTerminalIDsResponse,
    remoteMCResponse    RemoteMCResponse
}

TerminalID          ::=OCTET STRING (SIZE(1..128)) -- as per H.230
ConferenceID        ::=OCTET STRING (SIZE(1..32))
Password                ::=OCTET STRING (SIZE(1..32))

RequestAllTerminalIDsResponse   ::=SEQUENCE
{
    terminalInformation SEQUENCE OF TerminalInformation,
    ...
}

TerminalInformation ::=SEQUENCE
{
    terminalLabel   TerminalLabel,
    terminalID  TerminalID,
    ...
}

-- =============================================================================
-- Remote MC Request definitions
-- =============================================================================

    RemoteMCRequest ::=CHOICE
    {
        masterActivate  NULL,
        slaveActivate   NULL,
        deActivate  NULL,
        ...
    }

    RemoteMCResponse    ::=CHOICE
    {
        accept  NULL,
        reject  CHOICE
        {
            unspecified NULL,
            functionNotSupported    NULL,
            ...
        },
        ...
    }

-- =============================================================================
-- Multilink definitions
-- =============================================================================

MultilinkRequest    ::=CHOICE
{
    nonStandard NonStandardMessage,

    callInformation SEQUENCE
    {
        maxNumberOfAdditionalConnections    INTEGER (1..65535),
        ...
    },

    addConnection   SEQUENCE
    {
        sequenceNumber  SequenceNumber,  -- Unique ID of request
        dialingInformation  DialingInformation,
        ...
    },

    removeConnection    SEQUENCE
    {
        connectionIdentifier    ConnectionIdentifier,
        ...
    },

    maximumHeaderInterval   SEQUENCE
    {
        requestType CHOICE
        {
            currentIntervalInformation  NULL,
            requestedInterval   INTEGER (0..65535), -- Max Header 
                                        -- Interval, 
                                        -- milliseconds
            ...
        },
        ...
    },
    ...
}

MultilinkResponse   ::=CHOICE
{
    nonStandard NonStandardMessage,

    callInformation SEQUENCE
    {
        dialingInformation  DialingInformation,
        callAssociationNumber   INTEGER (0..4294967295),
        ...
    },

    addConnection   SEQUENCE
    {
        sequenceNumber  SequenceNumber, -- Equal to value in request
        responseCode    CHOICE
        {
            accepted    NULL,
            rejected    CHOICE
            {
                connectionsNotAvailable NULL, -- due to any technical reason
                userRejected    NULL,
                ...
            },
            ...
        },
        ...
    },

    removeConnection    SEQUENCE
    {
        connectionIdentifier    ConnectionIdentifier,
        ...
    },

    maximumHeaderInterval   SEQUENCE
    {
        currentInterval INTEGER (0..65535), -- Max Header 
                                        -- Interval, 
                                        -- milliseconds
        ...
    },
    ...
}

MultilinkIndication ::=CHOICE
{
    nonStandard NonStandardMessage,

    crcDesired  SEQUENCE
    {
        ...
    },

    excessiveError  SEQUENCE
    {
        connectionIdentifier    ConnectionIdentifier,
        ...
    },
    ...
}

DialingInformation  ::= CHOICE
{
    nonStandard NonStandardMessage,

    differential    SET SIZE (1..65535) OF DialingInformationNumber,
                    -- list of numbers for all additional 
                    -- channels; only least significant digits 
                    -- different from initial channel's number

    infoNotAvailable    INTEGER (1..65535), -- maximum No. of 
                                        -- additional channels
    ...
}

DialingInformationNumber    ::= SEQUENCE
{
    networkAddress  NumericString (SIZE (0..40)),
    subAddress  IA5String (SIZE (1..40)) OPTIONAL,
    networkType SET SIZE (1..255) OF DialingInformationNetworkType,
    ...
}

DialingInformationNetworkType   ::= CHOICE
{
    nonStandard NonStandardMessage,
    n-isdn      NULL,
    gstn            NULL,
    ...,
    mobile      NULL
}

ConnectionIdentifier    ::= SEQUENCE
{
    channelTag  INTEGER (0..4294967295), -- from H.226
    sequenceNumber  INTEGER (0..4294967295), -- from H.226
    ...
}

-- =============================================================================
-- Logical channel bit-rate change definitions
-- =============================================================================

MaximumBitRate      ::=INTEGER (0.. 4294967295) -- units of 100 bit/s

LogicalChannelRateRequest   ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    logicalChannelNumber    LogicalChannelNumber,   
    maximumBitRate  MaximumBitRate,
    ...
}

LogicalChannelRateAcknowledge   ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    logicalChannelNumber    LogicalChannelNumber,
    maximumBitRate  MaximumBitRate,
    ...
}

LogicalChannelRateReject    ::=SEQUENCE
{
    sequenceNumber  SequenceNumber,
    logicalChannelNumber    LogicalChannelNumber,   
    rejectReason    LogicalChannelRateRejectReason,
    currentMaximumBitRate   MaximumBitRate OPTIONAL,
    ...
}

LogicalChannelRateRejectReason  ::=CHOICE
{
    undefinedReason NULL,
    insufficientResources   NULL,
    ...
}

LogicalChannelRateRelease   ::=SEQUENCE
{
    ...
}


-- =============================================================================
-- Command Message definitions
-- =============================================================================

-- =============================================================================
-- Command Message: Send Terminal Capability Set
-- =============================================================================

SendTerminalCapabilitySet   ::=CHOICE
{
    specificRequest SEQUENCE
    {
        multiplexCapability BOOLEAN,

        capabilityTableEntryNumbers SET SIZE (1..65535) OF 
                    CapabilityTableEntryNumber OPTIONAL,

        capabilityDescriptorNumbers SET SIZE (1..256) OF 
                    CapabilityDescriptorNumber OPTIONAL,
        ...
    },
    genericRequest  NULL,
    ...
}

-- =============================================================================
-- Command Message: Encryption
-- =============================================================================

EncryptionCommand   ::=CHOICE
{
    encryptionSE    OCTET STRING,   -- per H.233, but no 
                        -- error protection
    encryptionIVRequest NULL,   -- requests new IV
    encryptionAlgorithmID   SEQUENCE
    {
        h233AlgorithmIdentifier SequenceNumber,
        associatedAlgorithm NonStandardParameter
    },
    ...
}

-- =============================================================================
-- Command Message: Flow Control
-- =============================================================================

FlowControlCommand  ::=SEQUENCE
{
    scope       CHOICE
    {
        logicalChannelNumber    LogicalChannelNumber,
        resourceID  INTEGER (0..65535),
        wholeMultiplex  NULL
    },
    restriction CHOICE
    {
        maximumBitRate  INTEGER (0..16777215), -- units 100 bit/s 
        noRestriction   NULL
    },
    ...
}

-- =============================================================================
-- Command Message: Change or End Session
-- =============================================================================

EndSessionCommand   ::=CHOICE
{
    nonStandard NonStandardParameter,

    disconnect  NULL,

    gstnOptions CHOICE
    {
        telephonyMode   NULL,
        v8bis       NULL,
        v34DSVD NULL,
        v34DuplexFAX    NULL,
        v34H324 NULL,
        ...
    },

    ...,
    isdnOptions CHOICE
    {
        telephonyMode   NULL,
        v140        NULL,
        terminalOnHold  NULL,
        ...
    },
        genericInformation          SEQUENCE OF GenericInformation
                                    -- generic information associated 
                                    -- with the message
}

-- =============================================================================
-- Command Message: Conference Commands
-- =============================================================================

ConferenceCommand   ::=CHOICE
{
    broadcastMyLogicalChannel   LogicalChannelNumber, -- similar to H.230 MCV
    cancelBroadcastMyLogicalChannel LogicalChannelNumber, -- similar to 
                                          -- H.230 Cancel-MCV

    makeTerminalBroadcaster TerminalLabel,  -- same as H.230 VCB
    cancelMakeTerminalBroadcaster   NULL,   -- same as H.230 
                        -- Cancel-VCB
        
    sendThisSource  TerminalLabel,   -- same as H.230 VCS
    cancelSendThisSource    NULL,   -- same as H.230 
                        -- cancel VCS

    dropConference  NULL,   -- same as H.230 CCK
    ...,
    substituteConferenceIDCommand   SubstituteConferenceIDCommand
}

SubstituteConferenceIDCommand   ::=SEQUENCE
{
    conferenceIdentifier    OCTET STRING (SIZE(16)),
    ...
}

-- =============================================================================
-- Command Message: Miscellaneous H.230-like commands
-- =============================================================================

EncryptionUpdateDirection   ::= CHOICE
{
    masterToSlave   NULL,
    slaveToMaster   NULL,
    ...
}

MiscellaneousCommand    ::=SEQUENCE
{
    logicalChannelNumber    LogicalChannelNumber,
    type            CHOICE
    {
        equaliseDelay   NULL,   -- same as H.230 ACE
        zeroDelay   NULL,   -- same as H.230 ACZ
        multipointModeCommand   NULL,
        cancelMultipointModeCommand NULL,
        videoFreezePicture  NULL,
        videoFastUpdatePicture  NULL,

        videoFastUpdateGOB  SEQUENCE
        {
            firstGOB    INTEGER (0..17),
            numberOfGOBs    INTEGER (1..18)
        },

        videoTemporalSpatialTradeOff    INTEGER (0..31), -- commands a trade-off value

        videoSendSyncEveryGOB   NULL,
        videoSendSyncEveryGOBCancel NULL,

        ...,
        videoFastUpdateMB   SEQUENCE
        {
            firstGOB    INTEGER (0..255) OPTIONAL,  
            firstMB INTEGER (1..8192) OPTIONAL,
            numberOfMBs INTEGER (1..8192),
            ...
        },
        maxH223MUXPDUsize   INTEGER(1..65535),  -- units octets
        encryptionUpdate    EncryptionSync, 
        encryptionUpdateRequest EncryptionUpdateRequest,
        switchReceiveMediaOff   NULL,
        switchReceiveMediaOn    NULL,

        progressiveRefinementStart  SEQUENCE
        {
            repeatCount CHOICE
            {
                doOneProgression        NULL,
                doContinuousProgressions    NULL,
                doOneIndependentProgression NULL,
                doContinuousIndependentProgressions NULL,
                ...
            },
            ...
        },
        progressiveRefinementAbortOne   NULL,
        progressiveRefinementAbortContinuous    NULL,

        videoBadMBs SEQUENCE
        {
            firstMB INTEGER (1..9216),
            numberOfMBs INTEGER (1..9216),
            temporalReference   INTEGER (0..1023),
            ...
        },
        lostPicture SEQUENCE OF PictureReference, 
        lostPartialPicture  SEQUENCE
        {
            pictureReference    PictureReference,
            firstMB INTEGER (1..9216),
            numberOfMBs INTEGER (1..9216),
            ...
        },
        recoveryReferencePicture    SEQUENCE OF PictureReference,
        encryptionUpdateCommand SEQUENCE   -- for ack'ed key update in H.235V3
        {
            encryptionSync  EncryptionSync,
            multiplePayloadStream   MultiplePayloadStream OPTIONAL,
            ...
        },
        encryptionUpdateAck SEQUENCE
        {
            synchFlag   INTEGER (0..255),
            ...
        }
    },

    ...,
    direction   EncryptionUpdateDirection OPTIONAL
}

KeyProtectionMethod ::=SEQUENCE -- specify how the new 
                                -- key is to be protected
{
    secureChannel   BOOLEAN,
    sharedSecret    BOOLEAN,
    certProtectedKey    BOOLEAN,
    ...
}

EncryptionUpdateRequest ::=SEQUENCE
{
    keyProtectionMethod KeyProtectionMethod OPTIONAL,
    ...,
    synchFlag   INTEGER (0..255) OPTIONAL
}

PictureReference    ::=CHOICE
{
    pictureNumber   INTEGER (0..1023),
    longTermPictureIndex    INTEGER (0..255),
    ...
}
-- =============================================================================
-- Command Message: H.223 Multiplex Reconfiguration
-- =============================================================================

H223MultiplexReconfiguration    ::=CHOICE
{
    h223ModeChange  CHOICE
    {
        toLevel0    NULL,
        toLevel1    NULL,
        toLevel2    NULL,
        toLevel2withOptionalHeader  NULL,
        ...
    },

    h223AnnexADoubleFlag    CHOICE
    {
        start       NULL,
        stop        NULL,
        ...
    },

    ...
}
-- =============================================================================
-- Command Message: New ATM virtual channel command
-- =============================================================================

NewATMVCCommand ::=SEQUENCE
{
    resourceID  INTEGER(0..65535),
    bitRate     INTEGER(1..65535),  -- units 64 kbit/s
    bitRateLockedToPCRClock BOOLEAN,
    bitRateLockedToNetworkClock BOOLEAN,
    aal         CHOICE
    {
        aal1        SEQUENCE
        {
            clockRecovery   CHOICE
            {
                nullClockRecovery   NULL,
                srtsClockRecovery   NULL,
                adaptiveClockRecovery   NULL,
                ...
            },
            errorCorrection CHOICE
            {
                nullErrorCorrection NULL,
                longInterleaver NULL,
                shortInterleaver    NULL,
                errorCorrectionOnly NULL,
                ...
            },
            structuredDataTransfer  BOOLEAN,
            partiallyFilledCells    BOOLEAN,
            ...
        },
        aal5        SEQUENCE
        {
            forwardMaximumSDUSize   INTEGER (0..65535), -- units octets
            backwardMaximumSDUSize  INTEGER (0..65535), -- units octets
            ...
        },
        ...
    },
    multiplex   CHOICE
    {
        noMultiplex NULL,
        transportStream NULL,
        programStream   NULL,
        ...
    },
    reverseParameters   SEQUENCE
    {
        bitRate INTEGER(1..65535),  -- units 64 kbit/s
        bitRateLockedToPCRClock BOOLEAN,
        bitRateLockedToNetworkClock BOOLEAN,
        multiplex   CHOICE
        {
            noMultiplex NULL,
            transportStream NULL,
            programStream   NULL,
            ...
        },
        ...
    },
    ...
}

-- =============================================================================
-- Command Message: Mobile Multilink Reconfiguration command
-- =============================================================================

MobileMultilinkReconfigurationCommand   ::=SEQUENCE
{
    sampleSize  INTEGER (1..255),
    samplesPerFrame INTEGER (1..255),
    status      CHOICE
    {
        synchronized    NULL,
        reconfiguration NULL,
        ...
    },
    ...
}
-- =============================================================================
-- Indication Message definitions
-- =============================================================================

-- =============================================================================
-- Indication Message: Function not understood
-- =============================================================================

-- This is used to return a request, response or command that is not understood

FunctionNotUnderstood   ::=CHOICE
{
    request     RequestMessage,
    response        ResponseMessage,
    command     CommandMessage
}

-- =============================================================================
-- Indication Message: Function not Supported
-- =============================================================================

-- This is used to return a complete request, response or command that is not 
-- recognized

FunctionNotSupported    ::=SEQUENCE
{
    cause           CHOICE
    {
        syntaxError NULL,
        semanticError   NULL,
        unknownFunction NULL,
        ...
    },
    returnedFunction    OCTET STRING OPTIONAL,
    ...
}

-- =============================================================================
-- Indication Message: Conference
-- =============================================================================

ConferenceIndication    ::=CHOICE
{
    sbeNumber   INTEGER (0..9), -- same as H.230 SBE Number
        
    terminalNumberAssign    TerminalLabel,  -- same as H.230 TIA

    terminalJoinedConference    TerminalLabel,  -- same as H.230 TIN

    terminalLeftConference  TerminalLabel,  -- same as H.230 TID

    seenByAtLeastOneOther   NULL,   -- same as H.230 MIV
    cancelSeenByAtLeastOneOther NULL,   -- same as H.230 cancel MIV

    seenByAll   NULL,   -- like H.230 MIV
    cancelSeenByAll NULL,   -- like H.230 MIV

    terminalYouAreSeeing    TerminalLabel,  -- same as H.230 VIN

    requestForFloor NULL,   -- same as H.230 TIF

    ...,
    withdrawChairToken  NULL,   -- same as H.230 CCR MC-> chair
    floorRequested  TerminalLabel,  -- same as H.230 TIF MC-> chair
    terminalYouAreSeeingInSubPictureNumber  TerminalYouAreSeeingInSubPictureNumber,
    videoIndicateCompose    VideoIndicateCompose
}

TerminalYouAreSeeingInSubPictureNumber  ::= SEQUENCE
{
    terminalNumber  TerminalNumber,
    subPictureNumber    INTEGER (0..255),
    ...
}

VideoIndicateCompose    ::= SEQUENCE
{
    compositionNumber   INTEGER (0..255),
    ...
}

-- =============================================================================
-- Indication Message: Miscellaneous H.230-like indication
-- =============================================================================

MiscellaneousIndication ::=SEQUENCE
{
    logicalChannelNumber    LogicalChannelNumber,
    type            CHOICE
    {
        logicalChannelActive    NULL,   -- same as H.230 AIA and VIA
        logicalChannelInactive  NULL,   -- same as H.230 AIM and VIS

        multipointConference    NULL,   
        cancelMultipointConference  NULL,   

        multipointZeroComm  NULL,   -- same as H.230 MIZ
        cancelMultipointZeroComm    NULL,   -- same as H.230 cancel MIZ

        multipointSecondaryStatus   NULL,   -- same as H.230 MIS
        cancelMultipointSecondaryStatus NULL,   -- same as H.230 cancel MIS

        videoIndicateReadyToActivate    NULL,   -- same as H.230 VIR

        videoTemporalSpatialTradeOff    INTEGER (0..31), -- indicates current 
                                   -- trade-off

        ...,
        videoNotDecodedMBs  SEQUENCE
        {
            firstMB INTEGER (1..8192),
            numberOfMBs INTEGER (1..8192),
            temporalReference   INTEGER (0..255),
            ...
        },
        transportCapability TransportCapability
    },
    ...
}

-- =============================================================================
-- Indication Message: Jitter Indication
-- =============================================================================

JitterIndication    ::=SEQUENCE
{
    scope       CHOICE
    {
        logicalChannelNumber    LogicalChannelNumber,
        resourceID  INTEGER (0..65535),
        wholeMultiplex  NULL
    },
    estimatedReceivedJitterMantissa INTEGER (0..3),
    estimatedReceivedJitterExponent INTEGER (0..7),
    skippedFrameCount   INTEGER (0..15) OPTIONAL,
    additionalDecoderBuffer INTEGER (0..262143) OPTIONAL, 
                    -- 262143 is 2^18 - 1
    ...
}

-- =============================================================================
-- Indication Message: H.223 logical channel skew
-- =============================================================================

H223SkewIndication  ::=SEQUENCE
{
    logicalChannelNumber1   LogicalChannelNumber,
    logicalChannelNumber2   LogicalChannelNumber,
    skew        INTEGER (0..4095),  -- units milliseconds
    ...
}

-- =============================================================================
-- Indication Message : H.225.0 maximum logical channel skew
-- =============================================================================

H2250MaximumSkewIndication  ::=SEQUENCE
{
    logicalChannelNumber1   LogicalChannelNumber,
    logicalChannelNumber2   LogicalChannelNumber,
    maximumSkew INTEGER (0..4095),  -- units milliseconds
    ...
}

-- =============================================================================
-- Indication Message: MC Location Indication
-- =============================================================================

MCLocationIndication    ::=SEQUENCE
{
    signalAddress   TransportAddress, -- this is the 
                                      -- H.323 Call Signalling
                                      -- address of the entity 
                                      -- which contains the MC
    ...
}

-- =============================================================================
-- Indication Message: Vendor Identification
-- =============================================================================

    VendorIdentification    ::=SEQUENCE
    {
        vendor  NonStandardIdentifier,
        productNumber   OCTET STRING (SIZE(1..256)) OPTIONAL,
                    -- per  vendor
        versionNumber   OCTET STRING (SIZE(1..256)) OPTIONAL,
                    -- per productNumber
        ...
    }


-- =============================================================================
-- Indication Message: New ATM virtual channel indication
-- =============================================================================

NewATMVCIndication  ::=SEQUENCE
{
    resourceID  INTEGER(0..65535),
    bitRate     INTEGER(1..65535),  -- units 64 kbit/s
    bitRateLockedToPCRClock BOOLEAN,
    bitRateLockedToNetworkClock BOOLEAN,
    aal         CHOICE
    {
        aal1        SEQUENCE
        {
            clockRecovery   CHOICE
            {
                nullClockRecovery   NULL,
                srtsClockRecovery   NULL,
                adaptiveClockRecovery   NULL,
                ...
            },
            errorCorrection CHOICE
            {
                nullErrorCorrection NULL,
                longInterleaver NULL,
                shortInterleaver    NULL,
                errorCorrectionOnly NULL,
                ...
            },
            structuredDataTransfer  BOOLEAN,
            partiallyFilledCells    BOOLEAN,
            ...
        },
        aal5        SEQUENCE
        {
            forwardMaximumSDUSize   INTEGER (0..65535), -- units octets
            backwardMaximumSDUSize  INTEGER (0..65535), -- units octets
            ...
        },
        ...
    },
    multiplex   CHOICE
    {
        noMultiplex NULL,
        transportStream NULL,
        programStream   NULL,
        ...
    },
    ...,
    reverseParameters   SEQUENCE
    {
        bitRate INTEGER(1..65535),  -- units 64 kbit/s
        bitRateLockedToPCRClock BOOLEAN,
        bitRateLockedToNetworkClock BOOLEAN,
        multiplex   CHOICE
        {
            noMultiplex NULL,
            transportStream NULL,
            programStream   NULL,
            ...
        },
        ...
    }
}

-- =============================================================================
-- Indication Message: User input
-- =============================================================================

IV8                 ::= OCTET STRING (SIZE(8))
                    -- initial value for 
                    -- 64-bit block ciphers
IV16                    ::= OCTET STRING (SIZE(16))
                    -- initial value for 
                    -- 128-bit block ciphers

Params                  ::= SEQUENCE
{
    iv8         IV8 OPTIONAL, -- 8-octet initialization vector
    iv16            IV16 OPTIONAL, -- 16-octet initialization vector
    iv              OCTET STRING OPTIONAL,  -- arbitrary length
                                          -- initialization vector
    ...
}

UserInputIndication ::=CHOICE
{
    nonStandard NonStandardParameter,
    alphanumeric    GeneralString,
    ...,
    userInputSupportIndication  CHOICE
    {
        nonStandard     NonStandardParameter,
        basicString NULL, -- indicates unsecured basic string
        iA5String   NULL, -- indicates unsecured iA5 string
        generalString   NULL, -- indicates unsecured general string
        ...,
        encryptedBasicString    NULL, -- indicates encrypted Basic string
        encryptedIA5String  NULL, -- indicates encrypted IA5 string
        encryptedGeneralString  NULL -- indicates encrypted general string
    },
    signal      SEQUENCE
    {
        signalType  IA5String (SIZE (1) ^ FROM ("0123456789#*ABCD!")),
                    -- holds dummy "!" if encryptedSignalType 
                    -- is being used
        duration    INTEGER (1..65535) OPTIONAL,
                    -- milliseconds
        rtp         SEQUENCE
        {
            timestamp   INTEGER (0..4294967295) OPTIONAL,
            expirationTime  INTEGER (0..4294967295) OPTIONAL,
            logicalChannelNumber    LogicalChannelNumber,
            ...
        } OPTIONAL,
        ...,
        rtpPayloadIndication    NULL OPTIONAL,
        paramS  Params OPTIONAL, -- any "runtime" parameters
        encryptedSignalType OCTET STRING (SIZE(1)) OPTIONAL,
                    -- encrypted signalType
        algorithmOID    OBJECT IDENTIFIER OPTIONAL
    },
    signalUpdate    SEQUENCE
    {
        duration    INTEGER (1..65535), -- milliseconds
        rtp         SEQUENCE
        {
            logicalChannelNumber    LogicalChannelNumber,
            ...
        } OPTIONAL,
        ...
    },
    extendedAlphanumeric    SEQUENCE
    {
        alphanumeric    GeneralString, -- holds empty string if
                                                       -- encryptedAlphanumeric is 
                                   -- being used
        rtpPayloadIndication    NULL OPTIONAL,
        ...,
        encryptedAlphanumeric   SEQUENCE
        {
            algorithmOID    OBJECT IDENTIFIER,
            paramS  Params OPTIONAL, -- any "runtime" parameters
            encrypted   OCTET STRING, -- general string encrypted
            ...
        } OPTIONAL
    },
    encryptedAlphanumeric   SEQUENCE
    {
        algorithmOID    OBJECT IDENTIFIER,
        paramS  Params OPTIONAL, -- any "runtime" parameters
        encrypted   OCTET STRING, -- basic string encrypted
        ...
    },      genericInformation          SEQUENCE OF GenericInformation
                                    -- generic information associated 
                                    -- with the message
}

-- =============================================================================
-- Indication Message: Flow Control
-- =============================================================================

FlowControlIndication   ::=SEQUENCE
{
    scope           CHOICE
    {
        logicalChannelNumber    LogicalChannelNumber,
        resourceID  INTEGER (0..65535),
        wholeMultiplex  NULL
    },
    restriction CHOICE
    {
        maximumBitRate  INTEGER (0..16777215), -- units 100 bit/s
        noRestriction   NULL
    },
    ...
}

-- =============================================================================
-- Indication Message: Mobile Multilink Reconfiguration indication
-- =============================================================================

MobileMultilinkReconfigurationIndication    ::=SEQUENCE
{
    sampleSize  INTEGER (1..255),
    samplesPerFrame INTEGER (1..255),
    ...
}

END

