aboutsummaryrefslogtreecommitdiffstats
path: root/addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
diff options
context:
space:
mode:
Diffstat (limited to 'addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c')
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c26599
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);
+}
+