diff options
Diffstat (limited to 'addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c')
-rw-r--r-- | addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c | 26599 |
1 files changed, 26599 insertions, 0 deletions
diff --git a/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c new file mode 100644 index 000000000..ac124d96d --- /dev/null +++ b/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c @@ -0,0 +1,26599 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#include "ooasn1.h" +#include "MULTIMEDIA-SYSTEM-CONTROL.h" + +/**************************************************************/ +/* */ +/* NonStandardIdentifier_h221NonStandard */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NonStandardIdentifier_h221NonStandard (OOCTXT* pctxt, H245NonStandardIdentifier_h221NonStandard* pvalue) +{ + int stat = ASN_OK; + + /* encode t35CountryCode */ + + stat = encodeConsUnsigned (pctxt, pvalue->t35CountryCode, 0U, 255U); + if (stat != ASN_OK) return stat; + + /* encode t35Extension */ + + stat = encodeConsUnsigned (pctxt, pvalue->t35Extension, 0U, 255U); + if (stat != ASN_OK) return stat; + + /* encode manufacturerCode */ + + stat = encodeConsUnsigned (pctxt, pvalue->manufacturerCode, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NonStandardIdentifier (OOCTXT* pctxt, H245NonStandardIdentifier* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* object */ + case 1: + stat = encodeObjectIdentifier (pctxt, pvalue->u.object); + if (stat != ASN_OK) return stat; + break; + + /* h221NonStandard */ + case 2: + stat = asn1PE_H245NonStandardIdentifier_h221NonStandard (pctxt, pvalue->u.h221NonStandard); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NonStandardParameter (OOCTXT* pctxt, H245NonStandardParameter* pvalue) +{ + int stat = ASN_OK; + + /* encode nonStandardIdentifier */ + + stat = asn1PE_H245NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier); + if (stat != ASN_OK) return stat; + + /* encode data */ + + stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V42bis */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V42bis (OOCTXT* pctxt, H245V42bis* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode numberOfCodewords */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfCodewords, 1U, 65536U); + if (stat != ASN_OK) return stat; + + /* encode maximumStringLength */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumStringLength, 1U, 256U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CompressionType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CompressionType (OOCTXT* pctxt, H245CompressionType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* v42bis */ + case 1: + stat = asn1PE_H245V42bis (pctxt, pvalue->u.v42bis); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataProtocolCapability_v76wCompression */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataProtocolCapability_v76wCompression (OOCTXT* pctxt, H245DataProtocolCapability_v76wCompression* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* transmitCompression */ + case 1: + stat = asn1PE_H245CompressionType (pctxt, pvalue->u.transmitCompression); + if (stat != ASN_OK) return stat; + break; + + /* receiveCompression */ + case 2: + stat = asn1PE_H245CompressionType (pctxt, pvalue->u.receiveCompression); + if (stat != ASN_OK) return stat; + break; + + /* transmitAndReceiveCompression */ + case 3: + stat = asn1PE_H245CompressionType (pctxt, pvalue->u.transmitAndReceiveCompression); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataProtocolCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataProtocolCapability (OOCTXT* pctxt, H245DataProtocolCapability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 7); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* v14buffered */ + case 2: + /* NULL */ + break; + + /* v42lapm */ + case 3: + /* NULL */ + break; + + /* hdlcFrameTunnelling */ + case 4: + /* NULL */ + break; + + /* h310SeparateVCStack */ + case 5: + /* NULL */ + break; + + /* h310SingleVCStack */ + case 6: + /* NULL */ + break; + + /* transparent */ + case 7: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* segmentationAndReassembly */ + case 8: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* hdlcFrameTunnelingwSAR */ + case 9: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* v120 */ + case 10: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* separateLANStack */ + case 11: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* v76wCompression */ + case 12: + stat = asn1PE_H245DataProtocolCapability_v76wCompression (&lctxt, pvalue->u.v76wCompression); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* tcp */ + case 13: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* udp */ + case 14: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxRateManagement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T38FaxRateManagement (OOCTXT* pctxt, H245T38FaxRateManagement* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* localTCF */ + case 1: + /* NULL */ + break; + + /* transferredTCF */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxUdpOptions_t38FaxUdpEC */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T38FaxUdpOptions_t38FaxUdpEC (OOCTXT* pctxt, H245T38FaxUdpOptions_t38FaxUdpEC* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* t38UDPFEC */ + case 1: + /* NULL */ + break; + + /* t38UDPRedundancy */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxUdpOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T38FaxUdpOptions (OOCTXT* pctxt, H245T38FaxUdpOptions* pvalue) +{ + int stat = ASN_OK; + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxMaxBufferPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxMaxDatagramPresent); + + /* encode t38FaxMaxBuffer */ + + if (pvalue->m.t38FaxMaxBufferPresent) { + stat = encodeUnconsInteger (pctxt, pvalue->t38FaxMaxBuffer); + if (stat != ASN_OK) return stat; + } + + /* encode t38FaxMaxDatagram */ + + if (pvalue->m.t38FaxMaxDatagramPresent) { + stat = encodeUnconsInteger (pctxt, pvalue->t38FaxMaxDatagram); + if (stat != ASN_OK) return stat; + } + + /* encode t38FaxUdpEC */ + + stat = asn1PE_H245T38FaxUdpOptions_t38FaxUdpEC (pctxt, &pvalue->t38FaxUdpEC); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxTcpOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T38FaxTcpOptions (OOCTXT* pctxt, H245T38FaxTcpOptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode t38TCPBidirectionalMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->t38TCPBidirectionalMode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxProfile */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T38FaxProfile (OOCTXT* pctxt, H245T38FaxProfile* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.versionPresent || + pvalue->m.t38FaxRateManagementPresent || + pvalue->m.t38FaxUdpOptionsPresent || + pvalue->m.t38FaxTcpOptionsPresent); + + encodeBit (pctxt, extbit); + + /* encode fillBitRemoval */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fillBitRemoval); + if (stat != ASN_OK) return stat; + + /* encode transcodingJBIG */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transcodingJBIG); + if (stat != ASN_OK) return stat; + + /* encode transcodingMMR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transcodingMMR); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 3); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxRateManagementPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxUdpOptionsPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxTcpOptionsPresent); + /* encode extension elements */ + + if (pvalue->m.versionPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->version, 0U, 255U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.t38FaxRateManagementPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245T38FaxRateManagement (&lctxt, &pvalue->t38FaxRateManagement); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.t38FaxUdpOptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245T38FaxUdpOptions (&lctxt, &pvalue->t38FaxUdpOptions); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.t38FaxTcpOptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245T38FaxTcpOptions (&lctxt, &pvalue->t38FaxTcpOptions); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NonStandardMessage (OOCTXT* pctxt, H245NonStandardMessage* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode nonStandardData */ + + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDetermination */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDetermination (OOCTXT* pctxt, H245MasterSlaveDetermination* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalType */ + + stat = encodeConsUnsigned (pctxt, pvalue->terminalType, 0U, 255U); + if (stat != ASN_OK) return stat; + + /* encode statusDeterminationNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->statusDeterminationNumber, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* SequenceNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SequenceNumber (OOCTXT* pctxt, H245SequenceNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_aal1 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_aal1 (OOCTXT* pctxt, H245VCCapability_aal1* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode nullClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode srtsClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->srtsClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode adaptiveClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->adaptiveClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode nullErrorCorrection */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullErrorCorrection); + if (stat != ASN_OK) return stat; + + /* encode longInterleaver */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->longInterleaver); + if (stat != ASN_OK) return stat; + + /* encode shortInterleaver */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->shortInterleaver); + if (stat != ASN_OK) return stat; + + /* encode errorCorrectionOnly */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCorrectionOnly); + if (stat != ASN_OK) return stat; + + /* encode structuredDataTransfer */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer); + if (stat != ASN_OK) return stat; + + /* encode partiallyFilledCells */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_aal5 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_aal5 (OOCTXT* pctxt, H245VCCapability_aal5* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode backwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_availableBitRates_type_rangeOfBitRates */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_availableBitRates_type_rangeOfBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates_type_rangeOfBitRates* pvalue) +{ + int stat = ASN_OK; + + /* encode lowerBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->lowerBitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode higherBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->higherBitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_availableBitRates_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_availableBitRates_type (OOCTXT* pctxt, H245VCCapability_availableBitRates_type* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* singleBitRate */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.singleBitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* rangeOfBitRates */ + case 2: + stat = asn1PE_H245VCCapability_availableBitRates_type_rangeOfBitRates (pctxt, pvalue->u.rangeOfBitRates); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_availableBitRates */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_availableBitRates (OOCTXT* pctxt, H245VCCapability_availableBitRates* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245VCCapability_availableBitRates_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Q2931Address_address_nsapAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Q2931Address_address_nsapAddress (OOCTXT* pctxt, H245Q2931Address_address_nsapAddress* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Q2931Address_address */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Q2931Address_address (OOCTXT* pctxt, H245Q2931Address_address* pvalue) +{ + static Asn1SizeCnst internationalNumber_lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* internationalNumber */ + case 1: + addSizeConstraint (pctxt, &internationalNumber_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->u.internationalNumber, NUM_CANSET, 4, 4, 4); + if (stat != ASN_OK) return stat; + break; + + /* nsapAddress */ + case 2: + stat = asn1PE_H245Q2931Address_address_nsapAddress (pctxt, pvalue->u.nsapAddress); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Q2931Address_subaddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Q2931Address_subaddress (OOCTXT* pctxt, H245Q2931Address_subaddress* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Q2931Address */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Q2931Address (OOCTXT* pctxt, H245Q2931Address* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.subaddressPresent); + + /* encode address */ + + stat = asn1PE_H245Q2931Address_address (pctxt, &pvalue->address); + if (stat != ASN_OK) return stat; + + /* encode subaddress */ + + if (pvalue->m.subaddressPresent) { + stat = asn1PE_H245Q2931Address_subaddress (pctxt, &pvalue->subaddress); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_aal1ViaGateway_gatewayAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_aal1ViaGateway_gatewayAddress (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway_gatewayAddress* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245Q2931Address (pctxt, ((H245Q2931Address*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability_aal1ViaGateway */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability_aal1ViaGateway (OOCTXT* pctxt, H245VCCapability_aal1ViaGateway* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode gatewayAddress */ + + stat = asn1PE_H245VCCapability_aal1ViaGateway_gatewayAddress (pctxt, &pvalue->gatewayAddress); + if (stat != ASN_OK) return stat; + + /* encode nullClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode srtsClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->srtsClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode adaptiveClockRecovery */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->adaptiveClockRecovery); + if (stat != ASN_OK) return stat; + + /* encode nullErrorCorrection */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nullErrorCorrection); + if (stat != ASN_OK) return stat; + + /* encode longInterleaver */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->longInterleaver); + if (stat != ASN_OK) return stat; + + /* encode shortInterleaver */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->shortInterleaver); + if (stat != ASN_OK) return stat; + + /* encode errorCorrectionOnly */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCorrectionOnly); + if (stat != ASN_OK) return stat; + + /* encode structuredDataTransfer */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer); + if (stat != ASN_OK) return stat; + + /* encode partiallyFilledCells */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VCCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VCCapability (OOCTXT* pctxt, H245VCCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.aal1ViaGatewayPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal1Present); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal5Present); + + /* encode aal1 */ + + if (pvalue->m.aal1Present) { + stat = asn1PE_H245VCCapability_aal1 (pctxt, &pvalue->aal1); + if (stat != ASN_OK) return stat; + } + + /* encode aal5 */ + + if (pvalue->m.aal5Present) { + stat = asn1PE_H245VCCapability_aal5 (pctxt, &pvalue->aal5); + if (stat != ASN_OK) return stat; + } + + /* encode transportStream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transportStream); + if (stat != ASN_OK) return stat; + + /* encode programStream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->programStream); + if (stat != ASN_OK) return stat; + + /* encode availableBitRates */ + + stat = asn1PE_H245VCCapability_availableBitRates (pctxt, &pvalue->availableBitRates); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.aal1ViaGatewayPresent); + /* encode extension elements */ + + if (pvalue->m.aal1ViaGatewayPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245VCCapability_aal1ViaGateway (&lctxt, &pvalue->aal1ViaGateway); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SetOfH245VCCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SetOfH245VCCapability (OOCTXT* pctxt, H245_SetOfH245VCCapability* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245VCCapability (pctxt, ((H245VCCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H222Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H222Capability (OOCTXT* pctxt, H245H222Capability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode numberOfVCs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfVCs, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode vcCapability */ + + stat = asn1PE_H245_SetOfH245VCCapability (pctxt, &pvalue->vcCapability); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223Capability_h223MultiplexTableCapability_enhanced */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability_enhanced (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability_enhanced* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maximumNestingDepth */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumNestingDepth, 1U, 15U); + if (stat != ASN_OK) return stat; + + /* encode maximumElementListSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumElementListSize, 2U, 255U); + if (stat != ASN_OK) return stat; + + /* encode maximumSubElementListSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumSubElementListSize, 2U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223Capability_h223MultiplexTableCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223Capability_h223MultiplexTableCapability (OOCTXT* pctxt, H245H223Capability_h223MultiplexTableCapability* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* basic */ + case 1: + /* NULL */ + break; + + /* enhanced */ + case 2: + stat = asn1PE_H245H223Capability_h223MultiplexTableCapability_enhanced (pctxt, pvalue->u.enhanced); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223Capability_mobileOperationTransmitCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223Capability_mobileOperationTransmitCapability (OOCTXT* pctxt, H245H223Capability_mobileOperationTransmitCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode modeChangeCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modeChangeCapability); + if (stat != ASN_OK) return stat; + + /* encode h223AnnexA */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexA); + if (stat != ASN_OK) return stat; + + /* encode h223AnnexADoubleFlag */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexADoubleFlag); + if (stat != ASN_OK) return stat; + + /* encode h223AnnexB */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexB); + if (stat != ASN_OK) return stat; + + /* encode h223AnnexBwithHeader */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h223AnnexBwithHeader); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AnnexCCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AnnexCCapability (OOCTXT* pctxt, H245H223AnnexCCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rsCodeCapabilityPresent); + + encodeBit (pctxt, extbit); + + /* encode videoWithAL1M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL1M); + if (stat != ASN_OK) return stat; + + /* encode videoWithAL2M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL2M); + if (stat != ASN_OK) return stat; + + /* encode videoWithAL3M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL3M); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL1M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL1M); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL2M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL2M); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL3M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL3M); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL1M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL1M); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL2M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL2M); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL3M */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL3M); + if (stat != ASN_OK) return stat; + + /* encode alpduInterleaving */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving); + if (stat != ASN_OK) return stat; + + /* encode maximumAL1MPDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAL1MPDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode maximumAL2MSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAL2MSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode maximumAL3MSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAL3MSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCapabilityPresent); + /* encode extension elements */ + + if (pvalue->m.rsCodeCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->rsCodeCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223Capability_mobileMultilinkFrameCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223Capability_mobileMultilinkFrameCapability (OOCTXT* pctxt, H245H223Capability_mobileMultilinkFrameCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maximumSampleSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumSampleSize, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode maximumPayloadLength */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumPayloadLength, 1U, 65025U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223Capability (OOCTXT* pctxt, H245H223Capability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.maxMUXPDUSizeCapabilityPresent || + pvalue->m.nsrpSupportPresent || + pvalue->m.mobileOperationTransmitCapabilityPresent || + pvalue->m.h223AnnexCCapabilityPresent || + pvalue->m.bitRatePresent || + pvalue->m.mobileMultilinkFrameCapabilityPresent); + + encodeBit (pctxt, extbit); + + /* encode transportWithI_frames */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->transportWithI_frames); + if (stat != ASN_OK) return stat; + + /* encode videoWithAL1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL1); + if (stat != ASN_OK) return stat; + + /* encode videoWithAL2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL2); + if (stat != ASN_OK) return stat; + + /* encode videoWithAL3 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoWithAL3); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL1); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL2); + if (stat != ASN_OK) return stat; + + /* encode audioWithAL3 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioWithAL3); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL1); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL2); + if (stat != ASN_OK) return stat; + + /* encode dataWithAL3 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataWithAL3); + if (stat != ASN_OK) return stat; + + /* encode maximumAl2SDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAl2SDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode maximumAl3SDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAl3SDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode maximumDelayJitter */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumDelayJitter, 0U, 1023U); + if (stat != ASN_OK) return stat; + + /* encode h223MultiplexTableCapability */ + + stat = asn1PE_H245H223Capability_h223MultiplexTableCapability (pctxt, &pvalue->h223MultiplexTableCapability); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 5); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxMUXPDUSizeCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nsrpSupportPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mobileOperationTransmitCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h223AnnexCCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.bitRatePresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mobileMultilinkFrameCapabilityPresent); + /* encode extension elements */ + + if (pvalue->m.maxMUXPDUSizeCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maxMUXPDUSizeCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.nsrpSupportPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->nsrpSupport); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.mobileOperationTransmitCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H223Capability_mobileOperationTransmitCapability (&lctxt, &pvalue->mobileOperationTransmitCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h223AnnexCCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H223AnnexCCapability (&lctxt, &pvalue->h223AnnexCCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.bitRatePresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->bitRate, 1U, 19200U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.mobileMultilinkFrameCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H223Capability_mobileMultilinkFrameCapability (&lctxt, &pvalue->mobileMultilinkFrameCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* V75Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V75Capability (OOCTXT* pctxt, H245V75Capability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioHeader */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioHeader); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76Capability (OOCTXT* pctxt, H245V76Capability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode suspendResumeCapabilitywAddress */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->suspendResumeCapabilitywAddress); + if (stat != ASN_OK) return stat; + + /* encode suspendResumeCapabilitywoAddress */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->suspendResumeCapabilitywoAddress); + if (stat != ASN_OK) return stat; + + /* encode rejCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->rejCapability); + if (stat != ASN_OK) return stat; + + /* encode sREJCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sREJCapability); + if (stat != ASN_OK) return stat; + + /* encode mREJCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mREJCapability); + if (stat != ASN_OK) return stat; + + /* encode crc8bitCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc8bitCapability); + if (stat != ASN_OK) return stat; + + /* encode crc16bitCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc16bitCapability); + if (stat != ASN_OK) return stat; + + /* encode crc32bitCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->crc32bitCapability); + if (stat != ASN_OK) return stat; + + /* encode uihCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->uihCapability); + if (stat != ASN_OK) return stat; + + /* encode numOfDLCS */ + + stat = encodeConsUnsigned (pctxt, pvalue->numOfDLCS, 2U, 8191U); + if (stat != ASN_OK) return stat; + + /* encode twoOctetAddressFieldCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoOctetAddressFieldCapability); + if (stat != ASN_OK) return stat; + + /* encode loopBackTestCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->loopBackTestCapability); + if (stat != ASN_OK) return stat; + + /* encode n401Capability */ + + stat = encodeConsUnsigned (pctxt, pvalue->n401Capability, 1U, 4095U); + if (stat != ASN_OK) return stat; + + /* encode maxWindowSizeCapability */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxWindowSizeCapability, 1U, 127U); + if (stat != ASN_OK) return stat; + + /* encode v75Capability */ + + stat = asn1PE_H245V75Capability (pctxt, &pvalue->v75Capability); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* T84Profile_t84Restricted */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T84Profile_t84Restricted (OOCTXT* pctxt, H245T84Profile_t84Restricted* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode qcif */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->qcif); + if (stat != ASN_OK) return stat; + + /* encode cif */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->cif); + if (stat != ASN_OK) return stat; + + /* encode ccir601Seq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->ccir601Seq); + if (stat != ASN_OK) return stat; + + /* encode ccir601Prog */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->ccir601Prog); + if (stat != ASN_OK) return stat; + + /* encode hdtvSeq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->hdtvSeq); + if (stat != ASN_OK) return stat; + + /* encode hdtvProg */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->hdtvProg); + if (stat != ASN_OK) return stat; + + /* encode g3FacsMH200x100 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g3FacsMH200x100); + if (stat != ASN_OK) return stat; + + /* encode g3FacsMH200x200 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g3FacsMH200x200); + if (stat != ASN_OK) return stat; + + /* encode g4FacsMMR200x100 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g4FacsMMR200x100); + if (stat != ASN_OK) return stat; + + /* encode g4FacsMMR200x200 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->g4FacsMMR200x200); + if (stat != ASN_OK) return stat; + + /* encode jbig200x200Seq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig200x200Seq); + if (stat != ASN_OK) return stat; + + /* encode jbig200x200Prog */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig200x200Prog); + if (stat != ASN_OK) return stat; + + /* encode jbig300x300Seq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig300x300Seq); + if (stat != ASN_OK) return stat; + + /* encode jbig300x300Prog */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->jbig300x300Prog); + if (stat != ASN_OK) return stat; + + /* encode digPhotoLow */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoLow); + if (stat != ASN_OK) return stat; + + /* encode digPhotoMedSeq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoMedSeq); + if (stat != ASN_OK) return stat; + + /* encode digPhotoMedProg */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoMedProg); + if (stat != ASN_OK) return stat; + + /* encode digPhotoHighSeq */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoHighSeq); + if (stat != ASN_OK) return stat; + + /* encode digPhotoHighProg */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->digPhotoHighProg); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* T84Profile */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245T84Profile (OOCTXT* pctxt, H245T84Profile* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* t84Unrestricted */ + case 1: + /* NULL */ + break; + + /* t84Restricted */ + case 2: + stat = asn1PE_H245T84Profile_t84Restricted (pctxt, pvalue->u.t84Restricted); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataApplicationCapability_application_t84 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataApplicationCapability_application_t84 (OOCTXT* pctxt, H245DataApplicationCapability_application_t84* pvalue) +{ + int stat = ASN_OK; + + /* encode t84Protocol */ + + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t84Protocol); + if (stat != ASN_OK) return stat; + + /* encode t84Profile */ + + stat = asn1PE_H245T84Profile (pctxt, &pvalue->t84Profile); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataApplicationCapability_application_nlpid */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataApplicationCapability_application_nlpid (OOCTXT* pctxt, H245DataApplicationCapability_application_nlpid* pvalue) +{ + int stat = ASN_OK; + + /* encode nlpidProtocol */ + + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol); + if (stat != ASN_OK) return stat; + + /* encode nlpidData */ + + stat = encodeOctetString (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataApplicationCapability_application_t38fax */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataApplicationCapability_application_t38fax (OOCTXT* pctxt, H245DataApplicationCapability_application_t38fax* pvalue) +{ + int stat = ASN_OK; + + /* encode t38FaxProtocol */ + + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol); + if (stat != ASN_OK) return stat; + + /* encode t38FaxProfile */ + + stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityIdentifier_uuid */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityIdentifier_uuid (OOCTXT* pctxt, H245CapabilityIdentifier_uuid* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityIdentifier (OOCTXT* pctxt, H245CapabilityIdentifier* pvalue) +{ + static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* standard */ + case 1: + stat = encodeObjectIdentifier (pctxt, pvalue->u.standard); + if (stat != ASN_OK) return stat; + break; + + /* h221NonStandard */ + case 2: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard); + if (stat != ASN_OK) return stat; + break; + + /* uuid */ + case 3: + stat = asn1PE_H245CapabilityIdentifier_uuid (pctxt, pvalue->u.uuid); + if (stat != ASN_OK) return stat; + break; + + /* domainBased */ + case 4: + addSizeConstraint (pctxt, &domainBased_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->u.domainBased, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ParameterIdentifier_uuid */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ParameterIdentifier_uuid (OOCTXT* pctxt, H245ParameterIdentifier_uuid* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ParameterIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ParameterIdentifier (OOCTXT* pctxt, H245ParameterIdentifier* pvalue) +{ + static Asn1SizeCnst domainBased_lsize1 = { 0, 1, 64, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* standard */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.standard, 0U, 127U); + if (stat != ASN_OK) return stat; + + break; + + /* h221NonStandard */ + case 2: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.h221NonStandard); + if (stat != ASN_OK) return stat; + break; + + /* uuid */ + case 3: + stat = asn1PE_H245ParameterIdentifier_uuid (pctxt, pvalue->u.uuid); + if (stat != ASN_OK) return stat; + break; + + /* domainBased */ + case 4: + addSizeConstraint (pctxt, &domainBased_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->u.domainBased, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ParameterValue */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ParameterValue (OOCTXT* pctxt, H245ParameterValue* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 8); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logical */ + case 1: + /* NULL */ + break; + + /* booleanArray */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.booleanArray, 0U, 255U); + if (stat != ASN_OK) return stat; + + break; + + /* unsignedMin */ + case 3: + stat = encodeConsUnsigned (pctxt, pvalue->u.unsignedMin, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* unsignedMax */ + case 4: + stat = encodeConsUnsigned (pctxt, pvalue->u.unsignedMax, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* unsigned32Min */ + case 5: + stat = encodeConsUnsigned (pctxt, pvalue->u.unsigned32Min, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + break; + + /* unsigned32Max */ + case 6: + stat = encodeConsUnsigned (pctxt, pvalue->u.unsigned32Max, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + break; + + /* octetString */ + case 7: + stat = encodeOctetString (pctxt, pvalue->u.octetString->numocts, pvalue->u.octetString->data); + if (stat != ASN_OK) return stat; + break; + + /* genericParameter */ + case 8: + stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, (H245_SeqOfH245GenericParameter*)pvalue->u.genericParameter); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245ParameterIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245ParameterIdentifier (OOCTXT* pctxt, H245_SeqOfH245ParameterIdentifier* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245ParameterIdentifier (pctxt, ((H245ParameterIdentifier*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GenericParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245GenericParameter (OOCTXT* pctxt, H245GenericParameter* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.supersedesPresent); + + /* encode parameterIdentifier */ + + stat = asn1PE_H245ParameterIdentifier (pctxt, &pvalue->parameterIdentifier); + if (stat != ASN_OK) return stat; + + /* encode parameterValue */ + + stat = asn1PE_H245ParameterValue (pctxt, &pvalue->parameterValue); + if (stat != ASN_OK) return stat; + + /* encode supersedes */ + + if (pvalue->m.supersedesPresent) { + stat = asn1PE_H245_SeqOfH245ParameterIdentifier (pctxt, &pvalue->supersedes); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245GenericParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245GenericParameter (OOCTXT* pctxt, H245_SeqOfH245GenericParameter* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245GenericParameter (pctxt, ((H245GenericParameter*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GenericCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245GenericCapability (OOCTXT* pctxt, H245GenericCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxBitRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.collapsingPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonCollapsingPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonCollapsingRawPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportPresent); + + /* encode capabilityIdentifier */ + + stat = asn1PE_H245CapabilityIdentifier (pctxt, &pvalue->capabilityIdentifier); + if (stat != ASN_OK) return stat; + + /* encode maxBitRate */ + + if (pvalue->m.maxBitRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode collapsing */ + + if (pvalue->m.collapsingPresent) { + stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, &pvalue->collapsing); + if (stat != ASN_OK) return stat; + } + + /* encode nonCollapsing */ + + if (pvalue->m.nonCollapsingPresent) { + stat = asn1PE_H245_SeqOfH245GenericParameter (pctxt, &pvalue->nonCollapsing); + if (stat != ASN_OK) return stat; + } + + /* encode nonCollapsingRaw */ + + if (pvalue->m.nonCollapsingRawPresent) { + stat = encodeOctetString (pctxt, pvalue->nonCollapsingRaw.numocts, pvalue->nonCollapsingRaw.data); + if (stat != ASN_OK) return stat; + } + + /* encode transport */ + + if (pvalue->m.transportPresent) { + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->transport); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataApplicationCapability_application */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataApplicationCapability_application (OOCTXT* pctxt, H245DataApplicationCapability_application* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 10); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* t120 */ + case 2: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t120); + if (stat != ASN_OK) return stat; + break; + + /* dsm_cc */ + case 3: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc); + if (stat != ASN_OK) return stat; + break; + + /* userData */ + case 4: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.userData); + if (stat != ASN_OK) return stat; + break; + + /* t84 */ + case 5: + stat = asn1PE_H245DataApplicationCapability_application_t84 (pctxt, pvalue->u.t84); + if (stat != ASN_OK) return stat; + break; + + /* t434 */ + case 6: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t434); + if (stat != ASN_OK) return stat; + break; + + /* h224 */ + case 7: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h224); + if (stat != ASN_OK) return stat; + break; + + /* nlpid */ + case 8: + stat = asn1PE_H245DataApplicationCapability_application_nlpid (pctxt, pvalue->u.nlpid); + if (stat != ASN_OK) return stat; + break; + + /* dsvdControl */ + case 9: + /* NULL */ + break; + + /* h222DataPartitioning */ + case 10: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* t30fax */ + case 11: + stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t30fax); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* t140 */ + case 12: + stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t140); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* t38fax */ + case 13: + stat = asn1PE_H245DataApplicationCapability_application_t38fax (&lctxt, pvalue->u.t38fax); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericDataCapability */ + case 14: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericDataCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataApplicationCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataApplicationCapability (OOCTXT* pctxt, H245DataApplicationCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode application */ + + stat = asn1PE_H245DataApplicationCapability_application (pctxt, &pvalue->application); + if (stat != ASN_OK) return stat; + + /* encode maxBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245DataApplicationCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245DataApplicationCapability (OOCTXT* pctxt, H245_SeqOfH245DataApplicationCapability* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245DataApplicationCapability (pctxt, ((H245DataApplicationCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaDistributionCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaDistributionCapability (OOCTXT* pctxt, H245MediaDistributionCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.centralizedDataPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.distributedDataPresent); + + /* encode centralizedControl */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedControl); + if (stat != ASN_OK) return stat; + + /* encode distributedControl */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedControl); + if (stat != ASN_OK) return stat; + + /* encode centralizedAudio */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedAudio); + if (stat != ASN_OK) return stat; + + /* encode distributedAudio */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedAudio); + if (stat != ASN_OK) return stat; + + /* encode centralizedVideo */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedVideo); + if (stat != ASN_OK) return stat; + + /* encode distributedVideo */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->distributedVideo); + if (stat != ASN_OK) return stat; + + /* encode centralizedData */ + + if (pvalue->m.centralizedDataPresent) { + stat = asn1PE_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->centralizedData); + if (stat != ASN_OK) return stat; + } + + /* encode distributedData */ + + if (pvalue->m.distributedDataPresent) { + stat = asn1PE_H245_SeqOfH245DataApplicationCapability (pctxt, &pvalue->distributedData); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245MediaDistributionCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245MediaDistributionCapability (OOCTXT* pctxt, H245_SeqOfH245MediaDistributionCapability* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245MediaDistributionCapability (pctxt, ((H245MediaDistributionCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultipointCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultipointCapability (OOCTXT* pctxt, H245MultipointCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode multicastCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multicastCapability); + if (stat != ASN_OK) return stat; + + /* encode multiUniCastConference */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multiUniCastConference); + if (stat != ASN_OK) return stat; + + /* encode mediaDistributionCapability */ + + stat = asn1PE_H245_SeqOfH245MediaDistributionCapability (pctxt, &pvalue->mediaDistributionCapability); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250Capability_mcCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250Capability_mcCapability (OOCTXT* pctxt, H245H2250Capability_mcCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode centralizedConferenceMC */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->centralizedConferenceMC); + if (stat != ASN_OK) return stat; + + /* encode decentralizedConferenceMC */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->decentralizedConferenceMC); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPPayloadType_payloadDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPPayloadType_payloadDescriptor (OOCTXT* pctxt, H245RTPPayloadType_payloadDescriptor* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandardIdentifier */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandardIdentifier); + if (stat != ASN_OK) return stat; + break; + + /* rfc_number */ + case 2: + if ( (pvalue->u.rfc_number >= 1 && pvalue->u.rfc_number <= 32768) ) { + extbit = 0; + } + else extbit = 1; + + /* extension bit */ + + encodeBit (pctxt, extbit); + + if (extbit) { + stat = encodeUnconsInteger (pctxt, pvalue->u.rfc_number); + if (stat != ASN_OK) return stat; + } + else { + stat = encodeConsInteger (pctxt, pvalue->u.rfc_number, 1, 32768); + if (stat != ASN_OK) return stat; + } + break; + + /* oid */ + case 3: + stat = encodeObjectIdentifier (pctxt, pvalue->u.oid); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPPayloadType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPPayloadType (OOCTXT* pctxt, H245RTPPayloadType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent); + + /* encode payloadDescriptor */ + + stat = asn1PE_H245RTPPayloadType_payloadDescriptor (pctxt, &pvalue->payloadDescriptor); + if (stat != ASN_OK) return stat; + + /* encode payloadType */ + + if (pvalue->m.payloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaPacketizationCapability_rtpPayloadType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaPacketizationCapability_rtpPayloadType (OOCTXT* pctxt, H245MediaPacketizationCapability_rtpPayloadType* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245RTPPayloadType (pctxt, ((H245RTPPayloadType*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaPacketizationCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaPacketizationCapability (OOCTXT* pctxt, H245MediaPacketizationCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rtpPayloadTypePresent); + + encodeBit (pctxt, extbit); + + /* encode h261aVideoPacketization */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->h261aVideoPacketization); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadTypePresent); + /* encode extension elements */ + + if (pvalue->m.rtpPayloadTypePresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245MediaPacketizationCapability_rtpPayloadType (&lctxt, &pvalue->rtpPayloadType); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* QOSMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245QOSMode (OOCTXT* pctxt, H245QOSMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* guaranteedQOS */ + case 1: + /* NULL */ + break; + + /* controlledLoad */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RSVPParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RSVPParameters (OOCTXT* pctxt, H245RSVPParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qosModePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokenRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.bucketSizePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.peakRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.minPolicedPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.maxPktSizePresent); + + /* encode qosMode */ + + if (pvalue->m.qosModePresent) { + stat = asn1PE_H245QOSMode (pctxt, &pvalue->qosMode); + if (stat != ASN_OK) return stat; + } + + /* encode tokenRate */ + + if (pvalue->m.tokenRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->tokenRate, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode bucketSize */ + + if (pvalue->m.bucketSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->bucketSize, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode peakRate */ + + if (pvalue->m.peakRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->peakRate, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode minPoliced */ + + if (pvalue->m.minPolicedPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->minPoliced, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode maxPktSize */ + + if (pvalue->m.maxPktSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->maxPktSize, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ATMParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ATMParameters (OOCTXT* pctxt, H245ATMParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maxNTUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxNTUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode atmUBR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmUBR); + if (stat != ASN_OK) return stat; + + /* encode atmrtVBR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmrtVBR); + if (stat != ASN_OK) return stat; + + /* encode atmnrtVBR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmnrtVBR); + if (stat != ASN_OK) return stat; + + /* encode atmABR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmABR); + if (stat != ASN_OK) return stat; + + /* encode atmCBR */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->atmCBR); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* QOSCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245QOSCapability (OOCTXT* pctxt, H245QOSCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsvpParametersPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.atmParametersPresent); + + /* encode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + } + + /* encode rsvpParameters */ + + if (pvalue->m.rsvpParametersPresent) { + stat = asn1PE_H245RSVPParameters (pctxt, &pvalue->rsvpParameters); + if (stat != ASN_OK) return stat; + } + + /* encode atmParameters */ + + if (pvalue->m.atmParametersPresent) { + stat = asn1PE_H245ATMParameters (pctxt, &pvalue->atmParameters); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportCapability_qOSCapabilities */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TransportCapability_qOSCapabilities (OOCTXT* pctxt, H245TransportCapability_qOSCapabilities* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245QOSCapability (pctxt, ((H245QOSCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaTransportType_atm_AAL5_compressed */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaTransportType_atm_AAL5_compressed (OOCTXT* pctxt, H245MediaTransportType_atm_AAL5_compressed* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode variable_delta */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->variable_delta); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaTransportType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaTransportType (OOCTXT* pctxt, H245MediaTransportType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* ip_UDP */ + case 1: + /* NULL */ + break; + + /* ip_TCP */ + case 2: + /* NULL */ + break; + + /* atm_AAL5_UNIDIR */ + case 3: + /* NULL */ + break; + + /* atm_AAL5_BIDIR */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* atm_AAL5_compressed */ + case 5: + stat = asn1PE_H245MediaTransportType_atm_AAL5_compressed (&lctxt, pvalue->u.atm_AAL5_compressed); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaChannelCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaChannelCapability (OOCTXT* pctxt, H245MediaChannelCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaTransportPresent); + + /* encode mediaTransport */ + + if (pvalue->m.mediaTransportPresent) { + stat = asn1PE_H245MediaTransportType (pctxt, &pvalue->mediaTransport); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportCapability_mediaChannelCapabilities */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TransportCapability_mediaChannelCapabilities (OOCTXT* pctxt, H245TransportCapability_mediaChannelCapabilities* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MediaChannelCapability (pctxt, ((H245MediaChannelCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TransportCapability (OOCTXT* pctxt, H245TransportCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qOSCapabilitiesPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelCapabilitiesPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + /* encode qOSCapabilities */ + + if (pvalue->m.qOSCapabilitiesPresent) { + stat = asn1PE_H245TransportCapability_qOSCapabilities (pctxt, &pvalue->qOSCapabilities); + if (stat != ASN_OK) return stat; + } + + /* encode mediaChannelCapabilities */ + + if (pvalue->m.mediaChannelCapabilitiesPresent) { + stat = asn1PE_H245TransportCapability_mediaChannelCapabilities (pctxt, &pvalue->mediaChannelCapabilities); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyFrameMapping_frameSequence */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping_frameSequence (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping_frameSequence* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 255U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyFrameMapping */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyFrameMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyFrameMapping* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode threadNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->threadNumber, 0U, 15U); + if (stat != ASN_OK) return stat; + + /* encode frameSequence */ + + stat = asn1PE_H245RTPH263VideoRedundancyFrameMapping_frameSequence (pctxt, &pvalue->frameSequence); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyEncoding_frameToThreadMapping_cust */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245RTPH263VideoRedundancyFrameMapping (pctxt, ((H245RTPH263VideoRedundancyFrameMapping*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyEncoding_frameToThreadMapping */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_frameToThreadMapping* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* roundrobin */ + case 1: + /* NULL */ + break; + + /* custom */ + case 2: + stat = asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom (pctxt, pvalue->u.custom); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyEncoding_containedThreads */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding_containedThreads (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding_containedThreads* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RTPH263VideoRedundancyEncoding */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RTPH263VideoRedundancyEncoding (OOCTXT* pctxt, H245RTPH263VideoRedundancyEncoding* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.containedThreadsPresent); + + /* encode numberOfThreads */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfThreads, 1U, 16U); + if (stat != ASN_OK) return stat; + + /* encode framesBetweenSyncPoints */ + + stat = encodeConsUnsigned (pctxt, pvalue->framesBetweenSyncPoints, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode frameToThreadMapping */ + + stat = asn1PE_H245RTPH263VideoRedundancyEncoding_frameToThreadMapping (pctxt, &pvalue->frameToThreadMapping); + if (stat != ASN_OK) return stat; + + /* encode containedThreads */ + + if (pvalue->m.containedThreadsPresent) { + stat = asn1PE_H245RTPH263VideoRedundancyEncoding_containedThreads (pctxt, &pvalue->containedThreads); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingMethod */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingMethod (OOCTXT* pctxt, H245RedundancyEncodingMethod* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* rtpAudioRedundancyEncoding */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* rtpH263VideoRedundancyEncoding */ + case 3: + stat = asn1PE_H245RTPH263VideoRedundancyEncoding (&lctxt, pvalue->u.rtpH263VideoRedundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityTableEntryNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityTableEntryNumber (OOCTXT* pctxt, H245CapabilityTableEntryNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 1U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingCapability_secondaryEncoding */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingCapability_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingCapability_secondaryEncoding* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingCapability (OOCTXT* pctxt, H245RedundancyEncodingCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent); + + /* encode redundancyEncodingMethod */ + + stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod); + if (stat != ASN_OK) return stat; + + /* encode primaryEncoding */ + + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->primaryEncoding); + if (stat != ASN_OK) return stat; + + /* encode secondaryEncoding */ + + if (pvalue->m.secondaryEncodingPresent) { + stat = asn1PE_H245RedundancyEncodingCapability_secondaryEncoding (pctxt, &pvalue->secondaryEncoding); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250Capability_redundancyEncodingCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250Capability_redundancyEncodingCapability (OOCTXT* pctxt, H245H2250Capability_redundancyEncodingCapability* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245RedundancyEncodingCapability (pctxt, ((H245RedundancyEncodingCapability*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250Capability (OOCTXT* pctxt, H245H2250Capability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.transportCapabilityPresent || + pvalue->m.redundancyEncodingCapabilityPresent || + pvalue->m.logicalChannelSwitchingCapabilityPresent || + pvalue->m.t120DynamicPortCapabilityPresent); + + encodeBit (pctxt, extbit); + + /* encode maximumAudioDelayJitter */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumAudioDelayJitter, 0U, 1023U); + if (stat != ASN_OK) return stat; + + /* encode receiveMultipointCapability */ + + stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->receiveMultipointCapability); + if (stat != ASN_OK) return stat; + + /* encode transmitMultipointCapability */ + + stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->transmitMultipointCapability); + if (stat != ASN_OK) return stat; + + /* encode receiveAndTransmitMultipointCapability */ + + stat = asn1PE_H245MultipointCapability (pctxt, &pvalue->receiveAndTransmitMultipointCapability); + if (stat != ASN_OK) return stat; + + /* encode mcCapability */ + + stat = asn1PE_H245H2250Capability_mcCapability (pctxt, &pvalue->mcCapability); + if (stat != ASN_OK) return stat; + + /* encode rtcpVideoControlCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->rtcpVideoControlCapability); + if (stat != ASN_OK) return stat; + + /* encode mediaPacketizationCapability */ + + stat = asn1PE_H245MediaPacketizationCapability (pctxt, &pvalue->mediaPacketizationCapability); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 3); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.logicalChannelSwitchingCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120DynamicPortCapabilityPresent); + /* encode extension elements */ + + if (pvalue->m.transportCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245TransportCapability (&lctxt, &pvalue->transportCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.redundancyEncodingCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H2250Capability_redundancyEncodingCapability (&lctxt, &pvalue->redundancyEncodingCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.logicalChannelSwitchingCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->logicalChannelSwitchingCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.t120DynamicPortCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->t120DynamicPortCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexCapability (OOCTXT* pctxt, H245MultiplexCapability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* h222Capability */ + case 2: + stat = asn1PE_H245H222Capability (pctxt, pvalue->u.h222Capability); + if (stat != ASN_OK) return stat; + break; + + /* h223Capability */ + case 3: + stat = asn1PE_H245H223Capability (pctxt, pvalue->u.h223Capability); + if (stat != ASN_OK) return stat; + break; + + /* v76Capability */ + case 4: + stat = asn1PE_H245V76Capability (pctxt, pvalue->u.v76Capability); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h2250Capability */ + case 5: + stat = asn1PE_H245H2250Capability (&lctxt, pvalue->u.h2250Capability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericMultiplexCapability */ + case 6: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericMultiplexCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H261VideoCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H261VideoCapability (OOCTXT* pctxt, H245H261VideoCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent); + + /* encode qcifMPI */ + + if (pvalue->m.qcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 4U); + if (stat != ASN_OK) return stat; + + } + + /* encode cifMPI */ + + if (pvalue->m.cifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 4U); + if (stat != ASN_OK) return stat; + + } + + /* encode temporalSpatialTradeOffCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability); + if (stat != ASN_OK) return stat; + + /* encode maxBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 19200U); + if (stat != ASN_OK) return stat; + + /* encode stillImageTransmission */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->stillImageTransmission); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent); + /* encode extension elements */ + + if (pvalue->m.videoBadMBsCapPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H262VideoCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H262VideoCapability (OOCTXT* pctxt, H245H262VideoCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.framesPerSecondPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent); + + /* encode profileAndLevel_SPatML */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SPatML); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_MPatLL */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatLL); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_MPatML */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatML); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_MPatH_14 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatH_14); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_MPatHL */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_MPatHL); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_SNRatLL */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SNRatLL); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_SNRatML */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SNRatML); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_SpatialatH_14 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_SpatialatH_14); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_HPatML */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatML); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_HPatH_14 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatH_14); + if (stat != ASN_OK) return stat; + + /* encode profileAndLevel_HPatHL */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->profileAndLevel_HPatHL); + if (stat != ASN_OK) return stat; + + /* encode videoBitRate */ + + if (pvalue->m.videoBitRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U); + if (stat != ASN_OK) return stat; + + } + + /* encode vbvBufferSize */ + + if (pvalue->m.vbvBufferSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U); + if (stat != ASN_OK) return stat; + + } + + /* encode samplesPerLine */ + + if (pvalue->m.samplesPerLinePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode linesPerFrame */ + + if (pvalue->m.linesPerFramePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode framesPerSecond */ + + if (pvalue->m.framesPerSecondPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->framesPerSecond, 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + /* encode luminanceSampleRate */ + + if (pvalue->m.luminanceSampleRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent); + /* encode extension elements */ + + if (pvalue->m.videoBadMBsCapPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransparencyParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TransparencyParameters (OOCTXT* pctxt, H245TransparencyParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode presentationOrder */ + + stat = encodeConsUnsigned (pctxt, pvalue->presentationOrder, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode offset_x */ + + stat = encodeConsInteger (pctxt, pvalue->offset_x, -262144, 262143); + if (stat != ASN_OK) return stat; + + /* encode offset_y */ + + stat = encodeConsInteger (pctxt, pvalue->offset_y, -262144, 262143); + if (stat != ASN_OK) return stat; + + /* encode scale_x */ + + stat = encodeConsUnsigned (pctxt, pvalue->scale_x, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode scale_y */ + + stat = encodeConsUnsigned (pctxt, pvalue->scale_y, 1U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RefPictureSelection_additionalPictureMemory */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RefPictureSelection_additionalPictureMemory (OOCTXT* pctxt, H245RefPictureSelection_additionalPictureMemory* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifAdditionalPictureMemoryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifAdditionalPictureMemoryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifAdditionalPictureMemoryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4AdditionalPictureMemoryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16AdditionalPictureMemoryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.bigCpfAdditionalPictureMemoryPresent); + + /* encode sqcifAdditionalPictureMemory */ + + if (pvalue->m.sqcifAdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sqcifAdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode qcifAdditionalPictureMemory */ + + if (pvalue->m.qcifAdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->qcifAdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode cifAdditionalPictureMemory */ + + if (pvalue->m.cifAdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cifAdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif4AdditionalPictureMemory */ + + if (pvalue->m.cif4AdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif4AdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif16AdditionalPictureMemory */ + + if (pvalue->m.cif16AdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif16AdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode bigCpfAdditionalPictureMemory */ + + if (pvalue->m.bigCpfAdditionalPictureMemoryPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->bigCpfAdditionalPictureMemory, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RefPictureSelection_videoBackChannelSend */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RefPictureSelection_videoBackChannelSend (OOCTXT* pctxt, H245RefPictureSelection_videoBackChannelSend* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* none */ + case 1: + /* NULL */ + break; + + /* ackMessageOnly */ + case 2: + /* NULL */ + break; + + /* nackMessageOnly */ + case 3: + /* NULL */ + break; + + /* ackOrNackMessageOnly */ + case 4: + /* NULL */ + break; + + /* ackAndNackMessage */ + case 5: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RefPictureSelection_enhancedReferencePicSelect_subPictur */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode mpuHorizMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->mpuHorizMBs, 1U, 128U); + if (stat != ASN_OK) return stat; + + /* encode mpuVertMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->mpuVertMBs, 1U, 72U); + if (stat != ASN_OK) return stat; + + /* encode mpuTotalNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->mpuTotalNumber, 1U, 65536U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RefPictureSelection_enhancedReferencePicSelect */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RefPictureSelection_enhancedReferencePicSelect (OOCTXT* pctxt, H245RefPictureSelection_enhancedReferencePicSelect* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.subPictureRemovalParametersPresent); + + /* encode subPictureRemovalParameters */ + + if (pvalue->m.subPictureRemovalParametersPresent) { + stat = asn1PE_H245RefPictureSelection_enhancedReferencePicSelect_subPictureRemovalParameters (pctxt, &pvalue->subPictureRemovalParameters); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RefPictureSelection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RefPictureSelection (OOCTXT* pctxt, H245RefPictureSelection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.enhancedReferencePicSelectPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalPictureMemoryPresent); + + /* encode additionalPictureMemory */ + + if (pvalue->m.additionalPictureMemoryPresent) { + stat = asn1PE_H245RefPictureSelection_additionalPictureMemory (pctxt, &pvalue->additionalPictureMemory); + if (stat != ASN_OK) return stat; + } + + /* encode videoMux */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoMux); + if (stat != ASN_OK) return stat; + + /* encode videoBackChannelSend */ + + stat = asn1PE_H245RefPictureSelection_videoBackChannelSend (pctxt, &pvalue->videoBackChannelSend); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancedReferencePicSelectPresent); + /* encode extension elements */ + + if (pvalue->m.enhancedReferencePicSelectPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245RefPictureSelection_enhancedReferencePicSelect (&lctxt, &pvalue->enhancedReferencePicSelect); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureClockFrequency */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureClockFrequency (OOCTXT* pctxt, H245CustomPictureClockFrequency* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent); + + /* encode clockConversionCode */ + + stat = encodeConsUnsigned (pctxt, pvalue->clockConversionCode, 1000U, 1001U); + if (stat != ASN_OK) return stat; + + /* encode clockDivisor */ + + stat = encodeConsUnsigned (pctxt, pvalue->clockDivisor, 1U, 127U); + if (stat != ASN_OK) return stat; + + /* encode sqcifMPI */ + + if (pvalue->m.sqcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + } + + /* encode qcifMPI */ + + if (pvalue->m.qcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + } + + /* encode cifMPI */ + + if (pvalue->m.cifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif4MPI */ + + if (pvalue->m.cif4MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif16MPI */ + + if (pvalue->m.cif16MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263Options_customPictureClockFrequency */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263Options_customPictureClockFrequency (OOCTXT* pctxt, H245H263Options_customPictureClockFrequency* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CustomPictureClockFrequency (pctxt, ((H245CustomPictureClockFrequency*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_mPI_customPCF_element */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF_element (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF_element* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode clockConversionCode */ + + stat = encodeConsUnsigned (pctxt, pvalue->clockConversionCode, 1000U, 1001U); + if (stat != ASN_OK) return stat; + + /* encode clockDivisor */ + + stat = encodeConsUnsigned (pctxt, pvalue->clockDivisor, 1U, 127U); + if (stat != ASN_OK) return stat; + + /* encode customMPI */ + + stat = encodeConsUnsigned (pctxt, pvalue->customMPI, 1U, 2048U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_mPI_customPCF */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_mPI_customPCF (OOCTXT* pctxt, H245CustomPictureFormat_mPI_customPCF* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CustomPictureFormat_mPI_customPCF_element (pctxt, ((H245CustomPictureFormat_mPI_customPCF_element*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_mPI */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_mPI (OOCTXT* pctxt, H245CustomPictureFormat_mPI* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.standardMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPCFPresent); + + /* encode standardMPI */ + + if (pvalue->m.standardMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->standardMPI, 1U, 31U); + if (stat != ASN_OK) return stat; + + } + + /* encode customPCF */ + + if (pvalue->m.customPCFPresent) { + stat = asn1PE_H245CustomPictureFormat_mPI_customPCF (pctxt, &pvalue->customPCF); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_pixelAspectInformation_pixelAspectCo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 1U, 14U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_pixelAspectInformation_extendedPAR_e */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode width */ + + stat = encodeConsUnsigned (pctxt, pvalue->width, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode height */ + + stat = encodeConsUnsigned (pctxt, pvalue->height, 1U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_pixelAspectInformation_extendedPAR */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation_extendedPAR* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element (pctxt, ((H245CustomPictureFormat_pixelAspectInformation_extendedPAR_element*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat_pixelAspectInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat_pixelAspectInformation (OOCTXT* pctxt, H245CustomPictureFormat_pixelAspectInformation* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* anyPixelAspectRatio */ + case 1: + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.anyPixelAspectRatio); + if (stat != ASN_OK) return stat; + break; + + /* pixelAspectCode */ + case 2: + stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_pixelAspectCode (pctxt, pvalue->u.pixelAspectCode); + if (stat != ASN_OK) return stat; + break; + + /* extendedPAR */ + case 3: + stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation_extendedPAR (pctxt, pvalue->u.extendedPAR); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CustomPictureFormat */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CustomPictureFormat (OOCTXT* pctxt, H245CustomPictureFormat* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maxCustomPictureWidth */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxCustomPictureWidth, 1U, 2048U); + if (stat != ASN_OK) return stat; + + /* encode maxCustomPictureHeight */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxCustomPictureHeight, 1U, 2048U); + if (stat != ASN_OK) return stat; + + /* encode minCustomPictureWidth */ + + stat = encodeConsUnsigned (pctxt, pvalue->minCustomPictureWidth, 1U, 2048U); + if (stat != ASN_OK) return stat; + + /* encode minCustomPictureHeight */ + + stat = encodeConsUnsigned (pctxt, pvalue->minCustomPictureHeight, 1U, 2048U); + if (stat != ASN_OK) return stat; + + /* encode mPI */ + + stat = asn1PE_H245CustomPictureFormat_mPI (pctxt, &pvalue->mPI); + if (stat != ASN_OK) return stat; + + /* encode pixelAspectInformation */ + + stat = asn1PE_H245CustomPictureFormat_pixelAspectInformation (pctxt, &pvalue->pixelAspectInformation); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263Options_customPictureFormat */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263Options_customPictureFormat (OOCTXT* pctxt, H245H263Options_customPictureFormat* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CustomPictureFormat (pctxt, ((H245CustomPictureFormat*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263Version3Options */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263Version3Options (OOCTXT* pctxt, H245H263Version3Options* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode dataPartitionedSlices */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dataPartitionedSlices); + if (stat != ASN_OK) return stat; + + /* encode fixedPointIDCT0 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fixedPointIDCT0); + if (stat != ASN_OK) return stat; + + /* encode interlacedFields */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->interlacedFields); + if (stat != ASN_OK) return stat; + + /* encode currentPictureHeaderRepetition */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->currentPictureHeaderRepetition); + if (stat != ASN_OK) return stat; + + /* encode previousPictureHeaderRepetition */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->previousPictureHeaderRepetition); + if (stat != ASN_OK) return stat; + + /* encode nextPictureHeaderRepetition */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->nextPictureHeaderRepetition); + if (stat != ASN_OK) return stat; + + /* encode pictureNumber */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pictureNumber); + if (stat != ASN_OK) return stat; + + /* encode spareReferencePictures */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->spareReferencePictures); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263ModeComboFlags */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263ModeComboFlags (OOCTXT* pctxt, H245H263ModeComboFlags* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.enhancedReferencePicSelectPresent || + pvalue->m.h263Version3OptionsPresent); + + encodeBit (pctxt, extbit); + + /* encode unrestrictedVector */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector); + if (stat != ASN_OK) return stat; + + /* encode arithmeticCoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding); + if (stat != ASN_OK) return stat; + + /* encode advancedPrediction */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction); + if (stat != ASN_OK) return stat; + + /* encode pbFrames */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames); + if (stat != ASN_OK) return stat; + + /* encode advancedIntraCodingMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedIntraCodingMode); + if (stat != ASN_OK) return stat; + + /* encode deblockingFilterMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->deblockingFilterMode); + if (stat != ASN_OK) return stat; + + /* encode unlimitedMotionVectors */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unlimitedMotionVectors); + if (stat != ASN_OK) return stat; + + /* encode slicesInOrder_NonRect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_NonRect); + if (stat != ASN_OK) return stat; + + /* encode slicesInOrder_Rect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_Rect); + if (stat != ASN_OK) return stat; + + /* encode slicesNoOrder_NonRect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_NonRect); + if (stat != ASN_OK) return stat; + + /* encode slicesNoOrder_Rect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_Rect); + if (stat != ASN_OK) return stat; + + /* encode improvedPBFramesMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->improvedPBFramesMode); + if (stat != ASN_OK) return stat; + + /* encode referencePicSelect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->referencePicSelect); + if (stat != ASN_OK) return stat; + + /* encode dynamicPictureResizingByFour */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingByFour); + if (stat != ASN_OK) return stat; + + /* encode dynamicPictureResizingSixteenthPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingSixteenthPel); + if (stat != ASN_OK) return stat; + + /* encode dynamicWarpingHalfPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingHalfPel); + if (stat != ASN_OK) return stat; + + /* encode dynamicWarpingSixteenthPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingSixteenthPel); + if (stat != ASN_OK) return stat; + + /* encode reducedResolutionUpdate */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->reducedResolutionUpdate); + if (stat != ASN_OK) return stat; + + /* encode independentSegmentDecoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->independentSegmentDecoding); + if (stat != ASN_OK) return stat; + + /* encode alternateInterVLCMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alternateInterVLCMode); + if (stat != ASN_OK) return stat; + + /* encode modifiedQuantizationMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modifiedQuantizationMode); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancedReferencePicSelectPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263Version3OptionsPresent); + /* encode extension elements */ + + if (pvalue->m.enhancedReferencePicSelectPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->enhancedReferencePicSelect); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h263Version3OptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H263Version3Options (&lctxt, &pvalue->h263Version3Options); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263VideoModeCombos_h263VideoCoupledModes */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263VideoModeCombos_h263VideoCoupledModes (OOCTXT* pctxt, H245H263VideoModeCombos_h263VideoCoupledModes* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245H263ModeComboFlags (pctxt, ((H245H263ModeComboFlags*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263VideoModeCombos */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263VideoModeCombos (OOCTXT* pctxt, H245H263VideoModeCombos* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode h263VideoUncoupledModes */ + + stat = asn1PE_H245H263ModeComboFlags (pctxt, &pvalue->h263VideoUncoupledModes); + if (stat != ASN_OK) return stat; + + /* encode h263VideoCoupledModes */ + + stat = asn1PE_H245H263VideoModeCombos_h263VideoCoupledModes (pctxt, &pvalue->h263VideoCoupledModes); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263Options_modeCombos */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263Options_modeCombos (OOCTXT* pctxt, H245H263Options_modeCombos* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245H263VideoModeCombos (pctxt, ((H245H263VideoModeCombos*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263Options */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263Options (OOCTXT* pctxt, H245H263Options* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent || + pvalue->m.h263Version3OptionsPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.transparencyParametersPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.refPictureSelectionPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPictureClockFrequencyPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.customPictureFormatPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.modeCombosPresent); + + /* encode advancedIntraCodingMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedIntraCodingMode); + if (stat != ASN_OK) return stat; + + /* encode deblockingFilterMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->deblockingFilterMode); + if (stat != ASN_OK) return stat; + + /* encode improvedPBFramesMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->improvedPBFramesMode); + if (stat != ASN_OK) return stat; + + /* encode unlimitedMotionVectors */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unlimitedMotionVectors); + if (stat != ASN_OK) return stat; + + /* encode fullPictureFreeze */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fullPictureFreeze); + if (stat != ASN_OK) return stat; + + /* encode partialPictureFreezeAndRelease */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partialPictureFreezeAndRelease); + if (stat != ASN_OK) return stat; + + /* encode resizingPartPicFreezeAndRelease */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->resizingPartPicFreezeAndRelease); + if (stat != ASN_OK) return stat; + + /* encode fullPictureSnapshot */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fullPictureSnapshot); + if (stat != ASN_OK) return stat; + + /* encode partialPictureSnapshot */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partialPictureSnapshot); + if (stat != ASN_OK) return stat; + + /* encode videoSegmentTagging */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->videoSegmentTagging); + if (stat != ASN_OK) return stat; + + /* encode progressiveRefinement */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->progressiveRefinement); + if (stat != ASN_OK) return stat; + + /* encode dynamicPictureResizingByFour */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingByFour); + if (stat != ASN_OK) return stat; + + /* encode dynamicPictureResizingSixteenthPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicPictureResizingSixteenthPel); + if (stat != ASN_OK) return stat; + + /* encode dynamicWarpingHalfPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingHalfPel); + if (stat != ASN_OK) return stat; + + /* encode dynamicWarpingSixteenthPel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->dynamicWarpingSixteenthPel); + if (stat != ASN_OK) return stat; + + /* encode independentSegmentDecoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->independentSegmentDecoding); + if (stat != ASN_OK) return stat; + + /* encode slicesInOrder_NonRect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_NonRect); + if (stat != ASN_OK) return stat; + + /* encode slicesInOrder_Rect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesInOrder_Rect); + if (stat != ASN_OK) return stat; + + /* encode slicesNoOrder_NonRect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_NonRect); + if (stat != ASN_OK) return stat; + + /* encode slicesNoOrder_Rect */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->slicesNoOrder_Rect); + if (stat != ASN_OK) return stat; + + /* encode alternateInterVLCMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alternateInterVLCMode); + if (stat != ASN_OK) return stat; + + /* encode modifiedQuantizationMode */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->modifiedQuantizationMode); + if (stat != ASN_OK) return stat; + + /* encode reducedResolutionUpdate */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->reducedResolutionUpdate); + if (stat != ASN_OK) return stat; + + /* encode transparencyParameters */ + + if (pvalue->m.transparencyParametersPresent) { + stat = asn1PE_H245TransparencyParameters (pctxt, &pvalue->transparencyParameters); + if (stat != ASN_OK) return stat; + } + + /* encode separateVideoBackChannel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->separateVideoBackChannel); + if (stat != ASN_OK) return stat; + + /* encode refPictureSelection */ + + if (pvalue->m.refPictureSelectionPresent) { + stat = asn1PE_H245RefPictureSelection (pctxt, &pvalue->refPictureSelection); + if (stat != ASN_OK) return stat; + } + + /* encode customPictureClockFrequency */ + + if (pvalue->m.customPictureClockFrequencyPresent) { + stat = asn1PE_H245H263Options_customPictureClockFrequency (pctxt, &pvalue->customPictureClockFrequency); + if (stat != ASN_OK) return stat; + } + + /* encode customPictureFormat */ + + if (pvalue->m.customPictureFormatPresent) { + stat = asn1PE_H245H263Options_customPictureFormat (pctxt, &pvalue->customPictureFormat); + if (stat != ASN_OK) return stat; + } + + /* encode modeCombos */ + + if (pvalue->m.modeCombosPresent) { + stat = asn1PE_H245H263Options_modeCombos (pctxt, &pvalue->modeCombos); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263Version3OptionsPresent); + /* encode extension elements */ + + if (pvalue->m.videoBadMBsCapPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h263Version3OptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H263Version3Options (&lctxt, &pvalue->h263Version3Options); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnhancementOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EnhancementOptions (OOCTXT* pctxt, H245EnhancementOptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowSqcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowQcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif4MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif16MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent); + + /* encode sqcifMPI */ + + if (pvalue->m.sqcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode qcifMPI */ + + if (pvalue->m.qcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cifMPI */ + + if (pvalue->m.cifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif4MPI */ + + if (pvalue->m.cif4MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif16MPI */ + + if (pvalue->m.cif16MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode maxBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 192400U); + if (stat != ASN_OK) return stat; + + /* encode unrestrictedVector */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector); + if (stat != ASN_OK) return stat; + + /* encode arithmeticCoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding); + if (stat != ASN_OK) return stat; + + /* encode temporalSpatialTradeOffCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability); + if (stat != ASN_OK) return stat; + + /* encode slowSqcifMPI */ + + if (pvalue->m.slowSqcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->slowSqcifMPI, 1U, 3600U); + if (stat != ASN_OK) return stat; + + } + + /* encode slowQcifMPI */ + + if (pvalue->m.slowQcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->slowQcifMPI, 1U, 3600U); + if (stat != ASN_OK) return stat; + + } + + /* encode slowCifMPI */ + + if (pvalue->m.slowCifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->slowCifMPI, 1U, 3600U); + if (stat != ASN_OK) return stat; + + } + + /* encode slowCif4MPI */ + + if (pvalue->m.slowCif4MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->slowCif4MPI, 1U, 3600U); + if (stat != ASN_OK) return stat; + + } + + /* encode slowCif16MPI */ + + if (pvalue->m.slowCif16MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->slowCif16MPI, 1U, 3600U); + if (stat != ASN_OK) return stat; + + } + + /* encode errorCompensation */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->errorCompensation); + if (stat != ASN_OK) return stat; + + /* encode h263Options */ + + if (pvalue->m.h263OptionsPresent) { + stat = asn1PE_H245H263Options (pctxt, &pvalue->h263Options); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnhancementLayerInfo_snrEnhancement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EnhancementLayerInfo_snrEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_snrEnhancement* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245EnhancementOptions (pctxt, ((H245EnhancementOptions*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnhancementLayerInfo_spatialEnhancement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EnhancementLayerInfo_spatialEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_spatialEnhancement* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245EnhancementOptions (pctxt, ((H245EnhancementOptions*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* BEnhancementParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245BEnhancementParameters (OOCTXT* pctxt, H245BEnhancementParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode enhancementOptions */ + + stat = asn1PE_H245EnhancementOptions (pctxt, &pvalue->enhancementOptions); + if (stat != ASN_OK) return stat; + + /* encode numberOfBPictures */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfBPictures, 1U, 64U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnhancementLayerInfo_bPictureEnhancement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EnhancementLayerInfo_bPictureEnhancement (OOCTXT* pctxt, H245EnhancementLayerInfo_bPictureEnhancement* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 14, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245BEnhancementParameters (pctxt, ((H245BEnhancementParameters*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnhancementLayerInfo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EnhancementLayerInfo (OOCTXT* pctxt, H245EnhancementLayerInfo* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.snrEnhancementPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.spatialEnhancementPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.bPictureEnhancementPresent); + + /* encode baseBitRateConstrained */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->baseBitRateConstrained); + if (stat != ASN_OK) return stat; + + /* encode snrEnhancement */ + + if (pvalue->m.snrEnhancementPresent) { + stat = asn1PE_H245EnhancementLayerInfo_snrEnhancement (pctxt, &pvalue->snrEnhancement); + if (stat != ASN_OK) return stat; + } + + /* encode spatialEnhancement */ + + if (pvalue->m.spatialEnhancementPresent) { + stat = asn1PE_H245EnhancementLayerInfo_spatialEnhancement (pctxt, &pvalue->spatialEnhancement); + if (stat != ASN_OK) return stat; + } + + /* encode bPictureEnhancement */ + + if (pvalue->m.bPictureEnhancementPresent) { + stat = asn1PE_H245EnhancementLayerInfo_bPictureEnhancement (pctxt, &pvalue->bPictureEnhancement); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263VideoCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263VideoCapability (OOCTXT* pctxt, H245H263VideoCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.slowSqcifMPIPresent || + pvalue->m.slowQcifMPIPresent || + pvalue->m.slowCifMPIPresent || + pvalue->m.slowCif4MPIPresent || + pvalue->m.slowCif16MPIPresent || + pvalue->m.errorCompensationPresent || + pvalue->m.enhancementLayerInfoPresent || + pvalue->m.h263OptionsPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sqcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qcifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cifMPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif4MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.cif16MPIPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.hrd_BPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.bppMaxKbPresent); + + /* encode sqcifMPI */ + + if (pvalue->m.sqcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sqcifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode qcifMPI */ + + if (pvalue->m.qcifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->qcifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cifMPI */ + + if (pvalue->m.cifMPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cifMPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif4MPI */ + + if (pvalue->m.cif4MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif4MPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode cif16MPI */ + + if (pvalue->m.cif16MPIPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->cif16MPI, 1U, 32U); + if (stat != ASN_OK) return stat; + + } + + /* encode maxBitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxBitRate, 1U, 192400U); + if (stat != ASN_OK) return stat; + + /* encode unrestrictedVector */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector); + if (stat != ASN_OK) return stat; + + /* encode arithmeticCoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding); + if (stat != ASN_OK) return stat; + + /* encode advancedPrediction */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction); + if (stat != ASN_OK) return stat; + + /* encode pbFrames */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames); + if (stat != ASN_OK) return stat; + + /* encode temporalSpatialTradeOffCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->temporalSpatialTradeOffCapability); + if (stat != ASN_OK) return stat; + + /* encode hrd_B */ + + if (pvalue->m.hrd_BPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->hrd_B, 0U, 524287U); + if (stat != ASN_OK) return stat; + + } + + /* encode bppMaxKb */ + + if (pvalue->m.bppMaxKbPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->bppMaxKb, 0U, 65535U); + if (stat != ASN_OK) return stat; + + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 7); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowSqcifMPIPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowQcifMPIPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCifMPIPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif4MPIPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.slowCif16MPIPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.errorCompensationPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancementLayerInfoPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent); + /* encode extension elements */ + + if (pvalue->m.slowSqcifMPIPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->slowSqcifMPI, 1U, 3600U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.slowQcifMPIPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->slowQcifMPI, 1U, 3600U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.slowCifMPIPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->slowCifMPI, 1U, 3600U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.slowCif4MPIPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->slowCif4MPI, 1U, 3600U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.slowCif16MPIPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->slowCif16MPI, 1U, 3600U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.errorCompensationPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->errorCompensation); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.enhancementLayerInfoPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245EnhancementLayerInfo (&lctxt, &pvalue->enhancementLayerInfo); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h263OptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H263Options (&lctxt, &pvalue->h263Options); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172VideoCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172VideoCapability (OOCTXT* pctxt, H245IS11172VideoCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.videoBadMBsCapPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.pictureRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent); + + /* encode constrainedBitstream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->constrainedBitstream); + if (stat != ASN_OK) return stat; + + /* encode videoBitRate */ + + if (pvalue->m.videoBitRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U); + if (stat != ASN_OK) return stat; + + } + + /* encode vbvBufferSize */ + + if (pvalue->m.vbvBufferSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U); + if (stat != ASN_OK) return stat; + + } + + /* encode samplesPerLine */ + + if (pvalue->m.samplesPerLinePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode linesPerFrame */ + + if (pvalue->m.linesPerFramePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode pictureRate */ + + if (pvalue->m.pictureRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->pictureRate, 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + /* encode luminanceSampleRate */ + + if (pvalue->m.luminanceSampleRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBadMBsCapPresent); + /* encode extension elements */ + + if (pvalue->m.videoBadMBsCapPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoBadMBsCap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VideoCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VideoCapability (OOCTXT* pctxt, H245VideoCapability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* h261VideoCapability */ + case 2: + stat = asn1PE_H245H261VideoCapability (pctxt, pvalue->u.h261VideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* h262VideoCapability */ + case 3: + stat = asn1PE_H245H262VideoCapability (pctxt, pvalue->u.h262VideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* h263VideoCapability */ + case 4: + stat = asn1PE_H245H263VideoCapability (pctxt, pvalue->u.h263VideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* is11172VideoCapability */ + case 5: + stat = asn1PE_H245IS11172VideoCapability (pctxt, pvalue->u.is11172VideoCapability); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* genericVideoCapability */ + case 6: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericVideoCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioCapability_g7231 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioCapability_g7231 (OOCTXT* pctxt, H245AudioCapability_g7231* pvalue) +{ + int stat = ASN_OK; + + /* encode maxAl_sduAudioFrames */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode silenceSuppression */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172AudioCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172AudioCapability (OOCTXT* pctxt, H245IS11172AudioCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioLayer1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer1); + if (stat != ASN_OK) return stat; + + /* encode audioLayer2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer2); + if (stat != ASN_OK) return stat; + + /* encode audioLayer3 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer3); + if (stat != ASN_OK) return stat; + + /* encode audioSampling32k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling32k); + if (stat != ASN_OK) return stat; + + /* encode audioSampling44k1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling44k1); + if (stat != ASN_OK) return stat; + + /* encode audioSampling48k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling48k); + if (stat != ASN_OK) return stat; + + /* encode singleChannel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->singleChannel); + if (stat != ASN_OK) return stat; + + /* encode twoChannels */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoChannels); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 448U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS13818AudioCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS13818AudioCapability (OOCTXT* pctxt, H245IS13818AudioCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioLayer1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer1); + if (stat != ASN_OK) return stat; + + /* encode audioLayer2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer2); + if (stat != ASN_OK) return stat; + + /* encode audioLayer3 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioLayer3); + if (stat != ASN_OK) return stat; + + /* encode audioSampling16k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling16k); + if (stat != ASN_OK) return stat; + + /* encode audioSampling22k05 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling22k05); + if (stat != ASN_OK) return stat; + + /* encode audioSampling24k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling24k); + if (stat != ASN_OK) return stat; + + /* encode audioSampling32k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling32k); + if (stat != ASN_OK) return stat; + + /* encode audioSampling44k1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling44k1); + if (stat != ASN_OK) return stat; + + /* encode audioSampling48k */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioSampling48k); + if (stat != ASN_OK) return stat; + + /* encode singleChannel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->singleChannel); + if (stat != ASN_OK) return stat; + + /* encode twoChannels */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->twoChannels); + if (stat != ASN_OK) return stat; + + /* encode threeChannels2_1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threeChannels2_1); + if (stat != ASN_OK) return stat; + + /* encode threeChannels3_0 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threeChannels3_0); + if (stat != ASN_OK) return stat; + + /* encode fourChannels2_0_2_0 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels2_0_2_0); + if (stat != ASN_OK) return stat; + + /* encode fourChannels2_2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels2_2); + if (stat != ASN_OK) return stat; + + /* encode fourChannels3_1 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fourChannels3_1); + if (stat != ASN_OK) return stat; + + /* encode fiveChannels3_0_2_0 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fiveChannels3_0_2_0); + if (stat != ASN_OK) return stat; + + /* encode fiveChannels3_2 */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->fiveChannels3_2); + if (stat != ASN_OK) return stat; + + /* encode lowFrequencyEnhancement */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->lowFrequencyEnhancement); + if (stat != ASN_OK) return stat; + + /* encode multilingual */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multilingual); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 1130U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* G7231AnnexCCapability_g723AnnexCAudioMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245G7231AnnexCCapability_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCCapability_g723AnnexCAudioMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode highRateMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->highRateMode0, 27U, 78U); + if (stat != ASN_OK) return stat; + + /* encode highRateMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->highRateMode1, 27U, 78U); + if (stat != ASN_OK) return stat; + + /* encode lowRateMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode0, 23U, 66U); + if (stat != ASN_OK) return stat; + + /* encode lowRateMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode1, 23U, 66U); + if (stat != ASN_OK) return stat; + + /* encode sidMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->sidMode0, 6U, 17U); + if (stat != ASN_OK) return stat; + + /* encode sidMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->sidMode1, 6U, 17U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* G7231AnnexCCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245G7231AnnexCCapability (OOCTXT* pctxt, H245G7231AnnexCCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.g723AnnexCAudioModePresent); + + /* encode maxAl_sduAudioFrames */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode silenceSuppression */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression); + if (stat != ASN_OK) return stat; + + /* encode g723AnnexCAudioMode */ + + if (pvalue->m.g723AnnexCAudioModePresent) { + stat = asn1PE_H245G7231AnnexCCapability_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GSMAudioCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245GSMAudioCapability (OOCTXT* pctxt, H245GSMAudioCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioUnitSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->audioUnitSize, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode comfortNoise */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->comfortNoise); + if (stat != ASN_OK) return stat; + + /* encode scrambled */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->scrambled); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* G729Extensions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245G729Extensions (OOCTXT* pctxt, H245G729Extensions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.audioUnitPresent); + + /* encode audioUnit */ + + if (pvalue->m.audioUnitPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->audioUnit, 1U, 256U); + if (stat != ASN_OK) return stat; + + } + + /* encode annexA */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexA); + if (stat != ASN_OK) return stat; + + /* encode annexB */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexB); + if (stat != ASN_OK) return stat; + + /* encode annexD */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexD); + if (stat != ASN_OK) return stat; + + /* encode annexE */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexE); + if (stat != ASN_OK) return stat; + + /* encode annexF */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexF); + if (stat != ASN_OK) return stat; + + /* encode annexG */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexG); + if (stat != ASN_OK) return stat; + + /* encode annexH */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->annexH); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VBDCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VBDCapability (OOCTXT* pctxt, H245VBDCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245AudioCapability (pctxt, (H245AudioCapability*)pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NoPTAudioTelephonyEventCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NoPTAudioTelephonyEventCapability (OOCTXT* pctxt, H245NoPTAudioTelephonyEventCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioTelephoneEvent */ + + stat = encodeVarWidthCharString (pctxt, pvalue->audioTelephoneEvent); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NoPTAudioToneCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NoPTAudioToneCapability (OOCTXT* pctxt, H245NoPTAudioToneCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioCapability (OOCTXT* pctxt, H245AudioCapability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 14); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* g711Alaw64k */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.g711Alaw64k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g711Alaw56k */ + case 3: + stat = encodeConsUnsigned (pctxt, pvalue->u.g711Alaw56k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g711Ulaw64k */ + case 4: + stat = encodeConsUnsigned (pctxt, pvalue->u.g711Ulaw64k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g711Ulaw56k */ + case 5: + stat = encodeConsUnsigned (pctxt, pvalue->u.g711Ulaw56k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g722_64k */ + case 6: + stat = encodeConsUnsigned (pctxt, pvalue->u.g722_64k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g722_56k */ + case 7: + stat = encodeConsUnsigned (pctxt, pvalue->u.g722_56k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g722_48k */ + case 8: + stat = encodeConsUnsigned (pctxt, pvalue->u.g722_48k, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g7231 */ + case 9: + stat = asn1PE_H245AudioCapability_g7231 (pctxt, pvalue->u.g7231); + if (stat != ASN_OK) return stat; + break; + + /* g728 */ + case 10: + stat = encodeConsUnsigned (pctxt, pvalue->u.g728, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g729 */ + case 11: + stat = encodeConsUnsigned (pctxt, pvalue->u.g729, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* g729AnnexA */ + case 12: + stat = encodeConsUnsigned (pctxt, pvalue->u.g729AnnexA, 1U, 256U); + if (stat != ASN_OK) return stat; + + break; + + /* is11172AudioCapability */ + case 13: + stat = asn1PE_H245IS11172AudioCapability (pctxt, pvalue->u.is11172AudioCapability); + if (stat != ASN_OK) return stat; + break; + + /* is13818AudioCapability */ + case 14: + stat = asn1PE_H245IS13818AudioCapability (pctxt, pvalue->u.is13818AudioCapability); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* g729wAnnexB */ + case 15: + stat = encodeConsUnsigned (&lctxt, pvalue->u.g729wAnnexB, 1U, 256U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g729AnnexAwAnnexB */ + case 16: + stat = encodeConsUnsigned (&lctxt, pvalue->u.g729AnnexAwAnnexB, 1U, 256U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g7231AnnexCCapability */ + case 17: + stat = asn1PE_H245G7231AnnexCCapability (&lctxt, pvalue->u.g7231AnnexCCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmFullRate */ + case 18: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmFullRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmHalfRate */ + case 19: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmHalfRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmEnhancedFullRate */ + case 20: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmEnhancedFullRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericAudioCapability */ + case 21: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericAudioCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g729Extensions */ + case 22: + stat = asn1PE_H245G729Extensions (&lctxt, pvalue->u.g729Extensions); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* vbd */ + case 23: + stat = asn1PE_H245VBDCapability (&lctxt, pvalue->u.vbd); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* audioTelephonyEvent */ + case 24: + stat = asn1PE_H245NoPTAudioTelephonyEventCapability (&lctxt, pvalue->u.audioTelephonyEvent); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* audioTone */ + case 25: + stat = asn1PE_H245NoPTAudioToneCapability (&lctxt, pvalue->u.audioTone); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Capability_h233EncryptionReceiveCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Capability_h233EncryptionReceiveCapability (OOCTXT* pctxt, H245Capability_h233EncryptionReceiveCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode h233IVResponseTime */ + + stat = encodeConsUnsigned (pctxt, pvalue->h233IVResponseTime, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245NonStandardParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245NonStandardParameter (OOCTXT* pctxt, H245_SeqOfH245NonStandardParameter* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245NonStandardParameter (pctxt, ((H245NonStandardParameter*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceCapability (OOCTXT* pctxt, H245ConferenceCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.videoIndicateMixingCapabilityPresent || + pvalue->m.multipointVisualizationCapabilityPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent); + + /* encode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + } + + /* encode chairControlCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->chairControlCapability); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoIndicateMixingCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipointVisualizationCapabilityPresent); + /* encode extension elements */ + + if (pvalue->m.videoIndicateMixingCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->videoIndicateMixingCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.multipointVisualizationCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipointVisualizationCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MediaEncryptionAlgorithm */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MediaEncryptionAlgorithm (OOCTXT* pctxt, H245MediaEncryptionAlgorithm* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* algorithm */ + case 2: + stat = encodeObjectIdentifier (pctxt, pvalue->u.algorithm); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionCapability (OOCTXT* pctxt, H245EncryptionCapability* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MediaEncryptionAlgorithm (pctxt, ((H245MediaEncryptionAlgorithm*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AuthenticationCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AuthenticationCapability (OOCTXT* pctxt, H245AuthenticationCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.antiSpamAlgorithmPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.antiSpamAlgorithmPresent); + /* encode extension elements */ + + if (pvalue->m.antiSpamAlgorithmPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeObjectIdentifier (&lctxt, &pvalue->antiSpamAlgorithm); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IntegrityCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IntegrityCapability (OOCTXT* pctxt, H245IntegrityCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionAuthenticationAndIntegrity */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionAuthenticationAndIntegrity (OOCTXT* pctxt, H245EncryptionAuthenticationAndIntegrity* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionCapabilityPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationCapabilityPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCapabilityPresent); + + /* encode encryptionCapability */ + + if (pvalue->m.encryptionCapabilityPresent) { + stat = asn1PE_H245EncryptionCapability (pctxt, &pvalue->encryptionCapability); + if (stat != ASN_OK) return stat; + } + + /* encode authenticationCapability */ + + if (pvalue->m.authenticationCapabilityPresent) { + stat = asn1PE_H245AuthenticationCapability (pctxt, &pvalue->authenticationCapability); + if (stat != ASN_OK) return stat; + } + + /* encode integrityCapability */ + + if (pvalue->m.integrityCapabilityPresent) { + stat = asn1PE_H245IntegrityCapability (pctxt, &pvalue->integrityCapability); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H235SecurityCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H235SecurityCapability (OOCTXT* pctxt, H245H235SecurityCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode encryptionAuthenticationAndIntegrity */ + + stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity); + if (stat != ASN_OK) return stat; + + /* encode mediaCapability */ + + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->mediaCapability); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputCapability_nonStandard */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputCapability_nonStandard (OOCTXT* pctxt, H245UserInputCapability_nonStandard* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245NonStandardParameter (pctxt, ((H245NonStandardParameter*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputCapability (OOCTXT* pctxt, H245UserInputCapability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245UserInputCapability_nonStandard (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* basicString */ + case 2: + /* NULL */ + break; + + /* iA5String */ + case 3: + /* NULL */ + break; + + /* generalString */ + case 4: + /* NULL */ + break; + + /* dtmf */ + case 5: + /* NULL */ + break; + + /* hookflash */ + case 6: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* extendedAlphanumeric */ + case 7: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexFormat */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexFormat (OOCTXT* pctxt, H245MultiplexFormat* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* h222Capability */ + case 2: + stat = asn1PE_H245H222Capability (pctxt, pvalue->u.h222Capability); + if (stat != ASN_OK) return stat; + break; + + /* h223Capability */ + case 3: + stat = asn1PE_H245H223Capability (pctxt, pvalue->u.h223Capability); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AlternativeCapabilitySet */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AlternativeCapabilitySet (OOCTXT* pctxt, H245AlternativeCapabilitySet* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexedStreamCapability_capabilityOnMuxStream */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexedStreamCapability_capabilityOnMuxStream (OOCTXT* pctxt, H245MultiplexedStreamCapability_capabilityOnMuxStream* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexedStreamCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexedStreamCapability (OOCTXT* pctxt, H245MultiplexedStreamCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityOnMuxStreamPresent); + + /* encode multiplexFormat */ + + stat = asn1PE_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat); + if (stat != ASN_OK) return stat; + + /* encode controlOnMuxStream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->controlOnMuxStream); + if (stat != ASN_OK) return stat; + + /* encode capabilityOnMuxStream */ + + if (pvalue->m.capabilityOnMuxStreamPresent) { + stat = asn1PE_H245MultiplexedStreamCapability_capabilityOnMuxStream (pctxt, &pvalue->capabilityOnMuxStream); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioTelephonyEventCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioTelephonyEventCapability (OOCTXT* pctxt, H245AudioTelephonyEventCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode dynamicRTPPayloadType */ + + stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U); + if (stat != ASN_OK) return stat; + + /* encode audioTelephoneEvent */ + + stat = encodeVarWidthCharString (pctxt, pvalue->audioTelephoneEvent); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioToneCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioToneCapability (OOCTXT* pctxt, H245AudioToneCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode dynamicRTPPayloadType */ + + stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECCapability_rfc2733_separateStream */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECCapability_rfc2733_separateStream (OOCTXT* pctxt, H245FECCapability_rfc2733_separateStream* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode separatePort */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->separatePort); + if (stat != ASN_OK) return stat; + + /* encode samePort */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->samePort); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECCapability_rfc2733 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECCapability_rfc2733 (OOCTXT* pctxt, H245FECCapability_rfc2733* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode redundancyEncoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->redundancyEncoding); + if (stat != ASN_OK) return stat; + + /* encode separateStream */ + + stat = asn1PE_H245FECCapability_rfc2733_separateStream (pctxt, &pvalue->separateStream); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECCapability (OOCTXT* pctxt, H245FECCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* rfc2733 */ + case 1: + stat = asn1PE_H245FECCapability_rfc2733 (pctxt, pvalue->u.rfc2733); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStreamCapability_capabilities */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStreamCapability_capabilities (OOCTXT* pctxt, H245MultiplePayloadStreamCapability_capabilities* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStreamCapability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStreamCapability (OOCTXT* pctxt, H245MultiplePayloadStreamCapability* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode capabilities */ + + stat = asn1PE_H245MultiplePayloadStreamCapability_capabilities (pctxt, &pvalue->capabilities); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Capability */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Capability (OOCTXT* pctxt, H245Capability* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 12); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* receiveVideoCapability */ + case 2: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.receiveVideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* transmitVideoCapability */ + case 3: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.transmitVideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* receiveAndTransmitVideoCapability */ + case 4: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.receiveAndTransmitVideoCapability); + if (stat != ASN_OK) return stat; + break; + + /* receiveAudioCapability */ + case 5: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.receiveAudioCapability); + if (stat != ASN_OK) return stat; + break; + + /* transmitAudioCapability */ + case 6: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.transmitAudioCapability); + if (stat != ASN_OK) return stat; + break; + + /* receiveAndTransmitAudioCapability */ + case 7: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.receiveAndTransmitAudioCapability); + if (stat != ASN_OK) return stat; + break; + + /* receiveDataApplicationCapability */ + case 8: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.receiveDataApplicationCapability); + if (stat != ASN_OK) return stat; + break; + + /* transmitDataApplicationCapability */ + case 9: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.transmitDataApplicationCapability); + if (stat != ASN_OK) return stat; + break; + + /* receiveAndTransmitDataApplicationCapability */ + case 10: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.receiveAndTransmitDataApplicationCapability); + if (stat != ASN_OK) return stat; + break; + + /* h233EncryptionTransmitCapability */ + case 11: + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.h233EncryptionTransmitCapability); + if (stat != ASN_OK) return stat; + break; + + /* h233EncryptionReceiveCapability */ + case 12: + stat = asn1PE_H245Capability_h233EncryptionReceiveCapability (pctxt, pvalue->u.h233EncryptionReceiveCapability); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* conferenceCapability */ + case 13: + stat = asn1PE_H245ConferenceCapability (&lctxt, pvalue->u.conferenceCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* h235SecurityCapability */ + case 14: + stat = asn1PE_H245H235SecurityCapability (&lctxt, pvalue->u.h235SecurityCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* maxPendingReplacementFor */ + case 15: + stat = encodeConsUnsigned (&lctxt, pvalue->u.maxPendingReplacementFor, 0U, 255U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveUserInputCapability */ + case 16: + stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.receiveUserInputCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* transmitUserInputCapability */ + case 17: + stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.transmitUserInputCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveAndTransmitUserInputCapability */ + case 18: + stat = asn1PE_H245UserInputCapability (&lctxt, pvalue->u.receiveAndTransmitUserInputCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericControlCapability */ + case 19: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericControlCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveMultiplexedStreamCapability */ + case 20: + stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.receiveMultiplexedStreamCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* transmitMultiplexedStreamCapability */ + case 21: + stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.transmitMultiplexedStreamCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveAndTransmitMultiplexedStreamCapability */ + case 22: + stat = asn1PE_H245MultiplexedStreamCapability (&lctxt, pvalue->u.receiveAndTransmitMultiplexedStreamCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveRTPAudioTelephonyEventCapability */ + case 23: + stat = asn1PE_H245AudioTelephonyEventCapability (&lctxt, pvalue->u.receiveRTPAudioTelephonyEventCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* receiveRTPAudioToneCapability */ + case 24: + stat = asn1PE_H245AudioToneCapability (&lctxt, pvalue->u.receiveRTPAudioToneCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* fecCapability */ + case 25: + stat = asn1PE_H245FECCapability (&lctxt, pvalue->u.fecCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplePayloadStreamCapability */ + case 26: + stat = asn1PE_H245MultiplePayloadStreamCapability (&lctxt, pvalue->u.multiplePayloadStreamCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityTableEntry */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityTableEntry (OOCTXT* pctxt, H245CapabilityTableEntry* pvalue) +{ + int stat = ASN_OK; + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityPresent); + + /* encode capabilityTableEntryNumber */ + + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->capabilityTableEntryNumber); + if (stat != ASN_OK) return stat; + + /* encode capability */ + + if (pvalue->m.capabilityPresent) { + stat = asn1PE_H245Capability (pctxt, &pvalue->capability); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySet_capabilityTable */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityTable (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityTable* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CapabilityTableEntry (pctxt, ((H245CapabilityTableEntry*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityDescriptorNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityDescriptorNumber (OOCTXT* pctxt, H245CapabilityDescriptorNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityDescriptor_simultaneousCapabilities */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityDescriptor_simultaneousCapabilities (OOCTXT* pctxt, H245CapabilityDescriptor_simultaneousCapabilities* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245AlternativeCapabilitySet (pctxt, ((H245AlternativeCapabilitySet*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CapabilityDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CapabilityDescriptor (OOCTXT* pctxt, H245CapabilityDescriptor* pvalue) +{ + int stat = ASN_OK; + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.simultaneousCapabilitiesPresent); + + /* encode capabilityDescriptorNumber */ + + stat = asn1PE_H245CapabilityDescriptorNumber (pctxt, pvalue->capabilityDescriptorNumber); + if (stat != ASN_OK) return stat; + + /* encode simultaneousCapabilities */ + + if (pvalue->m.simultaneousCapabilitiesPresent) { + stat = asn1PE_H245CapabilityDescriptor_simultaneousCapabilities (pctxt, &pvalue->simultaneousCapabilities); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySet_capabilityDescriptors */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySet_capabilityDescriptors (OOCTXT* pctxt, H245TerminalCapabilitySet_capabilityDescriptors* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CapabilityDescriptor (pctxt, ((H245CapabilityDescriptor*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySet */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySet (OOCTXT* pctxt, H245TerminalCapabilitySet* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexCapabilityPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityTablePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityDescriptorsPresent); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode protocolIdentifier */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->protocolIdentifier); + if (stat != ASN_OK) return stat; + + /* encode multiplexCapability */ + + if (pvalue->m.multiplexCapabilityPresent) { + stat = asn1PE_H245MultiplexCapability (pctxt, &pvalue->multiplexCapability); + if (stat != ASN_OK) return stat; + } + + /* encode capabilityTable */ + + if (pvalue->m.capabilityTablePresent) { + stat = asn1PE_H245TerminalCapabilitySet_capabilityTable (pctxt, &pvalue->capabilityTable); + if (stat != ASN_OK) return stat; + } + + /* encode capabilityDescriptors */ + + if (pvalue->m.capabilityDescriptorsPresent) { + stat = asn1PE_H245TerminalCapabilitySet_capabilityDescriptors (pctxt, &pvalue->capabilityDescriptors); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelNumber (OOCTXT* pctxt, H245LogicalChannelNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 1U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionMode (OOCTXT* pctxt, H245EncryptionMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* h233Encryption */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingElement (OOCTXT* pctxt, H245RedundancyEncodingElement* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent); + + /* encode dataType */ + + stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->dataType); + if (stat != ASN_OK) return stat; + + /* encode payloadType */ + + if (pvalue->m.payloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245RedundancyEncodingElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingElement* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245RedundancyEncodingElement (pctxt, ((H245RedundancyEncodingElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncoding_rtpRedundancyEncoding */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncoding_rtpRedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding_rtpRedundancyEncoding* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.primaryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryPresent); + + /* encode primary */ + + if (pvalue->m.primaryPresent) { + stat = asn1PE_H245RedundancyEncodingElement (pctxt, &pvalue->primary); + if (stat != ASN_OK) return stat; + } + + /* encode secondary */ + + if (pvalue->m.secondaryPresent) { + stat = asn1PE_H245_SeqOfH245RedundancyEncodingElement (pctxt, &pvalue->secondary); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncoding */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncoding (OOCTXT* pctxt, H245RedundancyEncoding* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rtpRedundancyEncodingPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent); + + /* encode redundancyEncodingMethod */ + + stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod); + if (stat != ASN_OK) return stat; + + /* encode secondaryEncoding */ + + if (pvalue->m.secondaryEncodingPresent) { + stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->secondaryEncoding); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpRedundancyEncodingPresent); + /* encode extension elements */ + + if (pvalue->m.rtpRedundancyEncodingPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245RedundancyEncoding_rtpRedundancyEncoding (&lctxt, &pvalue->rtpRedundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStreamElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStreamElement (OOCTXT* pctxt, H245MultiplePayloadStreamElement* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.payloadTypePresent); + + /* encode dataType */ + + stat = asn1PE_H245DataType (pctxt, (H245DataType*)pvalue->dataType); + if (stat != ASN_OK) return stat; + + /* encode payloadType */ + + if (pvalue->m.payloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->payloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245MultiplePayloadStreamElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElement (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElement* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245MultiplePayloadStreamElement (pctxt, ((H245MultiplePayloadStreamElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStream */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStream (OOCTXT* pctxt, H245MultiplePayloadStream* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode elements */ + + stat = asn1PE_H245_SeqOfH245MultiplePayloadStreamElement (pctxt, &pvalue->elements); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData_rfc2733_mode_separateStream_differentPort */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_differentPort* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.protectedPayloadTypePresent); + + /* encode protectedSessionID */ + + stat = encodeConsUnsigned (pctxt, pvalue->protectedSessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode protectedPayloadType */ + + if (pvalue->m.protectedPayloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData_rfc2733_mode_separateStream_samePort */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream_samePort (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream_samePort* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode protectedPayloadType */ + + stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData_rfc2733_mode_separateStream */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData_rfc2733_mode_separateStream (OOCTXT* pctxt, H245FECData_rfc2733_mode_separateStream* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* differentPort */ + case 1: + stat = asn1PE_H245FECData_rfc2733_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort); + if (stat != ASN_OK) return stat; + break; + + /* samePort */ + case 2: + stat = asn1PE_H245FECData_rfc2733_mode_separateStream_samePort (pctxt, pvalue->u.samePort); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData_rfc2733_mode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData_rfc2733_mode (OOCTXT* pctxt, H245FECData_rfc2733_mode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* redundancyEncoding */ + case 1: + /* NULL */ + break; + + /* separateStream */ + case 2: + stat = asn1PE_H245FECData_rfc2733_mode_separateStream (pctxt, pvalue->u.separateStream); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData_rfc2733 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData_rfc2733 (OOCTXT* pctxt, H245FECData_rfc2733* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode mode */ + + stat = asn1PE_H245FECData_rfc2733_mode (pctxt, &pvalue->mode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECData */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECData (OOCTXT* pctxt, H245FECData* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* rfc2733 */ + case 1: + stat = asn1PE_H245FECData_rfc2733 (pctxt, pvalue->u.rfc2733); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H235Media_mediaType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H235Media_mediaType (OOCTXT* pctxt, H245H235Media_mediaType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* videoData */ + case 2: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData); + if (stat != ASN_OK) return stat; + break; + + /* audioData */ + case 3: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData); + if (stat != ASN_OK) return stat; + break; + + /* data */ + case 4: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* redundancyEncoding */ + case 5: + stat = asn1PE_H245RedundancyEncoding (&lctxt, pvalue->u.redundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplePayloadStream */ + case 6: + stat = asn1PE_H245MultiplePayloadStream (&lctxt, pvalue->u.multiplePayloadStream); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* fec */ + case 7: + stat = asn1PE_H245FECData (&lctxt, pvalue->u.fec); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H235Media */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H235Media (OOCTXT* pctxt, H245H235Media* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode encryptionAuthenticationAndIntegrity */ + + stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity); + if (stat != ASN_OK) return stat; + + /* encode mediaType */ + + stat = asn1PE_H245H235Media_mediaType (pctxt, &pvalue->mediaType); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexedStreamParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexedStreamParameter (OOCTXT* pctxt, H245MultiplexedStreamParameter* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode multiplexFormat */ + + stat = asn1PE_H245MultiplexFormat (pctxt, &pvalue->multiplexFormat); + if (stat != ASN_OK) return stat; + + /* encode controlOnMuxStream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->controlOnMuxStream); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataType (OOCTXT* pctxt, H245DataType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* nullData */ + case 2: + /* NULL */ + break; + + /* videoData */ + case 3: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData); + if (stat != ASN_OK) return stat; + break; + + /* audioData */ + case 4: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData); + if (stat != ASN_OK) return stat; + break; + + /* data */ + case 5: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data); + if (stat != ASN_OK) return stat; + break; + + /* encryptionData */ + case 6: + stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionData); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h235Control */ + case 7: + stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.h235Control); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* h235Media */ + case 8: + stat = asn1PE_H245H235Media (&lctxt, pvalue->u.h235Media); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplexedStream */ + case 9: + stat = asn1PE_H245MultiplexedStreamParameter (&lctxt, pvalue->u.multiplexedStream); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* redundancyEncoding */ + case 10: + stat = asn1PE_H245RedundancyEncoding (&lctxt, pvalue->u.redundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplePayloadStream */ + case 11: + stat = asn1PE_H245MultiplePayloadStream (&lctxt, pvalue->u.multiplePayloadStream); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* fec */ + case 12: + stat = asn1PE_H245FECData (&lctxt, pvalue->u.fec); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H222LogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H222LogicalChannelParameters (OOCTXT* pctxt, H245H222LogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.pcr_pidPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.programDescriptorsPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.streamDescriptorsPresent); + + /* encode resourceID */ + + stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode subChannelID */ + + stat = encodeConsUnsigned (pctxt, pvalue->subChannelID, 0U, 8191U); + if (stat != ASN_OK) return stat; + + /* encode pcr_pid */ + + if (pvalue->m.pcr_pidPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->pcr_pid, 0U, 8191U); + if (stat != ASN_OK) return stat; + + } + + /* encode programDescriptors */ + + if (pvalue->m.programDescriptorsPresent) { + stat = encodeOctetString (pctxt, pvalue->programDescriptors.numocts, pvalue->programDescriptors.data); + if (stat != ASN_OK) return stat; + } + + /* encode streamDescriptors */ + + if (pvalue->m.streamDescriptorsPresent) { + stat = encodeOctetString (pctxt, pvalue->streamDescriptors.numocts, pvalue->streamDescriptors.data); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223LogicalChannelParameters_adaptationLayerType_al3 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType_al3* pvalue) +{ + int stat = ASN_OK; + + /* encode controlFieldOctets */ + + stat = encodeConsUnsigned (pctxt, pvalue->controlFieldOctets, 0U, 2U); + if (stat != ASN_OK) return stat; + + /* encode sendBufferSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL1MParameters_transferMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL1MParameters_transferMode (OOCTXT* pctxt, H245H223AL1MParameters_transferMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* framed */ + case 1: + /* NULL */ + break; + + /* unframed */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL1MParameters_headerFEC */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL1MParameters_headerFEC (OOCTXT* pctxt, H245H223AL1MParameters_headerFEC* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* sebch16_7 */ + case 1: + /* NULL */ + break; + + /* golay24_12 */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL1MParameters_crcLength */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL1MParameters_crcLength (OOCTXT* pctxt, H245H223AL1MParameters_crcLength* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* crc4bit */ + case 1: + /* NULL */ + break; + + /* crc12bit */ + case 2: + /* NULL */ + break; + + /* crc20bit */ + case 3: + /* NULL */ + break; + + /* crc28bit */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* crc8bit */ + case 5: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crc16bit */ + case 6: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crc32bit */ + case 7: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crcNotUsed */ + case 8: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AnnexCArqParameters_numberOfRetransmissions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AnnexCArqParameters_numberOfRetransmissions (OOCTXT* pctxt, H245H223AnnexCArqParameters_numberOfRetransmissions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* finite */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.finite, 0U, 16U); + if (stat != ASN_OK) return stat; + + break; + + /* infinite */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AnnexCArqParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AnnexCArqParameters (OOCTXT* pctxt, H245H223AnnexCArqParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode numberOfRetransmissions */ + + stat = asn1PE_H245H223AnnexCArqParameters_numberOfRetransmissions (pctxt, &pvalue->numberOfRetransmissions); + if (stat != ASN_OK) return stat; + + /* encode sendBufferSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL1MParameters_arqType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL1MParameters_arqType (OOCTXT* pctxt, H245H223AL1MParameters_arqType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noArq */ + case 1: + /* NULL */ + break; + + /* typeIArq */ + case 2: + stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq); + if (stat != ASN_OK) return stat; + break; + + /* typeIIArq */ + case 3: + stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL1MParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL1MParameters (OOCTXT* pctxt, H245H223AL1MParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rsCodeCorrectionPresent); + + encodeBit (pctxt, extbit); + + /* encode transferMode */ + + stat = asn1PE_H245H223AL1MParameters_transferMode (pctxt, &pvalue->transferMode); + if (stat != ASN_OK) return stat; + + /* encode headerFEC */ + + stat = asn1PE_H245H223AL1MParameters_headerFEC (pctxt, &pvalue->headerFEC); + if (stat != ASN_OK) return stat; + + /* encode crcLength */ + + stat = asn1PE_H245H223AL1MParameters_crcLength (pctxt, &pvalue->crcLength); + if (stat != ASN_OK) return stat; + + /* encode rcpcCodeRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->rcpcCodeRate, 8U, 32U); + if (stat != ASN_OK) return stat; + + /* encode arqType */ + + stat = asn1PE_H245H223AL1MParameters_arqType (pctxt, &pvalue->arqType); + if (stat != ASN_OK) return stat; + + /* encode alpduInterleaving */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving); + if (stat != ASN_OK) return stat; + + /* encode alsduSplitting */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alsduSplitting); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCorrectionPresent); + /* encode extension elements */ + + if (pvalue->m.rsCodeCorrectionPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->rsCodeCorrection, 0U, 127U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL2MParameters_headerFEC */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL2MParameters_headerFEC (OOCTXT* pctxt, H245H223AL2MParameters_headerFEC* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* sebch16_5 */ + case 1: + /* NULL */ + break; + + /* golay24_12 */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL2MParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL2MParameters (OOCTXT* pctxt, H245H223AL2MParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode headerFEC */ + + stat = asn1PE_H245H223AL2MParameters_headerFEC (pctxt, &pvalue->headerFEC); + if (stat != ASN_OK) return stat; + + /* encode alpduInterleaving */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL3MParameters_headerFormat */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL3MParameters_headerFormat (OOCTXT* pctxt, H245H223AL3MParameters_headerFormat* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* sebch16_7 */ + case 1: + /* NULL */ + break; + + /* golay24_12 */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL3MParameters_crcLength */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL3MParameters_crcLength (OOCTXT* pctxt, H245H223AL3MParameters_crcLength* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* crc4bit */ + case 1: + /* NULL */ + break; + + /* crc12bit */ + case 2: + /* NULL */ + break; + + /* crc20bit */ + case 3: + /* NULL */ + break; + + /* crc28bit */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* crc8bit */ + case 5: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crc16bit */ + case 6: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crc32bit */ + case 7: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* crcNotUsed */ + case 8: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL3MParameters_arqType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL3MParameters_arqType (OOCTXT* pctxt, H245H223AL3MParameters_arqType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noArq */ + case 1: + /* NULL */ + break; + + /* typeIArq */ + case 2: + stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIArq); + if (stat != ASN_OK) return stat; + break; + + /* typeIIArq */ + case 3: + stat = asn1PE_H245H223AnnexCArqParameters (pctxt, pvalue->u.typeIIArq); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223AL3MParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223AL3MParameters (OOCTXT* pctxt, H245H223AL3MParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rsCodeCorrectionPresent); + + encodeBit (pctxt, extbit); + + /* encode headerFormat */ + + stat = asn1PE_H245H223AL3MParameters_headerFormat (pctxt, &pvalue->headerFormat); + if (stat != ASN_OK) return stat; + + /* encode crcLength */ + + stat = asn1PE_H245H223AL3MParameters_crcLength (pctxt, &pvalue->crcLength); + if (stat != ASN_OK) return stat; + + /* encode rcpcCodeRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->rcpcCodeRate, 8U, 32U); + if (stat != ASN_OK) return stat; + + /* encode arqType */ + + stat = asn1PE_H245H223AL3MParameters_arqType (pctxt, &pvalue->arqType); + if (stat != ASN_OK) return stat; + + /* encode alpduInterleaving */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alpduInterleaving); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rsCodeCorrectionPresent); + /* encode extension elements */ + + if (pvalue->m.rsCodeCorrectionPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->rsCodeCorrection, 0U, 127U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223LogicalChannelParameters_adaptationLayerType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223LogicalChannelParameters_adaptationLayerType (OOCTXT* pctxt, H245H223LogicalChannelParameters_adaptationLayerType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* al1Framed */ + case 2: + /* NULL */ + break; + + /* al1NotFramed */ + case 3: + /* NULL */ + break; + + /* al2WithoutSequenceNumbers */ + case 4: + /* NULL */ + break; + + /* al2WithSequenceNumbers */ + case 5: + /* NULL */ + break; + + /* al3 */ + case 6: + stat = asn1PE_H245H223LogicalChannelParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* al1M */ + case 7: + stat = asn1PE_H245H223AL1MParameters (&lctxt, pvalue->u.al1M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* al2M */ + case 8: + stat = asn1PE_H245H223AL2MParameters (&lctxt, pvalue->u.al2M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* al3M */ + case 9: + stat = asn1PE_H245H223AL3MParameters (&lctxt, pvalue->u.al3M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223LogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223LogicalChannelParameters (OOCTXT* pctxt, H245H223LogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode adaptationLayerType */ + + stat = asn1PE_H245H223LogicalChannelParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType); + if (stat != ASN_OK) return stat; + + /* encode segmentableFlag */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->segmentableFlag); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CRCLength */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CRCLength (OOCTXT* pctxt, H245CRCLength* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* crc8bit */ + case 1: + /* NULL */ + break; + + /* crc16bit */ + case 2: + /* NULL */ + break; + + /* crc32bit */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76HDLCParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76HDLCParameters (OOCTXT* pctxt, H245V76HDLCParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode crcLength */ + + stat = asn1PE_H245CRCLength (pctxt, &pvalue->crcLength); + if (stat != ASN_OK) return stat; + + /* encode n401 */ + + stat = encodeConsUnsigned (pctxt, pvalue->n401, 1U, 4095U); + if (stat != ASN_OK) return stat; + + /* encode loopbackTestProcedure */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->loopbackTestProcedure); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76LogicalChannelParameters_suspendResume */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76LogicalChannelParameters_suspendResume (OOCTXT* pctxt, H245V76LogicalChannelParameters_suspendResume* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noSuspendResume */ + case 1: + /* NULL */ + break; + + /* suspendResumewAddress */ + case 2: + /* NULL */ + break; + + /* suspendResumewoAddress */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76LogicalChannelParameters_mode_eRM_recovery */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM_recovery (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM_recovery* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* rej */ + case 1: + /* NULL */ + break; + + /* sREJ */ + case 2: + /* NULL */ + break; + + /* mSREJ */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76LogicalChannelParameters_mode_eRM */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76LogicalChannelParameters_mode_eRM (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode_eRM* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode windowSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->windowSize, 1U, 127U); + if (stat != ASN_OK) return stat; + + /* encode recovery */ + + stat = asn1PE_H245V76LogicalChannelParameters_mode_eRM_recovery (pctxt, &pvalue->recovery); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76LogicalChannelParameters_mode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76LogicalChannelParameters_mode (OOCTXT* pctxt, H245V76LogicalChannelParameters_mode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* eRM */ + case 1: + stat = asn1PE_H245V76LogicalChannelParameters_mode_eRM (pctxt, pvalue->u.eRM); + if (stat != ASN_OK) return stat; + break; + + /* uNERM */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* V75Parameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V75Parameters (OOCTXT* pctxt, H245V75Parameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioHeaderPresent */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->audioHeaderPresent); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76LogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76LogicalChannelParameters (OOCTXT* pctxt, H245V76LogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode hdlcParameters */ + + stat = asn1PE_H245V76HDLCParameters (pctxt, &pvalue->hdlcParameters); + if (stat != ASN_OK) return stat; + + /* encode suspendResume */ + + stat = asn1PE_H245V76LogicalChannelParameters_suspendResume (pctxt, &pvalue->suspendResume); + if (stat != ASN_OK) return stat; + + /* encode uIH */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->uIH); + if (stat != ASN_OK) return stat; + + /* encode mode */ + + stat = asn1PE_H245V76LogicalChannelParameters_mode (pctxt, &pvalue->mode); + if (stat != ASN_OK) return stat; + + /* encode v75Parameters */ + + stat = asn1PE_H245V75Parameters (pctxt, &pvalue->v75Parameters); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPAddress_network */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPAddress_network* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPAddress (OOCTXT* pctxt, H245UnicastAddress_iPAddress* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode network */ + + stat = asn1PE_H245UnicastAddress_iPAddress_network (pctxt, &pvalue->network); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPXAddress_node */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPXAddress_node (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_node* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPXAddress_netnum */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPXAddress_netnum (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_netnum* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPXAddress_tsapIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPXAddress_tsapIdentifier (OOCTXT* pctxt, H245UnicastAddress_iPXAddress_tsapIdentifier* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPXAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPXAddress (OOCTXT* pctxt, H245UnicastAddress_iPXAddress* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode node */ + + stat = asn1PE_H245UnicastAddress_iPXAddress_node (pctxt, &pvalue->node); + if (stat != ASN_OK) return stat; + + /* encode netnum */ + + stat = asn1PE_H245UnicastAddress_iPXAddress_netnum (pctxt, &pvalue->netnum); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = asn1PE_H245UnicastAddress_iPXAddress_tsapIdentifier (pctxt, &pvalue->tsapIdentifier); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iP6Address_network */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iP6Address_network (OOCTXT* pctxt, H245UnicastAddress_iP6Address_network* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iP6Address */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iP6Address (OOCTXT* pctxt, H245UnicastAddress_iP6Address* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode network */ + + stat = asn1PE_H245UnicastAddress_iP6Address_network (pctxt, &pvalue->network); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_netBios */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_netBios (OOCTXT* pctxt, H245UnicastAddress_netBios* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPSourceRouteAddress_routing */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_routing (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_routing* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* strict */ + case 1: + /* NULL */ + break; + + /* loose */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPSourceRouteAddress_network */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_network (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_network* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPSourceRouteAddress_route_element */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress_route_element* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245UnicastAddress_iPSourceRouteAddress_route_elem */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (OOCTXT* pctxt, H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element* pvalue) +{ + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_iPSourceRouteAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_iPSourceRouteAddress (OOCTXT* pctxt, H245UnicastAddress_iPSourceRouteAddress* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode routing */ + + stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_routing (pctxt, &pvalue->routing); + if (stat != ASN_OK) return stat; + + /* encode network */ + + stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress_network (pctxt, &pvalue->network); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode route */ + + stat = asn1PE_H245_SeqOfH245UnicastAddress_iPSourceRouteAddress_route_element (pctxt, &pvalue->route); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress_nsap */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress_nsap (OOCTXT* pctxt, H245UnicastAddress_nsap* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UnicastAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UnicastAddress (OOCTXT* pctxt, H245UnicastAddress* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* iPAddress */ + case 1: + stat = asn1PE_H245UnicastAddress_iPAddress (pctxt, pvalue->u.iPAddress); + if (stat != ASN_OK) return stat; + break; + + /* iPXAddress */ + case 2: + stat = asn1PE_H245UnicastAddress_iPXAddress (pctxt, pvalue->u.iPXAddress); + if (stat != ASN_OK) return stat; + break; + + /* iP6Address */ + case 3: + stat = asn1PE_H245UnicastAddress_iP6Address (pctxt, pvalue->u.iP6Address); + if (stat != ASN_OK) return stat; + break; + + /* netBios */ + case 4: + stat = asn1PE_H245UnicastAddress_netBios (pctxt, pvalue->u.netBios); + if (stat != ASN_OK) return stat; + break; + + /* iPSourceRouteAddress */ + case 5: + stat = asn1PE_H245UnicastAddress_iPSourceRouteAddress (pctxt, pvalue->u.iPSourceRouteAddress); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* nsap */ + case 6: + stat = asn1PE_H245UnicastAddress_nsap (&lctxt, pvalue->u.nsap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* nonStandardAddress */ + case 7: + stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.nonStandardAddress); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress_iPAddress_network */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress_iPAddress_network (OOCTXT* pctxt, H245MulticastAddress_iPAddress_network* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress_iPAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress_iPAddress (OOCTXT* pctxt, H245MulticastAddress_iPAddress* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode network */ + + stat = asn1PE_H245MulticastAddress_iPAddress_network (pctxt, &pvalue->network); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress_iP6Address_network */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress_iP6Address_network (OOCTXT* pctxt, H245MulticastAddress_iP6Address_network* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress_iP6Address */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress_iP6Address (OOCTXT* pctxt, H245MulticastAddress_iP6Address* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode network */ + + stat = asn1PE_H245MulticastAddress_iP6Address_network (pctxt, &pvalue->network); + if (stat != ASN_OK) return stat; + + /* encode tsapIdentifier */ + + stat = encodeConsUnsigned (pctxt, pvalue->tsapIdentifier, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress_nsap */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress_nsap (OOCTXT* pctxt, H245MulticastAddress_nsap* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MulticastAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MulticastAddress (OOCTXT* pctxt, H245MulticastAddress* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* iPAddress */ + case 1: + stat = asn1PE_H245MulticastAddress_iPAddress (pctxt, pvalue->u.iPAddress); + if (stat != ASN_OK) return stat; + break; + + /* iP6Address */ + case 2: + stat = asn1PE_H245MulticastAddress_iP6Address (pctxt, pvalue->u.iP6Address); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* nsap */ + case 3: + stat = asn1PE_H245MulticastAddress_nsap (&lctxt, pvalue->u.nsap); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* nonStandardAddress */ + case 4: + stat = asn1PE_H245NonStandardParameter (&lctxt, pvalue->u.nonStandardAddress); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TransportAddress (OOCTXT* pctxt, H245TransportAddress* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unicastAddress */ + case 1: + stat = asn1PE_H245UnicastAddress (pctxt, pvalue->u.unicastAddress); + if (stat != ASN_OK) return stat; + break; + + /* multicastAddress */ + case 2: + stat = asn1PE_H245MulticastAddress (pctxt, pvalue->u.multicastAddress); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* McuNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245McuNumber (OOCTXT* pctxt, H245McuNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 0U, 192U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalNumber (OOCTXT* pctxt, H245TerminalNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 0U, 192U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalLabel */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalLabel (OOCTXT* pctxt, H245TerminalLabel* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode mcuNumber */ + + stat = asn1PE_H245McuNumber (pctxt, pvalue->mcuNumber); + if (stat != ASN_OK) return stat; + + /* encode terminalNumber */ + + stat = asn1PE_H245TerminalNumber (pctxt, pvalue->terminalNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250LogicalChannelParameters_mediaPacketization */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250LogicalChannelParameters_mediaPacketization (OOCTXT* pctxt, H245H2250LogicalChannelParameters_mediaPacketization* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h261aVideoPacketization */ + case 1: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* rtpPayloadType */ + case 2: + stat = asn1PE_H245RTPPayloadType (&lctxt, pvalue->u.rtpPayloadType); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250LogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250LogicalChannelParameters (OOCTXT* pctxt, H245H2250LogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.transportCapabilityPresent || + pvalue->m.redundancyEncodingPresent || + pvalue->m.sourcePresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.associatedSessionIDPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaGuaranteedDeliveryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlGuaranteedDeliveryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.silenceSuppressionPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.dynamicRTPPayloadTypePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaPacketizationPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + /* encode sessionID */ + + stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 0U, 255U); + if (stat != ASN_OK) return stat; + + /* encode associatedSessionID */ + + if (pvalue->m.associatedSessionIDPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->associatedSessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + } + + /* encode mediaChannel */ + + if (pvalue->m.mediaChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel); + if (stat != ASN_OK) return stat; + } + + /* encode mediaGuaranteedDelivery */ + + if (pvalue->m.mediaGuaranteedDeliveryPresent) { + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaGuaranteedDelivery); + if (stat != ASN_OK) return stat; + } + + /* encode mediaControlChannel */ + + if (pvalue->m.mediaControlChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel); + if (stat != ASN_OK) return stat; + } + + /* encode mediaControlGuaranteedDelivery */ + + if (pvalue->m.mediaControlGuaranteedDeliveryPresent) { + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaControlGuaranteedDelivery); + if (stat != ASN_OK) return stat; + } + + /* encode silenceSuppression */ + + if (pvalue->m.silenceSuppressionPresent) { + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression); + if (stat != ASN_OK) return stat; + } + + /* encode destination */ + + if (pvalue->m.destinationPresent) { + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->destination); + if (stat != ASN_OK) return stat; + } + + /* encode dynamicRTPPayloadType */ + + if (pvalue->m.dynamicRTPPayloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U); + if (stat != ASN_OK) return stat; + + } + + /* encode mediaPacketization */ + + if (pvalue->m.mediaPacketizationPresent) { + stat = asn1PE_H245H2250LogicalChannelParameters_mediaPacketization (pctxt, &pvalue->mediaPacketization); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 2); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourcePresent); + /* encode extension elements */ + + if (pvalue->m.transportCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245TransportCapability (&lctxt, &pvalue->transportCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.redundancyEncodingPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245RedundancyEncoding (&lctxt, &pvalue->redundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.sourcePresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245TerminalLabel (&lctxt, &pvalue->source); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannel_forwardLogicalChannelParameters_multi */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h222LogicalChannelParameters */ + case 1: + stat = asn1PE_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + /* h223LogicalChannelParameters */ + case 2: + stat = asn1PE_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + /* v76LogicalChannelParameters */ + case 3: + stat = asn1PE_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h2250LogicalChannelParameters */ + case 4: + stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* none */ + case 5: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannel_forwardLogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_forwardLogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.forwardLogicalChannelDependencyPresent || + pvalue->m.replacementForPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent); + + /* encode portNumber */ + + if (pvalue->m.portNumberPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->portNumber, 0U, 65535U); + if (stat != ASN_OK) return stat; + + } + + /* encode dataType */ + + stat = asn1PE_H245DataType (pctxt, &pvalue->dataType); + if (stat != ASN_OK) return stat; + + /* encode multiplexParameters */ + + stat = asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.forwardLogicalChannelDependencyPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent); + /* encode extension elements */ + + if (pvalue->m.forwardLogicalChannelDependencyPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->forwardLogicalChannelDependency); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.replacementForPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannel_reverseLogicalChannelParameters_multi */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h223LogicalChannelParameters */ + case 1: + stat = asn1PE_H245H223LogicalChannelParameters (pctxt, pvalue->u.h223LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + /* v76LogicalChannelParameters */ + case 2: + stat = asn1PE_H245V76LogicalChannelParameters (pctxt, pvalue->u.v76LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h2250LogicalChannelParameters */ + case 3: + stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannel_reverseLogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannel_reverseLogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.reverseLogicalChannelDependencyPresent || + pvalue->m.replacementForPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexParametersPresent); + + /* encode dataType */ + + stat = asn1PE_H245DataType (pctxt, &pvalue->dataType); + if (stat != ASN_OK) return stat; + + /* encode multiplexParameters */ + + if (pvalue->m.multiplexParametersPresent) { + stat = asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelDependencyPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent); + /* encode extension elements */ + + if (pvalue->m.reverseLogicalChannelDependencyPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->reverseLogicalChannelDependency); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.replacementForPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NetworkAccessParameters_distribution */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NetworkAccessParameters_distribution (OOCTXT* pctxt, H245NetworkAccessParameters_distribution* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unicast */ + case 1: + /* NULL */ + break; + + /* multicast */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NetworkAccessParameters_networkAddress */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet; + +EXTERN int asn1PE_H245NetworkAccessParameters_networkAddress (OOCTXT* pctxt, H245NetworkAccessParameters_networkAddress* pvalue) +{ + static Asn1SizeCnst e164Address_lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* q2931Address */ + case 1: + stat = asn1PE_H245Q2931Address (pctxt, pvalue->u.q2931Address); + if (stat != ASN_OK) return stat; + break; + + /* e164Address */ + case 2: + addSizeConstraint (pctxt, &e164Address_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->u.e164Address, gs_MULTIMEDIA_SYSTEM_CONTROL_NetworkAccessParameters_networkAddress_e164Address_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + break; + + /* localAreaAddress */ + case 3: + stat = asn1PE_H245TransportAddress (pctxt, pvalue->u.localAreaAddress); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NetworkAccessParameters_externalReference */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NetworkAccessParameters_externalReference (OOCTXT* pctxt, H245NetworkAccessParameters_externalReference* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NetworkAccessParameters_t120SetupProcedure */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NetworkAccessParameters_t120SetupProcedure (OOCTXT* pctxt, H245NetworkAccessParameters_t120SetupProcedure* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* originateCall */ + case 1: + /* NULL */ + break; + + /* waitForCall */ + case 2: + /* NULL */ + break; + + /* issueQuery */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NetworkAccessParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NetworkAccessParameters (OOCTXT* pctxt, H245NetworkAccessParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.t120SetupProcedurePresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.distributionPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.externalReferencePresent); + + /* encode distribution */ + + if (pvalue->m.distributionPresent) { + stat = asn1PE_H245NetworkAccessParameters_distribution (pctxt, &pvalue->distribution); + if (stat != ASN_OK) return stat; + } + + /* encode networkAddress */ + + stat = asn1PE_H245NetworkAccessParameters_networkAddress (pctxt, &pvalue->networkAddress); + if (stat != ASN_OK) return stat; + + /* encode associateConference */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->associateConference); + if (stat != ASN_OK) return stat; + + /* encode externalReference */ + + if (pvalue->m.externalReferencePresent) { + stat = asn1PE_H245NetworkAccessParameters_externalReference (pctxt, &pvalue->externalReference); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120SetupProcedurePresent); + /* encode extension elements */ + + if (pvalue->m.t120SetupProcedurePresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245NetworkAccessParameters_t120SetupProcedure (&lctxt, &pvalue->t120SetupProcedure); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EscrowData_escrowValue */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EscrowData_escrowValue (OOCTXT* pctxt, H245EscrowData_escrowValue* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EscrowData */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EscrowData (OOCTXT* pctxt, H245EscrowData* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode escrowID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->escrowID); + if (stat != ASN_OK) return stat; + + /* encode escrowValue */ + + stat = asn1PE_H245EscrowData_escrowValue (pctxt, &pvalue->escrowValue); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionSync_escrowentry */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionSync_escrowentry (OOCTXT* pctxt, H245EncryptionSync_escrowentry* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245EscrowData (pctxt, ((H245EscrowData*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionSync */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionSync (OOCTXT* pctxt, H245EncryptionSync* pvalue) +{ + static Asn1SizeCnst h235Key_lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.escrowentryPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + /* encode synchFlag */ + + stat = encodeConsUnsigned (pctxt, pvalue->synchFlag, 0U, 255U); + if (stat != ASN_OK) return stat; + + /* encode h235Key */ + + addSizeConstraint (pctxt, &h235Key_lsize1); + + stat = encodeOctetString (pctxt, pvalue->h235Key.numocts, pvalue->h235Key.data); + if (stat != ASN_OK) return stat; + + /* encode escrowentry */ + + if (pvalue->m.escrowentryPresent) { + stat = asn1PE_H245EncryptionSync_escrowentry (pctxt, &pvalue->escrowentry); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannel */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannel (OOCTXT* pctxt, H245OpenLogicalChannel* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.separateStackPresent || + pvalue->m.encryptionSyncPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelParametersPresent); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode forwardLogicalChannelParameters */ + + stat = asn1PE_H245OpenLogicalChannel_forwardLogicalChannelParameters (pctxt, &pvalue->forwardLogicalChannelParameters); + if (stat != ASN_OK) return stat; + + /* encode reverseLogicalChannelParameters */ + + if (pvalue->m.reverseLogicalChannelParametersPresent) { + stat = asn1PE_H245OpenLogicalChannel_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.separateStackPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionSyncPresent); + /* encode extension elements */ + + if (pvalue->m.separateStackPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245NetworkAccessParameters (&lctxt, &pvalue->separateStack); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.encryptionSyncPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245EncryptionSync (&lctxt, &pvalue->encryptionSync); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CloseLogicalChannel_source */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CloseLogicalChannel_source (OOCTXT* pctxt, H245CloseLogicalChannel_source* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* user */ + case 1: + /* NULL */ + break; + + /* lcse */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CloseLogicalChannel_reason */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CloseLogicalChannel_reason (OOCTXT* pctxt, H245CloseLogicalChannel_reason* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unknown */ + case 1: + /* NULL */ + break; + + /* reopen */ + case 2: + /* NULL */ + break; + + /* reservationFailure */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CloseLogicalChannel */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CloseLogicalChannel (OOCTXT* pctxt, H245CloseLogicalChannel* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.reasonPresent); + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode source */ + + stat = asn1PE_H245CloseLogicalChannel_source (pctxt, &pvalue->source); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent); + /* encode extension elements */ + + if (pvalue->m.reasonPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245CloseLogicalChannel_reason (&lctxt, &pvalue->reason); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelClose_reason */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelClose_reason (OOCTXT* pctxt, H245RequestChannelClose_reason* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unknown */ + case 1: + /* NULL */ + break; + + /* normal */ + case 2: + /* NULL */ + break; + + /* reopen */ + case 3: + /* NULL */ + break; + + /* reservationFailure */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelClose */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelClose (OOCTXT* pctxt, H245RequestChannelClose* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.qosCapabilityPresent || + pvalue->m.reasonPresent); + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.qosCapabilityPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent); + /* encode extension elements */ + + if (pvalue->m.qosCapabilityPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245QOSCapability (&lctxt, &pvalue->qosCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.reasonPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245RequestChannelClose_reason (&lctxt, &pvalue->reason); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexTableEntryNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexTableEntryNumber value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 1U, 15U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexElement_type_subElementList */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexElement_type_subElementList (OOCTXT* pctxt, H245MultiplexElement_type_subElementList* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 255, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MultiplexElement (pctxt, (H245MultiplexElement*)((H245MultiplexElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexElement_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexElement_type (OOCTXT* pctxt, H245MultiplexElement_type* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logicalChannelNumber */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.logicalChannelNumber, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* subElementList */ + case 2: + stat = asn1PE_H245MultiplexElement_type_subElementList (pctxt, pvalue->u.subElementList); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexElement_repeatCount */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexElement_repeatCount (OOCTXT* pctxt, H245MultiplexElement_repeatCount* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* finite */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.finite, 1U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* untilClosingFlag */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexElement (OOCTXT* pctxt, H245MultiplexElement* pvalue) +{ + int stat = ASN_OK; + + /* encode type */ + + stat = asn1PE_H245MultiplexElement_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + /* encode repeatCount */ + + stat = asn1PE_H245MultiplexElement_repeatCount (pctxt, &pvalue->repeatCount); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntryDescriptor_elementList */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntryDescriptor_elementList (OOCTXT* pctxt, H245MultiplexEntryDescriptor_elementList* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MultiplexElement (pctxt, ((H245MultiplexElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntryDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntryDescriptor (OOCTXT* pctxt, H245MultiplexEntryDescriptor* pvalue) +{ + int stat = ASN_OK; + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.elementListPresent); + + /* encode multiplexTableEntryNumber */ + + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber); + if (stat != ASN_OK) return stat; + + /* encode elementList */ + + if (pvalue->m.elementListPresent) { + stat = asn1PE_H245MultiplexEntryDescriptor_elementList (pctxt, &pvalue->elementList); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySend_multiplexEntryDescriptors */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySend_multiplexEntryDescriptors (OOCTXT* pctxt, H245MultiplexEntrySend_multiplexEntryDescriptors* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MultiplexEntryDescriptor (pctxt, ((H245MultiplexEntryDescriptor*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySend */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySend (OOCTXT* pctxt, H245MultiplexEntrySend* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode multiplexEntryDescriptors */ + + stat = asn1PE_H245MultiplexEntrySend_multiplexEntryDescriptors (pctxt, &pvalue->multiplexEntryDescriptors); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntry_entryNumbers */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntry_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntry_entryNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntry */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntry (OOCTXT* pctxt, H245RequestMultiplexEntry* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode entryNumbers */ + + stat = asn1PE_H245RequestMultiplexEntry_entryNumbers (pctxt, &pvalue->entryNumbers); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H261VideoMode_resolution */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H261VideoMode_resolution (OOCTXT* pctxt, H245H261VideoMode_resolution* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* qcif */ + case 1: + /* NULL */ + break; + + /* cif */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H261VideoMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H261VideoMode (OOCTXT* pctxt, H245H261VideoMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode resolution */ + + stat = asn1PE_H245H261VideoMode_resolution (pctxt, &pvalue->resolution); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 19200U); + if (stat != ASN_OK) return stat; + + /* encode stillImageTransmission */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->stillImageTransmission); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H262VideoMode_profileAndLevel */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H262VideoMode_profileAndLevel (OOCTXT* pctxt, H245H262VideoMode_profileAndLevel* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 11); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 10); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* profileAndLevel_SPatML */ + case 1: + /* NULL */ + break; + + /* profileAndLevel_MPatLL */ + case 2: + /* NULL */ + break; + + /* profileAndLevel_MPatML */ + case 3: + /* NULL */ + break; + + /* profileAndLevel_MPatH_14 */ + case 4: + /* NULL */ + break; + + /* profileAndLevel_MPatHL */ + case 5: + /* NULL */ + break; + + /* profileAndLevel_SNRatLL */ + case 6: + /* NULL */ + break; + + /* profileAndLevel_SNRatML */ + case 7: + /* NULL */ + break; + + /* profileAndLevel_SpatialatH_14 */ + case 8: + /* NULL */ + break; + + /* profileAndLevel_HPatML */ + case 9: + /* NULL */ + break; + + /* profileAndLevel_HPatH_14 */ + case 10: + /* NULL */ + break; + + /* profileAndLevel_HPatHL */ + case 11: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 12); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H262VideoMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H262VideoMode (OOCTXT* pctxt, H245H262VideoMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.framesPerSecondPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent); + + /* encode profileAndLevel */ + + stat = asn1PE_H245H262VideoMode_profileAndLevel (pctxt, &pvalue->profileAndLevel); + if (stat != ASN_OK) return stat; + + /* encode videoBitRate */ + + if (pvalue->m.videoBitRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U); + if (stat != ASN_OK) return stat; + + } + + /* encode vbvBufferSize */ + + if (pvalue->m.vbvBufferSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U); + if (stat != ASN_OK) return stat; + + } + + /* encode samplesPerLine */ + + if (pvalue->m.samplesPerLinePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode linesPerFrame */ + + if (pvalue->m.linesPerFramePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode framesPerSecond */ + + if (pvalue->m.framesPerSecondPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->framesPerSecond, 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + /* encode luminanceSampleRate */ + + if (pvalue->m.luminanceSampleRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263VideoMode_resolution */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263VideoMode_resolution (OOCTXT* pctxt, H245H263VideoMode_resolution* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* sqcif */ + case 1: + /* NULL */ + break; + + /* qcif */ + case 2: + /* NULL */ + break; + + /* cif */ + case 3: + /* NULL */ + break; + + /* cif4 */ + case 4: + /* NULL */ + break; + + /* cif16 */ + case 5: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* custom */ + case 6: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H263VideoMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H263VideoMode (OOCTXT* pctxt, H245H263VideoMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.errorCompensationPresent || + pvalue->m.enhancementLayerInfoPresent || + pvalue->m.h263OptionsPresent); + + encodeBit (pctxt, extbit); + + /* encode resolution */ + + stat = asn1PE_H245H263VideoMode_resolution (pctxt, &pvalue->resolution); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 19200U); + if (stat != ASN_OK) return stat; + + /* encode unrestrictedVector */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->unrestrictedVector); + if (stat != ASN_OK) return stat; + + /* encode arithmeticCoding */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->arithmeticCoding); + if (stat != ASN_OK) return stat; + + /* encode advancedPrediction */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->advancedPrediction); + if (stat != ASN_OK) return stat; + + /* encode pbFrames */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->pbFrames); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 2); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.errorCompensationPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.enhancementLayerInfoPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h263OptionsPresent); + /* encode extension elements */ + + if (pvalue->m.errorCompensationPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->errorCompensation); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.enhancementLayerInfoPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245EnhancementLayerInfo (&lctxt, &pvalue->enhancementLayerInfo); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h263OptionsPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H263Options (&lctxt, &pvalue->h263Options); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172VideoMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172VideoMode (OOCTXT* pctxt, H245IS11172VideoMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoBitRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.vbvBufferSizePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.samplesPerLinePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.linesPerFramePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.pictureRatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.luminanceSampleRatePresent); + + /* encode constrainedBitstream */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->constrainedBitstream); + if (stat != ASN_OK) return stat; + + /* encode videoBitRate */ + + if (pvalue->m.videoBitRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->videoBitRate, 0U, 1073741823U); + if (stat != ASN_OK) return stat; + + } + + /* encode vbvBufferSize */ + + if (pvalue->m.vbvBufferSizePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->vbvBufferSize, 0U, 262143U); + if (stat != ASN_OK) return stat; + + } + + /* encode samplesPerLine */ + + if (pvalue->m.samplesPerLinePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerLine, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode linesPerFrame */ + + if (pvalue->m.linesPerFramePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->linesPerFrame, 0U, 16383U); + if (stat != ASN_OK) return stat; + + } + + /* encode pictureRate */ + + if (pvalue->m.pictureRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->pictureRate, 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + /* encode luminanceSampleRate */ + + if (pvalue->m.luminanceSampleRatePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->luminanceSampleRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VideoMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VideoMode (OOCTXT* pctxt, H245VideoMode* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* h261VideoMode */ + case 2: + stat = asn1PE_H245H261VideoMode (pctxt, pvalue->u.h261VideoMode); + if (stat != ASN_OK) return stat; + break; + + /* h262VideoMode */ + case 3: + stat = asn1PE_H245H262VideoMode (pctxt, pvalue->u.h262VideoMode); + if (stat != ASN_OK) return stat; + break; + + /* h263VideoMode */ + case 4: + stat = asn1PE_H245H263VideoMode (pctxt, pvalue->u.h263VideoMode); + if (stat != ASN_OK) return stat; + break; + + /* is11172VideoMode */ + case 5: + stat = asn1PE_H245IS11172VideoMode (pctxt, pvalue->u.is11172VideoMode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* genericVideoMode */ + case 6: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericVideoMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioMode_g7231 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioMode_g7231 (OOCTXT* pctxt, H245AudioMode_g7231* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noSilenceSuppressionLowRate */ + case 1: + /* NULL */ + break; + + /* noSilenceSuppressionHighRate */ + case 2: + /* NULL */ + break; + + /* silenceSuppressionLowRate */ + case 3: + /* NULL */ + break; + + /* silenceSuppressionHighRate */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172AudioMode_audioLayer */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172AudioMode_audioLayer (OOCTXT* pctxt, H245IS11172AudioMode_audioLayer* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* audioLayer1 */ + case 1: + /* NULL */ + break; + + /* audioLayer2 */ + case 2: + /* NULL */ + break; + + /* audioLayer3 */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172AudioMode_audioSampling */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172AudioMode_audioSampling (OOCTXT* pctxt, H245IS11172AudioMode_audioSampling* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* audioSampling32k */ + case 1: + /* NULL */ + break; + + /* audioSampling44k1 */ + case 2: + /* NULL */ + break; + + /* audioSampling48k */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172AudioMode_multichannelType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172AudioMode_multichannelType (OOCTXT* pctxt, H245IS11172AudioMode_multichannelType* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* singleChannel */ + case 1: + /* NULL */ + break; + + /* twoChannelStereo */ + case 2: + /* NULL */ + break; + + /* twoChannelDual */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS11172AudioMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS11172AudioMode (OOCTXT* pctxt, H245IS11172AudioMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioLayer */ + + stat = asn1PE_H245IS11172AudioMode_audioLayer (pctxt, &pvalue->audioLayer); + if (stat != ASN_OK) return stat; + + /* encode audioSampling */ + + stat = asn1PE_H245IS11172AudioMode_audioSampling (pctxt, &pvalue->audioSampling); + if (stat != ASN_OK) return stat; + + /* encode multichannelType */ + + stat = asn1PE_H245IS11172AudioMode_multichannelType (pctxt, &pvalue->multichannelType); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 448U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS13818AudioMode_audioLayer */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS13818AudioMode_audioLayer (OOCTXT* pctxt, H245IS13818AudioMode_audioLayer* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* audioLayer1 */ + case 1: + /* NULL */ + break; + + /* audioLayer2 */ + case 2: + /* NULL */ + break; + + /* audioLayer3 */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS13818AudioMode_audioSampling */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS13818AudioMode_audioSampling (OOCTXT* pctxt, H245IS13818AudioMode_audioSampling* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* audioSampling16k */ + case 1: + /* NULL */ + break; + + /* audioSampling22k05 */ + case 2: + /* NULL */ + break; + + /* audioSampling24k */ + case 3: + /* NULL */ + break; + + /* audioSampling32k */ + case 4: + /* NULL */ + break; + + /* audioSampling44k1 */ + case 5: + /* NULL */ + break; + + /* audioSampling48k */ + case 6: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS13818AudioMode_multichannelType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS13818AudioMode_multichannelType (OOCTXT* pctxt, H245IS13818AudioMode_multichannelType* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* singleChannel */ + case 1: + /* NULL */ + break; + + /* twoChannelStereo */ + case 2: + /* NULL */ + break; + + /* twoChannelDual */ + case 3: + /* NULL */ + break; + + /* threeChannels2_1 */ + case 4: + /* NULL */ + break; + + /* threeChannels3_0 */ + case 5: + /* NULL */ + break; + + /* fourChannels2_0_2_0 */ + case 6: + /* NULL */ + break; + + /* fourChannels2_2 */ + case 7: + /* NULL */ + break; + + /* fourChannels3_1 */ + case 8: + /* NULL */ + break; + + /* fiveChannels3_0_2_0 */ + case 9: + /* NULL */ + break; + + /* fiveChannels3_2 */ + case 10: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IS13818AudioMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IS13818AudioMode (OOCTXT* pctxt, H245IS13818AudioMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode audioLayer */ + + stat = asn1PE_H245IS13818AudioMode_audioLayer (pctxt, &pvalue->audioLayer); + if (stat != ASN_OK) return stat; + + /* encode audioSampling */ + + stat = asn1PE_H245IS13818AudioMode_audioSampling (pctxt, &pvalue->audioSampling); + if (stat != ASN_OK) return stat; + + /* encode multichannelType */ + + stat = asn1PE_H245IS13818AudioMode_multichannelType (pctxt, &pvalue->multichannelType); + if (stat != ASN_OK) return stat; + + /* encode lowFrequencyEnhancement */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->lowFrequencyEnhancement); + if (stat != ASN_OK) return stat; + + /* encode multilingual */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multilingual); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 1130U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* G7231AnnexCMode_g723AnnexCAudioMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245G7231AnnexCMode_g723AnnexCAudioMode (OOCTXT* pctxt, H245G7231AnnexCMode_g723AnnexCAudioMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode highRateMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->highRateMode0, 27U, 78U); + if (stat != ASN_OK) return stat; + + /* encode highRateMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->highRateMode1, 27U, 78U); + if (stat != ASN_OK) return stat; + + /* encode lowRateMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode0, 23U, 66U); + if (stat != ASN_OK) return stat; + + /* encode lowRateMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->lowRateMode1, 23U, 66U); + if (stat != ASN_OK) return stat; + + /* encode sidMode0 */ + + stat = encodeConsUnsigned (pctxt, pvalue->sidMode0, 6U, 17U); + if (stat != ASN_OK) return stat; + + /* encode sidMode1 */ + + stat = encodeConsUnsigned (pctxt, pvalue->sidMode1, 6U, 17U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* G7231AnnexCMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245G7231AnnexCMode (OOCTXT* pctxt, H245G7231AnnexCMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maxAl_sduAudioFrames */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxAl_sduAudioFrames, 1U, 256U); + if (stat != ASN_OK) return stat; + + /* encode silenceSuppression */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->silenceSuppression); + if (stat != ASN_OK) return stat; + + /* encode g723AnnexCAudioMode */ + + stat = asn1PE_H245G7231AnnexCMode_g723AnnexCAudioMode (pctxt, &pvalue->g723AnnexCAudioMode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VBDMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VBDMode (OOCTXT* pctxt, H245VBDMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245AudioMode (pctxt, (H245AudioMode*)pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* AudioMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245AudioMode (OOCTXT* pctxt, H245AudioMode* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 14); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* g711Alaw64k */ + case 2: + /* NULL */ + break; + + /* g711Alaw56k */ + case 3: + /* NULL */ + break; + + /* g711Ulaw64k */ + case 4: + /* NULL */ + break; + + /* g711Ulaw56k */ + case 5: + /* NULL */ + break; + + /* g722_64k */ + case 6: + /* NULL */ + break; + + /* g722_56k */ + case 7: + /* NULL */ + break; + + /* g722_48k */ + case 8: + /* NULL */ + break; + + /* g728 */ + case 9: + /* NULL */ + break; + + /* g729 */ + case 10: + /* NULL */ + break; + + /* g729AnnexA */ + case 11: + /* NULL */ + break; + + /* g7231 */ + case 12: + stat = asn1PE_H245AudioMode_g7231 (pctxt, pvalue->u.g7231); + if (stat != ASN_OK) return stat; + break; + + /* is11172AudioMode */ + case 13: + stat = asn1PE_H245IS11172AudioMode (pctxt, pvalue->u.is11172AudioMode); + if (stat != ASN_OK) return stat; + break; + + /* is13818AudioMode */ + case 14: + stat = asn1PE_H245IS13818AudioMode (pctxt, pvalue->u.is13818AudioMode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* g729wAnnexB */ + case 15: + stat = encodeConsUnsigned (&lctxt, pvalue->u.g729wAnnexB, 1U, 256U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g729AnnexAwAnnexB */ + case 16: + stat = encodeConsUnsigned (&lctxt, pvalue->u.g729AnnexAwAnnexB, 1U, 256U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g7231AnnexCMode */ + case 17: + stat = asn1PE_H245G7231AnnexCMode (&lctxt, pvalue->u.g7231AnnexCMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmFullRate */ + case 18: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmFullRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmHalfRate */ + case 19: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmHalfRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* gsmEnhancedFullRate */ + case 20: + stat = asn1PE_H245GSMAudioCapability (&lctxt, pvalue->u.gsmEnhancedFullRate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericAudioMode */ + case 21: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericAudioMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* g729Extensions */ + case 22: + stat = asn1PE_H245G729Extensions (&lctxt, pvalue->u.g729Extensions); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* vbd */ + case 23: + stat = asn1PE_H245VBDMode (&lctxt, pvalue->u.vbd); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataMode_application_nlpid */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataMode_application_nlpid (OOCTXT* pctxt, H245DataMode_application_nlpid* pvalue) +{ + int stat = ASN_OK; + + /* encode nlpidProtocol */ + + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->nlpidProtocol); + if (stat != ASN_OK) return stat; + + /* encode nlpidData */ + + stat = encodeOctetString (pctxt, pvalue->nlpidData.numocts, pvalue->nlpidData.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataMode_application_t38fax */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataMode_application_t38fax (OOCTXT* pctxt, H245DataMode_application_t38fax* pvalue) +{ + int stat = ASN_OK; + + /* encode t38FaxProtocol */ + + stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol); + if (stat != ASN_OK) return stat; + + /* encode t38FaxProfile */ + + stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataMode_application */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataMode_application (OOCTXT* pctxt, H245DataMode_application* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 10); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* t120 */ + case 2: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t120); + if (stat != ASN_OK) return stat; + break; + + /* dsm_cc */ + case 3: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.dsm_cc); + if (stat != ASN_OK) return stat; + break; + + /* userData */ + case 4: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.userData); + if (stat != ASN_OK) return stat; + break; + + /* t84 */ + case 5: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t84); + if (stat != ASN_OK) return stat; + break; + + /* t434 */ + case 6: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.t434); + if (stat != ASN_OK) return stat; + break; + + /* h224 */ + case 7: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h224); + if (stat != ASN_OK) return stat; + break; + + /* nlpid */ + case 8: + stat = asn1PE_H245DataMode_application_nlpid (pctxt, pvalue->u.nlpid); + if (stat != ASN_OK) return stat; + break; + + /* dsvdControl */ + case 9: + /* NULL */ + break; + + /* h222DataPartitioning */ + case 10: + stat = asn1PE_H245DataProtocolCapability (pctxt, pvalue->u.h222DataPartitioning); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* t30fax */ + case 11: + stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t30fax); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* t140 */ + case 12: + stat = asn1PE_H245DataProtocolCapability (&lctxt, pvalue->u.t140); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* t38fax */ + case 13: + stat = asn1PE_H245DataMode_application_t38fax (&lctxt, pvalue->u.t38fax); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* genericDataMode */ + case 14: + stat = asn1PE_H245GenericCapability (&lctxt, pvalue->u.genericDataMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DataMode (OOCTXT* pctxt, H245DataMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode application */ + + stat = asn1PE_H245DataMode_application (pctxt, &pvalue->application); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H235Mode_mediaMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H235Mode_mediaMode (OOCTXT* pctxt, H245H235Mode_mediaMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* videoMode */ + case 2: + stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode); + if (stat != ASN_OK) return stat; + break; + + /* audioMode */ + case 3: + stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode); + if (stat != ASN_OK) return stat; + break; + + /* dataMode */ + case 4: + stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H235Mode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H235Mode (OOCTXT* pctxt, H245H235Mode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode encryptionAuthenticationAndIntegrity */ + + stat = asn1PE_H245EncryptionAuthenticationAndIntegrity (pctxt, &pvalue->encryptionAuthenticationAndIntegrity); + if (stat != ASN_OK) return stat; + + /* encode mediaMode */ + + stat = asn1PE_H245H235Mode_mediaMode (pctxt, &pvalue->mediaMode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingDTModeElement_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingDTModeElement_type (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement_type* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* videoMode */ + case 2: + stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode); + if (stat != ASN_OK) return stat; + break; + + /* audioMode */ + case 3: + stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode); + if (stat != ASN_OK) return stat; + break; + + /* dataMode */ + case 4: + stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode); + if (stat != ASN_OK) return stat; + break; + + /* encryptionMode */ + case 5: + stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionMode); + if (stat != ASN_OK) return stat; + break; + + /* h235Mode */ + case 6: + stat = asn1PE_H245H235Mode (pctxt, pvalue->u.h235Mode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingDTModeElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245RedundancyEncodingDTModeElement* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245RedundancyEncodingDTModeElement_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245RedundancyEncodingDTModeElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245RedundancyEncodingDTModeElement (OOCTXT* pctxt, H245_SeqOfH245RedundancyEncodingDTModeElement* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245RedundancyEncodingDTModeElement (pctxt, ((H245RedundancyEncodingDTModeElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingDTMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingDTMode (OOCTXT* pctxt, H245RedundancyEncodingDTMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode redundancyEncodingMethod */ + + stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod); + if (stat != ASN_OK) return stat; + + /* encode primary */ + + stat = asn1PE_H245RedundancyEncodingDTModeElement (pctxt, &pvalue->primary); + if (stat != ASN_OK) return stat; + + /* encode secondary */ + + stat = asn1PE_H245_SeqOfH245RedundancyEncodingDTModeElement (pctxt, &pvalue->secondary); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStreamElementMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245MultiplePayloadStreamElementMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245MultiplePayloadStreamElementMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245MultiplePayloadStreamElementMode (OOCTXT* pctxt, H245_SeqOfH245MultiplePayloadStreamElementMode* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245MultiplePayloadStreamElementMode (pctxt, ((H245MultiplePayloadStreamElementMode*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplePayloadStreamMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplePayloadStreamMode (OOCTXT* pctxt, H245MultiplePayloadStreamMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode elements */ + + stat = asn1PE_H245_SeqOfH245MultiplePayloadStreamElementMode (pctxt, &pvalue->elements); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode_rfc2733Mode_mode_separateStream_differentPort */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_differentPort* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.protectedPayloadTypePresent); + + /* encode protectedSessionID */ + + stat = encodeConsUnsigned (pctxt, pvalue->protectedSessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode protectedPayloadType */ + + if (pvalue->m.protectedPayloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->protectedPayloadType, 0U, 127U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode_rfc2733Mode_mode_separateStream_samePort */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_samePort (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream_samePort* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode protectedType */ + + stat = asn1PE_H245ModeElementType (pctxt, (H245ModeElementType*)pvalue->protectedType); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode_rfc2733Mode_mode_separateStream */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode_separateStream (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode_separateStream* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* differentPort */ + case 1: + stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_differentPort (pctxt, pvalue->u.differentPort); + if (stat != ASN_OK) return stat; + break; + + /* samePort */ + case 2: + stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream_samePort (pctxt, pvalue->u.samePort); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode_rfc2733Mode_mode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode_rfc2733Mode_mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode_mode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* redundancyEncoding */ + case 1: + /* NULL */ + break; + + /* separateStream */ + case 2: + stat = asn1PE_H245FECMode_rfc2733Mode_mode_separateStream (pctxt, pvalue->u.separateStream); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode_rfc2733Mode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode_rfc2733Mode (OOCTXT* pctxt, H245FECMode_rfc2733Mode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode mode */ + + stat = asn1PE_H245FECMode_rfc2733Mode_mode (pctxt, &pvalue->mode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FECMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FECMode (OOCTXT* pctxt, H245FECMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* rfc2733Mode */ + case 1: + stat = asn1PE_H245FECMode_rfc2733Mode (pctxt, pvalue->u.rfc2733Mode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ModeElementType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ModeElementType (OOCTXT* pctxt, H245ModeElementType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* videoMode */ + case 2: + stat = asn1PE_H245VideoMode (pctxt, pvalue->u.videoMode); + if (stat != ASN_OK) return stat; + break; + + /* audioMode */ + case 3: + stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioMode); + if (stat != ASN_OK) return stat; + break; + + /* dataMode */ + case 4: + stat = asn1PE_H245DataMode (pctxt, pvalue->u.dataMode); + if (stat != ASN_OK) return stat; + break; + + /* encryptionMode */ + case 5: + stat = asn1PE_H245EncryptionMode (pctxt, pvalue->u.encryptionMode); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h235Mode */ + case 6: + stat = asn1PE_H245H235Mode (&lctxt, pvalue->u.h235Mode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplexedStreamMode */ + case 7: + stat = asn1PE_H245MultiplexedStreamParameter (&lctxt, pvalue->u.multiplexedStreamMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* redundancyEncodingDTMode */ + case 8: + stat = asn1PE_H245RedundancyEncodingDTMode (&lctxt, pvalue->u.redundancyEncodingDTMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multiplePayloadStreamMode */ + case 9: + stat = asn1PE_H245MultiplePayloadStreamMode (&lctxt, pvalue->u.multiplePayloadStreamMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* fecMode */ + case 10: + stat = asn1PE_H245FECMode (&lctxt, pvalue->u.fecMode); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223ModeParameters_adaptationLayerType_al3 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType_al3 (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType_al3* pvalue) +{ + int stat = ASN_OK; + + /* encode controlFieldOctets */ + + stat = encodeConsUnsigned (pctxt, pvalue->controlFieldOctets, 0U, 2U); + if (stat != ASN_OK) return stat; + + /* encode sendBufferSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->sendBufferSize, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223ModeParameters_adaptationLayerType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223ModeParameters_adaptationLayerType (OOCTXT* pctxt, H245H223ModeParameters_adaptationLayerType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* al1Framed */ + case 2: + /* NULL */ + break; + + /* al1NotFramed */ + case 3: + /* NULL */ + break; + + /* al2WithoutSequenceNumbers */ + case 4: + /* NULL */ + break; + + /* al2WithSequenceNumbers */ + case 5: + /* NULL */ + break; + + /* al3 */ + case 6: + stat = asn1PE_H245H223ModeParameters_adaptationLayerType_al3 (pctxt, pvalue->u.al3); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* al1M */ + case 7: + stat = asn1PE_H245H223AL1MParameters (&lctxt, pvalue->u.al1M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* al2M */ + case 8: + stat = asn1PE_H245H223AL2MParameters (&lctxt, pvalue->u.al2M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* al3M */ + case 9: + stat = asn1PE_H245H223AL3MParameters (&lctxt, pvalue->u.al3M); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223ModeParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223ModeParameters (OOCTXT* pctxt, H245H223ModeParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode adaptationLayerType */ + + stat = asn1PE_H245H223ModeParameters_adaptationLayerType (pctxt, &pvalue->adaptationLayerType); + if (stat != ASN_OK) return stat; + + /* encode segmentableFlag */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->segmentableFlag); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* V76ModeParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245V76ModeParameters (OOCTXT* pctxt, H245V76ModeParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* suspendResumewAddress */ + case 1: + /* NULL */ + break; + + /* suspendResumewoAddress */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingMode_secondaryEncoding */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingMode_secondaryEncoding (OOCTXT* pctxt, H245RedundancyEncodingMode_secondaryEncoding* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* audioData */ + case 2: + stat = asn1PE_H245AudioMode (pctxt, pvalue->u.audioData); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RedundancyEncodingMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RedundancyEncodingMode (OOCTXT* pctxt, H245RedundancyEncodingMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.secondaryEncodingPresent); + + /* encode redundancyEncodingMethod */ + + stat = asn1PE_H245RedundancyEncodingMethod (pctxt, &pvalue->redundancyEncodingMethod); + if (stat != ASN_OK) return stat; + + /* encode secondaryEncoding */ + + if (pvalue->m.secondaryEncodingPresent) { + stat = asn1PE_H245RedundancyEncodingMode_secondaryEncoding (pctxt, &pvalue->secondaryEncoding); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250ModeParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250ModeParameters (OOCTXT* pctxt, H245H2250ModeParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingModePresent); + + /* encode redundancyEncodingMode */ + + if (pvalue->m.redundancyEncodingModePresent) { + stat = asn1PE_H245RedundancyEncodingMode (pctxt, &pvalue->redundancyEncodingMode); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexedStreamModeParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexedStreamModeParameters (OOCTXT* pctxt, H245MultiplexedStreamModeParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ModeElement */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ModeElement (OOCTXT* pctxt, H245ModeElement* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.v76ModeParametersPresent || + pvalue->m.h2250ModeParametersPresent || + pvalue->m.genericModeParametersPresent || + pvalue->m.multiplexedStreamModeParametersPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h223ModeParametersPresent); + + /* encode type */ + + stat = asn1PE_H245ModeElementType (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + /* encode h223ModeParameters */ + + if (pvalue->m.h223ModeParametersPresent) { + stat = asn1PE_H245H223ModeParameters (pctxt, &pvalue->h223ModeParameters); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 3); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.v76ModeParametersPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.h2250ModeParametersPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericModeParametersPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexedStreamModeParametersPresent); + /* encode extension elements */ + + if (pvalue->m.v76ModeParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245V76ModeParameters (&lctxt, &pvalue->v76ModeParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.h2250ModeParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245H2250ModeParameters (&lctxt, &pvalue->h2250ModeParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.genericModeParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245GenericCapability (&lctxt, &pvalue->genericModeParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.multiplexedStreamModeParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245MultiplexedStreamModeParameters (&lctxt, &pvalue->multiplexedStreamModeParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ModeDescription */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ModeDescription (OOCTXT* pctxt, H245ModeDescription* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245ModeElement (pctxt, ((H245ModeElement*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMode_requestedModes */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMode_requestedModes (OOCTXT* pctxt, H245RequestMode_requestedModes* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245ModeDescription (pctxt, ((H245ModeDescription*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMode (OOCTXT* pctxt, H245RequestMode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode requestedModes */ + + stat = asn1PE_H245RequestMode_requestedModes (pctxt, &pvalue->requestedModes); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RoundTripDelayRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RoundTripDelayRequest (OOCTXT* pctxt, H245RoundTripDelayRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopRequest_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopRequest_type (OOCTXT* pctxt, H245MaintenanceLoopRequest_type* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* systemLoop */ + case 1: + /* NULL */ + break; + + /* mediaLoop */ + case 2: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop); + if (stat != ASN_OK) return stat; + break; + + /* logicalChannelLoop */ + case 3: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopRequest (OOCTXT* pctxt, H245MaintenanceLoopRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245MaintenanceLoopRequest_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeRequest (OOCTXT* pctxt, H245CommunicationModeRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* Criteria */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Criteria (OOCTXT* pctxt, H245Criteria* pvalue) +{ + static Asn1SizeCnst value_lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode field */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->field); + if (stat != ASN_OK) return stat; + + /* encode value */ + + addSizeConstraint (pctxt, &value_lsize1); + + stat = encodeOctetString (pctxt, pvalue->value.numocts, pvalue->value.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CertSelectionCriteria */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CertSelectionCriteria (OOCTXT* pctxt, H245CertSelectionCriteria* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245Criteria (pctxt, ((H245Criteria*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceRequest_requestTerminalCertificate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceRequest_requestTerminalCertificate (OOCTXT* pctxt, H245ConferenceRequest_requestTerminalCertificate* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.certSelectionCriteriaPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sRandomPresent); + + /* encode terminalLabel */ + + if (pvalue->m.terminalLabelPresent) { + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + } + + /* encode certSelectionCriteria */ + + if (pvalue->m.certSelectionCriteriaPresent) { + stat = asn1PE_H245CertSelectionCriteria (pctxt, &pvalue->certSelectionCriteria); + if (stat != ASN_OK) return stat; + } + + /* encode sRandom */ + + if (pvalue->m.sRandomPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sRandom, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RemoteMCRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RemoteMCRequest (OOCTXT* pctxt, H245RemoteMCRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* masterActivate */ + case 1: + /* NULL */ + break; + + /* slaveActivate */ + case 2: + /* NULL */ + break; + + /* deActivate */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceRequest (OOCTXT* pctxt, H245ConferenceRequest* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 8); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* terminalListRequest */ + case 1: + /* NULL */ + break; + + /* makeMeChair */ + case 2: + /* NULL */ + break; + + /* cancelMakeMeChair */ + case 3: + /* NULL */ + break; + + /* dropTerminal */ + case 4: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.dropTerminal); + if (stat != ASN_OK) return stat; + break; + + /* requestTerminalID */ + case 5: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.requestTerminalID); + if (stat != ASN_OK) return stat; + break; + + /* enterH243Password */ + case 6: + /* NULL */ + break; + + /* enterH243TerminalID */ + case 7: + /* NULL */ + break; + + /* enterH243ConferenceID */ + case 8: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* enterExtensionAddress */ + case 9: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* requestChairTokenOwner */ + case 10: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* requestTerminalCertificate */ + case 11: + stat = asn1PE_H245ConferenceRequest_requestTerminalCertificate (&lctxt, pvalue->u.requestTerminalCertificate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* broadcastMyLogicalChannel */ + case 12: + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->u.broadcastMyLogicalChannel); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* makeTerminalBroadcaster */ + case 13: + stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.makeTerminalBroadcaster); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* sendThisSource */ + case 14: + stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.sendThisSource); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* requestAllTerminalIDs */ + case 15: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* remoteMCRequest */ + case 16: + stat = asn1PE_H245RemoteMCRequest (&lctxt, pvalue->u.remoteMCRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest_callInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest_callInformation (OOCTXT* pctxt, H245MultilinkRequest_callInformation* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode maxNumberOfAdditionalConnections */ + + stat = encodeConsUnsigned (pctxt, pvalue->maxNumberOfAdditionalConnections, 1U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DialingInformationNetworkType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DialingInformationNetworkType (OOCTXT* pctxt, H245DialingInformationNetworkType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* n_isdn */ + case 2: + /* NULL */ + break; + + /* gstn */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* mobile */ + case 4: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DialingInformationNumber_networkType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DialingInformationNumber_networkType (OOCTXT* pctxt, H245DialingInformationNumber_networkType* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 255, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245DialingInformationNetworkType (pctxt, ((H245DialingInformationNetworkType*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DialingInformationNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DialingInformationNumber (OOCTXT* pctxt, H245DialingInformationNumber* pvalue) +{ + static Asn1SizeCnst networkAddress_lsize1 = { 0, 0, 40, 0 }; + static Asn1SizeCnst subAddress_lsize1 = { 0, 1, 40, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.subAddressPresent); + + /* encode networkAddress */ + + addSizeConstraint (pctxt, &networkAddress_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->networkAddress, NUM_CANSET, 4, 4, 4); + if (stat != ASN_OK) return stat; + + /* encode subAddress */ + + if (pvalue->m.subAddressPresent) { + addSizeConstraint (pctxt, &subAddress_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->subAddress, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + } + + /* encode networkType */ + + stat = asn1PE_H245DialingInformationNumber_networkType (pctxt, &pvalue->networkType); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DialingInformation_differential */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DialingInformation_differential (OOCTXT* pctxt, H245DialingInformation_differential* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245DialingInformationNumber (pctxt, ((H245DialingInformationNumber*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DialingInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245DialingInformation (OOCTXT* pctxt, H245DialingInformation* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* differential */ + case 2: + stat = asn1PE_H245DialingInformation_differential (pctxt, pvalue->u.differential); + if (stat != ASN_OK) return stat; + break; + + /* infoNotAvailable */ + case 3: + stat = encodeConsUnsigned (pctxt, pvalue->u.infoNotAvailable, 1U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest_addConnection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest_addConnection (OOCTXT* pctxt, H245MultilinkRequest_addConnection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode dialingInformation */ + + stat = asn1PE_H245DialingInformation (pctxt, &pvalue->dialingInformation); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConnectionIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConnectionIdentifier (OOCTXT* pctxt, H245ConnectionIdentifier* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode channelTag */ + + stat = encodeConsUnsigned (pctxt, pvalue->channelTag, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + /* encode sequenceNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->sequenceNumber, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest_removeConnection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest_removeConnection (OOCTXT* pctxt, H245MultilinkRequest_removeConnection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode connectionIdentifier */ + + stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest_maximumHeaderInterval_requestType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval_requestType (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval_requestType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* currentIntervalInformation */ + case 1: + /* NULL */ + break; + + /* requestedInterval */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.requestedInterval, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest_maximumHeaderInterval */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkRequest_maximumHeaderInterval* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode requestType */ + + stat = asn1PE_H245MultilinkRequest_maximumHeaderInterval_requestType (pctxt, &pvalue->requestType); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkRequest (OOCTXT* pctxt, H245MultilinkRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* callInformation */ + case 2: + stat = asn1PE_H245MultilinkRequest_callInformation (pctxt, pvalue->u.callInformation); + if (stat != ASN_OK) return stat; + break; + + /* addConnection */ + case 3: + stat = asn1PE_H245MultilinkRequest_addConnection (pctxt, pvalue->u.addConnection); + if (stat != ASN_OK) return stat; + break; + + /* removeConnection */ + case 4: + stat = asn1PE_H245MultilinkRequest_removeConnection (pctxt, pvalue->u.removeConnection); + if (stat != ASN_OK) return stat; + break; + + /* maximumHeaderInterval */ + case 5: + stat = asn1PE_H245MultilinkRequest_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaximumBitRate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaximumBitRate (OOCTXT* pctxt, H245MaximumBitRate value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelRateRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelRateRequest (OOCTXT* pctxt, H245LogicalChannelRateRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode maximumBitRate */ + + stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->maximumBitRate); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMessage (OOCTXT* pctxt, H245RequestMessage* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 11); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 10); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* masterSlaveDetermination */ + case 2: + stat = asn1PE_H245MasterSlaveDetermination (pctxt, pvalue->u.masterSlaveDetermination); + if (stat != ASN_OK) return stat; + break; + + /* terminalCapabilitySet */ + case 3: + stat = asn1PE_H245TerminalCapabilitySet (pctxt, pvalue->u.terminalCapabilitySet); + if (stat != ASN_OK) return stat; + break; + + /* openLogicalChannel */ + case 4: + stat = asn1PE_H245OpenLogicalChannel (pctxt, pvalue->u.openLogicalChannel); + if (stat != ASN_OK) return stat; + break; + + /* closeLogicalChannel */ + case 5: + stat = asn1PE_H245CloseLogicalChannel (pctxt, pvalue->u.closeLogicalChannel); + if (stat != ASN_OK) return stat; + break; + + /* requestChannelClose */ + case 6: + stat = asn1PE_H245RequestChannelClose (pctxt, pvalue->u.requestChannelClose); + if (stat != ASN_OK) return stat; + break; + + /* multiplexEntrySend */ + case 7: + stat = asn1PE_H245MultiplexEntrySend (pctxt, pvalue->u.multiplexEntrySend); + if (stat != ASN_OK) return stat; + break; + + /* requestMultiplexEntry */ + case 8: + stat = asn1PE_H245RequestMultiplexEntry (pctxt, pvalue->u.requestMultiplexEntry); + if (stat != ASN_OK) return stat; + break; + + /* requestMode */ + case 9: + stat = asn1PE_H245RequestMode (pctxt, pvalue->u.requestMode); + if (stat != ASN_OK) return stat; + break; + + /* roundTripDelayRequest */ + case 10: + stat = asn1PE_H245RoundTripDelayRequest (pctxt, pvalue->u.roundTripDelayRequest); + if (stat != ASN_OK) return stat; + break; + + /* maintenanceLoopRequest */ + case 11: + stat = asn1PE_H245MaintenanceLoopRequest (pctxt, pvalue->u.maintenanceLoopRequest); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 12); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* communicationModeRequest */ + case 12: + stat = asn1PE_H245CommunicationModeRequest (&lctxt, pvalue->u.communicationModeRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* conferenceRequest */ + case 13: + stat = asn1PE_H245ConferenceRequest (&lctxt, pvalue->u.conferenceRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multilinkRequest */ + case 14: + stat = asn1PE_H245MultilinkRequest (&lctxt, pvalue->u.multilinkRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* logicalChannelRateRequest */ + case 15: + stat = asn1PE_H245LogicalChannelRateRequest (&lctxt, pvalue->u.logicalChannelRateRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDeterminationAck_decision */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDeterminationAck_decision (OOCTXT* pctxt, H245MasterSlaveDeterminationAck_decision* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* master */ + case 1: + /* NULL */ + break; + + /* slave */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDeterminationAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDeterminationAck (OOCTXT* pctxt, H245MasterSlaveDeterminationAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode decision */ + + stat = asn1PE_H245MasterSlaveDeterminationAck_decision (pctxt, &pvalue->decision); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDeterminationReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDeterminationReject_cause (OOCTXT* pctxt, H245MasterSlaveDeterminationReject_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* identicalNumbers */ + case 1: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDeterminationReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDeterminationReject (OOCTXT* pctxt, H245MasterSlaveDeterminationReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode cause */ + + stat = asn1PE_H245MasterSlaveDeterminationReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySetAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySetAck (OOCTXT* pctxt, H245TerminalCapabilitySetAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySetReject_cause_tableEntryCapacityExce */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* highestEntryNumberProcessed */ + case 1: + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->u.highestEntryNumberProcessed); + if (stat != ASN_OK) return stat; + break; + + /* noneProcessed */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySetReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySetReject_cause (OOCTXT* pctxt, H245TerminalCapabilitySetReject_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecified */ + case 1: + /* NULL */ + break; + + /* undefinedTableEntryUsed */ + case 2: + /* NULL */ + break; + + /* descriptorCapacityExceeded */ + case 3: + /* NULL */ + break; + + /* tableEntryCapacityExceeded */ + case 4: + stat = asn1PE_H245TerminalCapabilitySetReject_cause_tableEntryCapacityExceeded (pctxt, pvalue->u.tableEntryCapacityExceeded); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySetReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySetReject (OOCTXT* pctxt, H245TerminalCapabilitySetReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245TerminalCapabilitySetReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelAck_reverseLogicalChannelParameters_mu */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h222LogicalChannelParameters */ + case 1: + stat = asn1PE_H245H222LogicalChannelParameters (pctxt, pvalue->u.h222LogicalChannelParameters); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h2250LogicalChannelParameters */ + case 2: + stat = asn1PE_H245H2250LogicalChannelParameters (&lctxt, pvalue->u.h2250LogicalChannelParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelAck_reverseLogicalChannelParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_reverseLogicalChannelParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.replacementForPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.multiplexParametersPresent); + + /* encode reverseLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->reverseLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode portNumber */ + + if (pvalue->m.portNumberPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->portNumber, 0U, 65535U); + if (stat != ASN_OK) return stat; + + } + + /* encode multiplexParameters */ + + if (pvalue->m.multiplexParametersPresent) { + stat = asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters (pctxt, &pvalue->multiplexParameters); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.replacementForPresent); + /* encode extension elements */ + + if (pvalue->m.replacementForPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245LogicalChannelNumber (&lctxt, pvalue->replacementFor); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250LogicalChannelAckParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250LogicalChannelAckParameters (OOCTXT* pctxt, H245H2250LogicalChannelAckParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.flowControlToZeroPresent || + pvalue->m.portNumberPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sessionIDPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.dynamicRTPPayloadTypePresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + /* encode sessionID */ + + if (pvalue->m.sessionIDPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + } + + /* encode mediaChannel */ + + if (pvalue->m.mediaChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel); + if (stat != ASN_OK) return stat; + } + + /* encode mediaControlChannel */ + + if (pvalue->m.mediaControlChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel); + if (stat != ASN_OK) return stat; + } + + /* encode dynamicRTPPayloadType */ + + if (pvalue->m.dynamicRTPPayloadTypePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->dynamicRTPPayloadType, 96U, 127U); + if (stat != ASN_OK) return stat; + + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.flowControlToZeroPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.portNumberPresent); + /* encode extension elements */ + + if (pvalue->m.flowControlToZeroPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->flowControlToZero); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.portNumberPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->portNumber, 0U, 65535U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelAck_forwardMultiplexAckParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (OOCTXT* pctxt, H245OpenLogicalChannelAck_forwardMultiplexAckParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h2250LogicalChannelAckParameters */ + case 1: + stat = asn1PE_H245H2250LogicalChannelAckParameters (pctxt, pvalue->u.h2250LogicalChannelAckParameters); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelAck (OOCTXT* pctxt, H245OpenLogicalChannelAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.separateStackPresent || + pvalue->m.forwardMultiplexAckParametersPresent || + pvalue->m.encryptionSyncPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseLogicalChannelParametersPresent); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode reverseLogicalChannelParameters */ + + if (pvalue->m.reverseLogicalChannelParametersPresent) { + stat = asn1PE_H245OpenLogicalChannelAck_reverseLogicalChannelParameters (pctxt, &pvalue->reverseLogicalChannelParameters); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 2); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.separateStackPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.forwardMultiplexAckParametersPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.encryptionSyncPresent); + /* encode extension elements */ + + if (pvalue->m.separateStackPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245NetworkAccessParameters (&lctxt, &pvalue->separateStack); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.forwardMultiplexAckParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245OpenLogicalChannelAck_forwardMultiplexAckParameters (&lctxt, &pvalue->forwardMultiplexAckParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.encryptionSyncPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245EncryptionSync (&lctxt, &pvalue->encryptionSync); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelReject_cause (OOCTXT* pctxt, H245OpenLogicalChannelReject_cause* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 6); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecified */ + case 1: + /* NULL */ + break; + + /* unsuitableReverseParameters */ + case 2: + /* NULL */ + break; + + /* dataTypeNotSupported */ + case 3: + /* NULL */ + break; + + /* dataTypeNotAvailable */ + case 4: + /* NULL */ + break; + + /* unknownDataType */ + case 5: + /* NULL */ + break; + + /* dataTypeALCombinationNotSupported */ + case 6: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* multicastChannelNotAllowed */ + case 7: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* insufficientBandwidth */ + case 8: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* separateStackEstablishmentFailed */ + case 9: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* invalidSessionID */ + case 10: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* masterSlaveConflict */ + case 11: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* waitForCommunicationMode */ + case 12: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* invalidDependentChannel */ + case 13: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* replacementForRejected */ + case 14: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelReject (OOCTXT* pctxt, H245OpenLogicalChannelReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245OpenLogicalChannelReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CloseLogicalChannelAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CloseLogicalChannelAck (OOCTXT* pctxt, H245CloseLogicalChannelAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelCloseAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelCloseAck (OOCTXT* pctxt, H245RequestChannelCloseAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelCloseReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelCloseReject_cause (OOCTXT* pctxt, H245RequestChannelCloseReject_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecified */ + case 1: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelCloseReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelCloseReject (OOCTXT* pctxt, H245RequestChannelCloseReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245RequestChannelCloseReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendAck_multiplexTableEntryNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendAck_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendAck_multiplexTableEntryNumber* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendAck (OOCTXT* pctxt, H245MultiplexEntrySendAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode multiplexTableEntryNumber */ + + stat = asn1PE_H245MultiplexEntrySendAck_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntryRejectionDescriptions_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecifiedCause */ + case 1: + /* NULL */ + break; + + /* descriptorTooComplex */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntryRejectionDescriptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntryRejectionDescriptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode multiplexTableEntryNumber */ + + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245MultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendReject_rejectionDescriptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendReject_rejectionDescriptions (OOCTXT* pctxt, H245MultiplexEntrySendReject_rejectionDescriptions* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245MultiplexEntryRejectionDescriptions (pctxt, ((H245MultiplexEntryRejectionDescriptions*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendReject (OOCTXT* pctxt, H245MultiplexEntrySendReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode rejectionDescriptions */ + + stat = asn1PE_H245MultiplexEntrySendReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryAck_entryNumbers */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryAck_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryAck_entryNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryAck (OOCTXT* pctxt, H245RequestMultiplexEntryAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode entryNumbers */ + + stat = asn1PE_H245RequestMultiplexEntryAck_entryNumbers (pctxt, &pvalue->entryNumbers); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryReject_entryNumbers */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryReject_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryReject_entryNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryRejectionDescriptions_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions_cause (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecifiedCause */ + case 1: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryRejectionDescriptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryRejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryRejectionDescriptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode multiplexTableEntryNumber */ + + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->multiplexTableEntryNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245RequestMultiplexEntryRejectionDescriptions_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryReject_rejectionDescriptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryReject_rejectionDescriptions (OOCTXT* pctxt, H245RequestMultiplexEntryReject_rejectionDescriptions* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245RequestMultiplexEntryRejectionDescriptions (pctxt, ((H245RequestMultiplexEntryRejectionDescriptions*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryReject (OOCTXT* pctxt, H245RequestMultiplexEntryReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode entryNumbers */ + + stat = asn1PE_H245RequestMultiplexEntryReject_entryNumbers (pctxt, &pvalue->entryNumbers); + if (stat != ASN_OK) return stat; + + /* encode rejectionDescriptions */ + + stat = asn1PE_H245RequestMultiplexEntryReject_rejectionDescriptions (pctxt, &pvalue->rejectionDescriptions); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestModeAck_response */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestModeAck_response (OOCTXT* pctxt, H245RequestModeAck_response* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* willTransmitMostPreferredMode */ + case 1: + /* NULL */ + break; + + /* willTransmitLessPreferredMode */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestModeAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestModeAck (OOCTXT* pctxt, H245RequestModeAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode response */ + + stat = asn1PE_H245RequestModeAck_response (pctxt, &pvalue->response); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestModeReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestModeReject_cause (OOCTXT* pctxt, H245RequestModeReject_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* modeUnavailable */ + case 1: + /* NULL */ + break; + + /* multipointConstraint */ + case 2: + /* NULL */ + break; + + /* requestDenied */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestModeReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestModeReject (OOCTXT* pctxt, H245RequestModeReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245RequestModeReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RoundTripDelayResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RoundTripDelayResponse (OOCTXT* pctxt, H245RoundTripDelayResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopAck_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopAck_type (OOCTXT* pctxt, H245MaintenanceLoopAck_type* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* systemLoop */ + case 1: + /* NULL */ + break; + + /* mediaLoop */ + case 2: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop); + if (stat != ASN_OK) return stat; + break; + + /* logicalChannelLoop */ + case 3: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopAck */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopAck (OOCTXT* pctxt, H245MaintenanceLoopAck* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245MaintenanceLoopAck_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopReject_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopReject_type (OOCTXT* pctxt, H245MaintenanceLoopReject_type* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* systemLoop */ + case 1: + /* NULL */ + break; + + /* mediaLoop */ + case 2: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.mediaLoop); + if (stat != ASN_OK) return stat; + break; + + /* logicalChannelLoop */ + case 3: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelLoop); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopReject_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopReject_cause (OOCTXT* pctxt, H245MaintenanceLoopReject_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* canNotPerformLoop */ + case 1: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopReject (OOCTXT* pctxt, H245MaintenanceLoopReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = asn1PE_H245MaintenanceLoopReject_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + /* encode cause */ + + stat = asn1PE_H245MaintenanceLoopReject_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeTableEntry_dataType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeTableEntry_dataType (OOCTXT* pctxt, H245CommunicationModeTableEntry_dataType* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* videoData */ + case 1: + stat = asn1PE_H245VideoCapability (pctxt, pvalue->u.videoData); + if (stat != ASN_OK) return stat; + break; + + /* audioData */ + case 2: + stat = asn1PE_H245AudioCapability (pctxt, pvalue->u.audioData); + if (stat != ASN_OK) return stat; + break; + + /* data */ + case 3: + stat = asn1PE_H245DataApplicationCapability (pctxt, pvalue->u.data); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeTableEntry */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeTableEntry (OOCTXT* pctxt, H245CommunicationModeTableEntry* pvalue) +{ + static Asn1SizeCnst sessionDescription_lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.redundancyEncodingPresent || + pvalue->m.sessionDependencyPresent || + pvalue->m.destinationPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.associatedSessionIDPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaGuaranteedDeliveryPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlChannelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaControlGuaranteedDeliveryPresent); + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H245_SeqOfH245NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + /* encode sessionID */ + + stat = encodeConsUnsigned (pctxt, pvalue->sessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode associatedSessionID */ + + if (pvalue->m.associatedSessionIDPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->associatedSessionID, 1U, 255U); + if (stat != ASN_OK) return stat; + + } + + /* encode terminalLabel */ + + if (pvalue->m.terminalLabelPresent) { + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + } + + /* encode sessionDescription */ + + addSizeConstraint (pctxt, &sessionDescription_lsize1); + + stat = encodeBMPString (pctxt, pvalue->sessionDescription, 0); + if (stat != ASN_OK) return stat; + + /* encode dataType */ + + stat = asn1PE_H245CommunicationModeTableEntry_dataType (pctxt, &pvalue->dataType); + if (stat != ASN_OK) return stat; + + /* encode mediaChannel */ + + if (pvalue->m.mediaChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaChannel); + if (stat != ASN_OK) return stat; + } + + /* encode mediaGuaranteedDelivery */ + + if (pvalue->m.mediaGuaranteedDeliveryPresent) { + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaGuaranteedDelivery); + if (stat != ASN_OK) return stat; + } + + /* encode mediaControlChannel */ + + if (pvalue->m.mediaControlChannelPresent) { + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->mediaControlChannel); + if (stat != ASN_OK) return stat; + } + + /* encode mediaControlGuaranteedDelivery */ + + if (pvalue->m.mediaControlGuaranteedDeliveryPresent) { + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mediaControlGuaranteedDelivery); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 2); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.redundancyEncodingPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sessionDependencyPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationPresent); + /* encode extension elements */ + + if (pvalue->m.redundancyEncodingPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245RedundancyEncoding (&lctxt, &pvalue->redundancyEncoding); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.sessionDependencyPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeConsUnsigned (&lctxt, pvalue->sessionDependency, 1U, 255U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.destinationPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245TerminalLabel (&lctxt, &pvalue->destination); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeResponse_communicationModeTable */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeResponse_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeResponse_communicationModeTable* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CommunicationModeTableEntry (pctxt, ((H245CommunicationModeTableEntry*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeResponse (OOCTXT* pctxt, H245CommunicationModeResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 1); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 0); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* communicationModeTable */ + case 1: + stat = asn1PE_H245CommunicationModeResponse_communicationModeTable (pctxt, pvalue->u.communicationModeTable); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 2); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalID */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalID (OOCTXT* pctxt, H245TerminalID* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_mCTerminalIDResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_mCTerminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_mCTerminalIDResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode terminalID */ + + stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_terminalIDResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_terminalIDResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalIDResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode terminalID */ + + stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceID */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceID (OOCTXT* pctxt, H245ConferenceID* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_conferenceIDResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_conferenceIDResponse (OOCTXT* pctxt, H245ConferenceResponse_conferenceIDResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode conferenceID */ + + stat = asn1PE_H245ConferenceID (pctxt, &pvalue->conferenceID); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Password */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245Password (OOCTXT* pctxt, H245Password* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 32, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_passwordResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_passwordResponse (OOCTXT* pctxt, H245ConferenceResponse_passwordResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode password */ + + stat = asn1PE_H245Password (pctxt, &pvalue->password); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_terminalListResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_terminalListResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalListResponse* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245TerminalLabel (pctxt, ((H245TerminalLabel*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_makeMeChairResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_makeMeChairResponse (OOCTXT* pctxt, H245ConferenceResponse_makeMeChairResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* grantedChairToken */ + case 1: + /* NULL */ + break; + + /* deniedChairToken */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_extensionAddressResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_extensionAddressResponse (OOCTXT* pctxt, H245ConferenceResponse_extensionAddressResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode extensionAddress */ + + stat = asn1PE_H245TerminalID (pctxt, &pvalue->extensionAddress); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_chairTokenOwnerResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_chairTokenOwnerResponse (OOCTXT* pctxt, H245ConferenceResponse_chairTokenOwnerResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode terminalID */ + + stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_terminalCertificateResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_terminalCertificateResponse (OOCTXT* pctxt, H245ConferenceResponse_terminalCertificateResponse* pvalue) +{ + static Asn1SizeCnst certificateResponse_lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalLabelPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.certificateResponsePresent); + + /* encode terminalLabel */ + + if (pvalue->m.terminalLabelPresent) { + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + } + + /* encode certificateResponse */ + + if (pvalue->m.certificateResponsePresent) { + addSizeConstraint (pctxt, &certificateResponse_lsize1); + + stat = encodeOctetString (pctxt, pvalue->certificateResponse.numocts, pvalue->certificateResponse.data); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_broadcastMyLogicalChannelResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_broadcastMyLogicalChannelResponse (OOCTXT* pctxt, H245ConferenceResponse_broadcastMyLogicalChannelResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* grantedBroadcastMyLogicalChannel */ + case 1: + /* NULL */ + break; + + /* deniedBroadcastMyLogicalChannel */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_makeTerminalBroadcasterResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_makeTerminalBroadcasterResponse (OOCTXT* pctxt, H245ConferenceResponse_makeTerminalBroadcasterResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* grantedMakeTerminalBroadcaster */ + case 1: + /* NULL */ + break; + + /* deniedMakeTerminalBroadcaster */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse_sendThisSourceResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse_sendThisSourceResponse (OOCTXT* pctxt, H245ConferenceResponse_sendThisSourceResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* grantedSendThisSource */ + case 1: + /* NULL */ + break; + + /* deniedSendThisSource */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalInformation (OOCTXT* pctxt, H245TerminalInformation* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalLabel */ + + stat = asn1PE_H245TerminalLabel (pctxt, &pvalue->terminalLabel); + if (stat != ASN_OK) return stat; + + /* encode terminalID */ + + stat = asn1PE_H245TerminalID (pctxt, &pvalue->terminalID); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245TerminalInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245TerminalInformation (OOCTXT* pctxt, H245_SeqOfH245TerminalInformation* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245TerminalInformation (pctxt, ((H245TerminalInformation*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestAllTerminalIDsResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestAllTerminalIDsResponse (OOCTXT* pctxt, H245RequestAllTerminalIDsResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalInformation */ + + stat = asn1PE_H245_SeqOfH245TerminalInformation (pctxt, &pvalue->terminalInformation); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RemoteMCResponse_reject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RemoteMCResponse_reject (OOCTXT* pctxt, H245RemoteMCResponse_reject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* unspecified */ + case 1: + /* NULL */ + break; + + /* functionNotSupported */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RemoteMCResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RemoteMCResponse (OOCTXT* pctxt, H245RemoteMCResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* accept */ + case 1: + /* NULL */ + break; + + /* reject */ + case 2: + stat = asn1PE_H245RemoteMCResponse_reject (pctxt, pvalue->u.reject); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceResponse (OOCTXT* pctxt, H245ConferenceResponse* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 8); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* mCTerminalIDResponse */ + case 1: + stat = asn1PE_H245ConferenceResponse_mCTerminalIDResponse (pctxt, pvalue->u.mCTerminalIDResponse); + if (stat != ASN_OK) return stat; + break; + + /* terminalIDResponse */ + case 2: + stat = asn1PE_H245ConferenceResponse_terminalIDResponse (pctxt, pvalue->u.terminalIDResponse); + if (stat != ASN_OK) return stat; + break; + + /* conferenceIDResponse */ + case 3: + stat = asn1PE_H245ConferenceResponse_conferenceIDResponse (pctxt, pvalue->u.conferenceIDResponse); + if (stat != ASN_OK) return stat; + break; + + /* passwordResponse */ + case 4: + stat = asn1PE_H245ConferenceResponse_passwordResponse (pctxt, pvalue->u.passwordResponse); + if (stat != ASN_OK) return stat; + break; + + /* terminalListResponse */ + case 5: + stat = asn1PE_H245ConferenceResponse_terminalListResponse (pctxt, pvalue->u.terminalListResponse); + if (stat != ASN_OK) return stat; + break; + + /* videoCommandReject */ + case 6: + /* NULL */ + break; + + /* terminalDropReject */ + case 7: + /* NULL */ + break; + + /* makeMeChairResponse */ + case 8: + stat = asn1PE_H245ConferenceResponse_makeMeChairResponse (pctxt, pvalue->u.makeMeChairResponse); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* extensionAddressResponse */ + case 9: + stat = asn1PE_H245ConferenceResponse_extensionAddressResponse (&lctxt, pvalue->u.extensionAddressResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* chairTokenOwnerResponse */ + case 10: + stat = asn1PE_H245ConferenceResponse_chairTokenOwnerResponse (&lctxt, pvalue->u.chairTokenOwnerResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* terminalCertificateResponse */ + case 11: + stat = asn1PE_H245ConferenceResponse_terminalCertificateResponse (&lctxt, pvalue->u.terminalCertificateResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* broadcastMyLogicalChannelResponse */ + case 12: + stat = asn1PE_H245ConferenceResponse_broadcastMyLogicalChannelResponse (&lctxt, pvalue->u.broadcastMyLogicalChannelResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* makeTerminalBroadcasterResponse */ + case 13: + stat = asn1PE_H245ConferenceResponse_makeTerminalBroadcasterResponse (&lctxt, pvalue->u.makeTerminalBroadcasterResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* sendThisSourceResponse */ + case 14: + stat = asn1PE_H245ConferenceResponse_sendThisSourceResponse (&lctxt, pvalue->u.sendThisSourceResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* requestAllTerminalIDsResponse */ + case 15: + stat = asn1PE_H245RequestAllTerminalIDsResponse (&lctxt, pvalue->u.requestAllTerminalIDsResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* remoteMCResponse */ + case 16: + stat = asn1PE_H245RemoteMCResponse (&lctxt, pvalue->u.remoteMCResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_callInformation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_callInformation (OOCTXT* pctxt, H245MultilinkResponse_callInformation* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode dialingInformation */ + + stat = asn1PE_H245DialingInformation (pctxt, &pvalue->dialingInformation); + if (stat != ASN_OK) return stat; + + /* encode callAssociationNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->callAssociationNumber, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_addConnection_responseCode_rejected */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode_rejected (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode_rejected* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* connectionsNotAvailable */ + case 1: + /* NULL */ + break; + + /* userRejected */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_addConnection_responseCode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_addConnection_responseCode (OOCTXT* pctxt, H245MultilinkResponse_addConnection_responseCode* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* accepted */ + case 1: + /* NULL */ + break; + + /* rejected */ + case 2: + stat = asn1PE_H245MultilinkResponse_addConnection_responseCode_rejected (pctxt, pvalue->u.rejected); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_addConnection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_addConnection (OOCTXT* pctxt, H245MultilinkResponse_addConnection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode responseCode */ + + stat = asn1PE_H245MultilinkResponse_addConnection_responseCode (pctxt, &pvalue->responseCode); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_removeConnection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_removeConnection (OOCTXT* pctxt, H245MultilinkResponse_removeConnection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode connectionIdentifier */ + + stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse_maximumHeaderInterval */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse_maximumHeaderInterval (OOCTXT* pctxt, H245MultilinkResponse_maximumHeaderInterval* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode currentInterval */ + + stat = encodeConsUnsigned (pctxt, pvalue->currentInterval, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkResponse */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkResponse (OOCTXT* pctxt, H245MultilinkResponse* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* callInformation */ + case 2: + stat = asn1PE_H245MultilinkResponse_callInformation (pctxt, pvalue->u.callInformation); + if (stat != ASN_OK) return stat; + break; + + /* addConnection */ + case 3: + stat = asn1PE_H245MultilinkResponse_addConnection (pctxt, pvalue->u.addConnection); + if (stat != ASN_OK) return stat; + break; + + /* removeConnection */ + case 4: + stat = asn1PE_H245MultilinkResponse_removeConnection (pctxt, pvalue->u.removeConnection); + if (stat != ASN_OK) return stat; + break; + + /* maximumHeaderInterval */ + case 5: + stat = asn1PE_H245MultilinkResponse_maximumHeaderInterval (pctxt, pvalue->u.maximumHeaderInterval); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelRateAcknowledge */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelRateAcknowledge (OOCTXT* pctxt, H245LogicalChannelRateAcknowledge* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode maximumBitRate */ + + stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->maximumBitRate); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelRateRejectReason */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelRateRejectReason (OOCTXT* pctxt, H245LogicalChannelRateRejectReason* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* undefinedReason */ + case 1: + /* NULL */ + break; + + /* insufficientResources */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelRateReject */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelRateReject (OOCTXT* pctxt, H245LogicalChannelRateReject* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.currentMaximumBitRatePresent); + + /* encode sequenceNumber */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->sequenceNumber); + if (stat != ASN_OK) return stat; + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode rejectReason */ + + stat = asn1PE_H245LogicalChannelRateRejectReason (pctxt, &pvalue->rejectReason); + if (stat != ASN_OK) return stat; + + /* encode currentMaximumBitRate */ + + if (pvalue->m.currentMaximumBitRatePresent) { + stat = asn1PE_H245MaximumBitRate (pctxt, pvalue->currentMaximumBitRate); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ResponseMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ResponseMessage (OOCTXT* pctxt, H245ResponseMessage* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 19); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 18); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* masterSlaveDeterminationAck */ + case 2: + stat = asn1PE_H245MasterSlaveDeterminationAck (pctxt, pvalue->u.masterSlaveDeterminationAck); + if (stat != ASN_OK) return stat; + break; + + /* masterSlaveDeterminationReject */ + case 3: + stat = asn1PE_H245MasterSlaveDeterminationReject (pctxt, pvalue->u.masterSlaveDeterminationReject); + if (stat != ASN_OK) return stat; + break; + + /* terminalCapabilitySetAck */ + case 4: + stat = asn1PE_H245TerminalCapabilitySetAck (pctxt, pvalue->u.terminalCapabilitySetAck); + if (stat != ASN_OK) return stat; + break; + + /* terminalCapabilitySetReject */ + case 5: + stat = asn1PE_H245TerminalCapabilitySetReject (pctxt, pvalue->u.terminalCapabilitySetReject); + if (stat != ASN_OK) return stat; + break; + + /* openLogicalChannelAck */ + case 6: + stat = asn1PE_H245OpenLogicalChannelAck (pctxt, pvalue->u.openLogicalChannelAck); + if (stat != ASN_OK) return stat; + break; + + /* openLogicalChannelReject */ + case 7: + stat = asn1PE_H245OpenLogicalChannelReject (pctxt, pvalue->u.openLogicalChannelReject); + if (stat != ASN_OK) return stat; + break; + + /* closeLogicalChannelAck */ + case 8: + stat = asn1PE_H245CloseLogicalChannelAck (pctxt, pvalue->u.closeLogicalChannelAck); + if (stat != ASN_OK) return stat; + break; + + /* requestChannelCloseAck */ + case 9: + stat = asn1PE_H245RequestChannelCloseAck (pctxt, pvalue->u.requestChannelCloseAck); + if (stat != ASN_OK) return stat; + break; + + /* requestChannelCloseReject */ + case 10: + stat = asn1PE_H245RequestChannelCloseReject (pctxt, pvalue->u.requestChannelCloseReject); + if (stat != ASN_OK) return stat; + break; + + /* multiplexEntrySendAck */ + case 11: + stat = asn1PE_H245MultiplexEntrySendAck (pctxt, pvalue->u.multiplexEntrySendAck); + if (stat != ASN_OK) return stat; + break; + + /* multiplexEntrySendReject */ + case 12: + stat = asn1PE_H245MultiplexEntrySendReject (pctxt, pvalue->u.multiplexEntrySendReject); + if (stat != ASN_OK) return stat; + break; + + /* requestMultiplexEntryAck */ + case 13: + stat = asn1PE_H245RequestMultiplexEntryAck (pctxt, pvalue->u.requestMultiplexEntryAck); + if (stat != ASN_OK) return stat; + break; + + /* requestMultiplexEntryReject */ + case 14: + stat = asn1PE_H245RequestMultiplexEntryReject (pctxt, pvalue->u.requestMultiplexEntryReject); + if (stat != ASN_OK) return stat; + break; + + /* requestModeAck */ + case 15: + stat = asn1PE_H245RequestModeAck (pctxt, pvalue->u.requestModeAck); + if (stat != ASN_OK) return stat; + break; + + /* requestModeReject */ + case 16: + stat = asn1PE_H245RequestModeReject (pctxt, pvalue->u.requestModeReject); + if (stat != ASN_OK) return stat; + break; + + /* roundTripDelayResponse */ + case 17: + stat = asn1PE_H245RoundTripDelayResponse (pctxt, pvalue->u.roundTripDelayResponse); + if (stat != ASN_OK) return stat; + break; + + /* maintenanceLoopAck */ + case 18: + stat = asn1PE_H245MaintenanceLoopAck (pctxt, pvalue->u.maintenanceLoopAck); + if (stat != ASN_OK) return stat; + break; + + /* maintenanceLoopReject */ + case 19: + stat = asn1PE_H245MaintenanceLoopReject (pctxt, pvalue->u.maintenanceLoopReject); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 20); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* communicationModeResponse */ + case 20: + stat = asn1PE_H245CommunicationModeResponse (&lctxt, pvalue->u.communicationModeResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* conferenceResponse */ + case 21: + stat = asn1PE_H245ConferenceResponse (&lctxt, pvalue->u.conferenceResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multilinkResponse */ + case 22: + stat = asn1PE_H245MultilinkResponse (&lctxt, pvalue->u.multilinkResponse); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* logicalChannelRateAcknowledge */ + case 23: + stat = asn1PE_H245LogicalChannelRateAcknowledge (&lctxt, pvalue->u.logicalChannelRateAcknowledge); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* logicalChannelRateReject */ + case 24: + stat = asn1PE_H245LogicalChannelRateReject (&lctxt, pvalue->u.logicalChannelRateReject); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MaintenanceLoopOffCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MaintenanceLoopOffCommand (OOCTXT* pctxt, H245MaintenanceLoopOffCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* SendTerminalCapabilitySet_specificRequest_capabilityTabl */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 65535, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245CapabilityTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SendTerminalCapabilitySet_specificRequest_capabilityDesc */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245CapabilityDescriptorNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SendTerminalCapabilitySet_specificRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SendTerminalCapabilitySet_specificRequest (OOCTXT* pctxt, H245SendTerminalCapabilitySet_specificRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityTableEntryNumbersPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.capabilityDescriptorNumbersPresent); + + /* encode multiplexCapability */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multiplexCapability); + if (stat != ASN_OK) return stat; + + /* encode capabilityTableEntryNumbers */ + + if (pvalue->m.capabilityTableEntryNumbersPresent) { + stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityTableEntryNumbers (pctxt, &pvalue->capabilityTableEntryNumbers); + if (stat != ASN_OK) return stat; + } + + /* encode capabilityDescriptorNumbers */ + + if (pvalue->m.capabilityDescriptorNumbersPresent) { + stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest_capabilityDescriptorNumbers (pctxt, &pvalue->capabilityDescriptorNumbers); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SendTerminalCapabilitySet */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SendTerminalCapabilitySet (OOCTXT* pctxt, H245SendTerminalCapabilitySet* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* specificRequest */ + case 1: + stat = asn1PE_H245SendTerminalCapabilitySet_specificRequest (pctxt, pvalue->u.specificRequest); + if (stat != ASN_OK) return stat; + break; + + /* genericRequest */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionCommand_encryptionAlgorithmID */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionCommand_encryptionAlgorithmID (OOCTXT* pctxt, H245EncryptionCommand_encryptionAlgorithmID* pvalue) +{ + int stat = ASN_OK; + + /* encode h233AlgorithmIdentifier */ + + stat = asn1PE_H245SequenceNumber (pctxt, pvalue->h233AlgorithmIdentifier); + if (stat != ASN_OK) return stat; + + /* encode associatedAlgorithm */ + + stat = asn1PE_H245NonStandardParameter (pctxt, &pvalue->associatedAlgorithm); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionCommand (OOCTXT* pctxt, H245EncryptionCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* encryptionSE */ + case 1: + stat = encodeOctetString (pctxt, pvalue->u.encryptionSE->numocts, pvalue->u.encryptionSE->data); + if (stat != ASN_OK) return stat; + break; + + /* encryptionIVRequest */ + case 2: + /* NULL */ + break; + + /* encryptionAlgorithmID */ + case 3: + stat = asn1PE_H245EncryptionCommand_encryptionAlgorithmID (pctxt, pvalue->u.encryptionAlgorithmID); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlCommand_scope */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlCommand_scope (OOCTXT* pctxt, H245FlowControlCommand_scope* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logicalChannelNumber */ + case 1: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber); + if (stat != ASN_OK) return stat; + break; + + /* resourceID */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* wholeMultiplex */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlCommand_restriction */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlCommand_restriction (OOCTXT* pctxt, H245FlowControlCommand_restriction* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* maximumBitRate */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.maximumBitRate, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + break; + + /* noRestriction */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlCommand (OOCTXT* pctxt, H245FlowControlCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode scope */ + + stat = asn1PE_H245FlowControlCommand_scope (pctxt, &pvalue->scope); + if (stat != ASN_OK) return stat; + + /* encode restriction */ + + stat = asn1PE_H245FlowControlCommand_restriction (pctxt, &pvalue->restriction); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndSessionCommand_gstnOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EndSessionCommand_gstnOptions (OOCTXT* pctxt, H245EndSessionCommand_gstnOptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 5); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* telephonyMode */ + case 1: + /* NULL */ + break; + + /* v8bis */ + case 2: + /* NULL */ + break; + + /* v34DSVD */ + case 3: + /* NULL */ + break; + + /* v34DuplexFAX */ + case 4: + /* NULL */ + break; + + /* v34H324 */ + case 5: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndSessionCommand_isdnOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EndSessionCommand_isdnOptions (OOCTXT* pctxt, H245EndSessionCommand_isdnOptions* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* telephonyMode */ + case 1: + /* NULL */ + break; + + /* v140 */ + case 2: + /* NULL */ + break; + + /* terminalOnHold */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndSessionCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EndSessionCommand (OOCTXT* pctxt, H245EndSessionCommand* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* disconnect */ + case 2: + /* NULL */ + break; + + /* gstnOptions */ + case 3: + stat = asn1PE_H245EndSessionCommand_gstnOptions (pctxt, pvalue->u.gstnOptions); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* isdnOptions */ + case 4: + stat = asn1PE_H245EndSessionCommand_isdnOptions (&lctxt, pvalue->u.isdnOptions); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_videoFastUpdateGOB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateGOB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateGOB* pvalue) +{ + int stat = ASN_OK; + + /* encode firstGOB */ + + stat = encodeConsUnsigned (pctxt, pvalue->firstGOB, 0U, 17U); + if (stat != ASN_OK) return stat; + + /* encode numberOfGOBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfGOBs, 1U, 18U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_videoFastUpdateMB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_videoFastUpdateMB (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoFastUpdateMB* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.firstGOBPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.firstMBPresent); + + /* encode firstGOB */ + + if (pvalue->m.firstGOBPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->firstGOB, 0U, 255U); + if (stat != ASN_OK) return stat; + + } + + /* encode firstMB */ + + if (pvalue->m.firstMBPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 8192U); + if (stat != ASN_OK) return stat; + + } + + /* encode numberOfMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 8192U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* KeyProtectionMethod */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245KeyProtectionMethod (OOCTXT* pctxt, H245KeyProtectionMethod* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode secureChannel */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->secureChannel); + if (stat != ASN_OK) return stat; + + /* encode sharedSecret */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sharedSecret); + if (stat != ASN_OK) return stat; + + /* encode certProtectedKey */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->certProtectedKey); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncryptionUpdateRequest */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245EncryptionUpdateRequest (OOCTXT* pctxt, H245EncryptionUpdateRequest* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.keyProtectionMethodPresent); + + /* encode keyProtectionMethod */ + + if (pvalue->m.keyProtectionMethodPresent) { + stat = asn1PE_H245KeyProtectionMethod (pctxt, &pvalue->keyProtectionMethod); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_progressiveRefinementStart_rep */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* doOneProgression */ + case 1: + /* NULL */ + break; + + /* doContinuousProgressions */ + case 2: + /* NULL */ + break; + + /* doOneIndependentProgression */ + case 3: + /* NULL */ + break; + + /* doContinuousIndependentProgressions */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_progressiveRefinementStart */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart (OOCTXT* pctxt, H245MiscellaneousCommand_type_progressiveRefinementStart* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode repeatCount */ + + stat = asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart_repeatCount (pctxt, &pvalue->repeatCount); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_videoBadMBs */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_videoBadMBs (OOCTXT* pctxt, H245MiscellaneousCommand_type_videoBadMBs* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode firstMB */ + + stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 9216U); + if (stat != ASN_OK) return stat; + + /* encode numberOfMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 9216U); + if (stat != ASN_OK) return stat; + + /* encode temporalReference */ + + stat = encodeConsUnsigned (pctxt, pvalue->temporalReference, 0U, 1023U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* PictureReference */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245PictureReference (OOCTXT* pctxt, H245PictureReference* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* pictureNumber */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.pictureNumber, 0U, 1023U); + if (stat != ASN_OK) return stat; + + break; + + /* longTermPictureIndex */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.longTermPictureIndex, 0U, 255U); + if (stat != ASN_OK) return stat; + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH245PictureReference */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245_SeqOfH245PictureReference (OOCTXT* pctxt, H245_SeqOfH245PictureReference* pvalue) +{ + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + ASN1UINT enclen, fraglen; + + enclen = fraglen = xx1 = 0; + pnode = pvalue->head; + for (;;) { + /* encode length determinant */ + + stat = encodeLength (pctxt, (pvalue->count - enclen)); + if (stat < 0) return stat; + + fraglen = stat; + enclen += fraglen; + /* encode elements */ + + for (; xx1 < enclen; xx1++) { + stat = asn1PE_H245PictureReference (pctxt, ((H245PictureReference*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + if ( pvalue->count == enclen && fraglen < 16384) { + break; + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type_lostPartialPicture */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type_lostPartialPicture (OOCTXT* pctxt, H245MiscellaneousCommand_type_lostPartialPicture* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode pictureReference */ + + stat = asn1PE_H245PictureReference (pctxt, &pvalue->pictureReference); + if (stat != ASN_OK) return stat; + + /* encode firstMB */ + + stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 9216U); + if (stat != ASN_OK) return stat; + + /* encode numberOfMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 9216U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand_type (OOCTXT* pctxt, H245MiscellaneousCommand_type* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 10); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* equaliseDelay */ + case 1: + /* NULL */ + break; + + /* zeroDelay */ + case 2: + /* NULL */ + break; + + /* multipointModeCommand */ + case 3: + /* NULL */ + break; + + /* cancelMultipointModeCommand */ + case 4: + /* NULL */ + break; + + /* videoFreezePicture */ + case 5: + /* NULL */ + break; + + /* videoFastUpdatePicture */ + case 6: + /* NULL */ + break; + + /* videoFastUpdateGOB */ + case 7: + stat = asn1PE_H245MiscellaneousCommand_type_videoFastUpdateGOB (pctxt, pvalue->u.videoFastUpdateGOB); + if (stat != ASN_OK) return stat; + break; + + /* videoTemporalSpatialTradeOff */ + case 8: + stat = encodeConsUnsigned (pctxt, pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U); + if (stat != ASN_OK) return stat; + + break; + + /* videoSendSyncEveryGOB */ + case 9: + /* NULL */ + break; + + /* videoSendSyncEveryGOBCancel */ + case 10: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* videoFastUpdateMB */ + case 11: + stat = asn1PE_H245MiscellaneousCommand_type_videoFastUpdateMB (&lctxt, pvalue->u.videoFastUpdateMB); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* maxH223MUXPDUsize */ + case 12: + stat = encodeConsUnsigned (&lctxt, pvalue->u.maxH223MUXPDUsize, 1U, 65535U); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* encryptionUpdate */ + case 13: + stat = asn1PE_H245EncryptionSync (&lctxt, pvalue->u.encryptionUpdate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* encryptionUpdateRequest */ + case 14: + stat = asn1PE_H245EncryptionUpdateRequest (&lctxt, pvalue->u.encryptionUpdateRequest); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* switchReceiveMediaOff */ + case 15: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* switchReceiveMediaOn */ + case 16: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* progressiveRefinementStart */ + case 17: + stat = asn1PE_H245MiscellaneousCommand_type_progressiveRefinementStart (&lctxt, pvalue->u.progressiveRefinementStart); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* progressiveRefinementAbortOne */ + case 18: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* progressiveRefinementAbortContinuous */ + case 19: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* videoBadMBs */ + case 20: + stat = asn1PE_H245MiscellaneousCommand_type_videoBadMBs (&lctxt, pvalue->u.videoBadMBs); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* lostPicture */ + case 21: + stat = asn1PE_H245_SeqOfH245PictureReference (&lctxt, pvalue->u.lostPicture); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* lostPartialPicture */ + case 22: + stat = asn1PE_H245MiscellaneousCommand_type_lostPartialPicture (&lctxt, pvalue->u.lostPartialPicture); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* recoveryReferencePicture */ + case 23: + stat = asn1PE_H245_SeqOfH245PictureReference (&lctxt, pvalue->u.recoveryReferencePicture); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousCommand (OOCTXT* pctxt, H245MiscellaneousCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode type */ + + stat = asn1PE_H245MiscellaneousCommand_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeCommand_communicationModeTable */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeCommand_communicationModeTable (OOCTXT* pctxt, H245CommunicationModeCommand_communicationModeTable* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + DListNode* pnode; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->count); + if (stat < 0) return stat; + + /* encode elements */ + pnode = pvalue->head; + + for (xx1 = 0; xx1 < pvalue->count; xx1++) { + stat = asn1PE_H245CommunicationModeTableEntry (pctxt, ((H245CommunicationModeTableEntry*)pnode->data)); + if (stat != ASN_OK) return stat; + pnode = pnode->next; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommunicationModeCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommunicationModeCommand (OOCTXT* pctxt, H245CommunicationModeCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode communicationModeTable */ + + stat = asn1PE_H245CommunicationModeCommand_communicationModeTable (pctxt, &pvalue->communicationModeTable); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* SubstituteConferenceIDCommand_conferenceIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SubstituteConferenceIDCommand_conferenceIdentifier (OOCTXT* pctxt, H245SubstituteConferenceIDCommand_conferenceIdentifier* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* SubstituteConferenceIDCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245SubstituteConferenceIDCommand (OOCTXT* pctxt, H245SubstituteConferenceIDCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode conferenceIdentifier */ + + stat = asn1PE_H245SubstituteConferenceIDCommand_conferenceIdentifier (pctxt, &pvalue->conferenceIdentifier); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceCommand (OOCTXT* pctxt, H245ConferenceCommand* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 7); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* broadcastMyLogicalChannel */ + case 1: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.broadcastMyLogicalChannel); + if (stat != ASN_OK) return stat; + break; + + /* cancelBroadcastMyLogicalChannel */ + case 2: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.cancelBroadcastMyLogicalChannel); + if (stat != ASN_OK) return stat; + break; + + /* makeTerminalBroadcaster */ + case 3: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.makeTerminalBroadcaster); + if (stat != ASN_OK) return stat; + break; + + /* cancelMakeTerminalBroadcaster */ + case 4: + /* NULL */ + break; + + /* sendThisSource */ + case 5: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.sendThisSource); + if (stat != ASN_OK) return stat; + break; + + /* cancelSendThisSource */ + case 6: + /* NULL */ + break; + + /* dropConference */ + case 7: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* substituteConferenceIDCommand */ + case 8: + stat = asn1PE_H245SubstituteConferenceIDCommand (&lctxt, pvalue->u.substituteConferenceIDCommand); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223MultiplexReconfiguration_h223ModeChange */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223ModeChange (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223ModeChange* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* toLevel0 */ + case 1: + /* NULL */ + break; + + /* toLevel1 */ + case 2: + /* NULL */ + break; + + /* toLevel2 */ + case 3: + /* NULL */ + break; + + /* toLevel2withOptionalHeader */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223MultiplexReconfiguration_h223AnnexADoubleFlag */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (OOCTXT* pctxt, H245H223MultiplexReconfiguration_h223AnnexADoubleFlag* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* start */ + case 1: + /* NULL */ + break; + + /* stop */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223MultiplexReconfiguration */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223MultiplexReconfiguration (OOCTXT* pctxt, H245H223MultiplexReconfiguration* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* h223ModeChange */ + case 1: + stat = asn1PE_H245H223MultiplexReconfiguration_h223ModeChange (pctxt, pvalue->u.h223ModeChange); + if (stat != ASN_OK) return stat; + break; + + /* h223AnnexADoubleFlag */ + case 2: + stat = asn1PE_H245H223MultiplexReconfiguration_h223AnnexADoubleFlag (pctxt, pvalue->u.h223AnnexADoubleFlag); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_aal_aal1_clockRecovery */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_clockRecovery* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nullClockRecovery */ + case 1: + /* NULL */ + break; + + /* srtsClockRecovery */ + case 2: + /* NULL */ + break; + + /* adaptiveClockRecovery */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_aal_aal1_errorCorrection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1_errorCorrection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nullErrorCorrection */ + case 1: + /* NULL */ + break; + + /* longInterleaver */ + case 2: + /* NULL */ + break; + + /* shortInterleaver */ + case 3: + /* NULL */ + break; + + /* errorCorrectionOnly */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_aal_aal1 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_aal_aal1 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal1* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode clockRecovery */ + + stat = asn1PE_H245NewATMVCCommand_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery); + if (stat != ASN_OK) return stat; + + /* encode errorCorrection */ + + stat = asn1PE_H245NewATMVCCommand_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection); + if (stat != ASN_OK) return stat; + + /* encode structuredDataTransfer */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer); + if (stat != ASN_OK) return stat; + + /* encode partiallyFilledCells */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_aal_aal5 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_aal_aal5 (OOCTXT* pctxt, H245NewATMVCCommand_aal_aal5* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode backwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_aal */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_aal (OOCTXT* pctxt, H245NewATMVCCommand_aal* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* aal1 */ + case 1: + stat = asn1PE_H245NewATMVCCommand_aal_aal1 (pctxt, pvalue->u.aal1); + if (stat != ASN_OK) return stat; + break; + + /* aal5 */ + case 2: + stat = asn1PE_H245NewATMVCCommand_aal_aal5 (pctxt, pvalue->u.aal5); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_multiplex */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_multiplex* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noMultiplex */ + case 1: + /* NULL */ + break; + + /* transportStream */ + case 2: + /* NULL */ + break; + + /* programStream */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_reverseParameters_multiplex */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters_multiplex* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noMultiplex */ + case 1: + /* NULL */ + break; + + /* transportStream */ + case 2: + /* NULL */ + break; + + /* programStream */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand_reverseParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand_reverseParameters (OOCTXT* pctxt, H245NewATMVCCommand_reverseParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToPCRClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToNetworkClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock); + if (stat != ASN_OK) return stat; + + /* encode multiplex */ + + stat = asn1PE_H245NewATMVCCommand_reverseParameters_multiplex (pctxt, &pvalue->multiplex); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCCommand (OOCTXT* pctxt, H245NewATMVCCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode resourceID */ + + stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToPCRClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToNetworkClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock); + if (stat != ASN_OK) return stat; + + /* encode aal */ + + stat = asn1PE_H245NewATMVCCommand_aal (pctxt, &pvalue->aal); + if (stat != ASN_OK) return stat; + + /* encode multiplex */ + + stat = asn1PE_H245NewATMVCCommand_multiplex (pctxt, &pvalue->multiplex); + if (stat != ASN_OK) return stat; + + /* encode reverseParameters */ + + stat = asn1PE_H245NewATMVCCommand_reverseParameters (pctxt, &pvalue->reverseParameters); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MobileMultilinkReconfigurationCommand_status */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand_status (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand_status* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* synchronized_ */ + case 1: + /* NULL */ + break; + + /* reconfiguration */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MobileMultilinkReconfigurationCommand */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MobileMultilinkReconfigurationCommand (OOCTXT* pctxt, H245MobileMultilinkReconfigurationCommand* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sampleSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->sampleSize, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode samplesPerFrame */ + + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerFrame, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode status */ + + stat = asn1PE_H245MobileMultilinkReconfigurationCommand_status (pctxt, &pvalue->status); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CommandMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245CommandMessage (OOCTXT* pctxt, H245CommandMessage* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 7); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* maintenanceLoopOffCommand */ + case 2: + stat = asn1PE_H245MaintenanceLoopOffCommand (pctxt, pvalue->u.maintenanceLoopOffCommand); + if (stat != ASN_OK) return stat; + break; + + /* sendTerminalCapabilitySet */ + case 3: + stat = asn1PE_H245SendTerminalCapabilitySet (pctxt, pvalue->u.sendTerminalCapabilitySet); + if (stat != ASN_OK) return stat; + break; + + /* encryptionCommand */ + case 4: + stat = asn1PE_H245EncryptionCommand (pctxt, pvalue->u.encryptionCommand); + if (stat != ASN_OK) return stat; + break; + + /* flowControlCommand */ + case 5: + stat = asn1PE_H245FlowControlCommand (pctxt, pvalue->u.flowControlCommand); + if (stat != ASN_OK) return stat; + break; + + /* endSessionCommand */ + case 6: + stat = asn1PE_H245EndSessionCommand (pctxt, pvalue->u.endSessionCommand); + if (stat != ASN_OK) return stat; + break; + + /* miscellaneousCommand */ + case 7: + stat = asn1PE_H245MiscellaneousCommand (pctxt, pvalue->u.miscellaneousCommand); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* communicationModeCommand */ + case 8: + stat = asn1PE_H245CommunicationModeCommand (&lctxt, pvalue->u.communicationModeCommand); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* conferenceCommand */ + case 9: + stat = asn1PE_H245ConferenceCommand (&lctxt, pvalue->u.conferenceCommand); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* h223MultiplexReconfiguration */ + case 10: + stat = asn1PE_H245H223MultiplexReconfiguration (&lctxt, pvalue->u.h223MultiplexReconfiguration); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* newATMVCCommand */ + case 11: + stat = asn1PE_H245NewATMVCCommand (&lctxt, pvalue->u.newATMVCCommand); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* mobileMultilinkReconfigurationCommand */ + case 12: + stat = asn1PE_H245MobileMultilinkReconfigurationCommand (&lctxt, pvalue->u.mobileMultilinkReconfigurationCommand); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FunctionNotUnderstood */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FunctionNotUnderstood (OOCTXT* pctxt, H245FunctionNotUnderstood* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* request */ + case 1: + stat = asn1PE_H245RequestMessage (pctxt, pvalue->u.request); + if (stat != ASN_OK) return stat; + break; + + /* response */ + case 2: + stat = asn1PE_H245ResponseMessage (pctxt, pvalue->u.response); + if (stat != ASN_OK) return stat; + break; + + /* command */ + case 3: + stat = asn1PE_H245CommandMessage (pctxt, pvalue->u.command); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MasterSlaveDeterminationRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MasterSlaveDeterminationRelease (OOCTXT* pctxt, H245MasterSlaveDeterminationRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalCapabilitySetRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalCapabilitySetRelease (OOCTXT* pctxt, H245TerminalCapabilitySetRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* OpenLogicalChannelConfirm */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245OpenLogicalChannelConfirm (OOCTXT* pctxt, H245OpenLogicalChannelConfirm* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestChannelCloseRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestChannelCloseRelease (OOCTXT* pctxt, H245RequestChannelCloseRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardLogicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->forwardLogicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendRelease_multiplexTableEntryNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (OOCTXT* pctxt, H245MultiplexEntrySendRelease_multiplexTableEntryNumber* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultiplexEntrySendRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultiplexEntrySendRelease (OOCTXT* pctxt, H245MultiplexEntrySendRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode multiplexTableEntryNumber */ + + stat = asn1PE_H245MultiplexEntrySendRelease_multiplexTableEntryNumber (pctxt, &pvalue->multiplexTableEntryNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryRelease_entryNumbers */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryRelease_entryNumbers (OOCTXT* pctxt, H245RequestMultiplexEntryRelease_entryNumbers* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 15, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* encode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeLength (pctxt, pvalue->n); + if (stat < 0) return stat; + + /* encode elements */ + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + stat = asn1PE_H245MultiplexTableEntryNumber (pctxt, pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestMultiplexEntryRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestMultiplexEntryRelease (OOCTXT* pctxt, H245RequestMultiplexEntryRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode entryNumbers */ + + stat = asn1PE_H245RequestMultiplexEntryRelease_entryNumbers (pctxt, &pvalue->entryNumbers); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestModeRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245RequestModeRelease (OOCTXT* pctxt, H245RequestModeRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousIndication_type_videoNotDecodedMBs */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousIndication_type_videoNotDecodedMBs (OOCTXT* pctxt, H245MiscellaneousIndication_type_videoNotDecodedMBs* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode firstMB */ + + stat = encodeConsUnsigned (pctxt, pvalue->firstMB, 1U, 8192U); + if (stat != ASN_OK) return stat; + + /* encode numberOfMBs */ + + stat = encodeConsUnsigned (pctxt, pvalue->numberOfMBs, 1U, 8192U); + if (stat != ASN_OK) return stat; + + /* encode temporalReference */ + + stat = encodeConsUnsigned (pctxt, pvalue->temporalReference, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousIndication_type */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousIndication_type (OOCTXT* pctxt, H245MiscellaneousIndication_type* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 10); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logicalChannelActive */ + case 1: + /* NULL */ + break; + + /* logicalChannelInactive */ + case 2: + /* NULL */ + break; + + /* multipointConference */ + case 3: + /* NULL */ + break; + + /* cancelMultipointConference */ + case 4: + /* NULL */ + break; + + /* multipointZeroComm */ + case 5: + /* NULL */ + break; + + /* cancelMultipointZeroComm */ + case 6: + /* NULL */ + break; + + /* multipointSecondaryStatus */ + case 7: + /* NULL */ + break; + + /* cancelMultipointSecondaryStatus */ + case 8: + /* NULL */ + break; + + /* videoIndicateReadyToActivate */ + case 9: + /* NULL */ + break; + + /* videoTemporalSpatialTradeOff */ + case 10: + stat = encodeConsUnsigned (pctxt, pvalue->u.videoTemporalSpatialTradeOff, 0U, 31U); + if (stat != ASN_OK) return stat; + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* videoNotDecodedMBs */ + case 11: + stat = asn1PE_H245MiscellaneousIndication_type_videoNotDecodedMBs (&lctxt, pvalue->u.videoNotDecodedMBs); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* transportCapability */ + case 12: + stat = asn1PE_H245TransportCapability (&lctxt, pvalue->u.transportCapability); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MiscellaneousIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MiscellaneousIndication (OOCTXT* pctxt, H245MiscellaneousIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + /* encode type */ + + stat = asn1PE_H245MiscellaneousIndication_type (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* JitterIndication_scope */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245JitterIndication_scope (OOCTXT* pctxt, H245JitterIndication_scope* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logicalChannelNumber */ + case 1: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber); + if (stat != ASN_OK) return stat; + break; + + /* resourceID */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* wholeMultiplex */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* JitterIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245JitterIndication (OOCTXT* pctxt, H245JitterIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.skippedFrameCountPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalDecoderBufferPresent); + + /* encode scope */ + + stat = asn1PE_H245JitterIndication_scope (pctxt, &pvalue->scope); + if (stat != ASN_OK) return stat; + + /* encode estimatedReceivedJitterMantissa */ + + stat = encodeConsUnsigned (pctxt, pvalue->estimatedReceivedJitterMantissa, 0U, 3U); + if (stat != ASN_OK) return stat; + + /* encode estimatedReceivedJitterExponent */ + + stat = encodeConsUnsigned (pctxt, pvalue->estimatedReceivedJitterExponent, 0U, 7U); + if (stat != ASN_OK) return stat; + + /* encode skippedFrameCount */ + + if (pvalue->m.skippedFrameCountPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->skippedFrameCount, 0U, 15U); + if (stat != ASN_OK) return stat; + + } + + /* encode additionalDecoderBuffer */ + + if (pvalue->m.additionalDecoderBufferPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->additionalDecoderBuffer, 0U, 262143U); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H223SkewIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H223SkewIndication (OOCTXT* pctxt, H245H223SkewIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber1 */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber1); + if (stat != ASN_OK) return stat; + + /* encode logicalChannelNumber2 */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber2); + if (stat != ASN_OK) return stat; + + /* encode skew */ + + stat = encodeConsUnsigned (pctxt, pvalue->skew, 0U, 4095U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_aal_aal1_clockRecovery */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_clockRecovery (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_clockRecovery* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nullClockRecovery */ + case 1: + /* NULL */ + break; + + /* srtsClockRecovery */ + case 2: + /* NULL */ + break; + + /* adaptiveClockRecovery */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_aal_aal1_errorCorrection */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1_errorCorrection (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1_errorCorrection* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nullErrorCorrection */ + case 1: + /* NULL */ + break; + + /* longInterleaver */ + case 2: + /* NULL */ + break; + + /* shortInterleaver */ + case 3: + /* NULL */ + break; + + /* errorCorrectionOnly */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_aal_aal1 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_aal_aal1 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal1* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode clockRecovery */ + + stat = asn1PE_H245NewATMVCIndication_aal_aal1_clockRecovery (pctxt, &pvalue->clockRecovery); + if (stat != ASN_OK) return stat; + + /* encode errorCorrection */ + + stat = asn1PE_H245NewATMVCIndication_aal_aal1_errorCorrection (pctxt, &pvalue->errorCorrection); + if (stat != ASN_OK) return stat; + + /* encode structuredDataTransfer */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->structuredDataTransfer); + if (stat != ASN_OK) return stat; + + /* encode partiallyFilledCells */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->partiallyFilledCells); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_aal_aal5 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_aal_aal5 (OOCTXT* pctxt, H245NewATMVCIndication_aal_aal5* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode forwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->forwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode backwardMaximumSDUSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->backwardMaximumSDUSize, 0U, 65535U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_aal */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_aal (OOCTXT* pctxt, H245NewATMVCIndication_aal* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* aal1 */ + case 1: + stat = asn1PE_H245NewATMVCIndication_aal_aal1 (pctxt, pvalue->u.aal1); + if (stat != ASN_OK) return stat; + break; + + /* aal5 */ + case 2: + stat = asn1PE_H245NewATMVCIndication_aal_aal5 (pctxt, pvalue->u.aal5); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_multiplex */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_multiplex* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noMultiplex */ + case 1: + /* NULL */ + break; + + /* transportStream */ + case 2: + /* NULL */ + break; + + /* programStream */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_reverseParameters_multiplex */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters_multiplex (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters_multiplex* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* noMultiplex */ + case 1: + /* NULL */ + break; + + /* transportStream */ + case 2: + /* NULL */ + break; + + /* programStream */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication_reverseParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication_reverseParameters (OOCTXT* pctxt, H245NewATMVCIndication_reverseParameters* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToPCRClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToNetworkClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock); + if (stat != ASN_OK) return stat; + + /* encode multiplex */ + + stat = asn1PE_H245NewATMVCIndication_reverseParameters_multiplex (pctxt, &pvalue->multiplex); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NewATMVCIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245NewATMVCIndication (OOCTXT* pctxt, H245NewATMVCIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.reverseParametersPresent); + + encodeBit (pctxt, extbit); + + /* encode resourceID */ + + stat = encodeConsUnsigned (pctxt, pvalue->resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRate */ + + stat = encodeConsUnsigned (pctxt, pvalue->bitRate, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToPCRClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToPCRClock); + if (stat != ASN_OK) return stat; + + /* encode bitRateLockedToNetworkClock */ + + stat = encodeBit (pctxt, (ASN1BOOL)pvalue->bitRateLockedToNetworkClock); + if (stat != ASN_OK) return stat; + + /* encode aal */ + + stat = asn1PE_H245NewATMVCIndication_aal (pctxt, &pvalue->aal); + if (stat != ASN_OK) return stat; + + /* encode multiplex */ + + stat = asn1PE_H245NewATMVCIndication_multiplex (pctxt, &pvalue->multiplex); + if (stat != ASN_OK) return stat; + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.reverseParametersPresent); + /* encode extension elements */ + + if (pvalue->m.reverseParametersPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H245NewATMVCIndication_reverseParameters (&lctxt, &pvalue->reverseParameters); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_userInputSupportIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication_userInputSupportIndication (OOCTXT* pctxt, H245UserInputIndication_userInputSupportIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* basicString */ + case 2: + /* NULL */ + break; + + /* iA5String */ + case 3: + /* NULL */ + break; + + /* generalString */ + case 4: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_signal_rtp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication_signal_rtp (OOCTXT* pctxt, H245UserInputIndication_signal_rtp* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.timestampPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.expirationTimePresent); + + /* encode timestamp */ + + if (pvalue->m.timestampPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->timestamp, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode expirationTime */ + + if (pvalue->m.expirationTimePresent) { + stat = encodeConsUnsigned (pctxt, pvalue->expirationTime, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + } + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_signal */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet; + +EXTERN int asn1PE_H245UserInputIndication_signal (OOCTXT* pctxt, H245UserInputIndication_signal* pvalue) +{ + static Asn1SizeCnst signalType_lsize1 = { 0, 1, 1, 0 }; + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.rtpPayloadIndicationPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.durationPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPresent); + + /* encode signalType */ + + addSizeConstraint (pctxt, &signalType_lsize1); + + stat = encodeConstrainedStringEx (pctxt, pvalue->signalType, gs_MULTIMEDIA_SYSTEM_CONTROL_UserInputIndication_signal_signalType_CharSet, 8, 5, 7); + if (stat != ASN_OK) return stat; + + /* encode duration */ + + if (pvalue->m.durationPresent) { + stat = encodeConsUnsigned (pctxt, pvalue->duration, 1U, 65535U); + if (stat != ASN_OK) return stat; + + } + + /* encode rtp */ + + if (pvalue->m.rtpPresent) { + stat = asn1PE_H245UserInputIndication_signal_rtp (pctxt, &pvalue->rtp); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadIndicationPresent); + /* encode extension elements */ + + if (pvalue->m.rtpPayloadIndicationPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + /* NULL */ + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_signalUpdate_rtp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication_signalUpdate_rtp (OOCTXT* pctxt, H245UserInputIndication_signalUpdate_rtp* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_signalUpdate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication_signalUpdate (OOCTXT* pctxt, H245UserInputIndication_signalUpdate* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPresent); + + /* encode duration */ + + stat = encodeConsUnsigned (pctxt, pvalue->duration, 1U, 65535U); + if (stat != ASN_OK) return stat; + + /* encode rtp */ + + if (pvalue->m.rtpPresent) { + stat = asn1PE_H245UserInputIndication_signalUpdate_rtp (pctxt, &pvalue->rtp); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication_extendedAlphanumeric */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication_extendedAlphanumeric (OOCTXT* pctxt, H245UserInputIndication_extendedAlphanumeric* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.rtpPayloadIndicationPresent); + + /* encode alphanumeric */ + + stat = encodeVarWidthCharString (pctxt, pvalue->alphanumeric); + if (stat != ASN_OK) return stat; + + /* encode rtpPayloadIndication */ + + if (pvalue->m.rtpPayloadIndicationPresent) { + /* NULL */ + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* UserInputIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245UserInputIndication (OOCTXT* pctxt, H245UserInputIndication* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* alphanumeric */ + case 2: + stat = encodeVarWidthCharString (pctxt, pvalue->u.alphanumeric); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* userInputSupportIndication */ + case 3: + stat = asn1PE_H245UserInputIndication_userInputSupportIndication (&lctxt, pvalue->u.userInputSupportIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* signal */ + case 4: + stat = asn1PE_H245UserInputIndication_signal (&lctxt, pvalue->u.signal); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* signalUpdate */ + case 5: + stat = asn1PE_H245UserInputIndication_signalUpdate (&lctxt, pvalue->u.signalUpdate); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* extendedAlphanumeric */ + case 6: + stat = asn1PE_H245UserInputIndication_extendedAlphanumeric (&lctxt, pvalue->u.extendedAlphanumeric); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H2250MaximumSkewIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245H2250MaximumSkewIndication (OOCTXT* pctxt, H245H2250MaximumSkewIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode logicalChannelNumber1 */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber1); + if (stat != ASN_OK) return stat; + + /* encode logicalChannelNumber2 */ + + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->logicalChannelNumber2); + if (stat != ASN_OK) return stat; + + /* encode maximumSkew */ + + stat = encodeConsUnsigned (pctxt, pvalue->maximumSkew, 0U, 4095U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MCLocationIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MCLocationIndication (OOCTXT* pctxt, H245MCLocationIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode signalAddress */ + + stat = asn1PE_H245TransportAddress (pctxt, &pvalue->signalAddress); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalYouAreSeeingInSubPictureNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245TerminalYouAreSeeingInSubPictureNumber (OOCTXT* pctxt, H245TerminalYouAreSeeingInSubPictureNumber* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode terminalNumber */ + + stat = asn1PE_H245TerminalNumber (pctxt, pvalue->terminalNumber); + if (stat != ASN_OK) return stat; + + /* encode subPictureNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->subPictureNumber, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VideoIndicateCompose */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VideoIndicateCompose (OOCTXT* pctxt, H245VideoIndicateCompose* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode compositionNumber */ + + stat = encodeConsUnsigned (pctxt, pvalue->compositionNumber, 0U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245ConferenceIndication (OOCTXT* pctxt, H245ConferenceIndication* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 10); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 9); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* sbeNumber */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.sbeNumber, 0U, 9U); + if (stat != ASN_OK) return stat; + + break; + + /* terminalNumberAssign */ + case 2: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalNumberAssign); + if (stat != ASN_OK) return stat; + break; + + /* terminalJoinedConference */ + case 3: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalJoinedConference); + if (stat != ASN_OK) return stat; + break; + + /* terminalLeftConference */ + case 4: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalLeftConference); + if (stat != ASN_OK) return stat; + break; + + /* seenByAtLeastOneOther */ + case 5: + /* NULL */ + break; + + /* cancelSeenByAtLeastOneOther */ + case 6: + /* NULL */ + break; + + /* seenByAll */ + case 7: + /* NULL */ + break; + + /* cancelSeenByAll */ + case 8: + /* NULL */ + break; + + /* terminalYouAreSeeing */ + case 9: + stat = asn1PE_H245TerminalLabel (pctxt, pvalue->u.terminalYouAreSeeing); + if (stat != ASN_OK) return stat; + break; + + /* requestForFloor */ + case 10: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 11); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* withdrawChairToken */ + case 11: + /* NULL */ + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* floorRequested */ + case 12: + stat = asn1PE_H245TerminalLabel (&lctxt, pvalue->u.floorRequested); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* terminalYouAreSeeingInSubPictureNumber */ + case 13: + stat = asn1PE_H245TerminalYouAreSeeingInSubPictureNumber (&lctxt, pvalue->u.terminalYouAreSeeingInSubPictureNumber); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* videoIndicateCompose */ + case 14: + stat = asn1PE_H245VideoIndicateCompose (&lctxt, pvalue->u.videoIndicateCompose); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentification_productNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VendorIdentification_productNumber (OOCTXT* pctxt, H245VendorIdentification_productNumber* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentification_versionNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VendorIdentification_versionNumber (OOCTXT* pctxt, H245VendorIdentification_versionNumber* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentification */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245VendorIdentification (OOCTXT* pctxt, H245VendorIdentification* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.productNumberPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionNumberPresent); + + /* encode vendor */ + + stat = asn1PE_H245NonStandardIdentifier (pctxt, &pvalue->vendor); + if (stat != ASN_OK) return stat; + + /* encode productNumber */ + + if (pvalue->m.productNumberPresent) { + stat = asn1PE_H245VendorIdentification_productNumber (pctxt, &pvalue->productNumber); + if (stat != ASN_OK) return stat; + } + + /* encode versionNumber */ + + if (pvalue->m.versionNumberPresent) { + stat = asn1PE_H245VendorIdentification_versionNumber (pctxt, &pvalue->versionNumber); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FunctionNotSupported_cause */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FunctionNotSupported_cause (OOCTXT* pctxt, H245FunctionNotSupported_cause* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* syntaxError */ + case 1: + /* NULL */ + break; + + /* semanticError */ + case 2: + /* NULL */ + break; + + /* unknownFunction */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FunctionNotSupported */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FunctionNotSupported (OOCTXT* pctxt, H245FunctionNotSupported* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.returnedFunctionPresent); + + /* encode cause */ + + stat = asn1PE_H245FunctionNotSupported_cause (pctxt, &pvalue->cause); + if (stat != ASN_OK) return stat; + + /* encode returnedFunction */ + + if (pvalue->m.returnedFunctionPresent) { + stat = encodeOctetString (pctxt, pvalue->returnedFunction.numocts, pvalue->returnedFunction.data); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkIndication_crcDesired */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkIndication_crcDesired (OOCTXT* pctxt, H245MultilinkIndication_crcDesired* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkIndication_excessiveError */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkIndication_excessiveError (OOCTXT* pctxt, H245MultilinkIndication_excessiveError* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode connectionIdentifier */ + + stat = asn1PE_H245ConnectionIdentifier (pctxt, &pvalue->connectionIdentifier); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultilinkIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultilinkIndication (OOCTXT* pctxt, H245MultilinkIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 3); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* crcDesired */ + case 2: + stat = asn1PE_H245MultilinkIndication_crcDesired (pctxt, pvalue->u.crcDesired); + if (stat != ASN_OK) return stat; + break; + + /* excessiveError */ + case 3: + stat = asn1PE_H245MultilinkIndication_excessiveError (pctxt, pvalue->u.excessiveError); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* LogicalChannelRateRelease */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245LogicalChannelRateRelease (OOCTXT* pctxt, H245LogicalChannelRateRelease* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlIndication_scope */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlIndication_scope (OOCTXT* pctxt, H245FlowControlIndication_scope* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* logicalChannelNumber */ + case 1: + stat = asn1PE_H245LogicalChannelNumber (pctxt, pvalue->u.logicalChannelNumber); + if (stat != ASN_OK) return stat; + break; + + /* resourceID */ + case 2: + stat = encodeConsUnsigned (pctxt, pvalue->u.resourceID, 0U, 65535U); + if (stat != ASN_OK) return stat; + + break; + + /* wholeMultiplex */ + case 3: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlIndication_restriction */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlIndication_restriction (OOCTXT* pctxt, H245FlowControlIndication_restriction* pvalue) +{ + int stat = ASN_OK; + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* maximumBitRate */ + case 1: + stat = encodeConsUnsigned (pctxt, pvalue->u.maximumBitRate, 0U, 16777215U); + if (stat != ASN_OK) return stat; + + break; + + /* noRestriction */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FlowControlIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245FlowControlIndication (OOCTXT* pctxt, H245FlowControlIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode scope */ + + stat = asn1PE_H245FlowControlIndication_scope (pctxt, &pvalue->scope); + if (stat != ASN_OK) return stat; + + /* encode restriction */ + + stat = asn1PE_H245FlowControlIndication_restriction (pctxt, &pvalue->restriction); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* MobileMultilinkReconfigurationIndication */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MobileMultilinkReconfigurationIndication (OOCTXT* pctxt, H245MobileMultilinkReconfigurationIndication* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode sampleSize */ + + stat = encodeConsUnsigned (pctxt, pvalue->sampleSize, 1U, 255U); + if (stat != ASN_OK) return stat; + + /* encode samplesPerFrame */ + + stat = encodeConsUnsigned (pctxt, pvalue->samplesPerFrame, 1U, 255U); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* IndicationMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245IndicationMessage (OOCTXT* pctxt, H245IndicationMessage* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 14); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 13); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* nonStandard */ + case 1: + stat = asn1PE_H245NonStandardMessage (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + /* functionNotUnderstood */ + case 2: + stat = asn1PE_H245FunctionNotUnderstood (pctxt, pvalue->u.functionNotUnderstood); + if (stat != ASN_OK) return stat; + break; + + /* masterSlaveDeterminationRelease */ + case 3: + stat = asn1PE_H245MasterSlaveDeterminationRelease (pctxt, pvalue->u.masterSlaveDeterminationRelease); + if (stat != ASN_OK) return stat; + break; + + /* terminalCapabilitySetRelease */ + case 4: + stat = asn1PE_H245TerminalCapabilitySetRelease (pctxt, pvalue->u.terminalCapabilitySetRelease); + if (stat != ASN_OK) return stat; + break; + + /* openLogicalChannelConfirm */ + case 5: + stat = asn1PE_H245OpenLogicalChannelConfirm (pctxt, pvalue->u.openLogicalChannelConfirm); + if (stat != ASN_OK) return stat; + break; + + /* requestChannelCloseRelease */ + case 6: + stat = asn1PE_H245RequestChannelCloseRelease (pctxt, pvalue->u.requestChannelCloseRelease); + if (stat != ASN_OK) return stat; + break; + + /* multiplexEntrySendRelease */ + case 7: + stat = asn1PE_H245MultiplexEntrySendRelease (pctxt, pvalue->u.multiplexEntrySendRelease); + if (stat != ASN_OK) return stat; + break; + + /* requestMultiplexEntryRelease */ + case 8: + stat = asn1PE_H245RequestMultiplexEntryRelease (pctxt, pvalue->u.requestMultiplexEntryRelease); + if (stat != ASN_OK) return stat; + break; + + /* requestModeRelease */ + case 9: + stat = asn1PE_H245RequestModeRelease (pctxt, pvalue->u.requestModeRelease); + if (stat != ASN_OK) return stat; + break; + + /* miscellaneousIndication */ + case 10: + stat = asn1PE_H245MiscellaneousIndication (pctxt, pvalue->u.miscellaneousIndication); + if (stat != ASN_OK) return stat; + break; + + /* jitterIndication */ + case 11: + stat = asn1PE_H245JitterIndication (pctxt, pvalue->u.jitterIndication); + if (stat != ASN_OK) return stat; + break; + + /* h223SkewIndication */ + case 12: + stat = asn1PE_H245H223SkewIndication (pctxt, pvalue->u.h223SkewIndication); + if (stat != ASN_OK) return stat; + break; + + /* newATMVCIndication */ + case 13: + stat = asn1PE_H245NewATMVCIndication (pctxt, pvalue->u.newATMVCIndication); + if (stat != ASN_OK) return stat; + break; + + /* userInput */ + case 14: + stat = asn1PE_H245UserInputIndication (pctxt, pvalue->u.userInput); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 15); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* h2250MaximumSkewIndication */ + case 15: + stat = asn1PE_H245H2250MaximumSkewIndication (&lctxt, pvalue->u.h2250MaximumSkewIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* mcLocationIndication */ + case 16: + stat = asn1PE_H245MCLocationIndication (&lctxt, pvalue->u.mcLocationIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* conferenceIndication */ + case 17: + stat = asn1PE_H245ConferenceIndication (&lctxt, pvalue->u.conferenceIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* vendorIdentification */ + case 18: + stat = asn1PE_H245VendorIdentification (&lctxt, pvalue->u.vendorIdentification); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* functionNotSupported */ + case 19: + stat = asn1PE_H245FunctionNotSupported (&lctxt, pvalue->u.functionNotSupported); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* multilinkIndication */ + case 20: + stat = asn1PE_H245MultilinkIndication (&lctxt, pvalue->u.multilinkIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* logicalChannelRateRelease */ + case 21: + stat = asn1PE_H245LogicalChannelRateRelease (&lctxt, pvalue->u.logicalChannelRateRelease); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* flowControlIndication */ + case 22: + stat = asn1PE_H245FlowControlIndication (&lctxt, pvalue->u.flowControlIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + /* mobileMultilinkReconfigurationIndication */ + case 23: + stat = asn1PE_H245MobileMultilinkReconfigurationIndication (&lctxt, pvalue->u.mobileMultilinkReconfigurationIndication); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MultimediaSystemControlMessage */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H245MultimediaSystemControlMessage (OOCTXT* pctxt, H245MultimediaSystemControlMessage* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* request */ + case 1: + stat = asn1PE_H245RequestMessage (pctxt, pvalue->u.request); + if (stat != ASN_OK) return stat; + break; + + /* response */ + case 2: + stat = asn1PE_H245ResponseMessage (pctxt, pvalue->u.response); + if (stat != ASN_OK) return stat; + break; + + /* command */ + case 3: + stat = asn1PE_H245CommandMessage (pctxt, pvalue->u.command); + if (stat != ASN_OK) return stat; + break; + + /* indication */ + case 4: + stat = asn1PE_H245IndicationMessage (pctxt, pvalue->u.indication); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + |