| /* ------------------------------------------------------------------ |
| * Copyright (C) 1998-2009 PacketVideo |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| * express or implied. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * ------------------------------------------------------------------- |
| */ |
| // ============================================================(Auto)= |
| // FILE: h245_decoder.c |
| // |
| // DESC: PER Decode routines for H.245 |
| // ------------------------------------------------------------------- |
| // Copyright (c) 1998- 2000, PacketVideo Corporation. |
| // All Rights Reserved. |
| // =================================================================== |
| |
| #include "oscl_base.h" |
| #include "oscl_mem.h" |
| #include "per_headers.h" |
| #include "h245def.h" |
| #include "h245_decoder.h" |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for MultimediaSystemControlMessage (CHOICE) */ |
| /* <=======================================================> */ |
| void Decode_MultimediaSystemControlMessage(PS_MultimediaSystemControlMessage x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->request = (PS_RequestMessage) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMessage)); |
| Decode_RequestMessage(x->request, stream); |
| break; |
| case 1: |
| x->response = (PS_ResponseMessage) OSCL_DEFAULT_MALLOC(sizeof(S_ResponseMessage)); |
| Decode_ResponseMessage(x->response, stream); |
| break; |
| case 2: |
| x->command = (PS_CommandMessage) OSCL_DEFAULT_MALLOC(sizeof(S_CommandMessage)); |
| Decode_CommandMessage(x->command, stream); |
| break; |
| case 3: |
| x->indication = (PS_IndicationMessage) OSCL_DEFAULT_MALLOC(sizeof(S_IndicationMessage)); |
| Decode_IndicationMessage(x->indication, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MultimediaSystemControlMessage: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for RequestMessage (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_RequestMessage(PS_RequestMessage x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(11, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->masterSlaveDetermination = (PS_MasterSlaveDetermination) OSCL_DEFAULT_MALLOC(sizeof(S_MasterSlaveDetermination)); |
| Decode_MasterSlaveDetermination(x->masterSlaveDetermination, stream); |
| break; |
| case 2: |
| x->terminalCapabilitySet = (PS_TerminalCapabilitySet) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalCapabilitySet)); |
| Decode_TerminalCapabilitySet(x->terminalCapabilitySet, stream); |
| break; |
| case 3: |
| x->openLogicalChannel = (PS_OpenLogicalChannel) OSCL_DEFAULT_MALLOC(sizeof(S_OpenLogicalChannel)); |
| Decode_OpenLogicalChannel(x->openLogicalChannel, stream); |
| break; |
| case 4: |
| x->closeLogicalChannel = (PS_CloseLogicalChannel) OSCL_DEFAULT_MALLOC(sizeof(S_CloseLogicalChannel)); |
| Decode_CloseLogicalChannel(x->closeLogicalChannel, stream); |
| break; |
| case 5: |
| x->requestChannelClose = (PS_RequestChannelClose) OSCL_DEFAULT_MALLOC(sizeof(S_RequestChannelClose)); |
| Decode_RequestChannelClose(x->requestChannelClose, stream); |
| break; |
| case 6: |
| x->multiplexEntrySend = (PS_MultiplexEntrySend) OSCL_DEFAULT_MALLOC(sizeof(S_MultiplexEntrySend)); |
| Decode_MultiplexEntrySend(x->multiplexEntrySend, stream); |
| break; |
| case 7: |
| x->requestMultiplexEntry = (PS_RequestMultiplexEntry) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMultiplexEntry)); |
| Decode_RequestMultiplexEntry(x->requestMultiplexEntry, stream); |
| break; |
| case 8: |
| x->requestMode = (PS_RequestMode) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMode)); |
| Decode_RequestMode(x->requestMode, stream); |
| break; |
| case 9: |
| x->roundTripDelayRequest = (PS_RoundTripDelayRequest) OSCL_DEFAULT_MALLOC(sizeof(S_RoundTripDelayRequest)); |
| Decode_RoundTripDelayRequest(x->roundTripDelayRequest, stream); |
| break; |
| case 10: |
| x->maintenanceLoopRequest = (PS_MaintenanceLoopRequest) OSCL_DEFAULT_MALLOC(sizeof(S_MaintenanceLoopRequest)); |
| Decode_MaintenanceLoopRequest(x->maintenanceLoopRequest, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 11: |
| GetLengthDet(stream); |
| x->communicationModeRequest = (PS_CommunicationModeRequest) OSCL_DEFAULT_MALLOC(sizeof(S_CommunicationModeRequest)); |
| Decode_CommunicationModeRequest(x->communicationModeRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->conferenceRequest = (PS_ConferenceRequest) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceRequest)); |
| Decode_ConferenceRequest(x->conferenceRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->multilinkRequest = (PS_MultilinkRequest) OSCL_DEFAULT_MALLOC(sizeof(S_MultilinkRequest)); |
| Decode_MultilinkRequest(x->multilinkRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 14: |
| GetLengthDet(stream); |
| x->logicalChannelRateRequest = (PS_LogicalChannelRateRequest) OSCL_DEFAULT_MALLOC(sizeof(S_LogicalChannelRateRequest)); |
| Decode_LogicalChannelRateRequest(x->logicalChannelRateRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_RequestMessage: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for ResponseMessage (CHOICE) */ |
| /* <========================================> */ |
| void Decode_ResponseMessage(PS_ResponseMessage x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(19, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->masterSlaveDeterminationAck = (PS_MasterSlaveDeterminationAck) OSCL_DEFAULT_MALLOC(sizeof(S_MasterSlaveDeterminationAck)); |
| Decode_MasterSlaveDeterminationAck(x->masterSlaveDeterminationAck, stream); |
| break; |
| case 2: |
| x->masterSlaveDeterminationReject = (PS_MasterSlaveDeterminationReject) OSCL_DEFAULT_MALLOC(sizeof(S_MasterSlaveDeterminationReject)); |
| Decode_MasterSlaveDeterminationReject(x->masterSlaveDeterminationReject, stream); |
| break; |
| case 3: |
| x->terminalCapabilitySetAck = (PS_TerminalCapabilitySetAck) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalCapabilitySetAck)); |
| Decode_TerminalCapabilitySetAck(x->terminalCapabilitySetAck, stream); |
| break; |
| case 4: |
| x->terminalCapabilitySetReject = (PS_TerminalCapabilitySetReject) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalCapabilitySetReject)); |
| Decode_TerminalCapabilitySetReject(x->terminalCapabilitySetReject, stream); |
| break; |
| case 5: |
| x->openLogicalChannelAck = (PS_OpenLogicalChannelAck) OSCL_DEFAULT_MALLOC(sizeof(S_OpenLogicalChannelAck)); |
| Decode_OpenLogicalChannelAck(x->openLogicalChannelAck, stream); |
| break; |
| case 6: |
| x->openLogicalChannelReject = (PS_OpenLogicalChannelReject) OSCL_DEFAULT_MALLOC(sizeof(S_OpenLogicalChannelReject)); |
| Decode_OpenLogicalChannelReject(x->openLogicalChannelReject, stream); |
| break; |
| case 7: |
| x->closeLogicalChannelAck = (PS_CloseLogicalChannelAck) OSCL_DEFAULT_MALLOC(sizeof(S_CloseLogicalChannelAck)); |
| Decode_CloseLogicalChannelAck(x->closeLogicalChannelAck, stream); |
| break; |
| case 8: |
| x->requestChannelCloseAck = (PS_RequestChannelCloseAck) OSCL_DEFAULT_MALLOC(sizeof(S_RequestChannelCloseAck)); |
| Decode_RequestChannelCloseAck(x->requestChannelCloseAck, stream); |
| break; |
| case 9: |
| x->requestChannelCloseReject = (PS_RequestChannelCloseReject) OSCL_DEFAULT_MALLOC(sizeof(S_RequestChannelCloseReject)); |
| Decode_RequestChannelCloseReject(x->requestChannelCloseReject, stream); |
| break; |
| case 10: |
| x->multiplexEntrySendAck = (PS_MultiplexEntrySendAck) OSCL_DEFAULT_MALLOC(sizeof(S_MultiplexEntrySendAck)); |
| Decode_MultiplexEntrySendAck(x->multiplexEntrySendAck, stream); |
| break; |
| case 11: |
| x->multiplexEntrySendReject = (PS_MultiplexEntrySendReject) OSCL_DEFAULT_MALLOC(sizeof(S_MultiplexEntrySendReject)); |
| Decode_MultiplexEntrySendReject(x->multiplexEntrySendReject, stream); |
| break; |
| case 12: |
| x->requestMultiplexEntryAck = (PS_RequestMultiplexEntryAck) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMultiplexEntryAck)); |
| Decode_RequestMultiplexEntryAck(x->requestMultiplexEntryAck, stream); |
| break; |
| case 13: |
| x->requestMultiplexEntryReject = (PS_RequestMultiplexEntryReject) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMultiplexEntryReject)); |
| Decode_RequestMultiplexEntryReject(x->requestMultiplexEntryReject, stream); |
| break; |
| case 14: |
| x->requestModeAck = (PS_RequestModeAck) OSCL_DEFAULT_MALLOC(sizeof(S_RequestModeAck)); |
| Decode_RequestModeAck(x->requestModeAck, stream); |
| break; |
| case 15: |
| x->requestModeReject = (PS_RequestModeReject) OSCL_DEFAULT_MALLOC(sizeof(S_RequestModeReject)); |
| Decode_RequestModeReject(x->requestModeReject, stream); |
| break; |
| case 16: |
| x->roundTripDelayResponse = (PS_RoundTripDelayResponse) OSCL_DEFAULT_MALLOC(sizeof(S_RoundTripDelayResponse)); |
| Decode_RoundTripDelayResponse(x->roundTripDelayResponse, stream); |
| break; |
| case 17: |
| x->maintenanceLoopAck = (PS_MaintenanceLoopAck) OSCL_DEFAULT_MALLOC(sizeof(S_MaintenanceLoopAck)); |
| Decode_MaintenanceLoopAck(x->maintenanceLoopAck, stream); |
| break; |
| case 18: |
| x->maintenanceLoopReject = (PS_MaintenanceLoopReject) OSCL_DEFAULT_MALLOC(sizeof(S_MaintenanceLoopReject)); |
| Decode_MaintenanceLoopReject(x->maintenanceLoopReject, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 19: |
| GetLengthDet(stream); |
| x->communicationModeResponse = (PS_CommunicationModeResponse) OSCL_DEFAULT_MALLOC(sizeof(S_CommunicationModeResponse)); |
| Decode_CommunicationModeResponse(x->communicationModeResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 20: |
| GetLengthDet(stream); |
| x->conferenceResponse = (PS_ConferenceResponse) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceResponse)); |
| Decode_ConferenceResponse(x->conferenceResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 21: |
| GetLengthDet(stream); |
| x->multilinkResponse = (PS_MultilinkResponse) OSCL_DEFAULT_MALLOC(sizeof(S_MultilinkResponse)); |
| Decode_MultilinkResponse(x->multilinkResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 22: |
| GetLengthDet(stream); |
| x->logicalChannelRateAcknowledge = (PS_LogicalChannelRateAcknowledge) OSCL_DEFAULT_MALLOC(sizeof(S_LogicalChannelRateAcknowledge)); |
| Decode_LogicalChannelRateAcknowledge(x->logicalChannelRateAcknowledge, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 23: |
| GetLengthDet(stream); |
| x->logicalChannelRateReject = (PS_LogicalChannelRateReject) OSCL_DEFAULT_MALLOC(sizeof(S_LogicalChannelRateReject)); |
| Decode_LogicalChannelRateReject(x->logicalChannelRateReject, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ResponseMessage: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for CommandMessage (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_CommandMessage(PS_CommandMessage x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(7, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->maintenanceLoopOffCommand = (PS_MaintenanceLoopOffCommand) OSCL_DEFAULT_MALLOC(sizeof(S_MaintenanceLoopOffCommand)); |
| Decode_MaintenanceLoopOffCommand(x->maintenanceLoopOffCommand, stream); |
| break; |
| case 2: |
| x->sendTerminalCapabilitySet = (PS_SendTerminalCapabilitySet) OSCL_DEFAULT_MALLOC(sizeof(S_SendTerminalCapabilitySet)); |
| Decode_SendTerminalCapabilitySet(x->sendTerminalCapabilitySet, stream); |
| break; |
| case 3: |
| x->encryptionCommand = (PS_EncryptionCommand) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionCommand)); |
| Decode_EncryptionCommand(x->encryptionCommand, stream); |
| break; |
| case 4: |
| x->flowControlCommand = (PS_FlowControlCommand) OSCL_DEFAULT_MALLOC(sizeof(S_FlowControlCommand)); |
| Decode_FlowControlCommand(x->flowControlCommand, stream); |
| break; |
| case 5: |
| x->endSessionCommand = (PS_EndSessionCommand) OSCL_DEFAULT_MALLOC(sizeof(S_EndSessionCommand)); |
| Decode_EndSessionCommand(x->endSessionCommand, stream); |
| break; |
| case 6: |
| x->miscellaneousCommand = (PS_MiscellaneousCommand) OSCL_DEFAULT_MALLOC(sizeof(S_MiscellaneousCommand)); |
| Decode_MiscellaneousCommand(x->miscellaneousCommand, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 7: |
| GetLengthDet(stream); |
| x->communicationModeCommand = (PS_CommunicationModeCommand) OSCL_DEFAULT_MALLOC(sizeof(S_CommunicationModeCommand)); |
| Decode_CommunicationModeCommand(x->communicationModeCommand, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 8: |
| GetLengthDet(stream); |
| x->conferenceCommand = (PS_ConferenceCommand) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceCommand)); |
| Decode_ConferenceCommand(x->conferenceCommand, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 9: |
| GetLengthDet(stream); |
| x->h223MultiplexReconfiguration = (PS_H223MultiplexReconfiguration) OSCL_DEFAULT_MALLOC(sizeof(S_H223MultiplexReconfiguration)); |
| Decode_H223MultiplexReconfiguration(x->h223MultiplexReconfiguration, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 10: |
| GetLengthDet(stream); |
| x->newATMVCCommand = (PS_NewATMVCCommand) OSCL_DEFAULT_MALLOC(sizeof(S_NewATMVCCommand)); |
| Decode_NewATMVCCommand(x->newATMVCCommand, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_CommandMessage: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for IndicationMessage (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_IndicationMessage(PS_IndicationMessage x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(14, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->functionNotUnderstood = (PS_FunctionNotUnderstood) OSCL_DEFAULT_MALLOC(sizeof(S_FunctionNotUnderstood)); |
| Decode_FunctionNotUnderstood(x->functionNotUnderstood, stream); |
| break; |
| case 2: |
| x->masterSlaveDeterminationRelease = (PS_MasterSlaveDeterminationRelease) OSCL_DEFAULT_MALLOC(sizeof(S_MasterSlaveDeterminationRelease)); |
| Decode_MasterSlaveDeterminationRelease(x->masterSlaveDeterminationRelease, stream); |
| break; |
| case 3: |
| x->terminalCapabilitySetRelease = (PS_TerminalCapabilitySetRelease) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalCapabilitySetRelease)); |
| Decode_TerminalCapabilitySetRelease(x->terminalCapabilitySetRelease, stream); |
| break; |
| case 4: |
| x->openLogicalChannelConfirm = (PS_OpenLogicalChannelConfirm) OSCL_DEFAULT_MALLOC(sizeof(S_OpenLogicalChannelConfirm)); |
| Decode_OpenLogicalChannelConfirm(x->openLogicalChannelConfirm, stream); |
| break; |
| case 5: |
| x->requestChannelCloseRelease = (PS_RequestChannelCloseRelease) OSCL_DEFAULT_MALLOC(sizeof(S_RequestChannelCloseRelease)); |
| Decode_RequestChannelCloseRelease(x->requestChannelCloseRelease, stream); |
| break; |
| case 6: |
| x->multiplexEntrySendRelease = (PS_MultiplexEntrySendRelease) OSCL_DEFAULT_MALLOC(sizeof(S_MultiplexEntrySendRelease)); |
| Decode_MultiplexEntrySendRelease(x->multiplexEntrySendRelease, stream); |
| break; |
| case 7: |
| x->requestMultiplexEntryRelease = (PS_RequestMultiplexEntryRelease) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMultiplexEntryRelease)); |
| Decode_RequestMultiplexEntryRelease(x->requestMultiplexEntryRelease, stream); |
| break; |
| case 8: |
| x->requestModeRelease = (PS_RequestModeRelease) OSCL_DEFAULT_MALLOC(sizeof(S_RequestModeRelease)); |
| Decode_RequestModeRelease(x->requestModeRelease, stream); |
| break; |
| case 9: |
| x->miscellaneousIndication = (PS_MiscellaneousIndication) OSCL_DEFAULT_MALLOC(sizeof(S_MiscellaneousIndication)); |
| Decode_MiscellaneousIndication(x->miscellaneousIndication, stream); |
| break; |
| case 10: |
| x->jitterIndication = (PS_JitterIndication) OSCL_DEFAULT_MALLOC(sizeof(S_JitterIndication)); |
| Decode_JitterIndication(x->jitterIndication, stream); |
| break; |
| case 11: |
| x->h223SkewIndication = (PS_H223SkewIndication) OSCL_DEFAULT_MALLOC(sizeof(S_H223SkewIndication)); |
| Decode_H223SkewIndication(x->h223SkewIndication, stream); |
| break; |
| case 12: |
| x->newATMVCIndication = (PS_NewATMVCIndication) OSCL_DEFAULT_MALLOC(sizeof(S_NewATMVCIndication)); |
| Decode_NewATMVCIndication(x->newATMVCIndication, stream); |
| break; |
| case 13: |
| x->userInput = (PS_UserInputIndication) OSCL_DEFAULT_MALLOC(sizeof(S_UserInputIndication)); |
| Decode_UserInputIndication(x->userInput, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 14: |
| GetLengthDet(stream); |
| x->h2250MaximumSkewIndication = (PS_H2250MaximumSkewIndication) OSCL_DEFAULT_MALLOC(sizeof(S_H2250MaximumSkewIndication)); |
| Decode_H2250MaximumSkewIndication(x->h2250MaximumSkewIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->mcLocationIndication = (PS_MCLocationIndication) OSCL_DEFAULT_MALLOC(sizeof(S_MCLocationIndication)); |
| Decode_MCLocationIndication(x->mcLocationIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 16: |
| GetLengthDet(stream); |
| x->conferenceIndication = (PS_ConferenceIndication) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceIndication)); |
| Decode_ConferenceIndication(x->conferenceIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 17: |
| GetLengthDet(stream); |
| x->vendorIdentification = (PS_VendorIdentification) OSCL_DEFAULT_MALLOC(sizeof(S_VendorIdentification)); |
| Decode_VendorIdentification(x->vendorIdentification, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 18: |
| GetLengthDet(stream); |
| x->functionNotSupported = (PS_FunctionNotSupported) OSCL_DEFAULT_MALLOC(sizeof(S_FunctionNotSupported)); |
| Decode_FunctionNotSupported(x->functionNotSupported, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 19: |
| GetLengthDet(stream); |
| x->multilinkIndication = (PS_MultilinkIndication) OSCL_DEFAULT_MALLOC(sizeof(S_MultilinkIndication)); |
| Decode_MultilinkIndication(x->multilinkIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 20: |
| GetLengthDet(stream); |
| x->logicalChannelRateRelease = (PS_LogicalChannelRateRelease) OSCL_DEFAULT_MALLOC(sizeof(S_LogicalChannelRateRelease)); |
| Decode_LogicalChannelRateRelease(x->logicalChannelRateRelease, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 21: |
| GetLengthDet(stream); |
| x->flowControlIndication = (PS_FlowControlIndication) OSCL_DEFAULT_MALLOC(sizeof(S_FlowControlIndication)); |
| Decode_FlowControlIndication(x->flowControlIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_IndicationMessage: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for GenericInformation (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_GenericInformation(PS_GenericInformation x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_subMessageIdentifier = GetBoolean(stream); |
| x->option_of_messageContent = GetBoolean(stream); |
| Decode_CapabilityIdentifier(&x->messageIdentifier, stream); |
| if (x->option_of_subMessageIdentifier) |
| { |
| x->subMessageIdentifier = (uint8)GetInteger(0, 127, stream); |
| } |
| if (x->option_of_messageContent) |
| { |
| x->size_of_messageContent = (uint16)GetLengthDet(stream); |
| x->messageContent = (PS_GenericParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_messageContent * sizeof(S_GenericParameter)); |
| for (i = 0; i < x->size_of_messageContent; ++i) |
| { |
| Decode_GenericParameter(x->messageContent + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessageAndLeave("Decode_GenericInformation: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for NonStandardMessage (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_NonStandardMessage(PS_NonStandardMessage x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_NonStandardParameter(&x->nonStandardData, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_NonStandardMessage: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for NonStandardParameter (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_NonStandardParameter(PS_NonStandardParameter x, PS_InStream stream) |
| { |
| Decode_NonStandardIdentifier(&x->nonStandardIdentifier, stream); |
| GetOctetString(1, 0, 0, &x->data, stream); |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for NonStandardIdentifier (CHOICE) */ |
| /* <==============================================> */ |
| void Decode_NonStandardIdentifier(PS_NonStandardIdentifier x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->object = (PS_OBJECTIDENT) OSCL_DEFAULT_MALLOC(sizeof(S_OBJECTIDENT)); |
| GetObjectID(x->object, stream); |
| break; |
| case 1: |
| x->h221NonStandard = (PS_H221NonStandard) OSCL_DEFAULT_MALLOC(sizeof(S_H221NonStandard)); |
| Decode_H221NonStandard(x->h221NonStandard, stream); |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_NonStandardIdentifier: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for H221NonStandard (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_H221NonStandard(PS_H221NonStandard x, PS_InStream stream) |
| { |
| x->t35CountryCode = (uint8) GetInteger(0, 255, stream); |
| x->t35Extension = (uint8) GetInteger(0, 255, stream); |
| x->manufacturerCode = (uint16) GetInteger(0, 65535, stream); |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for MasterSlaveDetermination (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_MasterSlaveDetermination(PS_MasterSlaveDetermination x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->terminalType = (uint8) GetInteger(0, 255, stream); |
| x->statusDeterminationNumber = GetInteger(0, 16777215, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MasterSlaveDetermination: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for MasterSlaveDeterminationAck (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_MasterSlaveDeterminationAck(PS_MasterSlaveDeterminationAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Decision(&x->decision, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MasterSlaveDeterminationAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for Decision (CHOICE) */ |
| /* <=================================> */ |
| void Decode_Decision(PS_Decision x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (master is NULL) */ |
| break; |
| case 1: |
| /* (slave is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Decision: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=========================================================> */ |
| /* PER-Decoder for MasterSlaveDeterminationReject (SEQUENCE) */ |
| /* <=========================================================> */ |
| void Decode_MasterSlaveDeterminationReject(PS_MasterSlaveDeterminationReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_MsdRejectCause(&x->msdRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MasterSlaveDeterminationReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for MsdRejectCause (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_MsdRejectCause(PS_MsdRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (identicalNumbers is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MsdRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================================> */ |
| /* PER-Decoder for MasterSlaveDeterminationRelease (SEQUENCE) */ |
| /* <==========================================================> */ |
| void Decode_MasterSlaveDeterminationRelease(PS_MasterSlaveDeterminationRelease x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MasterSlaveDeterminationRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for TerminalCapabilitySet (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_TerminalCapabilitySet(PS_TerminalCapabilitySet x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_multiplexCapability = GetBoolean(stream); |
| x->option_of_capabilityTable = GetBoolean(stream); |
| x->option_of_capabilityDescriptors = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| GetObjectID(&x->protocolIdentifier, stream); |
| if (x->option_of_multiplexCapability) |
| { |
| Decode_MultiplexCapability(&x->multiplexCapability, stream); |
| } |
| if (x->option_of_capabilityTable) |
| { |
| x->size_of_capabilityTable = (uint16) GetInteger(1, 256, stream); |
| x->capabilityTable = (PS_CapabilityTableEntry) |
| OSCL_DEFAULT_MALLOC(x->size_of_capabilityTable * sizeof(S_CapabilityTableEntry)); |
| for (i = 0; i < x->size_of_capabilityTable; ++i) |
| { |
| Decode_CapabilityTableEntry(x->capabilityTable + i, stream); |
| } |
| } |
| if (x->option_of_capabilityDescriptors) |
| { |
| x->size_of_capabilityDescriptors = (uint16) GetInteger(1, 256, stream); |
| x->capabilityDescriptors = (PS_CapabilityDescriptor) |
| OSCL_DEFAULT_MALLOC(x->size_of_capabilityDescriptors * sizeof(S_CapabilityDescriptor)); |
| for (i = 0; i < x->size_of_capabilityDescriptors; ++i) |
| { |
| Decode_CapabilityDescriptor(x->capabilityDescriptors + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_genericInformation = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_genericInformation = SigMapValue(0, map); |
| if (x->option_of_genericInformation) |
| { |
| ExtensionPrep(map, stream); |
| x->size_of_genericInformation = (uint16)GetLengthDet(stream); |
| x->genericInformation = (PS_GenericInformation) |
| OSCL_DEFAULT_MALLOC(x->size_of_genericInformation * sizeof(S_GenericInformation)); |
| for (i = 0; i < x->size_of_genericInformation; ++i) |
| { |
| Decode_GenericInformation(x->genericInformation + i, stream); |
| } |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalCapabilitySet: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for CapabilityTableEntry (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_CapabilityTableEntry(PS_CapabilityTableEntry x, PS_InStream stream) |
| { |
| x->option_of_capability = GetBoolean(stream); |
| x->capabilityTableEntryNumber = (uint16) GetInteger(1, 65535, stream); |
| if (x->option_of_capability) |
| { |
| Decode_Capability(&x->capability, stream); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for CapabilityDescriptor (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_CapabilityDescriptor(PS_CapabilityDescriptor x, PS_InStream stream) |
| { |
| uint16 i; |
| x->option_of_simultaneousCapabilities = GetBoolean(stream); |
| x->capabilityDescriptorNumber = (uint8) GetInteger(0, 255, stream); |
| if (x->option_of_simultaneousCapabilities) |
| { |
| x->size_of_simultaneousCapabilities = (uint16) GetInteger(1, 256, stream); |
| x->simultaneousCapabilities = (PS_AlternativeCapabilitySet) |
| OSCL_DEFAULT_MALLOC(x->size_of_simultaneousCapabilities * sizeof(S_AlternativeCapabilitySet)); |
| for (i = 0; i < x->size_of_simultaneousCapabilities; ++i) |
| { |
| Decode_AlternativeCapabilitySet(x->simultaneousCapabilities + i, stream); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for AlternativeCapabilitySet (SEQUENCE-OF) */ |
| /* <======================================================> */ |
| void Decode_AlternativeCapabilitySet(PS_AlternativeCapabilitySet x, PS_InStream stream) |
| { |
| uint16 i; |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->item = (uint32*) OSCL_DEFAULT_MALLOC(x->size * sizeof(uint32)); |
| for (i = 0; i < x->size; ++i) |
| { |
| x->item[i] = GetInteger(1, 65535, stream); |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for TerminalCapabilitySetAck (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_TerminalCapabilitySetAck(PS_TerminalCapabilitySetAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalCapabilitySetAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for TerminalCapabilitySetReject (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_TerminalCapabilitySetReject(PS_TerminalCapabilitySetReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| Decode_TcsRejectCause(&x->tcsRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalCapabilitySetReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for TcsRejectCause (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_TcsRejectCause(PS_TcsRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecified is NULL) */ |
| break; |
| case 1: |
| /* (undefinedTableEntryUsed is NULL) */ |
| break; |
| case 2: |
| /* (descriptorCapacityExceeded is NULL) */ |
| break; |
| case 3: |
| x->tableEntryCapacityExceeded = (PS_TableEntryCapacityExceeded) OSCL_DEFAULT_MALLOC(sizeof(S_TableEntryCapacityExceeded)); |
| Decode_TableEntryCapacityExceeded(x->tableEntryCapacityExceeded, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_TcsRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for TableEntryCapacityExceeded (CHOICE) */ |
| /* <===================================================> */ |
| void Decode_TableEntryCapacityExceeded(PS_TableEntryCapacityExceeded x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->highestEntryNumberProcessed = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| /* (noneProcessed is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_TableEntryCapacityExceeded: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for TerminalCapabilitySetRelease (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_TerminalCapabilitySetRelease(PS_TerminalCapabilitySetRelease x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalCapabilitySetRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for Capability (CHOICE) */ |
| /* <===================================> */ |
| void Decode_Capability(PS_Capability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(12, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->receiveVideoCapability = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->receiveVideoCapability, stream); |
| break; |
| case 2: |
| x->transmitVideoCapability = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->transmitVideoCapability, stream); |
| break; |
| case 3: |
| x->receiveAndTransmitVideoCapability = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->receiveAndTransmitVideoCapability, stream); |
| break; |
| case 4: |
| x->receiveAudioCapability = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->receiveAudioCapability, stream); |
| break; |
| case 5: |
| x->transmitAudioCapability = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->transmitAudioCapability, stream); |
| break; |
| case 6: |
| x->receiveAndTransmitAudioCapability = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->receiveAndTransmitAudioCapability, stream); |
| break; |
| case 7: |
| x->receiveDataApplicationCapability = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->receiveDataApplicationCapability, stream); |
| break; |
| case 8: |
| x->transmitDataApplicationCapability = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->transmitDataApplicationCapability, stream); |
| break; |
| case 9: |
| x->receiveAndTransmitDataApplicationCapability = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->receiveAndTransmitDataApplicationCapability, stream); |
| break; |
| case 10: |
| x->h233EncryptionTransmitCapability = GetBoolean(stream); |
| break; |
| case 11: |
| x->h233EncryptionReceiveCapability = (PS_H233EncryptionReceiveCapability) OSCL_DEFAULT_MALLOC(sizeof(S_H233EncryptionReceiveCapability)); |
| Decode_H233EncryptionReceiveCapability(x->h233EncryptionReceiveCapability, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 12: |
| GetLengthDet(stream); |
| x->conferenceCapability = (PS_ConferenceCapability) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceCapability)); |
| Decode_ConferenceCapability(x->conferenceCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->h235SecurityCapability = (PS_H235SecurityCapability) OSCL_DEFAULT_MALLOC(sizeof(S_H235SecurityCapability)); |
| Decode_H235SecurityCapability(x->h235SecurityCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 14: |
| GetLengthDet(stream); |
| x->maxPendingReplacementFor = (uint8) GetInteger(0, 255, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->receiveUserInputCapability = (PS_UserInputCapability) OSCL_DEFAULT_MALLOC(sizeof(S_UserInputCapability)); |
| Decode_UserInputCapability(x->receiveUserInputCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 16: |
| GetLengthDet(stream); |
| x->transmitUserInputCapability = (PS_UserInputCapability) OSCL_DEFAULT_MALLOC(sizeof(S_UserInputCapability)); |
| Decode_UserInputCapability(x->transmitUserInputCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 17: |
| GetLengthDet(stream); |
| x->receiveAndTransmitUserInputCapability = (PS_UserInputCapability) OSCL_DEFAULT_MALLOC(sizeof(S_UserInputCapability)); |
| Decode_UserInputCapability(x->receiveAndTransmitUserInputCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 18: |
| GetLengthDet(stream); |
| x->genericControlCapability = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericControlCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_Capability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================================> */ |
| /* PER-Decoder for H233EncryptionReceiveCapability (SEQUENCE) */ |
| /* <==========================================================> */ |
| void Decode_H233EncryptionReceiveCapability(PS_H233EncryptionReceiveCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->h233IVResponseTime = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H233EncryptionReceiveCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for H235SecurityCapability (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_H235SecurityCapability(PS_H235SecurityCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_EncryptionAuthenticationAndIntegrity(&x->encryptionAuthenticationAndIntegrity, stream); |
| x->mediaCapability = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H235SecurityCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for MultiplexCapability (CHOICE) */ |
| /* <============================================> */ |
| void Decode_MultiplexCapability(PS_MultiplexCapability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->h222Capability = (PS_H222Capability) OSCL_DEFAULT_MALLOC(sizeof(S_H222Capability)); |
| Decode_H222Capability(x->h222Capability, stream); |
| break; |
| case 2: |
| x->h223Capability = (PS_H223Capability) OSCL_DEFAULT_MALLOC(sizeof(S_H223Capability)); |
| Decode_H223Capability(x->h223Capability, stream); |
| break; |
| case 3: |
| x->v76Capability = (PS_V76Capability) OSCL_DEFAULT_MALLOC(sizeof(S_V76Capability)); |
| Decode_V76Capability(x->v76Capability, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 4: |
| GetLengthDet(stream); |
| x->h2250Capability = (PS_H2250Capability) OSCL_DEFAULT_MALLOC(sizeof(S_H2250Capability)); |
| Decode_H2250Capability(x->h2250Capability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 5: |
| GetLengthDet(stream); |
| x->genericMultiplexCapability = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericMultiplexCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MultiplexCapability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for H222Capability (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_H222Capability(PS_H222Capability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->numberOfVCs = (uint16) GetInteger(1, 256, stream); |
| x->size_of_vcCapability = (uint16) GetLengthDet(stream); |
| x->vcCapability = (PS_VCCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_vcCapability * sizeof(S_VCCapability)); |
| for (i = 0; i < x->size_of_vcCapability; ++i) |
| { |
| Decode_VCCapability(x->vcCapability + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H222Capability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for VCCapability (SEQUENCE) */ |
| /* <=======================================> */ |
| void Decode_VCCapability(PS_VCCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_vccAal1 = GetBoolean(stream); |
| x->option_of_vccAal5 = GetBoolean(stream); |
| if (x->option_of_vccAal1) |
| { |
| Decode_VccAal1(&x->vccAal1, stream); |
| } |
| if (x->option_of_vccAal5) |
| { |
| Decode_VccAal5(&x->vccAal5, stream); |
| } |
| x->transportStream = GetBoolean(stream); |
| x->programStream = GetBoolean(stream); |
| Decode_AvailableBitRates(&x->availableBitRates, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_aal1ViaGateway = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_aal1ViaGateway = SigMapValue(0, map); |
| if (x->option_of_aal1ViaGateway) |
| { |
| ExtensionPrep(map, stream); |
| Decode_Aal1ViaGateway(&x->aal1ViaGateway, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VCCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for Aal1ViaGateway (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_Aal1ViaGateway(PS_Aal1ViaGateway x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_gatewayAddress = (uint16) GetInteger(1, 256, stream); |
| x->gatewayAddress = (PS_Q2931Address) |
| OSCL_DEFAULT_MALLOC(x->size_of_gatewayAddress * sizeof(S_Q2931Address)); |
| for (i = 0; i < x->size_of_gatewayAddress; ++i) |
| { |
| Decode_Q2931Address(x->gatewayAddress + i, stream); |
| } |
| x->nullClockRecovery = GetBoolean(stream); |
| x->srtsClockRecovery = GetBoolean(stream); |
| x->adaptiveClockRecovery = GetBoolean(stream); |
| x->nullErrorCorrection = GetBoolean(stream); |
| x->longInterleaver = GetBoolean(stream); |
| x->shortInterleaver = GetBoolean(stream); |
| x->errorCorrectionOnly = GetBoolean(stream); |
| x->structuredDataTransfer = GetBoolean(stream); |
| x->partiallyFilledCells = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Aal1ViaGateway: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for AvailableBitRates (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_AvailableBitRates(PS_AvailableBitRates x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_VccAal5Type(&x->vccAal5Type, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_AvailableBitRates: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for VccAal5Type (CHOICE) */ |
| /* <====================================> */ |
| void Decode_VccAal5Type(PS_VccAal5Type x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->singleBitRate = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| x->rangeOfBitRates = (PS_RangeOfBitRates) OSCL_DEFAULT_MALLOC(sizeof(S_RangeOfBitRates)); |
| Decode_RangeOfBitRates(x->rangeOfBitRates, stream); |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_VccAal5Type: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for RangeOfBitRates (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_RangeOfBitRates(PS_RangeOfBitRates x, PS_InStream stream) |
| { |
| x->lowerBitRate = (uint16) GetInteger(1, 65535, stream); |
| x->higherBitRate = (uint16) GetInteger(1, 65535, stream); |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for VccAal5 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_VccAal5(PS_VccAal5 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->backwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VccAal5: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for VccAal1 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_VccAal1(PS_VccAal1 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->nullClockRecovery = GetBoolean(stream); |
| x->srtsClockRecovery = GetBoolean(stream); |
| x->adaptiveClockRecovery = GetBoolean(stream); |
| x->nullErrorCorrection = GetBoolean(stream); |
| x->longInterleaver = GetBoolean(stream); |
| x->shortInterleaver = GetBoolean(stream); |
| x->errorCorrectionOnly = GetBoolean(stream); |
| x->structuredDataTransfer = GetBoolean(stream); |
| x->partiallyFilledCells = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VccAal1: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for H223Capability (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_H223Capability(PS_H223Capability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->transportWithI_frames = GetBoolean(stream); |
| x->videoWithAL1 = GetBoolean(stream); |
| x->videoWithAL2 = GetBoolean(stream); |
| x->videoWithAL3 = GetBoolean(stream); |
| x->audioWithAL1 = GetBoolean(stream); |
| x->audioWithAL2 = GetBoolean(stream); |
| x->audioWithAL3 = GetBoolean(stream); |
| x->dataWithAL1 = GetBoolean(stream); |
| x->dataWithAL2 = GetBoolean(stream); |
| x->dataWithAL3 = GetBoolean(stream); |
| x->maximumAl2SDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->maximumAl3SDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->maximumDelayJitter = (uint16) GetInteger(0, 1023, stream); |
| Decode_H223MultiplexTableCapability(&x->h223MultiplexTableCapability, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_maxMUXPDUSizeCapability = OFF; |
| x->option_of_nsrpSupport = OFF; |
| x->option_of_mobileOperationTransmitCapability = OFF; |
| x->option_of_h223AnnexCCapability = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_maxMUXPDUSizeCapability = SigMapValue(0, map); |
| if (x->option_of_maxMUXPDUSizeCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->maxMUXPDUSizeCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_nsrpSupport = SigMapValue(1, map); |
| if (x->option_of_nsrpSupport) |
| { |
| ExtensionPrep(map, stream); |
| x->nsrpSupport = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_mobileOperationTransmitCapability = SigMapValue(2, map); |
| if (x->option_of_mobileOperationTransmitCapability) |
| { |
| ExtensionPrep(map, stream); |
| Decode_MobileOperationTransmitCapability(&x->mobileOperationTransmitCapability, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_h223AnnexCCapability = SigMapValue(3, map); |
| if (x->option_of_h223AnnexCCapability) |
| { |
| ExtensionPrep(map, stream); |
| Decode_H223AnnexCCapability(&x->h223AnnexCCapability, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223Capability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================================> */ |
| /* PER-Decoder for MobileOperationTransmitCapability (SEQUENCE) */ |
| /* <============================================================> */ |
| void Decode_MobileOperationTransmitCapability(PS_MobileOperationTransmitCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->modeChangeCapability = GetBoolean(stream); |
| x->h223AnnexA = GetBoolean(stream); |
| x->h223AnnexADoubleFlag = GetBoolean(stream); |
| x->h223AnnexB = GetBoolean(stream); |
| x->h223AnnexBwithHeader = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MobileOperationTransmitCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for H223MultiplexTableCapability (CHOICE) */ |
| /* <=====================================================> */ |
| void Decode_H223MultiplexTableCapability(PS_H223MultiplexTableCapability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (basic is NULL) */ |
| break; |
| case 1: |
| x->enhanced = (PS_Enhanced) OSCL_DEFAULT_MALLOC(sizeof(S_Enhanced)); |
| Decode_Enhanced(x->enhanced, stream); |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_H223MultiplexTableCapability: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for Enhanced (SEQUENCE) */ |
| /* <===================================> */ |
| void Decode_Enhanced(PS_Enhanced x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maximumNestingDepth = (uint8) GetInteger(1, 15, stream); |
| x->maximumElementListSize = (uint8) GetInteger(2, 255, stream); |
| x->maximumSubElementListSize = (uint8) GetInteger(2, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Enhanced: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for H223AnnexCCapability (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_H223AnnexCCapability(PS_H223AnnexCCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->videoWithAL1M = GetBoolean(stream); |
| x->videoWithAL2M = GetBoolean(stream); |
| x->videoWithAL3M = GetBoolean(stream); |
| x->audioWithAL1M = GetBoolean(stream); |
| x->audioWithAL2M = GetBoolean(stream); |
| x->audioWithAL3M = GetBoolean(stream); |
| x->dataWithAL1M = GetBoolean(stream); |
| x->dataWithAL2M = GetBoolean(stream); |
| x->dataWithAL3M = GetBoolean(stream); |
| x->alpduInterleaving = GetBoolean(stream); |
| x->maximumAL1MPDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->maximumAL2MSDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->maximumAL3MSDUSize = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_rsCodeCapability = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_rsCodeCapability = SigMapValue(0, map); |
| if (x->option_of_rsCodeCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->rsCodeCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223AnnexCCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for V76Capability (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_V76Capability(PS_V76Capability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->suspendResumeCapabilitywAddress = GetBoolean(stream); |
| x->suspendResumeCapabilitywoAddress = GetBoolean(stream); |
| x->rejCapability = GetBoolean(stream); |
| x->sREJCapability = GetBoolean(stream); |
| x->mREJCapability = GetBoolean(stream); |
| x->crc8bitCapability = GetBoolean(stream); |
| x->crc16bitCapability = GetBoolean(stream); |
| x->crc32bitCapability = GetBoolean(stream); |
| x->uihCapability = GetBoolean(stream); |
| x->numOfDLCS = (uint16) GetInteger(2, 8191, stream); |
| x->twoOctetAddressFieldCapability = GetBoolean(stream); |
| x->loopBackTestCapability = GetBoolean(stream); |
| x->n401Capability = (uint16) GetInteger(1, 4095, stream); |
| x->maxWindowSizeCapability = (uint8) GetInteger(1, 127, stream); |
| Decode_V75Capability(&x->v75Capability, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V76Capability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for V75Capability (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_V75Capability(PS_V75Capability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->audioHeader = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V75Capability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for H2250Capability (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_H2250Capability(PS_H2250Capability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maximumAudioDelayJitter = (uint16) GetInteger(0, 1023, stream); |
| Decode_MultipointCapability(&x->receiveMultipointCapability, stream); |
| Decode_MultipointCapability(&x->transmitMultipointCapability, stream); |
| Decode_MultipointCapability(&x->receiveAndTransmitMultipointCapability, stream); |
| Decode_McCapability(&x->mcCapability, stream); |
| x->rtcpVideoControlCapability = GetBoolean(stream); |
| Decode_MediaPacketizationCapability(&x->mediaPacketizationCapability, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_transportCapability = OFF; |
| x->option_of_redundancyEncodingCapability = OFF; |
| x->option_of_logicalChannelSwitchingCapability = OFF; |
| x->option_of_t120DynamicPortCapability = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_transportCapability = SigMapValue(0, map); |
| if (x->option_of_transportCapability) |
| { |
| ExtensionPrep(map, stream); |
| Decode_TransportCapability(&x->transportCapability, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_redundancyEncodingCapability = SigMapValue(1, map); |
| if (x->option_of_redundancyEncodingCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->size_of_redundancyEncodingCapability = (uint16) GetInteger(1, 256, stream); |
| x->redundancyEncodingCapability = (PS_RedundancyEncodingCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_redundancyEncodingCapability * sizeof(S_RedundancyEncodingCapability)); |
| for (i = 0; i < x->size_of_redundancyEncodingCapability; ++i) |
| { |
| Decode_RedundancyEncodingCapability(x->redundancyEncodingCapability + i, stream); |
| } |
| ReadRemainingBits(stream); |
| } |
| x->option_of_logicalChannelSwitchingCapability = SigMapValue(2, map); |
| if (x->option_of_logicalChannelSwitchingCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->logicalChannelSwitchingCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_t120DynamicPortCapability = SigMapValue(3, map); |
| if (x->option_of_t120DynamicPortCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->t120DynamicPortCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H2250Capability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for McCapability (SEQUENCE) */ |
| /* <=======================================> */ |
| void Decode_McCapability(PS_McCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->centralizedConferenceMC = GetBoolean(stream); |
| x->decentralizedConferenceMC = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_McCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for MediaPacketizationCapability (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_MediaPacketizationCapability(PS_MediaPacketizationCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->h261aVideoPacketization = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_rtpPayloadType = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_rtpPayloadType = SigMapValue(0, map); |
| if (x->option_of_rtpPayloadType) |
| { |
| ExtensionPrep(map, stream); |
| x->size_of_rtpPayloadType = (uint16) GetInteger(1, 256, stream); |
| x->rtpPayloadType = (PS_RTPPayloadType) |
| OSCL_DEFAULT_MALLOC(x->size_of_rtpPayloadType * sizeof(S_RTPPayloadType)); |
| for (i = 0; i < x->size_of_rtpPayloadType; ++i) |
| { |
| Decode_RTPPayloadType(x->rtpPayloadType + i, stream); |
| } |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MediaPacketizationCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for RSVPParameters (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_RSVPParameters(PS_RSVPParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_qosMode = GetBoolean(stream); |
| x->option_of_tokenRate = GetBoolean(stream); |
| x->option_of_bucketSize = GetBoolean(stream); |
| x->option_of_peakRate = GetBoolean(stream); |
| x->option_of_minPoliced = GetBoolean(stream); |
| x->option_of_maxPktSize = GetBoolean(stream); |
| if (x->option_of_qosMode) |
| { |
| Decode_QOSMode(&x->qosMode, stream); |
| } |
| if (x->option_of_tokenRate) |
| { |
| x->tokenRate = GetInteger(1, 0xffffffff, stream); |
| } |
| if (x->option_of_bucketSize) |
| { |
| x->bucketSize = GetInteger(1, 0xffffffff, stream); |
| } |
| if (x->option_of_peakRate) |
| { |
| x->peakRate = GetInteger(1, 0xffffffff, stream); |
| } |
| if (x->option_of_minPoliced) |
| { |
| x->minPoliced = GetInteger(1, 0xffffffff, stream); |
| } |
| if (x->option_of_maxPktSize) |
| { |
| x->maxPktSize = GetInteger(1, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RSVPParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for QOSMode (CHOICE) */ |
| /* <================================> */ |
| void Decode_QOSMode(PS_QOSMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (guaranteedQOS is NULL) */ |
| break; |
| case 1: |
| /* (controlledLoad is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_QOSMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for ATMParameters (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_ATMParameters(PS_ATMParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maxNTUSize = (uint16) GetInteger(0, 65535, stream); |
| x->atmUBR = GetBoolean(stream); |
| x->atmrtVBR = GetBoolean(stream); |
| x->atmnrtVBR = GetBoolean(stream); |
| x->atmABR = GetBoolean(stream); |
| x->atmCBR = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ATMParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for QOSCapability (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_QOSCapability(PS_QOSCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandardData = GetBoolean(stream); |
| x->option_of_rsvpParameters = GetBoolean(stream); |
| x->option_of_atmParameters = GetBoolean(stream); |
| if (x->option_of_nonStandardData) |
| { |
| Decode_NonStandardParameter(&x->nonStandardData, stream); |
| } |
| if (x->option_of_rsvpParameters) |
| { |
| Decode_RSVPParameters(&x->rsvpParameters, stream); |
| } |
| if (x->option_of_atmParameters) |
| { |
| Decode_ATMParameters(&x->atmParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_QOSCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for MediaTransportType (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_MediaTransportType(PS_MediaTransportType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (ip_UDP is NULL) */ |
| break; |
| case 1: |
| /* (ip_TCP is NULL) */ |
| break; |
| case 2: |
| /* (atm_AAL5_UNIDIR is NULL) */ |
| break; |
| case 3: |
| /* (atm_AAL5_BIDIR is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 4: |
| GetLengthDet(stream); |
| x->atm_AAL5_compressed = (PS_Atm_AAL5_compressed) OSCL_DEFAULT_MALLOC(sizeof(S_Atm_AAL5_compressed)); |
| Decode_Atm_AAL5_compressed(x->atm_AAL5_compressed, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MediaTransportType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for Atm_AAL5_compressed (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_Atm_AAL5_compressed(PS_Atm_AAL5_compressed x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->variable_delta = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Atm_AAL5_compressed: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for MediaChannelCapability (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_MediaChannelCapability(PS_MediaChannelCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_mediaTransport = GetBoolean(stream); |
| if (x->option_of_mediaTransport) |
| { |
| Decode_MediaTransportType(&x->mediaTransport, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MediaChannelCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for TransportCapability (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_TransportCapability(PS_TransportCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| x->option_of_qOSCapabilities = GetBoolean(stream); |
| x->option_of_mediaChannelCapabilities = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| Decode_NonStandardParameter(&x->nonStandard, stream); |
| } |
| if (x->option_of_qOSCapabilities) |
| { |
| x->size_of_qOSCapabilities = (uint16) GetInteger(1, 256, stream); |
| x->qOSCapabilities = (PS_QOSCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_qOSCapabilities * sizeof(S_QOSCapability)); |
| for (i = 0; i < x->size_of_qOSCapabilities; ++i) |
| { |
| Decode_QOSCapability(x->qOSCapabilities + i, stream); |
| } |
| } |
| if (x->option_of_mediaChannelCapabilities) |
| { |
| x->size_of_mediaChannelCapabilities = (uint16) GetInteger(1, 256, stream); |
| x->mediaChannelCapabilities = (PS_MediaChannelCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_mediaChannelCapabilities * sizeof(S_MediaChannelCapability)); |
| for (i = 0; i < x->size_of_mediaChannelCapabilities; ++i) |
| { |
| Decode_MediaChannelCapability(x->mediaChannelCapabilities + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TransportCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for RedundancyEncodingCapability (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_RedundancyEncodingCapability(PS_RedundancyEncodingCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_secondaryEncoding = GetBoolean(stream); |
| Decode_RedundancyEncodingMethod(&x->redundancyEncodingMethod, stream); |
| x->primaryEncoding = (uint16) GetInteger(1, 65535, stream); |
| if (x->option_of_secondaryEncoding) |
| { |
| x->size_of_secondaryEncoding = (uint16) GetInteger(1, 256, stream); |
| x->secondaryEncoding = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_secondaryEncoding * sizeof(uint32)); |
| for (i = 0; i < x->size_of_secondaryEncoding; ++i) |
| { |
| x->secondaryEncoding[i] = GetInteger(1, 65535, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RedundancyEncodingCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for RedundancyEncodingMethod (CHOICE) */ |
| /* <=================================================> */ |
| void Decode_RedundancyEncodingMethod(PS_RedundancyEncodingMethod x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (rtpAudioRedundancyEncoding is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 2: |
| GetLengthDet(stream); |
| x->rtpH263VideoRedundancyEncoding = (PS_RTPH263VideoRedundancyEncoding) OSCL_DEFAULT_MALLOC(sizeof(S_RTPH263VideoRedundancyEncoding)); |
| Decode_RTPH263VideoRedundancyEncoding(x->rtpH263VideoRedundancyEncoding, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_RedundancyEncodingMethod: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================================> */ |
| /* PER-Decoder for RTPH263VideoRedundancyEncoding (SEQUENCE) */ |
| /* <=========================================================> */ |
| void Decode_RTPH263VideoRedundancyEncoding(PS_RTPH263VideoRedundancyEncoding x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_containedThreads = GetBoolean(stream); |
| x->numberOfThreads = (uint8) GetInteger(1, 16, stream); |
| x->framesBetweenSyncPoints = (uint16) GetInteger(1, 256, stream); |
| Decode_FrameToThreadMapping(&x->frameToThreadMapping, stream); |
| if (x->option_of_containedThreads) |
| { |
| x->size_of_containedThreads = (uint16) GetInteger(1, 256, stream); |
| x->containedThreads = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_containedThreads * sizeof(uint32)); |
| for (i = 0; i < x->size_of_containedThreads; ++i) |
| { |
| x->containedThreads[i] = GetInteger(0, 15, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RTPH263VideoRedundancyEncoding: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for FrameToThreadMapping (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_FrameToThreadMapping(PS_FrameToThreadMapping x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (roundrobin is NULL) */ |
| break; |
| case 1: |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->custom = (PS_RTPH263VideoRedundancyFrameMapping) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_RTPH263VideoRedundancyFrameMapping)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_RTPH263VideoRedundancyFrameMapping(x->custom + i, stream); |
| } |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_FrameToThreadMapping: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================================> */ |
| /* PER-Decoder for RTPH263VideoRedundancyFrameMapping (SEQUENCE) */ |
| /* <=============================================================> */ |
| void Decode_RTPH263VideoRedundancyFrameMapping(PS_RTPH263VideoRedundancyFrameMapping x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->threadNumber = (uint8) GetInteger(0, 15, stream); |
| x->size_of_frameSequence = (uint16) GetInteger(1, 256, stream); |
| x->frameSequence = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_frameSequence * sizeof(uint32)); |
| for (i = 0; i < x->size_of_frameSequence; ++i) |
| { |
| x->frameSequence[i] = GetInteger(0, 255, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RTPH263VideoRedundancyFrameMapping: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for MultipointCapability (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_MultipointCapability(PS_MultipointCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->multicastCapability = GetBoolean(stream); |
| x->multiUniCastConference = GetBoolean(stream); |
| x->size_of_mediaDistributionCapability = (uint16) GetLengthDet(stream); |
| x->mediaDistributionCapability = (PS_MediaDistributionCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_mediaDistributionCapability * sizeof(S_MediaDistributionCapability)); |
| for (i = 0; i < x->size_of_mediaDistributionCapability; ++i) |
| { |
| Decode_MediaDistributionCapability(x->mediaDistributionCapability + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultipointCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for MediaDistributionCapability (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_MediaDistributionCapability(PS_MediaDistributionCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_centralizedData = GetBoolean(stream); |
| x->option_of_distributedData = GetBoolean(stream); |
| x->centralizedControl = GetBoolean(stream); |
| x->distributedControl = GetBoolean(stream); |
| x->centralizedAudio = GetBoolean(stream); |
| x->distributedAudio = GetBoolean(stream); |
| x->centralizedVideo = GetBoolean(stream); |
| x->distributedVideo = GetBoolean(stream); |
| if (x->option_of_centralizedData) |
| { |
| x->size_of_centralizedData = (uint16) GetLengthDet(stream); |
| x->centralizedData = (PS_DataApplicationCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_centralizedData * sizeof(S_DataApplicationCapability)); |
| for (i = 0; i < x->size_of_centralizedData; ++i) |
| { |
| Decode_DataApplicationCapability(x->centralizedData + i, stream); |
| } |
| } |
| if (x->option_of_distributedData) |
| { |
| x->size_of_distributedData = (uint16) GetLengthDet(stream); |
| x->distributedData = (PS_DataApplicationCapability) |
| OSCL_DEFAULT_MALLOC(x->size_of_distributedData * sizeof(S_DataApplicationCapability)); |
| for (i = 0; i < x->size_of_distributedData; ++i) |
| { |
| Decode_DataApplicationCapability(x->distributedData + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MediaDistributionCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for VideoCapability (CHOICE) */ |
| /* <========================================> */ |
| void Decode_VideoCapability(PS_VideoCapability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->h261VideoCapability = (PS_H261VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_H261VideoCapability)); |
| Decode_H261VideoCapability(x->h261VideoCapability, stream); |
| break; |
| case 2: |
| x->h262VideoCapability = (PS_H262VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_H262VideoCapability)); |
| Decode_H262VideoCapability(x->h262VideoCapability, stream); |
| break; |
| case 3: |
| x->h263VideoCapability = (PS_H263VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_H263VideoCapability)); |
| Decode_H263VideoCapability(x->h263VideoCapability, stream); |
| break; |
| case 4: |
| x->is11172VideoCapability = (PS_IS11172VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_IS11172VideoCapability)); |
| Decode_IS11172VideoCapability(x->is11172VideoCapability, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 5: |
| GetLengthDet(stream); |
| x->genericVideoCapability = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericVideoCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_VideoCapability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for H261VideoCapability (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_H261VideoCapability(PS_H261VideoCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_qcifMPI = GetBoolean(stream); |
| x->option_of_cifMPI = GetBoolean(stream); |
| if (x->option_of_qcifMPI) |
| { |
| x->qcifMPI = (uint8) GetInteger(1, 4, stream); |
| } |
| if (x->option_of_cifMPI) |
| { |
| x->cifMPI = (uint8) GetInteger(1, 4, stream); |
| } |
| x->temporalSpatialTradeOffCapability = GetBoolean(stream); |
| x->maxBitRate = (uint16) GetInteger(1, 19200, stream); |
| x->stillImageTransmission = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H261VideoCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for H262VideoCapability (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_H262VideoCapability(PS_H262VideoCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_videoBitRate = GetBoolean(stream); |
| x->option_of_vbvBufferSize = GetBoolean(stream); |
| x->option_of_samplesPerLine = GetBoolean(stream); |
| x->option_of_linesPerFrame = GetBoolean(stream); |
| x->option_of_framesPerSecond = GetBoolean(stream); |
| x->option_of_luminanceSampleRate = GetBoolean(stream); |
| x->profileAndLevel_SPatML = GetBoolean(stream); |
| x->profileAndLevel_MPatLL = GetBoolean(stream); |
| x->profileAndLevel_MPatML = GetBoolean(stream); |
| x->profileAndLevel_MPatH_14 = GetBoolean(stream); |
| x->profileAndLevel_MPatHL = GetBoolean(stream); |
| x->profileAndLevel_SNRatLL = GetBoolean(stream); |
| x->profileAndLevel_SNRatML = GetBoolean(stream); |
| x->profileAndLevel_SpatialatH_14 = GetBoolean(stream); |
| x->profileAndLevel_HPatML = GetBoolean(stream); |
| x->profileAndLevel_HPatH_14 = GetBoolean(stream); |
| x->profileAndLevel_HPatHL = GetBoolean(stream); |
| if (x->option_of_videoBitRate) |
| { |
| x->videoBitRate = GetInteger(0, 1073741823, stream); |
| } |
| if (x->option_of_vbvBufferSize) |
| { |
| x->vbvBufferSize = GetInteger(0, 262143, stream); |
| } |
| if (x->option_of_samplesPerLine) |
| { |
| x->samplesPerLine = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_linesPerFrame) |
| { |
| x->linesPerFrame = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_framesPerSecond) |
| { |
| x->framesPerSecond = (uint8) GetInteger(0, 15, stream); |
| } |
| if (x->option_of_luminanceSampleRate) |
| { |
| x->luminanceSampleRate = GetInteger(0, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H262VideoCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for H263VideoCapability (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_H263VideoCapability(PS_H263VideoCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_sqcifMPI = GetBoolean(stream); |
| x->option_of_qcifMPI = GetBoolean(stream); |
| x->option_of_cifMPI = GetBoolean(stream); |
| x->option_of_cif4MPI = GetBoolean(stream); |
| x->option_of_cif16MPI = GetBoolean(stream); |
| x->option_of_hrd_B = GetBoolean(stream); |
| x->option_of_bppMaxKb = GetBoolean(stream); |
| if (x->option_of_sqcifMPI) |
| { |
| x->sqcifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_qcifMPI) |
| { |
| x->qcifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cifMPI) |
| { |
| x->cifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cif4MPI) |
| { |
| x->cif4MPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cif16MPI) |
| { |
| x->cif16MPI = (uint8) GetInteger(1, 32, stream); |
| } |
| x->maxBitRate = GetInteger(1, 192400, stream); |
| x->unrestrictedVector = GetBoolean(stream); |
| x->arithmeticCoding = GetBoolean(stream); |
| x->advancedPrediction = GetBoolean(stream); |
| x->pbFrames = GetBoolean(stream); |
| x->temporalSpatialTradeOffCapability = GetBoolean(stream); |
| if (x->option_of_hrd_B) |
| { |
| x->hrd_B = GetInteger(0, 524287, stream); |
| } |
| if (x->option_of_bppMaxKb) |
| { |
| x->bppMaxKb = (uint16) GetInteger(0, 65535, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_slowSqcifMPI = OFF; |
| x->option_of_slowQcifMPI = OFF; |
| x->option_of_slowCifMPI = OFF; |
| x->option_of_slowCif4MPI = OFF; |
| x->option_of_slowCif16MPI = OFF; |
| x->option_of_errorCompensation = OFF; |
| x->option_of_enhancementLayerInfo = OFF; |
| x->option_of_h263Options = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_slowSqcifMPI = SigMapValue(0, map); |
| if (x->option_of_slowSqcifMPI) |
| { |
| ExtensionPrep(map, stream); |
| x->slowSqcifMPI = (uint16) GetInteger(1, 3600, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_slowQcifMPI = SigMapValue(1, map); |
| if (x->option_of_slowQcifMPI) |
| { |
| ExtensionPrep(map, stream); |
| x->slowQcifMPI = (uint16) GetInteger(1, 3600, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_slowCifMPI = SigMapValue(2, map); |
| if (x->option_of_slowCifMPI) |
| { |
| ExtensionPrep(map, stream); |
| x->slowCifMPI = (uint16) GetInteger(1, 3600, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_slowCif4MPI = SigMapValue(3, map); |
| if (x->option_of_slowCif4MPI) |
| { |
| ExtensionPrep(map, stream); |
| x->slowCif4MPI = (uint16) GetInteger(1, 3600, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_slowCif16MPI = SigMapValue(4, map); |
| if (x->option_of_slowCif16MPI) |
| { |
| ExtensionPrep(map, stream); |
| x->slowCif16MPI = (uint16) GetInteger(1, 3600, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_errorCompensation = SigMapValue(5, map); |
| if (x->option_of_errorCompensation) |
| { |
| ExtensionPrep(map, stream); |
| x->errorCompensation = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_enhancementLayerInfo = SigMapValue(6, map); |
| if (x->option_of_enhancementLayerInfo) |
| { |
| ExtensionPrep(map, stream); |
| Decode_EnhancementLayerInfo(&x->enhancementLayerInfo, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_h263Options = SigMapValue(7, map); |
| if (x->option_of_h263Options) |
| { |
| ExtensionPrep(map, stream); |
| Decode_H263Options(&x->h263Options, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H263VideoCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for EnhancementLayerInfo (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_EnhancementLayerInfo(PS_EnhancementLayerInfo x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_snrEnhancement = GetBoolean(stream); |
| x->option_of_spatialEnhancement = GetBoolean(stream); |
| x->option_of_bPictureEnhancement = GetBoolean(stream); |
| x->baseBitRateConstrained = GetBoolean(stream); |
| if (x->option_of_snrEnhancement) |
| { |
| x->size_of_snrEnhancement = (uint8) GetInteger(1, 14, stream); |
| x->snrEnhancement = (PS_EnhancementOptions) |
| OSCL_DEFAULT_MALLOC(x->size_of_snrEnhancement * sizeof(S_EnhancementOptions)); |
| for (i = 0; i < x->size_of_snrEnhancement; ++i) |
| { |
| Decode_EnhancementOptions(x->snrEnhancement + i, stream); |
| } |
| } |
| if (x->option_of_spatialEnhancement) |
| { |
| x->size_of_spatialEnhancement = (uint8) GetInteger(1, 14, stream); |
| x->spatialEnhancement = (PS_EnhancementOptions) |
| OSCL_DEFAULT_MALLOC(x->size_of_spatialEnhancement * sizeof(S_EnhancementOptions)); |
| for (i = 0; i < x->size_of_spatialEnhancement; ++i) |
| { |
| Decode_EnhancementOptions(x->spatialEnhancement + i, stream); |
| } |
| } |
| if (x->option_of_bPictureEnhancement) |
| { |
| x->size_of_bPictureEnhancement = (uint8) GetInteger(1, 14, stream); |
| x->bPictureEnhancement = (PS_BEnhancementParameters) |
| OSCL_DEFAULT_MALLOC(x->size_of_bPictureEnhancement * sizeof(S_BEnhancementParameters)); |
| for (i = 0; i < x->size_of_bPictureEnhancement; ++i) |
| { |
| Decode_BEnhancementParameters(x->bPictureEnhancement + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EnhancementLayerInfo: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for BEnhancementParameters (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_BEnhancementParameters(PS_BEnhancementParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_EnhancementOptions(&x->enhancementOptions, stream); |
| x->numberOfBPictures = (uint8) GetInteger(1, 64, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_BEnhancementParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for EnhancementOptions (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_EnhancementOptions(PS_EnhancementOptions x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_sqcifMPI = GetBoolean(stream); |
| x->option_of_qcifMPI = GetBoolean(stream); |
| x->option_of_cifMPI = GetBoolean(stream); |
| x->option_of_cif4MPI = GetBoolean(stream); |
| x->option_of_cif16MPI = GetBoolean(stream); |
| x->option_of_slowSqcifMPI = GetBoolean(stream); |
| x->option_of_slowQcifMPI = GetBoolean(stream); |
| x->option_of_slowCifMPI = GetBoolean(stream); |
| x->option_of_slowCif4MPI = GetBoolean(stream); |
| x->option_of_slowCif16MPI = GetBoolean(stream); |
| x->option_of_h263Options = GetBoolean(stream); |
| if (x->option_of_sqcifMPI) |
| { |
| x->sqcifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_qcifMPI) |
| { |
| x->qcifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cifMPI) |
| { |
| x->cifMPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cif4MPI) |
| { |
| x->cif4MPI = (uint8) GetInteger(1, 32, stream); |
| } |
| if (x->option_of_cif16MPI) |
| { |
| x->cif16MPI = (uint8) GetInteger(1, 32, stream); |
| } |
| x->maxBitRate = GetInteger(1, 192400, stream); |
| x->unrestrictedVector = GetBoolean(stream); |
| x->arithmeticCoding = GetBoolean(stream); |
| x->temporalSpatialTradeOffCapability = GetBoolean(stream); |
| if (x->option_of_slowSqcifMPI) |
| { |
| x->slowSqcifMPI = (uint16) GetInteger(1, 3600, stream); |
| } |
| if (x->option_of_slowQcifMPI) |
| { |
| x->slowQcifMPI = (uint16) GetInteger(1, 3600, stream); |
| } |
| if (x->option_of_slowCifMPI) |
| { |
| x->slowCifMPI = (uint16) GetInteger(1, 3600, stream); |
| } |
| if (x->option_of_slowCif4MPI) |
| { |
| x->slowCif4MPI = (uint16) GetInteger(1, 3600, stream); |
| } |
| if (x->option_of_slowCif16MPI) |
| { |
| x->slowCif16MPI = (uint16) GetInteger(1, 3600, stream); |
| } |
| x->errorCompensation = GetBoolean(stream); |
| if (x->option_of_h263Options) |
| { |
| Decode_H263Options(&x->h263Options, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EnhancementOptions: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for H263Options (SEQUENCE) */ |
| /* <======================================> */ |
| void Decode_H263Options(PS_H263Options x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_transparencyParameters = GetBoolean(stream); |
| x->option_of_refPictureSelection = GetBoolean(stream); |
| x->option_of_customPictureClockFrequency = GetBoolean(stream); |
| x->option_of_customPictureFormat = GetBoolean(stream); |
| x->option_of_modeCombos = GetBoolean(stream); |
| x->advancedIntraCodingMode = GetBoolean(stream); |
| x->deblockingFilterMode = GetBoolean(stream); |
| x->improvedPBFramesMode = GetBoolean(stream); |
| x->unlimitedMotionVectors = GetBoolean(stream); |
| x->fullPictureFreeze = GetBoolean(stream); |
| x->partialPictureFreezeAndRelease = GetBoolean(stream); |
| x->resizingPartPicFreezeAndRelease = GetBoolean(stream); |
| x->fullPictureSnapshot = GetBoolean(stream); |
| x->partialPictureSnapshot = GetBoolean(stream); |
| x->videoSegmentTagging = GetBoolean(stream); |
| x->progressiveRefinement = GetBoolean(stream); |
| x->dynamicPictureResizingByFour = GetBoolean(stream); |
| x->dynamicPictureResizingSixteenthPel = GetBoolean(stream); |
| x->dynamicWarpingHalfPel = GetBoolean(stream); |
| x->dynamicWarpingSixteenthPel = GetBoolean(stream); |
| x->independentSegmentDecoding = GetBoolean(stream); |
| x->slicesInOrder_NonRect = GetBoolean(stream); |
| x->slicesInOrder_Rect = GetBoolean(stream); |
| x->slicesNoOrder_NonRect = GetBoolean(stream); |
| x->slicesNoOrder_Rect = GetBoolean(stream); |
| x->alternateInterVLCMode = GetBoolean(stream); |
| x->modifiedQuantizationMode = GetBoolean(stream); |
| x->reducedResolutionUpdate = GetBoolean(stream); |
| if (x->option_of_transparencyParameters) |
| { |
| Decode_TransparencyParameters(&x->transparencyParameters, stream); |
| } |
| x->separateVideoBackChannel = GetBoolean(stream); |
| if (x->option_of_refPictureSelection) |
| { |
| Decode_RefPictureSelection(&x->refPictureSelection, stream); |
| } |
| if (x->option_of_customPictureClockFrequency) |
| { |
| x->size_of_customPictureClockFrequency = (uint8) GetInteger(1, 16, stream); |
| x->customPictureClockFrequency = (PS_CustomPictureClockFrequency) |
| OSCL_DEFAULT_MALLOC(x->size_of_customPictureClockFrequency * sizeof(S_CustomPictureClockFrequency)); |
| for (i = 0; i < x->size_of_customPictureClockFrequency; ++i) |
| { |
| Decode_CustomPictureClockFrequency(x->customPictureClockFrequency + i, stream); |
| } |
| } |
| if (x->option_of_customPictureFormat) |
| { |
| x->size_of_customPictureFormat = (uint8) GetInteger(1, 16, stream); |
| x->customPictureFormat = (PS_CustomPictureFormat) |
| OSCL_DEFAULT_MALLOC(x->size_of_customPictureFormat * sizeof(S_CustomPictureFormat)); |
| for (i = 0; i < x->size_of_customPictureFormat; ++i) |
| { |
| Decode_CustomPictureFormat(x->customPictureFormat + i, stream); |
| } |
| } |
| if (x->option_of_modeCombos) |
| { |
| x->size_of_modeCombos = (uint8) GetInteger(1, 16, stream); |
| x->modeCombos = (PS_H263VideoModeCombos) |
| OSCL_DEFAULT_MALLOC(x->size_of_modeCombos * sizeof(S_H263VideoModeCombos)); |
| for (i = 0; i < x->size_of_modeCombos; ++i) |
| { |
| Decode_H263VideoModeCombos(x->modeCombos + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H263Options: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for TransparencyParameters (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_TransparencyParameters(PS_TransparencyParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->presentationOrder = (uint16) GetInteger(1, 256, stream); |
| x->offset_x = GetSignedInteger(-262144, 262143, stream); |
| x->offset_y = GetSignedInteger(-262144, 262143, stream); |
| x->scale_x = (uint8) GetInteger(1, 255, stream); |
| x->scale_y = (uint8) GetInteger(1, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TransparencyParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for RefPictureSelection (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_RefPictureSelection(PS_RefPictureSelection x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_additionalPictureMemory = GetBoolean(stream); |
| if (x->option_of_additionalPictureMemory) |
| { |
| Decode_AdditionalPictureMemory(&x->additionalPictureMemory, stream); |
| } |
| x->videoMux = GetBoolean(stream); |
| Decode_VideoBackChannelSend(&x->videoBackChannelSend, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RefPictureSelection: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for VideoBackChannelSend (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_VideoBackChannelSend(PS_VideoBackChannelSend x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (none is NULL) */ |
| break; |
| case 1: |
| /* (ackMessageOnly is NULL) */ |
| break; |
| case 2: |
| /* (nackMessageOnly is NULL) */ |
| break; |
| case 3: |
| /* (ackOrNackMessageOnly is NULL) */ |
| break; |
| case 4: |
| /* (ackAndNackMessage is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_VideoBackChannelSend: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for AdditionalPictureMemory (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_AdditionalPictureMemory(PS_AdditionalPictureMemory x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_sqcifAdditionalPictureMemory = GetBoolean(stream); |
| x->option_of_qcifAdditionalPictureMemory = GetBoolean(stream); |
| x->option_of_cifAdditionalPictureMemory = GetBoolean(stream); |
| x->option_of_cif4AdditionalPictureMemory = GetBoolean(stream); |
| x->option_of_cif16AdditionalPictureMemory = GetBoolean(stream); |
| x->option_of_bigCpfAdditionalPictureMemory = GetBoolean(stream); |
| if (x->option_of_sqcifAdditionalPictureMemory) |
| { |
| x->sqcifAdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| if (x->option_of_qcifAdditionalPictureMemory) |
| { |
| x->qcifAdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| if (x->option_of_cifAdditionalPictureMemory) |
| { |
| x->cifAdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| if (x->option_of_cif4AdditionalPictureMemory) |
| { |
| x->cif4AdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| if (x->option_of_cif16AdditionalPictureMemory) |
| { |
| x->cif16AdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| if (x->option_of_bigCpfAdditionalPictureMemory) |
| { |
| x->bigCpfAdditionalPictureMemory = (uint16) GetInteger(1, 256, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_AdditionalPictureMemory: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for CustomPictureClockFrequency (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_CustomPictureClockFrequency(PS_CustomPictureClockFrequency x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_sqcifMPI = GetBoolean(stream); |
| x->option_of_qcifMPI = GetBoolean(stream); |
| x->option_of_cifMPI = GetBoolean(stream); |
| x->option_of_cif4MPI = GetBoolean(stream); |
| x->option_of_cif16MPI = GetBoolean(stream); |
| x->clockConversionCode = (uint16) GetInteger(1000, 1001, stream); |
| x->clockDivisor = (uint8) GetInteger(1, 127, stream); |
| if (x->option_of_sqcifMPI) |
| { |
| x->sqcifMPI = (uint16) GetInteger(1, 2048, stream); |
| } |
| if (x->option_of_qcifMPI) |
| { |
| x->qcifMPI = (uint16) GetInteger(1, 2048, stream); |
| } |
| if (x->option_of_cifMPI) |
| { |
| x->cifMPI = (uint16) GetInteger(1, 2048, stream); |
| } |
| if (x->option_of_cif4MPI) |
| { |
| x->cif4MPI = (uint16) GetInteger(1, 2048, stream); |
| } |
| if (x->option_of_cif16MPI) |
| { |
| x->cif16MPI = (uint16) GetInteger(1, 2048, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CustomPictureClockFrequency: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for CustomPictureFormat (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_CustomPictureFormat(PS_CustomPictureFormat x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maxCustomPictureWidth = (uint16) GetInteger(1, 2048, stream); |
| x->maxCustomPictureHeight = (uint16) GetInteger(1, 2048, stream); |
| x->minCustomPictureWidth = (uint16) GetInteger(1, 2048, stream); |
| x->minCustomPictureHeight = (uint16) GetInteger(1, 2048, stream); |
| Decode_MPI(&x->mPI, stream); |
| Decode_PixelAspectInformation(&x->pixelAspectInformation, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CustomPictureFormat: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for PixelAspectInformation (CHOICE) */ |
| /* <===============================================> */ |
| void Decode_PixelAspectInformation(PS_PixelAspectInformation x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->anyPixelAspectRatio = GetBoolean(stream); |
| break; |
| case 1: |
| x->size = (uint8) GetInteger(1, 14, stream); |
| x->pixelAspectCode = (uint32*) OSCL_DEFAULT_MALLOC(x->size * sizeof(uint32)); |
| for (i = 0; i < x->size; ++i) |
| { |
| x->pixelAspectCode[i] = GetInteger(1, 14, stream); |
| } |
| break; |
| case 2: |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->extendedPAR = (PS_ExtendedPARItem) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_ExtendedPARItem)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_ExtendedPARItem(x->extendedPAR + i, stream); |
| } |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_PixelAspectInformation: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for ExtendedPARItem (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_ExtendedPARItem(PS_ExtendedPARItem x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->width = (uint8) GetInteger(1, 255, stream); |
| x->height = (uint8) GetInteger(1, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ExtendedPARItem: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================> */ |
| /* PER-Decoder for MPI (SEQUENCE) */ |
| /* <==============================> */ |
| void Decode_MPI(PS_MPI x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_standardMPI = GetBoolean(stream); |
| x->option_of_customPCF = GetBoolean(stream); |
| if (x->option_of_standardMPI) |
| { |
| x->standardMPI = (uint8) GetInteger(1, 31, stream); |
| } |
| if (x->option_of_customPCF) |
| { |
| x->size_of_customPCF = (uint8) GetInteger(1, 16, stream); |
| x->customPCF = (PS_CustomPCFItem) |
| OSCL_DEFAULT_MALLOC(x->size_of_customPCF * sizeof(S_CustomPCFItem)); |
| for (i = 0; i < x->size_of_customPCF; ++i) |
| { |
| Decode_CustomPCFItem(x->customPCF + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MPI: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for CustomPCFItem (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_CustomPCFItem(PS_CustomPCFItem x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->clockConversionCode = (uint16) GetInteger(1000, 1001, stream); |
| x->clockDivisor = (uint8) GetInteger(1, 127, stream); |
| x->customMPI = (uint16) GetInteger(1, 2048, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CustomPCFItem: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for H263VideoModeCombos (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_H263VideoModeCombos(PS_H263VideoModeCombos x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_H263ModeComboFlags(&x->h263VideoUncoupledModes, stream); |
| x->size_of_h263VideoCoupledModes = (uint8) GetInteger(1, 16, stream); |
| x->h263VideoCoupledModes = (PS_H263ModeComboFlags) |
| OSCL_DEFAULT_MALLOC(x->size_of_h263VideoCoupledModes * sizeof(S_H263ModeComboFlags)); |
| for (i = 0; i < x->size_of_h263VideoCoupledModes; ++i) |
| { |
| Decode_H263ModeComboFlags(x->h263VideoCoupledModes + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H263VideoModeCombos: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H263ModeComboFlags (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H263ModeComboFlags(PS_H263ModeComboFlags x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->unrestrictedVector = GetBoolean(stream); |
| x->arithmeticCoding = GetBoolean(stream); |
| x->advancedPrediction = GetBoolean(stream); |
| x->pbFrames = GetBoolean(stream); |
| x->advancedIntraCodingMode = GetBoolean(stream); |
| x->deblockingFilterMode = GetBoolean(stream); |
| x->unlimitedMotionVectors = GetBoolean(stream); |
| x->slicesInOrder_NonRect = GetBoolean(stream); |
| x->slicesInOrder_Rect = GetBoolean(stream); |
| x->slicesNoOrder_NonRect = GetBoolean(stream); |
| x->slicesNoOrder_Rect = GetBoolean(stream); |
| x->improvedPBFramesMode = GetBoolean(stream); |
| x->referencePicSelect = GetBoolean(stream); |
| x->dynamicPictureResizingByFour = GetBoolean(stream); |
| x->dynamicPictureResizingSixteenthPel = GetBoolean(stream); |
| x->dynamicWarpingHalfPel = GetBoolean(stream); |
| x->dynamicWarpingSixteenthPel = GetBoolean(stream); |
| x->reducedResolutionUpdate = GetBoolean(stream); |
| x->independentSegmentDecoding = GetBoolean(stream); |
| x->alternateInterVLCMode = GetBoolean(stream); |
| x->modifiedQuantizationMode = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H263ModeComboFlags: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for IS11172VideoCapability (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_IS11172VideoCapability(PS_IS11172VideoCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_videoBitRate = GetBoolean(stream); |
| x->option_of_vbvBufferSize = GetBoolean(stream); |
| x->option_of_samplesPerLine = GetBoolean(stream); |
| x->option_of_linesPerFrame = GetBoolean(stream); |
| x->option_of_pictureRate = GetBoolean(stream); |
| x->option_of_luminanceSampleRate = GetBoolean(stream); |
| x->constrainedBitstream = GetBoolean(stream); |
| if (x->option_of_videoBitRate) |
| { |
| x->videoBitRate = GetInteger(0, 1073741823, stream); |
| } |
| if (x->option_of_vbvBufferSize) |
| { |
| x->vbvBufferSize = GetInteger(0, 262143, stream); |
| } |
| if (x->option_of_samplesPerLine) |
| { |
| x->samplesPerLine = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_linesPerFrame) |
| { |
| x->linesPerFrame = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_pictureRate) |
| { |
| x->pictureRate = (uint8) GetInteger(0, 15, stream); |
| } |
| if (x->option_of_luminanceSampleRate) |
| { |
| x->luminanceSampleRate = GetInteger(0, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS11172VideoCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for AudioCapability (CHOICE) */ |
| /* <========================================> */ |
| void Decode_AudioCapability(PS_AudioCapability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(14, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->g711Alaw64k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 2: |
| x->g711Alaw56k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 3: |
| x->g711Ulaw64k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 4: |
| x->g711Ulaw56k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 5: |
| x->g722_64k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 6: |
| x->g722_56k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 7: |
| x->g722_48k = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 8: |
| x->g7231 = (PS_G7231) OSCL_DEFAULT_MALLOC(sizeof(S_G7231)); |
| Decode_G7231(x->g7231, stream); |
| break; |
| case 9: |
| x->g728 = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 10: |
| x->g729 = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 11: |
| x->g729AnnexA = (uint16) GetInteger(1, 256, stream); |
| break; |
| case 12: |
| x->is11172AudioCapability = (PS_IS11172AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_IS11172AudioCapability)); |
| Decode_IS11172AudioCapability(x->is11172AudioCapability, stream); |
| break; |
| case 13: |
| x->is13818AudioCapability = (PS_IS13818AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_IS13818AudioCapability)); |
| Decode_IS13818AudioCapability(x->is13818AudioCapability, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 14: |
| GetLengthDet(stream); |
| x->g729wAnnexB = (uint16) GetInteger(1, 256, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->g729AnnexAwAnnexB = (uint16) GetInteger(1, 256, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 16: |
| GetLengthDet(stream); |
| x->g7231AnnexCCapability = (PS_G7231AnnexCCapability) OSCL_DEFAULT_MALLOC(sizeof(S_G7231AnnexCCapability)); |
| Decode_G7231AnnexCCapability(x->g7231AnnexCCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 17: |
| GetLengthDet(stream); |
| x->gsmFullRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmFullRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 18: |
| GetLengthDet(stream); |
| x->gsmHalfRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmHalfRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 19: |
| GetLengthDet(stream); |
| x->gsmEnhancedFullRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmEnhancedFullRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 20: |
| GetLengthDet(stream); |
| x->genericAudioCapability = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericAudioCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 21: |
| GetLengthDet(stream); |
| x->g729Extensions = (PS_G729Extensions) OSCL_DEFAULT_MALLOC(sizeof(S_G729Extensions)); |
| Decode_G729Extensions(x->g729Extensions, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_AudioCapability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for G7231 (SEQUENCE) */ |
| /* <================================> */ |
| void Decode_G7231(PS_G7231 x, PS_InStream stream) |
| { |
| x->maxAl_sduAudioFrames = (uint16) GetInteger(1, 256, stream); |
| x->silenceSuppression = GetBoolean(stream); |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for G729Extensions (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_G729Extensions(PS_G729Extensions x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_audioUnit = GetBoolean(stream); |
| if (x->option_of_audioUnit) |
| { |
| x->audioUnit = (uint16) GetInteger(1, 256, stream); |
| } |
| x->annexA = GetBoolean(stream); |
| x->annexB = GetBoolean(stream); |
| x->annexD = GetBoolean(stream); |
| x->annexE = GetBoolean(stream); |
| x->annexF = GetBoolean(stream); |
| x->annexG = GetBoolean(stream); |
| x->annexH = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_G729Extensions: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for G7231AnnexCCapability (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_G7231AnnexCCapability(PS_G7231AnnexCCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_g723AnnexCAudioMode = GetBoolean(stream); |
| x->maxAl_sduAudioFrames = (uint16) GetInteger(1, 256, stream); |
| x->silenceSuppression = GetBoolean(stream); |
| if (x->option_of_g723AnnexCAudioMode) |
| { |
| Decode_G723AnnexCAudioMode(&x->g723AnnexCAudioMode, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_G7231AnnexCCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for G723AnnexCAudioMode (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_G723AnnexCAudioMode(PS_G723AnnexCAudioMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->highRateMode0 = (uint8) GetInteger(27, 78, stream); |
| x->highRateMode1 = (uint8) GetInteger(27, 78, stream); |
| x->lowRateMode0 = (uint8) GetInteger(23, 66, stream); |
| x->lowRateMode1 = (uint8) GetInteger(23, 66, stream); |
| x->sidMode0 = (uint8) GetInteger(6, 17, stream); |
| x->sidMode1 = (uint8) GetInteger(6, 17, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_G723AnnexCAudioMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for IS11172AudioCapability (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_IS11172AudioCapability(PS_IS11172AudioCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->audioLayer1 = GetBoolean(stream); |
| x->audioLayer2 = GetBoolean(stream); |
| x->audioLayer3 = GetBoolean(stream); |
| x->audioSampling32k = GetBoolean(stream); |
| x->audioSampling44k1 = GetBoolean(stream); |
| x->audioSampling48k = GetBoolean(stream); |
| x->singleChannel = GetBoolean(stream); |
| x->twoChannels = GetBoolean(stream); |
| x->bitRate = (uint16) GetInteger(1, 448, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS11172AudioCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for IS13818AudioCapability (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_IS13818AudioCapability(PS_IS13818AudioCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->audioLayer1 = GetBoolean(stream); |
| x->audioLayer2 = GetBoolean(stream); |
| x->audioLayer3 = GetBoolean(stream); |
| x->audioSampling16k = GetBoolean(stream); |
| x->audioSampling22k05 = GetBoolean(stream); |
| x->audioSampling24k = GetBoolean(stream); |
| x->audioSampling32k = GetBoolean(stream); |
| x->audioSampling44k1 = GetBoolean(stream); |
| x->audioSampling48k = GetBoolean(stream); |
| x->singleChannel = GetBoolean(stream); |
| x->twoChannels = GetBoolean(stream); |
| x->threeChannels2_1 = GetBoolean(stream); |
| x->threeChannels3_0 = GetBoolean(stream); |
| x->fourChannels2_0_2_0 = GetBoolean(stream); |
| x->fourChannels2_2 = GetBoolean(stream); |
| x->fourChannels3_1 = GetBoolean(stream); |
| x->fiveChannels3_0_2_0 = GetBoolean(stream); |
| x->fiveChannels3_2 = GetBoolean(stream); |
| x->lowFrequencyEnhancement = GetBoolean(stream); |
| x->multilingual = GetBoolean(stream); |
| x->bitRate = (uint16) GetInteger(1, 1130, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS13818AudioCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for GSMAudioCapability (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_GSMAudioCapability(PS_GSMAudioCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->audioUnitSize = (uint16) GetInteger(1, 256, stream); |
| x->comfortNoise = GetBoolean(stream); |
| x->scrambled = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_GSMAudioCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for DataApplicationCapability (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_DataApplicationCapability(PS_DataApplicationCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Application(&x->application, stream); |
| x->maxBitRate = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_DataApplicationCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for Application (CHOICE) */ |
| /* <====================================> */ |
| void Decode_Application(PS_Application x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->t120 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t120, stream); |
| break; |
| case 2: |
| x->dsm_cc = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->dsm_cc, stream); |
| break; |
| case 3: |
| x->userData = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->userData, stream); |
| break; |
| case 4: |
| x->t84 = (PS_T84) OSCL_DEFAULT_MALLOC(sizeof(S_T84)); |
| Decode_T84(x->t84, stream); |
| break; |
| case 5: |
| x->t434 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t434, stream); |
| break; |
| case 6: |
| x->h224 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->h224, stream); |
| break; |
| case 7: |
| x->nlpid = (PS_Nlpid) OSCL_DEFAULT_MALLOC(sizeof(S_Nlpid)); |
| Decode_Nlpid(x->nlpid, stream); |
| break; |
| case 8: |
| /* (dsvdControl is NULL) */ |
| break; |
| case 9: |
| x->h222DataPartitioning = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->h222DataPartitioning, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 10: |
| GetLengthDet(stream); |
| x->t30fax = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t30fax, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->t140 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t140, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->t38fax = (PS_T38fax) OSCL_DEFAULT_MALLOC(sizeof(S_T38fax)); |
| Decode_T38fax(x->t38fax, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->genericDataCapability = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericDataCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_Application: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for T38fax (SEQUENCE) */ |
| /* <=================================> */ |
| void Decode_T38fax(PS_T38fax x, PS_InStream stream) |
| { |
| Decode_DataProtocolCapability(&x->t38FaxProtocol, stream); |
| Decode_T38FaxProfile(&x->t38FaxProfile, stream); |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for Nlpid (SEQUENCE) */ |
| /* <================================> */ |
| void Decode_Nlpid(PS_Nlpid x, PS_InStream stream) |
| { |
| Decode_DataProtocolCapability(&x->nlpidProtocol, stream); |
| GetOctetString(1, 0, 0, &x->nlpidData, stream); |
| } |
| |
| /* <==============================> */ |
| /* PER-Decoder for T84 (SEQUENCE) */ |
| /* <==============================> */ |
| void Decode_T84(PS_T84 x, PS_InStream stream) |
| { |
| Decode_DataProtocolCapability(&x->t84Protocol, stream); |
| Decode_T84Profile(&x->t84Profile, stream); |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for DataProtocolCapability (CHOICE) */ |
| /* <===============================================> */ |
| void Decode_DataProtocolCapability(PS_DataProtocolCapability x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(7, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (v14buffered is NULL) */ |
| break; |
| case 2: |
| /* (v42lapm is NULL) */ |
| break; |
| case 3: |
| /* (hdlcFrameTunnelling is NULL) */ |
| break; |
| case 4: |
| /* (h310SeparateVCStack is NULL) */ |
| break; |
| case 5: |
| /* (h310SingleVCStack is NULL) */ |
| break; |
| case 6: |
| /* (transparent is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 7: |
| GetLengthDet(stream); |
| /* (segmentationAndReassembly is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 8: |
| GetLengthDet(stream); |
| /* (hdlcFrameTunnelingwSAR is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 9: |
| GetLengthDet(stream); |
| /* (v120 is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 10: |
| GetLengthDet(stream); |
| /* (separateLANStack is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->v76wCompression = (PS_V76wCompression) OSCL_DEFAULT_MALLOC(sizeof(S_V76wCompression)); |
| Decode_V76wCompression(x->v76wCompression, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| /* (tcp is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| /* (udp is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_DataProtocolCapability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for V76wCompression (CHOICE) */ |
| /* <========================================> */ |
| void Decode_V76wCompression(PS_V76wCompression x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->transmitCompression = (PS_CompressionType) OSCL_DEFAULT_MALLOC(sizeof(S_CompressionType)); |
| Decode_CompressionType(x->transmitCompression, stream); |
| break; |
| case 1: |
| x->receiveCompression = (PS_CompressionType) OSCL_DEFAULT_MALLOC(sizeof(S_CompressionType)); |
| Decode_CompressionType(x->receiveCompression, stream); |
| break; |
| case 2: |
| x->transmitAndReceiveCompression = (PS_CompressionType) OSCL_DEFAULT_MALLOC(sizeof(S_CompressionType)); |
| Decode_CompressionType(x->transmitAndReceiveCompression, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_V76wCompression: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for CompressionType (CHOICE) */ |
| /* <========================================> */ |
| void Decode_CompressionType(PS_CompressionType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->v42bis = (PS_V42bis) OSCL_DEFAULT_MALLOC(sizeof(S_V42bis)); |
| Decode_V42bis(x->v42bis, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CompressionType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for V42bis (SEQUENCE) */ |
| /* <=================================> */ |
| void Decode_V42bis(PS_V42bis x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->numberOfCodewords = GetInteger(1, 65536, stream); |
| x->maximumStringLength = (uint16) GetInteger(1, 256, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V42bis: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for T84Profile (CHOICE) */ |
| /* <===================================> */ |
| void Decode_T84Profile(PS_T84Profile x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (t84Unrestricted is NULL) */ |
| break; |
| case 1: |
| x->t84Restricted = (PS_T84Restricted) OSCL_DEFAULT_MALLOC(sizeof(S_T84Restricted)); |
| Decode_T84Restricted(x->t84Restricted, stream); |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_T84Profile: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for T84Restricted (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_T84Restricted(PS_T84Restricted x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->qcif = GetBoolean(stream); |
| x->cif = GetBoolean(stream); |
| x->ccir601Seq = GetBoolean(stream); |
| x->ccir601Prog = GetBoolean(stream); |
| x->hdtvSeq = GetBoolean(stream); |
| x->hdtvProg = GetBoolean(stream); |
| x->g3FacsMH200x100 = GetBoolean(stream); |
| x->g3FacsMH200x200 = GetBoolean(stream); |
| x->g4FacsMMR200x100 = GetBoolean(stream); |
| x->g4FacsMMR200x200 = GetBoolean(stream); |
| x->jbig200x200Seq = GetBoolean(stream); |
| x->jbig200x200Prog = GetBoolean(stream); |
| x->jbig300x300Seq = GetBoolean(stream); |
| x->jbig300x300Prog = GetBoolean(stream); |
| x->digPhotoLow = GetBoolean(stream); |
| x->digPhotoMedSeq = GetBoolean(stream); |
| x->digPhotoMedProg = GetBoolean(stream); |
| x->digPhotoHighSeq = GetBoolean(stream); |
| x->digPhotoHighProg = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_T84Restricted: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for T38FaxProfile (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_T38FaxProfile(PS_T38FaxProfile x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->fillBitRemoval = GetBoolean(stream); |
| x->transcodingJBIG = GetBoolean(stream); |
| x->transcodingMMR = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_version = OFF; |
| x->option_of_t38FaxRateManagement = OFF; |
| x->option_of_t38FaxUdpOptions = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_version = SigMapValue(0, map); |
| if (x->option_of_version) |
| { |
| ExtensionPrep(map, stream); |
| x->version = (uint8) GetInteger(0, 255, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_t38FaxRateManagement = SigMapValue(1, map); |
| if (x->option_of_t38FaxRateManagement) |
| { |
| ExtensionPrep(map, stream); |
| Decode_T38FaxRateManagement(&x->t38FaxRateManagement, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_t38FaxUdpOptions = SigMapValue(2, map); |
| if (x->option_of_t38FaxUdpOptions) |
| { |
| ExtensionPrep(map, stream); |
| Decode_T38FaxUdpOptions(&x->t38FaxUdpOptions, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_T38FaxProfile: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for T38FaxRateManagement (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_T38FaxRateManagement(PS_T38FaxRateManagement x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (localTCF is NULL) */ |
| break; |
| case 1: |
| /* (transferredTCF is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_T38FaxRateManagement: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for T38FaxUdpOptions (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_T38FaxUdpOptions(PS_T38FaxUdpOptions x, PS_InStream stream) |
| { |
| x->option_of_t38FaxMaxBuffer = GetBoolean(stream); |
| x->option_of_t38FaxMaxDatagram = GetBoolean(stream); |
| if (x->option_of_t38FaxMaxBuffer) |
| { |
| x->t38FaxMaxBuffer = GetUnboundedInteger(stream); |
| } |
| if (x->option_of_t38FaxMaxDatagram) |
| { |
| x->t38FaxMaxDatagram = GetUnboundedInteger(stream); |
| } |
| Decode_T38FaxUdpEC(&x->t38FaxUdpEC, stream); |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for T38FaxUdpEC (CHOICE) */ |
| /* <====================================> */ |
| void Decode_T38FaxUdpEC(PS_T38FaxUdpEC x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (t38UDPFEC is NULL) */ |
| break; |
| case 1: |
| /* (t38UDPRedundancy is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_T38FaxUdpEC: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================================================> */ |
| /* PER-Decoder for EncryptionAuthenticationAndIntegrity (SEQUENCE) */ |
| /* <===============================================================> */ |
| void Decode_EncryptionAuthenticationAndIntegrity(PS_EncryptionAuthenticationAndIntegrity x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_encryptionCapability = GetBoolean(stream); |
| x->option_of_authenticationCapability = GetBoolean(stream); |
| x->option_of_integrityCapability = GetBoolean(stream); |
| if (x->option_of_encryptionCapability) |
| { |
| Decode_EncryptionCapability(&x->encryptionCapability, stream); |
| } |
| if (x->option_of_authenticationCapability) |
| { |
| Decode_AuthenticationCapability(&x->authenticationCapability, stream); |
| } |
| if (x->option_of_integrityCapability) |
| { |
| Decode_IntegrityCapability(&x->integrityCapability, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EncryptionAuthenticationAndIntegrity: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for EncryptionCapability (SEQUENCE-OF) */ |
| /* <==================================================> */ |
| void Decode_EncryptionCapability(PS_EncryptionCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->item = (PS_MediaEncryptionAlgorithm) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_MediaEncryptionAlgorithm)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_MediaEncryptionAlgorithm(x->item + i, stream); |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for MediaEncryptionAlgorithm (CHOICE) */ |
| /* <=================================================> */ |
| void Decode_MediaEncryptionAlgorithm(PS_MediaEncryptionAlgorithm x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->algorithm = (PS_OBJECTIDENT) OSCL_DEFAULT_MALLOC(sizeof(S_OBJECTIDENT)); |
| GetObjectID(x->algorithm, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MediaEncryptionAlgorithm: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for AuthenticationCapability (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_AuthenticationCapability(PS_AuthenticationCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| Decode_NonStandardParameter(&x->nonStandard, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_AuthenticationCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for IntegrityCapability (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_IntegrityCapability(PS_IntegrityCapability x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| Decode_NonStandardParameter(&x->nonStandard, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IntegrityCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for UserInputCapability (CHOICE) */ |
| /* <============================================> */ |
| void Decode_UserInputCapability(PS_UserInputCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(6, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->size = (uint8) GetInteger(1, 16, stream); |
| x->nonStandard = (PS_NonStandardParameter) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_NonStandardParameter)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_NonStandardParameter(x->nonStandard + i, stream); |
| } |
| break; |
| case 1: |
| /* (basicString is NULL) */ |
| break; |
| case 2: |
| /* (iA5String is NULL) */ |
| break; |
| case 3: |
| /* (generalString is NULL) */ |
| break; |
| case 4: |
| /* (dtmf is NULL) */ |
| break; |
| case 5: |
| /* (hookflash is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_UserInputCapability: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for ConferenceCapability (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_ConferenceCapability(PS_ConferenceCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandardData = GetBoolean(stream); |
| if (x->option_of_nonStandardData) |
| { |
| x->size_of_nonStandardData = (uint16) GetLengthDet(stream); |
| x->nonStandardData = (PS_NonStandardParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_nonStandardData * sizeof(S_NonStandardParameter)); |
| for (i = 0; i < x->size_of_nonStandardData; ++i) |
| { |
| Decode_NonStandardParameter(x->nonStandardData + i, stream); |
| } |
| } |
| x->chairControlCapability = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_VideoIndicateMixingCapability = OFF; |
| x->option_of_multipointVisualizationCapability = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_VideoIndicateMixingCapability = SigMapValue(0, map); |
| if (x->option_of_VideoIndicateMixingCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->VideoIndicateMixingCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_multipointVisualizationCapability = SigMapValue(1, map); |
| if (x->option_of_multipointVisualizationCapability) |
| { |
| ExtensionPrep(map, stream); |
| x->multipointVisualizationCapability = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ConferenceCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for GenericCapability (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_GenericCapability(PS_GenericCapability x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_maxBitRate = GetBoolean(stream); |
| x->option_of_collapsing = GetBoolean(stream); |
| x->option_of_nonCollapsing = GetBoolean(stream); |
| x->option_of_nonCollapsingRaw = GetBoolean(stream); |
| x->option_of_transport = GetBoolean(stream); |
| Decode_CapabilityIdentifier(&x->capabilityIdentifier, stream); |
| if (x->option_of_maxBitRate) |
| { |
| x->maxBitRate = GetInteger(0, 0xffffffff, stream); |
| } |
| if (x->option_of_collapsing) |
| { |
| x->size_of_collapsing = (uint16) GetLengthDet(stream); |
| x->collapsing = (PS_GenericParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_collapsing * sizeof(S_GenericParameter)); |
| for (i = 0; i < x->size_of_collapsing; ++i) |
| { |
| Decode_GenericParameter(x->collapsing + i, stream); |
| } |
| } |
| if (x->option_of_nonCollapsing) |
| { |
| x->size_of_nonCollapsing = (uint16) GetLengthDet(stream); |
| x->nonCollapsing = (PS_GenericParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_nonCollapsing * sizeof(S_GenericParameter)); |
| for (i = 0; i < x->size_of_nonCollapsing; ++i) |
| { |
| Decode_GenericParameter(x->nonCollapsing + i, stream); |
| } |
| } |
| if (x->option_of_nonCollapsingRaw) |
| { |
| GetOctetString(1, 0, 0, &x->nonCollapsingRaw, stream); |
| } |
| if (x->option_of_transport) |
| { |
| Decode_DataProtocolCapability(&x->transport, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_GenericCapability: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for CapabilityIdentifier (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_CapabilityIdentifier(PS_CapabilityIdentifier x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->standard = (PS_OBJECTIDENT) OSCL_DEFAULT_MALLOC(sizeof(S_OBJECTIDENT)); |
| GetObjectID(x->standard, stream); |
| break; |
| case 1: |
| x->h221NonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->h221NonStandard, stream); |
| break; |
| case 2: |
| x->uuid = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 16, 16, x->uuid, stream); |
| break; |
| case 3: |
| x->domainBased = (PS_int8STRING) OSCL_DEFAULT_MALLOC(sizeof(S_int8STRING)); |
| GetCharString("IA5String", 0, 1, 64, NULL, x->domainBased, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CapabilityIdentifier: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for GenericParameter (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_GenericParameter(PS_GenericParameter x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_supersedes = GetBoolean(stream); |
| Decode_ParameterIdentifier(&x->parameterIdentifier, stream); |
| Decode_ParameterValue(&x->parameterValue, stream); |
| if (x->option_of_supersedes) |
| { |
| x->size_of_supersedes = (uint16) GetLengthDet(stream); |
| x->supersedes = (PS_ParameterIdentifier) |
| OSCL_DEFAULT_MALLOC(x->size_of_supersedes * sizeof(S_ParameterIdentifier)); |
| for (i = 0; i < x->size_of_supersedes; ++i) |
| { |
| Decode_ParameterIdentifier(x->supersedes + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_GenericParameter: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for ParameterIdentifier (CHOICE) */ |
| /* <============================================> */ |
| void Decode_ParameterIdentifier(PS_ParameterIdentifier x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->standard = (uint8) GetInteger(0, 127, stream); |
| break; |
| case 1: |
| x->h221NonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->h221NonStandard, stream); |
| break; |
| case 2: |
| x->uuid = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 16, 16, x->uuid, stream); |
| break; |
| case 3: |
| x->domainBased = (PS_int8STRING) OSCL_DEFAULT_MALLOC(sizeof(S_int8STRING)); |
| GetCharString("IA5String", 0, 1, 64, NULL, x->domainBased, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ParameterIdentifier: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for ParameterValue (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_ParameterValue(PS_ParameterValue x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(8, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (logical is NULL) */ |
| break; |
| case 1: |
| x->booleanArray = (uint8) GetInteger(0, 255, stream); |
| break; |
| case 2: |
| x->unsignedMin = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 3: |
| x->unsignedMax = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 4: |
| x->unsigned32Min = GetInteger(0, 0xffffffff, stream); |
| break; |
| case 5: |
| x->unsigned32Max = GetInteger(0, 0xffffffff, stream); |
| break; |
| case 6: |
| x->octetString = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(1, 0, 0, x->octetString, stream); |
| break; |
| case 7: |
| x->size = (uint16) GetLengthDet(stream); |
| x->genericParameter = (PS_GenericParameter) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_GenericParameter)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_GenericParameter(x->genericParameter + i, stream); |
| } |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ParameterValue: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for OpenLogicalChannel (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_OpenLogicalChannel(PS_OpenLogicalChannel x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_reverseLogicalChannelParameters = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_ForwardLogicalChannelParameters(&x->forwardLogicalChannelParameters, stream); |
| if (x->option_of_reverseLogicalChannelParameters) |
| { |
| Decode_ReverseLogicalChannelParameters(&x->reverseLogicalChannelParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_separateStack = OFF; |
| x->option_of_encryptionSync = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_separateStack = SigMapValue(0, map); |
| if (x->option_of_separateStack) |
| { |
| ExtensionPrep(map, stream); |
| Decode_NetworkAccessParameters(&x->separateStack, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_encryptionSync = SigMapValue(1, map); |
| if (x->option_of_encryptionSync) |
| { |
| ExtensionPrep(map, stream); |
| Decode_EncryptionSync(&x->encryptionSync, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_OpenLogicalChannel: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================================> */ |
| /* PER-Decoder for ReverseLogicalChannelParameters (SEQUENCE) */ |
| /* <==========================================================> */ |
| void Decode_ReverseLogicalChannelParameters(PS_ReverseLogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_rlcMultiplexParameters = GetBoolean(stream); |
| Decode_DataType(&x->dataType, stream); |
| if (x->option_of_rlcMultiplexParameters) |
| { |
| Decode_RlcMultiplexParameters(&x->rlcMultiplexParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_reverseLogicalChannelDependency = OFF; |
| x->option_of_replacementFor = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_reverseLogicalChannelDependency = SigMapValue(0, map); |
| if (x->option_of_reverseLogicalChannelDependency) |
| { |
| ExtensionPrep(map, stream); |
| x->reverseLogicalChannelDependency = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_replacementFor = SigMapValue(1, map); |
| if (x->option_of_replacementFor) |
| { |
| ExtensionPrep(map, stream); |
| x->replacementFor = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ReverseLogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for RlcMultiplexParameters (CHOICE) */ |
| /* <===============================================> */ |
| void Decode_RlcMultiplexParameters(PS_RlcMultiplexParameters x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->h223LogicalChannelParameters = (PS_H223LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223LogicalChannelParameters)); |
| Decode_H223LogicalChannelParameters(x->h223LogicalChannelParameters, stream); |
| break; |
| case 1: |
| x->v76LogicalChannelParameters = (PS_V76LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_V76LogicalChannelParameters)); |
| Decode_V76LogicalChannelParameters(x->v76LogicalChannelParameters, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 2: |
| GetLengthDet(stream); |
| x->h2250LogicalChannelParameters = (PS_H2250LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H2250LogicalChannelParameters)); |
| Decode_H2250LogicalChannelParameters(x->h2250LogicalChannelParameters, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_RlcMultiplexParameters: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================================> */ |
| /* PER-Decoder for ForwardLogicalChannelParameters (SEQUENCE) */ |
| /* <==========================================================> */ |
| void Decode_ForwardLogicalChannelParameters(PS_ForwardLogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_portNumber = GetBoolean(stream); |
| if (x->option_of_portNumber) |
| { |
| x->portNumber = (uint16) GetInteger(0, 65535, stream); |
| } |
| Decode_DataType(&x->dataType, stream); |
| Decode_MultiplexParameters(&x->multiplexParameters, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_forwardLogicalChannelDependency = OFF; |
| x->option_of_replacementFor = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_forwardLogicalChannelDependency = SigMapValue(0, map); |
| if (x->option_of_forwardLogicalChannelDependency) |
| { |
| ExtensionPrep(map, stream); |
| x->forwardLogicalChannelDependency = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_replacementFor = SigMapValue(1, map); |
| if (x->option_of_replacementFor) |
| { |
| ExtensionPrep(map, stream); |
| x->replacementFor = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ForwardLogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for MultiplexParameters (CHOICE) */ |
| /* <============================================> */ |
| void Decode_MultiplexParameters(PS_MultiplexParameters x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->h222LogicalChannelParameters = (PS_H222LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H222LogicalChannelParameters)); |
| Decode_H222LogicalChannelParameters(x->h222LogicalChannelParameters, stream); |
| break; |
| case 1: |
| x->h223LogicalChannelParameters = (PS_H223LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223LogicalChannelParameters)); |
| Decode_H223LogicalChannelParameters(x->h223LogicalChannelParameters, stream); |
| break; |
| case 2: |
| x->v76LogicalChannelParameters = (PS_V76LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_V76LogicalChannelParameters)); |
| Decode_V76LogicalChannelParameters(x->v76LogicalChannelParameters, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 3: |
| GetLengthDet(stream); |
| x->h2250LogicalChannelParameters = (PS_H2250LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H2250LogicalChannelParameters)); |
| Decode_H2250LogicalChannelParameters(x->h2250LogicalChannelParameters, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 4: |
| GetLengthDet(stream); |
| /* (none is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MultiplexParameters: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for NetworkAccessParameters (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_NetworkAccessParameters(PS_NetworkAccessParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_distribution = GetBoolean(stream); |
| x->option_of_externalReference = GetBoolean(stream); |
| if (x->option_of_distribution) |
| { |
| Decode_Distribution(&x->distribution, stream); |
| } |
| Decode_NetworkAddress(&x->networkAddress, stream); |
| x->associateConference = GetBoolean(stream); |
| if (x->option_of_externalReference) |
| { |
| GetOctetString(0, 1, 255, &x->externalReference, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_t120SetupProcedure = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_t120SetupProcedure = SigMapValue(0, map); |
| if (x->option_of_t120SetupProcedure) |
| { |
| ExtensionPrep(map, stream); |
| Decode_T120SetupProcedure(&x->t120SetupProcedure, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_NetworkAccessParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for T120SetupProcedure (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_T120SetupProcedure(PS_T120SetupProcedure x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (originateCall is NULL) */ |
| break; |
| case 1: |
| /* (waitForCall is NULL) */ |
| break; |
| case 2: |
| /* (issueQuery is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_T120SetupProcedure: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for NetworkAddress (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_NetworkAddress(PS_NetworkAddress x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->q2931Address = (PS_Q2931Address) OSCL_DEFAULT_MALLOC(sizeof(S_Q2931Address)); |
| Decode_Q2931Address(x->q2931Address, stream); |
| break; |
| case 1: |
| x->e164Address = (PS_int8STRING) OSCL_DEFAULT_MALLOC(sizeof(S_int8STRING)); |
| GetCharString("IA5String(SIZE(1..128))", 0, 1, 128, "0123456789#*,", x->e164Address, stream); |
| break; |
| case 2: |
| x->localAreaAddress = (PS_TransportAddress) OSCL_DEFAULT_MALLOC(sizeof(S_TransportAddress)); |
| Decode_TransportAddress(x->localAreaAddress, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_NetworkAddress: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for Distribution (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_Distribution(PS_Distribution x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unicast is NULL) */ |
| break; |
| case 1: |
| /* (multicast is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Distribution: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for Q2931Address (SEQUENCE) */ |
| /* <=======================================> */ |
| void Decode_Q2931Address(PS_Q2931Address x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_subaddress = GetBoolean(stream); |
| Decode_Address(&x->address, stream); |
| if (x->option_of_subaddress) |
| { |
| GetOctetString(0, 1, 20, &x->subaddress, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Q2931Address: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for Address (CHOICE) */ |
| /* <================================> */ |
| void Decode_Address(PS_Address x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->internationalNumber = (PS_int8STRING) OSCL_DEFAULT_MALLOC(sizeof(S_int8STRING)); |
| GetCharString("NumericString(SIZE(1..16))", 0, 1, 16, NULL, x->internationalNumber, stream); |
| break; |
| case 1: |
| x->nsapAddress = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 1, 20, x->nsapAddress, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Address: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for V75Parameters (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_V75Parameters(PS_V75Parameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->audioHeaderPresent = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V75Parameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for DataType (CHOICE) */ |
| /* <=================================> */ |
| void Decode_DataType(PS_DataType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(6, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (nullData is NULL) */ |
| break; |
| case 2: |
| x->videoData = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->videoData, stream); |
| break; |
| case 3: |
| x->audioData = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->audioData, stream); |
| break; |
| case 4: |
| x->data = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->data, stream); |
| break; |
| case 5: |
| x->encryptionData = (PS_EncryptionMode) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionMode)); |
| Decode_EncryptionMode(x->encryptionData, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 6: |
| GetLengthDet(stream); |
| x->h235Control = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->h235Control, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| x->h235Media = (PS_H235Media) OSCL_DEFAULT_MALLOC(sizeof(S_H235Media)); |
| Decode_H235Media(x->h235Media, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_DataType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for H235Media (SEQUENCE) */ |
| /* <====================================> */ |
| void Decode_H235Media(PS_H235Media x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_EncryptionAuthenticationAndIntegrity(&x->encryptionAuthenticationAndIntegrity, stream); |
| Decode_MediaType(&x->mediaType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H235Media: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for MediaType (CHOICE) */ |
| /* <==================================> */ |
| void Decode_MediaType(PS_MediaType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->videoData = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->videoData, stream); |
| break; |
| case 2: |
| x->audioData = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->audioData, stream); |
| break; |
| case 3: |
| x->data = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->data, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MediaType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for H222LogicalChannelParameters (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_H222LogicalChannelParameters(PS_H222LogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_pcr_pid = GetBoolean(stream); |
| x->option_of_programDescriptors = GetBoolean(stream); |
| x->option_of_streamDescriptors = GetBoolean(stream); |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| x->subChannelID = (uint16) GetInteger(0, 8191, stream); |
| if (x->option_of_pcr_pid) |
| { |
| x->pcr_pid = (uint16) GetInteger(0, 8191, stream); |
| } |
| if (x->option_of_programDescriptors) |
| { |
| GetOctetString(1, 0, 0, &x->programDescriptors, stream); |
| } |
| if (x->option_of_streamDescriptors) |
| { |
| GetOctetString(1, 0, 0, &x->streamDescriptors, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H222LogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for H223LogicalChannelParameters (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_H223LogicalChannelParameters(PS_H223LogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_AdaptationLayerType(&x->adaptationLayerType, stream); |
| x->segmentableFlag = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223LogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for AdaptationLayerType (CHOICE) */ |
| /* <============================================> */ |
| void Decode_AdaptationLayerType(PS_AdaptationLayerType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(6, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (al1Framed is NULL) */ |
| break; |
| case 2: |
| /* (al1NotFramed is NULL) */ |
| break; |
| case 3: |
| /* (al2WithoutSequenceNumbers is NULL) */ |
| break; |
| case 4: |
| /* (al2WithSequenceNumbers is NULL) */ |
| break; |
| case 5: |
| x->al3 = (PS_Al3) OSCL_DEFAULT_MALLOC(sizeof(S_Al3)); |
| Decode_Al3(x->al3, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 6: |
| GetLengthDet(stream); |
| x->al1M = (PS_H223AL1MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL1MParameters)); |
| Decode_H223AL1MParameters(x->al1M, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| x->al2M = (PS_H223AL2MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL2MParameters)); |
| Decode_H223AL2MParameters(x->al2M, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 8: |
| GetLengthDet(stream); |
| x->al3M = (PS_H223AL3MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL3MParameters)); |
| Decode_H223AL3MParameters(x->al3M, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_AdaptationLayerType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================> */ |
| /* PER-Decoder for Al3 (SEQUENCE) */ |
| /* <==============================> */ |
| void Decode_Al3(PS_Al3 x, PS_InStream stream) |
| { |
| x->controlFieldOctets = (uint8) GetInteger(0, 2, stream); |
| x->sendBufferSize = GetInteger(0, 16777215, stream); |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223AL1MParameters (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H223AL1MParameters(PS_H223AL1MParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TransferMode(&x->transferMode, stream); |
| Decode_HeaderFEC(&x->headerFEC, stream); |
| Decode_CrcLength(&x->crcLength, stream); |
| x->rcpcCodeRate = (uint8) GetInteger(8, 32, stream); |
| Decode_ArqType(&x->arqType, stream); |
| x->alpduInterleaving = GetBoolean(stream); |
| x->alsduSplitting = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_rsCodeCorrection = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_rsCodeCorrection = SigMapValue(0, map); |
| if (x->option_of_rsCodeCorrection) |
| { |
| ExtensionPrep(map, stream); |
| x->rsCodeCorrection = (uint8) GetInteger(0, 127, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223AL1MParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for ArqType (CHOICE) */ |
| /* <================================> */ |
| void Decode_ArqType(PS_ArqType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noArq is NULL) */ |
| break; |
| case 1: |
| x->typeIArq = (PS_H223AnnexCArqParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AnnexCArqParameters)); |
| Decode_H223AnnexCArqParameters(x->typeIArq, stream); |
| break; |
| case 2: |
| x->typeIIArq = (PS_H223AnnexCArqParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AnnexCArqParameters)); |
| Decode_H223AnnexCArqParameters(x->typeIIArq, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ArqType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for CrcLength (CHOICE) */ |
| /* <==================================> */ |
| void Decode_CrcLength(PS_CrcLength x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (crc4bit is NULL) */ |
| break; |
| case 1: |
| /* (crc12bit is NULL) */ |
| break; |
| case 2: |
| /* (crc20bit is NULL) */ |
| break; |
| case 3: |
| /* (crc28bit is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 4: |
| GetLengthDet(stream); |
| /* (crc8bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 5: |
| GetLengthDet(stream); |
| /* (crc16bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 6: |
| GetLengthDet(stream); |
| /* (crc32bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| /* (crcNotUsed is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_CrcLength: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for HeaderFEC (CHOICE) */ |
| /* <==================================> */ |
| void Decode_HeaderFEC(PS_HeaderFEC x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (sebch16_7 is NULL) */ |
| break; |
| case 1: |
| /* (golay24_12 is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_HeaderFEC: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for TransferMode (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_TransferMode(PS_TransferMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (framed is NULL) */ |
| break; |
| case 1: |
| /* (unframed is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_TransferMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223AL2MParameters (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H223AL2MParameters(PS_H223AL2MParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Al2HeaderFEC(&x->al2HeaderFEC, stream); |
| x->alpduInterleaving = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223AL2MParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for Al2HeaderFEC (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_Al2HeaderFEC(PS_Al2HeaderFEC x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (sebch16_5 is NULL) */ |
| break; |
| case 1: |
| /* (golay24_12 is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Al2HeaderFEC: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223AL3MParameters (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H223AL3MParameters(PS_H223AL3MParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_HeaderFormat(&x->headerFormat, stream); |
| Decode_Al3CrcLength(&x->al3CrcLength, stream); |
| x->rcpcCodeRate = (uint8) GetInteger(8, 32, stream); |
| Decode_Al3ArqType(&x->al3ArqType, stream); |
| x->alpduInterleaving = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_rsCodeCorrection = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_rsCodeCorrection = SigMapValue(0, map); |
| if (x->option_of_rsCodeCorrection) |
| { |
| ExtensionPrep(map, stream); |
| x->rsCodeCorrection = (uint8) GetInteger(0, 127, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223AL3MParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for Al3ArqType (CHOICE) */ |
| /* <===================================> */ |
| void Decode_Al3ArqType(PS_Al3ArqType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noArq is NULL) */ |
| break; |
| case 1: |
| x->typeIArq = (PS_H223AnnexCArqParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AnnexCArqParameters)); |
| Decode_H223AnnexCArqParameters(x->typeIArq, stream); |
| break; |
| case 2: |
| x->typeIIArq = (PS_H223AnnexCArqParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AnnexCArqParameters)); |
| Decode_H223AnnexCArqParameters(x->typeIIArq, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Al3ArqType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for Al3CrcLength (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_Al3CrcLength(PS_Al3CrcLength x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (crc4bit is NULL) */ |
| break; |
| case 1: |
| /* (crc12bit is NULL) */ |
| break; |
| case 2: |
| /* (crc20bit is NULL) */ |
| break; |
| case 3: |
| /* (crc28bit is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 4: |
| GetLengthDet(stream); |
| /* (crc8bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 5: |
| GetLengthDet(stream); |
| /* (crc16bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 6: |
| GetLengthDet(stream); |
| /* (crc32bit is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| /* (crcNotUsed is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_Al3CrcLength: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for HeaderFormat (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_HeaderFormat(PS_HeaderFormat x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (sebch16_7 is NULL) */ |
| break; |
| case 1: |
| /* (golay24_12 is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_HeaderFormat: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for H223AnnexCArqParameters (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_H223AnnexCArqParameters(PS_H223AnnexCArqParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_NumberOfRetransmissions(&x->numberOfRetransmissions, stream); |
| x->sendBufferSize = GetInteger(0, 16777215, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223AnnexCArqParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for NumberOfRetransmissions (CHOICE) */ |
| /* <================================================> */ |
| void Decode_NumberOfRetransmissions(PS_NumberOfRetransmissions x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->finite = (uint8) GetInteger(0, 16, stream); |
| break; |
| case 1: |
| /* (infinite is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_NumberOfRetransmissions: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for V76LogicalChannelParameters (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_V76LogicalChannelParameters(PS_V76LogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_V76HDLCParameters(&x->hdlcParameters, stream); |
| Decode_SuspendResume(&x->suspendResume, stream); |
| x->uIH = GetBoolean(stream); |
| Decode_Mode(&x->mode, stream); |
| Decode_V75Parameters(&x->v75Parameters, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V76LogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================> */ |
| /* PER-Decoder for Mode (CHOICE) */ |
| /* <=============================> */ |
| void Decode_Mode(PS_Mode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->eRM = (PS_ERM) OSCL_DEFAULT_MALLOC(sizeof(S_ERM)); |
| Decode_ERM(x->eRM, stream); |
| break; |
| case 1: |
| /* (uNERM is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Mode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================> */ |
| /* PER-Decoder for ERM (SEQUENCE) */ |
| /* <==============================> */ |
| void Decode_ERM(PS_ERM x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->windowSize = (uint8) GetInteger(1, 127, stream); |
| Decode_Recovery(&x->recovery, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ERM: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for Recovery (CHOICE) */ |
| /* <=================================> */ |
| void Decode_Recovery(PS_Recovery x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (rej is NULL) */ |
| break; |
| case 1: |
| /* (sREJ is NULL) */ |
| break; |
| case 2: |
| /* (mSREJ is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Recovery: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for SuspendResume (CHOICE) */ |
| /* <======================================> */ |
| void Decode_SuspendResume(PS_SuspendResume x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noSuspendResume is NULL) */ |
| break; |
| case 1: |
| /* (suspendResumewAddress is NULL) */ |
| break; |
| case 2: |
| /* (suspendResumewoAddress is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_SuspendResume: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for V76HDLCParameters (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_V76HDLCParameters(PS_V76HDLCParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_CRCLength(&x->crcLength, stream); |
| x->n401 = (uint16) GetInteger(1, 4095, stream); |
| x->loopbackTestProcedure = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_V76HDLCParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for CRCLength (CHOICE) */ |
| /* <==================================> */ |
| void Decode_CRCLength(PS_CRCLength x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (crc8bit is NULL) */ |
| break; |
| case 1: |
| /* (crc16bit is NULL) */ |
| break; |
| case 2: |
| /* (crc32bit is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CRCLength: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================================> */ |
| /* PER-Decoder for H2250LogicalChannelParameters (SEQUENCE) */ |
| /* <========================================================> */ |
| void Decode_H2250LogicalChannelParameters(PS_H2250LogicalChannelParameters x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| x->option_of_associatedSessionID = GetBoolean(stream); |
| x->option_of_mediaChannel = GetBoolean(stream); |
| x->option_of_mediaGuaranteedDelivery = GetBoolean(stream); |
| x->option_of_mediaControlChannel = GetBoolean(stream); |
| x->option_of_mediaControlGuaranteedDelivery = GetBoolean(stream); |
| x->option_of_silenceSuppression = GetBoolean(stream); |
| x->option_of_destination = GetBoolean(stream); |
| x->option_of_dynamicRTPPayloadType = GetBoolean(stream); |
| x->option_of_mediaPacketization = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| x->size_of_nonStandard = (uint16) GetLengthDet(stream); |
| x->nonStandard = (PS_NonStandardParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_nonStandard * sizeof(S_NonStandardParameter)); |
| for (i = 0; i < x->size_of_nonStandard; ++i) |
| { |
| Decode_NonStandardParameter(x->nonStandard + i, stream); |
| } |
| } |
| x->sessionID = (uint8) GetInteger(0, 255, stream); |
| if (x->option_of_associatedSessionID) |
| { |
| x->associatedSessionID = (uint8) GetInteger(1, 255, stream); |
| } |
| if (x->option_of_mediaChannel) |
| { |
| Decode_TransportAddress(&x->mediaChannel, stream); |
| } |
| if (x->option_of_mediaGuaranteedDelivery) |
| { |
| x->mediaGuaranteedDelivery = GetBoolean(stream); |
| } |
| if (x->option_of_mediaControlChannel) |
| { |
| Decode_TransportAddress(&x->mediaControlChannel, stream); |
| } |
| if (x->option_of_mediaControlGuaranteedDelivery) |
| { |
| x->mediaControlGuaranteedDelivery = GetBoolean(stream); |
| } |
| if (x->option_of_silenceSuppression) |
| { |
| x->silenceSuppression = GetBoolean(stream); |
| } |
| if (x->option_of_destination) |
| { |
| Decode_TerminalLabel(&x->destination, stream); |
| } |
| if (x->option_of_dynamicRTPPayloadType) |
| { |
| x->dynamicRTPPayloadType = (uint8) GetInteger(96, 127, stream); |
| } |
| if (x->option_of_mediaPacketization) |
| { |
| Decode_MediaPacketization(&x->mediaPacketization, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_transportCapability = OFF; |
| x->option_of_redundancyEncoding = OFF; |
| x->option_of_source = OFF; |
| x->option_of_symmetricMediaAddress = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_transportCapability = SigMapValue(0, map); |
| if (x->option_of_transportCapability) |
| { |
| ExtensionPrep(map, stream); |
| Decode_TransportCapability(&x->transportCapability, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_redundancyEncoding = SigMapValue(1, map); |
| if (x->option_of_redundancyEncoding) |
| { |
| ExtensionPrep(map, stream); |
| Decode_RedundancyEncoding(&x->redundancyEncoding, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_source = SigMapValue(2, map); |
| if (x->option_of_source) |
| { |
| ExtensionPrep(map, stream); |
| Decode_TerminalLabel(&x->source, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_symmetricMediaAddress = SigMapValue(3, map); |
| if (x->option_of_symmetricMediaAddress) |
| { |
| ExtensionPrep(map, stream); |
| x->symmetricMediaAddress = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H2250LogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for MediaPacketization (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_MediaPacketization(PS_MediaPacketization x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (h261aVideoPacketization is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 1: |
| GetLengthDet(stream); |
| x->rtpPayloadType = (PS_RTPPayloadType) OSCL_DEFAULT_MALLOC(sizeof(S_RTPPayloadType)); |
| Decode_RTPPayloadType(x->rtpPayloadType, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MediaPacketization: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for RTPPayloadType (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_RTPPayloadType(PS_RTPPayloadType x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_payloadType = GetBoolean(stream); |
| Decode_PayloadDescriptor(&x->payloadDescriptor, stream); |
| if (x->option_of_payloadType) |
| { |
| x->payloadType = (uint8) GetInteger(0, 127, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RTPPayloadType: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for PayloadDescriptor (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_PayloadDescriptor(PS_PayloadDescriptor x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandardIdentifier = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandardIdentifier, stream); |
| break; |
| case 1: |
| x->rfc_number = (uint16) GetExtendedInteger(1, 32768, stream); |
| break; |
| case 2: |
| x->oid = (PS_OBJECTIDENT) OSCL_DEFAULT_MALLOC(sizeof(S_OBJECTIDENT)); |
| GetObjectID(x->oid, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_PayloadDescriptor: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for RedundancyEncoding (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_RedundancyEncoding(PS_RedundancyEncoding x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_secondaryEncoding = GetBoolean(stream); |
| Decode_RedundancyEncodingMethod(&x->redundancyEncodingMethod, stream); |
| if (x->option_of_secondaryEncoding) |
| { |
| Decode_DataType(&x->secondaryEncoding, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RedundancyEncoding: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for TransportAddress (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_TransportAddress(PS_TransportAddress x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->unicastAddress = (PS_UnicastAddress) OSCL_DEFAULT_MALLOC(sizeof(S_UnicastAddress)); |
| Decode_UnicastAddress(x->unicastAddress, stream); |
| break; |
| case 1: |
| x->multicastAddress = (PS_MulticastAddress) OSCL_DEFAULT_MALLOC(sizeof(S_MulticastAddress)); |
| Decode_MulticastAddress(x->multicastAddress, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_TransportAddress: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for UnicastAddress (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_UnicastAddress(PS_UnicastAddress x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->iPAddress = (PS_IPAddress) OSCL_DEFAULT_MALLOC(sizeof(S_IPAddress)); |
| Decode_IPAddress(x->iPAddress, stream); |
| break; |
| case 1: |
| x->iPXAddress = (PS_IPXAddress) OSCL_DEFAULT_MALLOC(sizeof(S_IPXAddress)); |
| Decode_IPXAddress(x->iPXAddress, stream); |
| break; |
| case 2: |
| x->iP6Address = (PS_IP6Address) OSCL_DEFAULT_MALLOC(sizeof(S_IP6Address)); |
| Decode_IP6Address(x->iP6Address, stream); |
| break; |
| case 3: |
| x->netBios = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 16, 16, x->netBios, stream); |
| break; |
| case 4: |
| x->iPSourceRouteAddress = (PS_IPSourceRouteAddress) OSCL_DEFAULT_MALLOC(sizeof(S_IPSourceRouteAddress)); |
| Decode_IPSourceRouteAddress(x->iPSourceRouteAddress, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 5: |
| GetLengthDet(stream); |
| x->nsap = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 1, 20, x->nsap, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 6: |
| GetLengthDet(stream); |
| x->nonStandardAddress = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandardAddress, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_UnicastAddress: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for IPSourceRouteAddress (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_IPSourceRouteAddress(PS_IPSourceRouteAddress x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Routing(&x->routing, stream); |
| GetOctetString(0, 4, 4, &x->network, stream); |
| x->tsapIdentifier = (uint16) GetInteger(0, 65535, stream); |
| x->size_of_route = (uint16) GetLengthDet(stream); |
| x->route = (PS_OCTETSTRING) |
| OSCL_DEFAULT_MALLOC(x->size_of_route * sizeof(S_OCTETSTRING)); |
| for (i = 0; i < x->size_of_route; ++i) |
| { |
| GetOctetString(0, 4, 4, x->route + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IPSourceRouteAddress: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for Routing (CHOICE) */ |
| /* <================================> */ |
| void Decode_Routing(PS_Routing x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (strict is NULL) */ |
| break; |
| case 1: |
| /* (loose is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Routing: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for IP6Address (SEQUENCE) */ |
| /* <=====================================> */ |
| void Decode_IP6Address(PS_IP6Address x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 16, 16, &x->network, stream); |
| x->tsapIdentifier = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IP6Address: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for IPXAddress (SEQUENCE) */ |
| /* <=====================================> */ |
| void Decode_IPXAddress(PS_IPXAddress x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 6, 6, &x->node, stream); |
| GetOctetString(0, 4, 4, &x->netnum, stream); |
| GetOctetString(0, 2, 2, &x->tsapIdentifier, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IPXAddress: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for IPAddress (SEQUENCE) */ |
| /* <====================================> */ |
| void Decode_IPAddress(PS_IPAddress x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 4, 4, &x->network, stream); |
| x->tsapIdentifier = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IPAddress: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for MulticastAddress (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_MulticastAddress(PS_MulticastAddress x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->maIpAddress = (PS_MaIpAddress) OSCL_DEFAULT_MALLOC(sizeof(S_MaIpAddress)); |
| Decode_MaIpAddress(x->maIpAddress, stream); |
| break; |
| case 1: |
| x->maIp6Address = (PS_MaIp6Address) OSCL_DEFAULT_MALLOC(sizeof(S_MaIp6Address)); |
| Decode_MaIp6Address(x->maIp6Address, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 2: |
| GetLengthDet(stream); |
| x->nsap = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(0, 1, 20, x->nsap, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 3: |
| GetLengthDet(stream); |
| x->nonStandardAddress = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandardAddress, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MulticastAddress: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for MaIp6Address (SEQUENCE) */ |
| /* <=======================================> */ |
| void Decode_MaIp6Address(PS_MaIp6Address x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 16, 16, &x->network, stream); |
| x->tsapIdentifier = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaIp6Address: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for MaIpAddress (SEQUENCE) */ |
| /* <======================================> */ |
| void Decode_MaIpAddress(PS_MaIpAddress x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 4, 4, &x->network, stream); |
| x->tsapIdentifier = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaIpAddress: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for EncryptionSync (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_EncryptionSync(PS_EncryptionSync x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| x->option_of_escrowentry = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| Decode_NonStandardParameter(&x->nonStandard, stream); |
| } |
| x->synchFlag = (uint8) GetInteger(0, 255, stream); |
| GetOctetString(0, 1, 65535, &x->h235Key, stream); |
| if (x->option_of_escrowentry) |
| { |
| x->size_of_escrowentry = (uint16) GetInteger(1, 256, stream); |
| x->escrowentry = (PS_EscrowData) |
| OSCL_DEFAULT_MALLOC(x->size_of_escrowentry * sizeof(S_EscrowData)); |
| for (i = 0; i < x->size_of_escrowentry; ++i) |
| { |
| Decode_EscrowData(x->escrowentry + i, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EncryptionSync: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for EscrowData (SEQUENCE) */ |
| /* <=====================================> */ |
| void Decode_EscrowData(PS_EscrowData x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetObjectID(&x->escrowID, stream); |
| GetBitString(0, 1, 65535, &x->escrowValue, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EscrowData: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for OpenLogicalChannelAck (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_OpenLogicalChannelAck(PS_OpenLogicalChannelAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_ackReverseLogicalChannelParameters = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| if (x->option_of_ackReverseLogicalChannelParameters) |
| { |
| Decode_AckReverseLogicalChannelParameters(&x->ackReverseLogicalChannelParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_separateStack = OFF; |
| x->option_of_forwardMultiplexAckParameters = OFF; |
| x->option_of_encryptionSync = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_separateStack = SigMapValue(0, map); |
| if (x->option_of_separateStack) |
| { |
| ExtensionPrep(map, stream); |
| Decode_NetworkAccessParameters(&x->separateStack, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_forwardMultiplexAckParameters = SigMapValue(1, map); |
| if (x->option_of_forwardMultiplexAckParameters) |
| { |
| ExtensionPrep(map, stream); |
| Decode_ForwardMultiplexAckParameters(&x->forwardMultiplexAckParameters, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_encryptionSync = SigMapValue(2, map); |
| if (x->option_of_encryptionSync) |
| { |
| ExtensionPrep(map, stream); |
| Decode_EncryptionSync(&x->encryptionSync, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_OpenLogicalChannelAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for ForwardMultiplexAckParameters (CHOICE) */ |
| /* <======================================================> */ |
| void Decode_ForwardMultiplexAckParameters(PS_ForwardMultiplexAckParameters x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->h2250LogicalChannelAckParameters = (PS_H2250LogicalChannelAckParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H2250LogicalChannelAckParameters)); |
| Decode_H2250LogicalChannelAckParameters(x->h2250LogicalChannelAckParameters, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ForwardMultiplexAckParameters: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================================> */ |
| /* PER-Decoder for AckReverseLogicalChannelParameters (SEQUENCE) */ |
| /* <=============================================================> */ |
| void Decode_AckReverseLogicalChannelParameters(PS_AckReverseLogicalChannelParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_portNumber = GetBoolean(stream); |
| x->option_of_ackMultiplexParameters = GetBoolean(stream); |
| x->reverseLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| if (x->option_of_portNumber) |
| { |
| x->portNumber = (uint16) GetInteger(0, 65535, stream); |
| } |
| if (x->option_of_ackMultiplexParameters) |
| { |
| Decode_AckMultiplexParameters(&x->ackMultiplexParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_replacementFor = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_replacementFor = SigMapValue(0, map); |
| if (x->option_of_replacementFor) |
| { |
| ExtensionPrep(map, stream); |
| x->replacementFor = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_AckReverseLogicalChannelParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for AckMultiplexParameters (CHOICE) */ |
| /* <===============================================> */ |
| void Decode_AckMultiplexParameters(PS_AckMultiplexParameters x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->h222LogicalChannelParameters = (PS_H222LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H222LogicalChannelParameters)); |
| Decode_H222LogicalChannelParameters(x->h222LogicalChannelParameters, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 1: |
| GetLengthDet(stream); |
| x->h2250LogicalChannelParameters = (PS_H2250LogicalChannelParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H2250LogicalChannelParameters)); |
| Decode_H2250LogicalChannelParameters(x->h2250LogicalChannelParameters, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_AckMultiplexParameters: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for OpenLogicalChannelReject (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_OpenLogicalChannelReject(PS_OpenLogicalChannelReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_OlcRejectCause(&x->olcRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_OpenLogicalChannelReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for OlcRejectCause (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_OlcRejectCause(PS_OlcRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(6, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecified is NULL) */ |
| break; |
| case 1: |
| /* (unsuitableReverseParameters is NULL) */ |
| break; |
| case 2: |
| /* (dataTypeNotSupported is NULL) */ |
| break; |
| case 3: |
| /* (dataTypeNotAvailable is NULL) */ |
| break; |
| case 4: |
| /* (unknownDataType is NULL) */ |
| break; |
| case 5: |
| /* (dataTypeALCombinationNotSupported is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 6: |
| GetLengthDet(stream); |
| /* (multicastChannelNotAllowed is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| /* (insufficientBandwidth is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 8: |
| GetLengthDet(stream); |
| /* (separateStackEstablishmentFailed is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 9: |
| GetLengthDet(stream); |
| /* (invalidSessionID is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 10: |
| GetLengthDet(stream); |
| /* (masterSlaveConflict is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| /* (waitForCommunicationMode is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| /* (invalidDependentChannel is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| /* (replacementForRejected is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_OlcRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for OpenLogicalChannelConfirm (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_OpenLogicalChannelConfirm(PS_OpenLogicalChannelConfirm x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_OpenLogicalChannelConfirm: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================================> */ |
| /* PER-Decoder for H2250LogicalChannelAckParameters (SEQUENCE) */ |
| /* <===========================================================> */ |
| void Decode_H2250LogicalChannelAckParameters(PS_H2250LogicalChannelAckParameters x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| x->option_of_sessionID = GetBoolean(stream); |
| x->option_of_mediaChannel = GetBoolean(stream); |
| x->option_of_mediaControlChannel = GetBoolean(stream); |
| x->option_of_dynamicRTPPayloadType = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| x->size_of_nonStandard = (uint16) GetLengthDet(stream); |
| x->nonStandard = (PS_NonStandardParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_nonStandard * sizeof(S_NonStandardParameter)); |
| for (i = 0; i < x->size_of_nonStandard; ++i) |
| { |
| Decode_NonStandardParameter(x->nonStandard + i, stream); |
| } |
| } |
| if (x->option_of_sessionID) |
| { |
| x->sessionID = (uint8) GetInteger(1, 255, stream); |
| } |
| if (x->option_of_mediaChannel) |
| { |
| Decode_TransportAddress(&x->mediaChannel, stream); |
| } |
| if (x->option_of_mediaControlChannel) |
| { |
| Decode_TransportAddress(&x->mediaControlChannel, stream); |
| } |
| if (x->option_of_dynamicRTPPayloadType) |
| { |
| x->dynamicRTPPayloadType = (uint8) GetInteger(96, 127, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_flowControlToZero = OFF; |
| x->option_of_portNumber = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_flowControlToZero = SigMapValue(0, map); |
| if (x->option_of_flowControlToZero) |
| { |
| ExtensionPrep(map, stream); |
| x->flowControlToZero = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_portNumber = SigMapValue(1, map); |
| if (x->option_of_portNumber) |
| { |
| ExtensionPrep(map, stream); |
| x->portNumber = (uint16) GetInteger(0, 65535, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H2250LogicalChannelAckParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for CloseLogicalChannel (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_CloseLogicalChannel(PS_CloseLogicalChannel x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_Source(&x->source, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_reason = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_reason = SigMapValue(0, map); |
| if (x->option_of_reason) |
| { |
| ExtensionPrep(map, stream); |
| Decode_Reason(&x->reason, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CloseLogicalChannel: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for Reason (CHOICE) */ |
| /* <===============================> */ |
| void Decode_Reason(PS_Reason x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unknown is NULL) */ |
| break; |
| case 1: |
| /* (reopen is NULL) */ |
| break; |
| case 2: |
| /* (reservationFailure is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Reason: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for Source (CHOICE) */ |
| /* <===============================> */ |
| void Decode_Source(PS_Source x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (user is NULL) */ |
| break; |
| case 1: |
| /* (lcse is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Source: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for CloseLogicalChannelAck (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_CloseLogicalChannelAck(PS_CloseLogicalChannelAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CloseLogicalChannelAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for RequestChannelClose (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_RequestChannelClose(PS_RequestChannelClose x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_qosCapability = OFF; |
| x->option_of_rccReason = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_qosCapability = SigMapValue(0, map); |
| if (x->option_of_qosCapability) |
| { |
| ExtensionPrep(map, stream); |
| Decode_QOSCapability(&x->qosCapability, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_rccReason = SigMapValue(1, map); |
| if (x->option_of_rccReason) |
| { |
| ExtensionPrep(map, stream); |
| Decode_RccReason(&x->rccReason, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestChannelClose: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for RccReason (CHOICE) */ |
| /* <==================================> */ |
| void Decode_RccReason(PS_RccReason x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unknown is NULL) */ |
| break; |
| case 1: |
| /* (normal is NULL) */ |
| break; |
| case 2: |
| /* (reopen is NULL) */ |
| break; |
| case 3: |
| /* (reservationFailure is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RccReason: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for RequestChannelCloseAck (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_RequestChannelCloseAck(PS_RequestChannelCloseAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestChannelCloseAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for RequestChannelCloseReject (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_RequestChannelCloseReject(PS_RequestChannelCloseReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_RccRejectCause(&x->rccRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestChannelCloseReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for RccRejectCause (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_RccRejectCause(PS_RccRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecified is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RccRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for RequestChannelCloseRelease (SEQUENCE) */ |
| /* <=====================================================> */ |
| void Decode_RequestChannelCloseRelease(PS_RequestChannelCloseRelease x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardLogicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestChannelCloseRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for MultiplexEntrySend (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_MultiplexEntrySend(PS_MultiplexEntrySend x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->size_of_multiplexEntryDescriptors = (uint8) GetInteger(1, 15, stream); |
| x->multiplexEntryDescriptors = (PS_MultiplexEntryDescriptor) |
| OSCL_DEFAULT_MALLOC(x->size_of_multiplexEntryDescriptors * sizeof(S_MultiplexEntryDescriptor)); |
| for (i = 0; i < x->size_of_multiplexEntryDescriptors; ++i) |
| { |
| Decode_MultiplexEntryDescriptor(x->multiplexEntryDescriptors + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultiplexEntrySend: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for MultiplexEntryDescriptor (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_MultiplexEntryDescriptor(PS_MultiplexEntryDescriptor x, PS_InStream stream) |
| { |
| uint16 i; |
| x->option_of_elementList = GetBoolean(stream); |
| x->multiplexTableEntryNumber = (uint8) GetInteger(1, 15, stream); |
| if (x->option_of_elementList) |
| { |
| x->size_of_elementList = (uint16) GetInteger(1, 256, stream); |
| x->elementList = (PS_MultiplexElement) |
| OSCL_DEFAULT_MALLOC(x->size_of_elementList * sizeof(S_MultiplexElement)); |
| for (i = 0; i < x->size_of_elementList; ++i) |
| { |
| Decode_MultiplexElement(x->elementList + i, stream); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for MultiplexElement (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_MultiplexElement(PS_MultiplexElement x, PS_InStream stream) |
| { |
| Decode_MuxType(&x->muxType, stream); |
| Decode_RepeatCount(&x->repeatCount, stream); |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for RepeatCount (CHOICE) */ |
| /* <====================================> */ |
| void Decode_RepeatCount(PS_RepeatCount x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->finite = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| /* (untilClosingFlag is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_RepeatCount: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for MuxType (CHOICE) */ |
| /* <================================> */ |
| void Decode_MuxType(PS_MuxType x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->logicalChannelNumber = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 1: |
| x->size = (uint8) GetInteger(2, 255, stream); |
| x->subElementList = (PS_MultiplexElement) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_MultiplexElement)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_MultiplexElement(x->subElementList + i, stream); |
| } |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_MuxType: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for MultiplexEntrySendAck (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_MultiplexEntrySendAck(PS_MultiplexEntrySendAck x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->size_of_multiplexTableEntryNumber = (uint8) GetInteger(1, 15, stream); |
| x->multiplexTableEntryNumber = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_multiplexTableEntryNumber * sizeof(uint32)); |
| for (i = 0; i < x->size_of_multiplexTableEntryNumber; ++i) |
| { |
| x->multiplexTableEntryNumber[i] = GetInteger(1, 15, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultiplexEntrySendAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for MultiplexEntrySendReject (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_MultiplexEntrySendReject(PS_MultiplexEntrySendReject x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->size_of_rejectionDescriptions = (uint8) GetInteger(1, 15, stream); |
| x->rejectionDescriptions = (PS_MultiplexEntryRejectionDescriptions) |
| OSCL_DEFAULT_MALLOC(x->size_of_rejectionDescriptions * sizeof(S_MultiplexEntryRejectionDescriptions)); |
| for (i = 0; i < x->size_of_rejectionDescriptions; ++i) |
| { |
| Decode_MultiplexEntryRejectionDescriptions(x->rejectionDescriptions + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultiplexEntrySendReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================================> */ |
| /* PER-Decoder for MultiplexEntryRejectionDescriptions (SEQUENCE) */ |
| /* <==============================================================> */ |
| void Decode_MultiplexEntryRejectionDescriptions(PS_MultiplexEntryRejectionDescriptions x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->multiplexTableEntryNumber = (uint8) GetInteger(1, 15, stream); |
| Decode_MeRejectCause(&x->meRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultiplexEntryRejectionDescriptions: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for MeRejectCause (CHOICE) */ |
| /* <======================================> */ |
| void Decode_MeRejectCause(PS_MeRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecifiedCause is NULL) */ |
| break; |
| case 1: |
| /* (descriptorTooComplex is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MeRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for MultiplexEntrySendRelease (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_MultiplexEntrySendRelease(PS_MultiplexEntrySendRelease x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_multiplexTableEntryNumber = (uint8) GetInteger(1, 15, stream); |
| x->multiplexTableEntryNumber = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_multiplexTableEntryNumber * sizeof(uint32)); |
| for (i = 0; i < x->size_of_multiplexTableEntryNumber; ++i) |
| { |
| x->multiplexTableEntryNumber[i] = GetInteger(1, 15, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MultiplexEntrySendRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for RequestMultiplexEntry (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_RequestMultiplexEntry(PS_RequestMultiplexEntry x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_entryNumbers = (uint8) GetInteger(1, 15, stream); |
| x->entryNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_entryNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_entryNumbers; ++i) |
| { |
| x->entryNumbers[i] = GetInteger(1, 15, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMultiplexEntry: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for RequestMultiplexEntryAck (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_RequestMultiplexEntryAck(PS_RequestMultiplexEntryAck x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_entryNumbers = (uint8) GetInteger(1, 15, stream); |
| x->entryNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_entryNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_entryNumbers; ++i) |
| { |
| x->entryNumbers[i] = GetInteger(1, 15, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMultiplexEntryAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for RequestMultiplexEntryReject (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_RequestMultiplexEntryReject(PS_RequestMultiplexEntryReject x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_entryNumbers = (uint8) GetInteger(1, 15, stream); |
| x->entryNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_entryNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_entryNumbers; ++i) |
| { |
| x->entryNumbers[i] = GetInteger(1, 15, stream); |
| } |
| x->size_of_rejectionDescriptions = (uint8) GetInteger(1, 15, stream); |
| x->rejectionDescriptions = (PS_RequestMultiplexEntryRejectionDescriptions) |
| OSCL_DEFAULT_MALLOC(x->size_of_rejectionDescriptions * sizeof(S_RequestMultiplexEntryRejectionDescriptions)); |
| for (i = 0; i < x->size_of_rejectionDescriptions; ++i) |
| { |
| Decode_RequestMultiplexEntryRejectionDescriptions(x->rejectionDescriptions + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMultiplexEntryReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================================================> */ |
| /* PER-Decoder for RequestMultiplexEntryRejectionDescriptions (SEQUENCE) */ |
| /* <=====================================================================> */ |
| void Decode_RequestMultiplexEntryRejectionDescriptions(PS_RequestMultiplexEntryRejectionDescriptions x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->multiplexTableEntryNumber = (uint8) GetInteger(1, 15, stream); |
| Decode_RmeRejectCause(&x->rmeRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMultiplexEntryRejectionDescriptions: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for RmeRejectCause (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_RmeRejectCause(PS_RmeRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecifiedCause is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RmeRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for RequestMultiplexEntryRelease (SEQUENCE) */ |
| /* <=======================================================> */ |
| void Decode_RequestMultiplexEntryRelease(PS_RequestMultiplexEntryRelease x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_entryNumbers = (uint8) GetInteger(1, 15, stream); |
| x->entryNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_entryNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_entryNumbers; ++i) |
| { |
| x->entryNumbers[i] = GetInteger(1, 15, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMultiplexEntryRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for RequestMode (SEQUENCE) */ |
| /* <======================================> */ |
| void Decode_RequestMode(PS_RequestMode x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->size_of_requestedModes = (uint16) GetInteger(1, 256, stream); |
| x->requestedModes = (PS_ModeDescription) |
| OSCL_DEFAULT_MALLOC(x->size_of_requestedModes * sizeof(S_ModeDescription)); |
| for (i = 0; i < x->size_of_requestedModes; ++i) |
| { |
| Decode_ModeDescription(x->requestedModes + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for RequestModeAck (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_RequestModeAck(PS_RequestModeAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| Decode_Response(&x->response, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestModeAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for Response (CHOICE) */ |
| /* <=================================> */ |
| void Decode_Response(PS_Response x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (willTransmitMostPreferredMode is NULL) */ |
| break; |
| case 1: |
| /* (willTransmitLessPreferredMode is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Response: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for RequestModeReject (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_RequestModeReject(PS_RequestModeReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| Decode_RmRejectCause(&x->rmRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestModeReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for RmRejectCause (CHOICE) */ |
| /* <======================================> */ |
| void Decode_RmRejectCause(PS_RmRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (modeUnavailable is NULL) */ |
| break; |
| case 1: |
| /* (multipointConstraint is NULL) */ |
| break; |
| case 2: |
| /* (requestDenied is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RmRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for RequestModeRelease (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_RequestModeRelease(PS_RequestModeRelease x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestModeRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for ModeDescription (SET-OF) */ |
| /* <========================================> */ |
| void Decode_ModeDescription(PS_ModeDescription x, PS_InStream stream) |
| { |
| uint16 i; |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->item = (PS_ModeElement) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_ModeElement)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_ModeElement(x->item + i, stream); |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for ModeElement (SEQUENCE) */ |
| /* <======================================> */ |
| void Decode_ModeElement(PS_ModeElement x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_h223ModeParameters = GetBoolean(stream); |
| Decode_ModeType(&x->modeType, stream); |
| if (x->option_of_h223ModeParameters) |
| { |
| Decode_H223ModeParameters(&x->h223ModeParameters, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_v76ModeParameters = OFF; |
| x->option_of_h2250ModeParameters = OFF; |
| x->option_of_genericModeParameters = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_v76ModeParameters = SigMapValue(0, map); |
| if (x->option_of_v76ModeParameters) |
| { |
| ExtensionPrep(map, stream); |
| Decode_V76ModeParameters(&x->v76ModeParameters, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_h2250ModeParameters = SigMapValue(1, map); |
| if (x->option_of_h2250ModeParameters) |
| { |
| ExtensionPrep(map, stream); |
| Decode_H2250ModeParameters(&x->h2250ModeParameters, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_genericModeParameters = SigMapValue(2, map); |
| if (x->option_of_genericModeParameters) |
| { |
| ExtensionPrep(map, stream); |
| Decode_GenericCapability(&x->genericModeParameters, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ModeElement: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for ModeType (CHOICE) */ |
| /* <=================================> */ |
| void Decode_ModeType(PS_ModeType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->videoMode = (PS_VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_VideoMode)); |
| Decode_VideoMode(x->videoMode, stream); |
| break; |
| case 2: |
| x->audioMode = (PS_AudioMode) OSCL_DEFAULT_MALLOC(sizeof(S_AudioMode)); |
| Decode_AudioMode(x->audioMode, stream); |
| break; |
| case 3: |
| x->dataMode = (PS_DataMode) OSCL_DEFAULT_MALLOC(sizeof(S_DataMode)); |
| Decode_DataMode(x->dataMode, stream); |
| break; |
| case 4: |
| x->encryptionMode = (PS_EncryptionMode) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionMode)); |
| Decode_EncryptionMode(x->encryptionMode, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 5: |
| GetLengthDet(stream); |
| x->h235Mode = (PS_H235Mode) OSCL_DEFAULT_MALLOC(sizeof(S_H235Mode)); |
| Decode_H235Mode(x->h235Mode, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ModeType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for H235Mode (SEQUENCE) */ |
| /* <===================================> */ |
| void Decode_H235Mode(PS_H235Mode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_EncryptionAuthenticationAndIntegrity(&x->encryptionAuthenticationAndIntegrity, stream); |
| Decode_MediaMode(&x->mediaMode, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H235Mode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for MediaMode (CHOICE) */ |
| /* <==================================> */ |
| void Decode_MediaMode(PS_MediaMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->videoMode = (PS_VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_VideoMode)); |
| Decode_VideoMode(x->videoMode, stream); |
| break; |
| case 2: |
| x->audioMode = (PS_AudioMode) OSCL_DEFAULT_MALLOC(sizeof(S_AudioMode)); |
| Decode_AudioMode(x->audioMode, stream); |
| break; |
| case 3: |
| x->dataMode = (PS_DataMode) OSCL_DEFAULT_MALLOC(sizeof(S_DataMode)); |
| Decode_DataMode(x->dataMode, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MediaMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223ModeParameters (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H223ModeParameters(PS_H223ModeParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_ModeAdaptationLayerType(&x->modeAdaptationLayerType, stream); |
| x->segmentableFlag = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223ModeParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for ModeAdaptationLayerType (CHOICE) */ |
| /* <================================================> */ |
| void Decode_ModeAdaptationLayerType(PS_ModeAdaptationLayerType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(6, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (al1Framed is NULL) */ |
| break; |
| case 2: |
| /* (al1NotFramed is NULL) */ |
| break; |
| case 3: |
| /* (al2WithoutSequenceNumbers is NULL) */ |
| break; |
| case 4: |
| /* (al2WithSequenceNumbers is NULL) */ |
| break; |
| case 5: |
| x->modeAl3 = (PS_ModeAl3) OSCL_DEFAULT_MALLOC(sizeof(S_ModeAl3)); |
| Decode_ModeAl3(x->modeAl3, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 6: |
| GetLengthDet(stream); |
| x->al1M = (PS_H223AL1MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL1MParameters)); |
| Decode_H223AL1MParameters(x->al1M, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 7: |
| GetLengthDet(stream); |
| x->al2M = (PS_H223AL2MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL2MParameters)); |
| Decode_H223AL2MParameters(x->al2M, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 8: |
| GetLengthDet(stream); |
| x->al3M = (PS_H223AL3MParameters) OSCL_DEFAULT_MALLOC(sizeof(S_H223AL3MParameters)); |
| Decode_H223AL3MParameters(x->al3M, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ModeAdaptationLayerType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for ModeAl3 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_ModeAl3(PS_ModeAl3 x, PS_InStream stream) |
| { |
| x->controlFieldOctets = (uint8) GetInteger(0, 2, stream); |
| x->sendBufferSize = GetInteger(0, 16777215, stream); |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for V76ModeParameters (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_V76ModeParameters(PS_V76ModeParameters x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (suspendResumewAddress is NULL) */ |
| break; |
| case 1: |
| /* (suspendResumewoAddress is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_V76ModeParameters: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for H2250ModeParameters (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_H2250ModeParameters(PS_H2250ModeParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_redundancyEncodingMode = GetBoolean(stream); |
| if (x->option_of_redundancyEncodingMode) |
| { |
| Decode_RedundancyEncodingMode(&x->redundancyEncodingMode, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H2250ModeParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for RedundancyEncodingMode (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_RedundancyEncodingMode(PS_RedundancyEncodingMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_secondaryEncoding = GetBoolean(stream); |
| Decode_RedundancyEncodingMethod(&x->redundancyEncodingMethod, stream); |
| if (x->option_of_secondaryEncoding) |
| { |
| Decode_SecondaryEncoding(&x->secondaryEncoding, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RedundancyEncodingMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for SecondaryEncoding (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_SecondaryEncoding(PS_SecondaryEncoding x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->audioData = (PS_AudioMode) OSCL_DEFAULT_MALLOC(sizeof(S_AudioMode)); |
| Decode_AudioMode(x->audioData, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_SecondaryEncoding: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for VideoMode (CHOICE) */ |
| /* <==================================> */ |
| void Decode_VideoMode(PS_VideoMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->h261VideoMode = (PS_H261VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_H261VideoMode)); |
| Decode_H261VideoMode(x->h261VideoMode, stream); |
| break; |
| case 2: |
| x->h262VideoMode = (PS_H262VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_H262VideoMode)); |
| Decode_H262VideoMode(x->h262VideoMode, stream); |
| break; |
| case 3: |
| x->h263VideoMode = (PS_H263VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_H263VideoMode)); |
| Decode_H263VideoMode(x->h263VideoMode, stream); |
| break; |
| case 4: |
| x->is11172VideoMode = (PS_IS11172VideoMode) OSCL_DEFAULT_MALLOC(sizeof(S_IS11172VideoMode)); |
| Decode_IS11172VideoMode(x->is11172VideoMode, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 5: |
| GetLengthDet(stream); |
| x->genericVideoMode = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericVideoMode, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_VideoMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for H261VideoMode (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_H261VideoMode(PS_H261VideoMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Resolution(&x->resolution, stream); |
| x->bitRate = (uint16) GetInteger(1, 19200, stream); |
| x->stillImageTransmission = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H261VideoMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for Resolution (CHOICE) */ |
| /* <===================================> */ |
| void Decode_Resolution(PS_Resolution x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (qcif is NULL) */ |
| break; |
| case 1: |
| /* (cif is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Resolution: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for H262VideoMode (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_H262VideoMode(PS_H262VideoMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_videoBitRate = GetBoolean(stream); |
| x->option_of_vbvBufferSize = GetBoolean(stream); |
| x->option_of_samplesPerLine = GetBoolean(stream); |
| x->option_of_linesPerFrame = GetBoolean(stream); |
| x->option_of_framesPerSecond = GetBoolean(stream); |
| x->option_of_luminanceSampleRate = GetBoolean(stream); |
| Decode_ProfileAndLevel(&x->profileAndLevel, stream); |
| if (x->option_of_videoBitRate) |
| { |
| x->videoBitRate = GetInteger(0, 1073741823, stream); |
| } |
| if (x->option_of_vbvBufferSize) |
| { |
| x->vbvBufferSize = GetInteger(0, 262143, stream); |
| } |
| if (x->option_of_samplesPerLine) |
| { |
| x->samplesPerLine = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_linesPerFrame) |
| { |
| x->linesPerFrame = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_framesPerSecond) |
| { |
| x->framesPerSecond = (uint8) GetInteger(0, 15, stream); |
| } |
| if (x->option_of_luminanceSampleRate) |
| { |
| x->luminanceSampleRate = GetInteger(0, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H262VideoMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for ProfileAndLevel (CHOICE) */ |
| /* <========================================> */ |
| void Decode_ProfileAndLevel(PS_ProfileAndLevel x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(11, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (profileAndLevel_SPatML is NULL) */ |
| break; |
| case 1: |
| /* (profileAndLevel_MPatLL is NULL) */ |
| break; |
| case 2: |
| /* (profileAndLevel_MPatML is NULL) */ |
| break; |
| case 3: |
| /* (profileAndLevel_MPatH_14 is NULL) */ |
| break; |
| case 4: |
| /* (profileAndLevel_MPatHL is NULL) */ |
| break; |
| case 5: |
| /* (profileAndLevel_SNRatLL is NULL) */ |
| break; |
| case 6: |
| /* (profileAndLevel_SNRatML is NULL) */ |
| break; |
| case 7: |
| /* (profileAndLevel_SpatialatH_14 is NULL) */ |
| break; |
| case 8: |
| /* (profileAndLevel_HPatML is NULL) */ |
| break; |
| case 9: |
| /* (profileAndLevel_HPatH_14 is NULL) */ |
| break; |
| case 10: |
| /* (profileAndLevel_HPatHL is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ProfileAndLevel: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for H263VideoMode (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_H263VideoMode(PS_H263VideoMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_H263Resolution(&x->h263Resolution, stream); |
| x->bitRate = (uint16) GetInteger(1, 19200, stream); |
| x->unrestrictedVector = GetBoolean(stream); |
| x->arithmeticCoding = GetBoolean(stream); |
| x->advancedPrediction = GetBoolean(stream); |
| x->pbFrames = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_errorCompensation = OFF; |
| x->option_of_enhancementLayerInfo = OFF; |
| x->option_of_h263Options = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_errorCompensation = SigMapValue(0, map); |
| if (x->option_of_errorCompensation) |
| { |
| ExtensionPrep(map, stream); |
| x->errorCompensation = GetBoolean(stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_enhancementLayerInfo = SigMapValue(1, map); |
| if (x->option_of_enhancementLayerInfo) |
| { |
| ExtensionPrep(map, stream); |
| Decode_EnhancementLayerInfo(&x->enhancementLayerInfo, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_h263Options = SigMapValue(2, map); |
| if (x->option_of_h263Options) |
| { |
| ExtensionPrep(map, stream); |
| Decode_H263Options(&x->h263Options, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H263VideoMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for H263Resolution (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_H263Resolution(PS_H263Resolution x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (sqcif is NULL) */ |
| break; |
| case 1: |
| /* (qcif is NULL) */ |
| break; |
| case 2: |
| /* (cif is NULL) */ |
| break; |
| case 3: |
| /* (cif4 is NULL) */ |
| break; |
| case 4: |
| /* (cif16 is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_H263Resolution: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for IS11172VideoMode (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_IS11172VideoMode(PS_IS11172VideoMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_videoBitRate = GetBoolean(stream); |
| x->option_of_vbvBufferSize = GetBoolean(stream); |
| x->option_of_samplesPerLine = GetBoolean(stream); |
| x->option_of_linesPerFrame = GetBoolean(stream); |
| x->option_of_pictureRate = GetBoolean(stream); |
| x->option_of_luminanceSampleRate = GetBoolean(stream); |
| x->constrainedBitstream = GetBoolean(stream); |
| if (x->option_of_videoBitRate) |
| { |
| x->videoBitRate = GetInteger(0, 1073741823, stream); |
| } |
| if (x->option_of_vbvBufferSize) |
| { |
| x->vbvBufferSize = GetInteger(0, 262143, stream); |
| } |
| if (x->option_of_samplesPerLine) |
| { |
| x->samplesPerLine = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_linesPerFrame) |
| { |
| x->linesPerFrame = (uint16) GetInteger(0, 16383, stream); |
| } |
| if (x->option_of_pictureRate) |
| { |
| x->pictureRate = (uint8) GetInteger(0, 15, stream); |
| } |
| if (x->option_of_luminanceSampleRate) |
| { |
| x->luminanceSampleRate = GetInteger(0, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS11172VideoMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for AudioMode (CHOICE) */ |
| /* <==================================> */ |
| void Decode_AudioMode(PS_AudioMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(14, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (g711Alaw64k is NULL) */ |
| break; |
| case 2: |
| /* (g711Alaw56k is NULL) */ |
| break; |
| case 3: |
| /* (g711Ulaw64k is NULL) */ |
| break; |
| case 4: |
| /* (g711Ulaw56k is NULL) */ |
| break; |
| case 5: |
| /* (g722_64k is NULL) */ |
| break; |
| case 6: |
| /* (g722_56k is NULL) */ |
| break; |
| case 7: |
| /* (g722_48k is NULL) */ |
| break; |
| case 8: |
| /* (g728 is NULL) */ |
| break; |
| case 9: |
| /* (g729 is NULL) */ |
| break; |
| case 10: |
| /* (g729AnnexA is NULL) */ |
| break; |
| case 11: |
| x->modeG7231 = (PS_ModeG7231) OSCL_DEFAULT_MALLOC(sizeof(S_ModeG7231)); |
| Decode_ModeG7231(x->modeG7231, stream); |
| break; |
| case 12: |
| x->is11172AudioMode = (PS_IS11172AudioMode) OSCL_DEFAULT_MALLOC(sizeof(S_IS11172AudioMode)); |
| Decode_IS11172AudioMode(x->is11172AudioMode, stream); |
| break; |
| case 13: |
| x->is13818AudioMode = (PS_IS13818AudioMode) OSCL_DEFAULT_MALLOC(sizeof(S_IS13818AudioMode)); |
| Decode_IS13818AudioMode(x->is13818AudioMode, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 14: |
| GetLengthDet(stream); |
| x->g729wAnnexB = (uint16) GetInteger(1, 256, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->g729AnnexAwAnnexB = (uint16) GetInteger(1, 256, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 16: |
| GetLengthDet(stream); |
| x->g7231AnnexCMode = (PS_G7231AnnexCMode) OSCL_DEFAULT_MALLOC(sizeof(S_G7231AnnexCMode)); |
| Decode_G7231AnnexCMode(x->g7231AnnexCMode, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 17: |
| GetLengthDet(stream); |
| x->gsmFullRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmFullRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 18: |
| GetLengthDet(stream); |
| x->gsmHalfRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmHalfRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 19: |
| GetLengthDet(stream); |
| x->gsmEnhancedFullRate = (PS_GSMAudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GSMAudioCapability)); |
| Decode_GSMAudioCapability(x->gsmEnhancedFullRate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 20: |
| GetLengthDet(stream); |
| x->genericAudioMode = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericAudioMode, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 21: |
| GetLengthDet(stream); |
| x->g729Extensions = (PS_G729Extensions) OSCL_DEFAULT_MALLOC(sizeof(S_G729Extensions)); |
| Decode_G729Extensions(x->g729Extensions, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_AudioMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for ModeG7231 (CHOICE) */ |
| /* <==================================> */ |
| void Decode_ModeG7231(PS_ModeG7231 x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noSilenceSuppressionLowRate is NULL) */ |
| break; |
| case 1: |
| /* (noSilenceSuppressionHighRate is NULL) */ |
| break; |
| case 2: |
| /* (silenceSuppressionLowRate is NULL) */ |
| break; |
| case 3: |
| /* (silenceSuppressionHighRate is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_ModeG7231: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for IS11172AudioMode (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_IS11172AudioMode(PS_IS11172AudioMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_AudioLayer(&x->audioLayer, stream); |
| Decode_AudioSampling(&x->audioSampling, stream); |
| Decode_MultichannelType(&x->multichannelType, stream); |
| x->bitRate = (uint16) GetInteger(1, 448, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS11172AudioMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for MultichannelType (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_MultichannelType(PS_MultichannelType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (singleChannel is NULL) */ |
| break; |
| case 1: |
| /* (twoChannelStereo is NULL) */ |
| break; |
| case 2: |
| /* (twoChannelDual is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_MultichannelType: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for AudioSampling (CHOICE) */ |
| /* <======================================> */ |
| void Decode_AudioSampling(PS_AudioSampling x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (audioSampling32k is NULL) */ |
| break; |
| case 1: |
| /* (audioSampling44k1 is NULL) */ |
| break; |
| case 2: |
| /* (audioSampling48k is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_AudioSampling: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for AudioLayer (CHOICE) */ |
| /* <===================================> */ |
| void Decode_AudioLayer(PS_AudioLayer x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (audioLayer1 is NULL) */ |
| break; |
| case 1: |
| /* (audioLayer2 is NULL) */ |
| break; |
| case 2: |
| /* (audioLayer3 is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_AudioLayer: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for IS13818AudioMode (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_IS13818AudioMode(PS_IS13818AudioMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_Is13818AudioLayer(&x->is13818AudioLayer, stream); |
| Decode_Is13818AudioSampling(&x->is13818AudioSampling, stream); |
| Decode_Is13818MultichannelType(&x->is13818MultichannelType, stream); |
| x->lowFrequencyEnhancement = GetBoolean(stream); |
| x->multilingual = GetBoolean(stream); |
| x->bitRate = (uint16) GetInteger(1, 1130, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IS13818AudioMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for Is13818MultichannelType (CHOICE) */ |
| /* <================================================> */ |
| void Decode_Is13818MultichannelType(PS_Is13818MultichannelType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (singleChannel is NULL) */ |
| break; |
| case 1: |
| /* (twoChannelStereo is NULL) */ |
| break; |
| case 2: |
| /* (twoChannelDual is NULL) */ |
| break; |
| case 3: |
| /* (threeChannels2_1 is NULL) */ |
| break; |
| case 4: |
| /* (threeChannels3_0 is NULL) */ |
| break; |
| case 5: |
| /* (fourChannels2_0_2_0 is NULL) */ |
| break; |
| case 6: |
| /* (fourChannels2_2 is NULL) */ |
| break; |
| case 7: |
| /* (fourChannels3_1 is NULL) */ |
| break; |
| case 8: |
| /* (fiveChannels3_0_2_0 is NULL) */ |
| break; |
| case 9: |
| /* (fiveChannels3_2 is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Is13818MultichannelType: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for Is13818AudioSampling (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_Is13818AudioSampling(PS_Is13818AudioSampling x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(6, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (audioSampling16k is NULL) */ |
| break; |
| case 1: |
| /* (audioSampling22k05 is NULL) */ |
| break; |
| case 2: |
| /* (audioSampling24k is NULL) */ |
| break; |
| case 3: |
| /* (audioSampling32k is NULL) */ |
| break; |
| case 4: |
| /* (audioSampling44k1 is NULL) */ |
| break; |
| case 5: |
| /* (audioSampling48k is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Is13818AudioSampling: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for Is13818AudioLayer (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_Is13818AudioLayer(PS_Is13818AudioLayer x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (audioLayer1 is NULL) */ |
| break; |
| case 1: |
| /* (audioLayer2 is NULL) */ |
| break; |
| case 2: |
| /* (audioLayer3 is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_Is13818AudioLayer: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for G7231AnnexCMode (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_G7231AnnexCMode(PS_G7231AnnexCMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maxAl_sduAudioFrames = (uint16) GetInteger(1, 256, stream); |
| x->silenceSuppression = GetBoolean(stream); |
| Decode_ModeG723AnnexCAudioMode(&x->modeG723AnnexCAudioMode, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_G7231AnnexCMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for ModeG723AnnexCAudioMode (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_ModeG723AnnexCAudioMode(PS_ModeG723AnnexCAudioMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->highRateMode0 = (uint8) GetInteger(27, 78, stream); |
| x->highRateMode1 = (uint8) GetInteger(27, 78, stream); |
| x->lowRateMode0 = (uint8) GetInteger(23, 66, stream); |
| x->lowRateMode1 = (uint8) GetInteger(23, 66, stream); |
| x->sidMode0 = (uint8) GetInteger(6, 17, stream); |
| x->sidMode1 = (uint8) GetInteger(6, 17, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ModeG723AnnexCAudioMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for DataMode (SEQUENCE) */ |
| /* <===================================> */ |
| void Decode_DataMode(PS_DataMode x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_DmApplication(&x->dmApplication, stream); |
| x->bitRate = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_DataMode: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for DmApplication (CHOICE) */ |
| /* <======================================> */ |
| void Decode_DmApplication(PS_DmApplication x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->t120 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t120, stream); |
| break; |
| case 2: |
| x->dsm_cc = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->dsm_cc, stream); |
| break; |
| case 3: |
| x->userData = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->userData, stream); |
| break; |
| case 4: |
| x->t84 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t84, stream); |
| break; |
| case 5: |
| x->t434 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t434, stream); |
| break; |
| case 6: |
| x->h224 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->h224, stream); |
| break; |
| case 7: |
| x->dmNlpid = (PS_DmNlpid) OSCL_DEFAULT_MALLOC(sizeof(S_DmNlpid)); |
| Decode_DmNlpid(x->dmNlpid, stream); |
| break; |
| case 8: |
| /* (dsvdControl is NULL) */ |
| break; |
| case 9: |
| x->h222DataPartitioning = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->h222DataPartitioning, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 10: |
| GetLengthDet(stream); |
| x->t30fax = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t30fax, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->t140 = (PS_DataProtocolCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataProtocolCapability)); |
| Decode_DataProtocolCapability(x->t140, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->dmT38fax = (PS_DmT38fax) OSCL_DEFAULT_MALLOC(sizeof(S_DmT38fax)); |
| Decode_DmT38fax(x->dmT38fax, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->genericDataMode = (PS_GenericCapability) OSCL_DEFAULT_MALLOC(sizeof(S_GenericCapability)); |
| Decode_GenericCapability(x->genericDataMode, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_DmApplication: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for DmT38fax (SEQUENCE) */ |
| /* <===================================> */ |
| void Decode_DmT38fax(PS_DmT38fax x, PS_InStream stream) |
| { |
| Decode_DataProtocolCapability(&x->t38FaxProtocol, stream); |
| Decode_T38FaxProfile(&x->t38FaxProfile, stream); |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for DmNlpid (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_DmNlpid(PS_DmNlpid x, PS_InStream stream) |
| { |
| Decode_DataProtocolCapability(&x->nlpidProtocol, stream); |
| GetOctetString(1, 0, 0, &x->nlpidData, stream); |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for EncryptionMode (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_EncryptionMode(PS_EncryptionMode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (h233Encryption is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_EncryptionMode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for RoundTripDelayRequest (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_RoundTripDelayRequest(PS_RoundTripDelayRequest x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RoundTripDelayRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for RoundTripDelayResponse (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_RoundTripDelayResponse(PS_RoundTripDelayResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RoundTripDelayResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================================> */ |
| /* PER-Decoder for MaintenanceLoopRequest (SEQUENCE) */ |
| /* <=================================================> */ |
| void Decode_MaintenanceLoopRequest(PS_MaintenanceLoopRequest x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_MlRequestType(&x->mlRequestType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaintenanceLoopRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for MlRequestType (CHOICE) */ |
| /* <======================================> */ |
| void Decode_MlRequestType(PS_MlRequestType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (systemLoop is NULL) */ |
| break; |
| case 1: |
| x->mediaLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 2: |
| x->logicalChannelLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MlRequestType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for MaintenanceLoopAck (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_MaintenanceLoopAck(PS_MaintenanceLoopAck x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_MlAckType(&x->mlAckType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaintenanceLoopAck: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for MlAckType (CHOICE) */ |
| /* <==================================> */ |
| void Decode_MlAckType(PS_MlAckType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (systemLoop is NULL) */ |
| break; |
| case 1: |
| x->mediaLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 2: |
| x->logicalChannelLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MlAckType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for MaintenanceLoopReject (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_MaintenanceLoopReject(PS_MaintenanceLoopReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_MlRejectType(&x->mlRejectType, stream); |
| Decode_MlRejectCause(&x->mlRejectCause, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaintenanceLoopReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================> */ |
| /* PER-Decoder for MlRejectCause (CHOICE) */ |
| /* <======================================> */ |
| void Decode_MlRejectCause(PS_MlRejectCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (canNotPerformLoop is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MlRejectCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for MlRejectType (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_MlRejectType(PS_MlRejectType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (systemLoop is NULL) */ |
| break; |
| case 1: |
| x->mediaLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 2: |
| x->logicalChannelLoop = (uint16) GetInteger(1, 65535, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MlRejectType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for MaintenanceLoopOffCommand (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_MaintenanceLoopOffCommand(PS_MaintenanceLoopOffCommand x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaintenanceLoopOffCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for CommunicationModeCommand (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_CommunicationModeCommand(PS_CommunicationModeCommand x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_communicationModeTable = (uint16) GetInteger(1, 256, stream); |
| x->communicationModeTable = (PS_CommunicationModeTableEntry) |
| OSCL_DEFAULT_MALLOC(x->size_of_communicationModeTable * sizeof(S_CommunicationModeTableEntry)); |
| for (i = 0; i < x->size_of_communicationModeTable; ++i) |
| { |
| Decode_CommunicationModeTableEntry(x->communicationModeTable + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CommunicationModeCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for CommunicationModeRequest (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_CommunicationModeRequest(PS_CommunicationModeRequest x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CommunicationModeRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for CommunicationModeResponse (CHOICE) */ |
| /* <==================================================> */ |
| void Decode_CommunicationModeResponse(PS_CommunicationModeResponse x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(1, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->communicationModeTable = (PS_CommunicationModeTableEntry) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_CommunicationModeTableEntry)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_CommunicationModeTableEntry(x->communicationModeTable + i, stream); |
| } |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CommunicationModeResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for CommunicationModeTableEntry (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_CommunicationModeTableEntry(PS_CommunicationModeTableEntry x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_nonStandard = GetBoolean(stream); |
| x->option_of_associatedSessionID = GetBoolean(stream); |
| x->option_of_terminalLabel = GetBoolean(stream); |
| x->option_of_mediaChannel = GetBoolean(stream); |
| x->option_of_mediaGuaranteedDelivery = GetBoolean(stream); |
| x->option_of_mediaControlChannel = GetBoolean(stream); |
| x->option_of_mediaControlGuaranteedDelivery = GetBoolean(stream); |
| if (x->option_of_nonStandard) |
| { |
| x->size_of_nonStandard = (uint16) GetLengthDet(stream); |
| x->nonStandard = (PS_NonStandardParameter) |
| OSCL_DEFAULT_MALLOC(x->size_of_nonStandard * sizeof(S_NonStandardParameter)); |
| for (i = 0; i < x->size_of_nonStandard; ++i) |
| { |
| Decode_NonStandardParameter(x->nonStandard + i, stream); |
| } |
| } |
| x->sessionID = (uint8) GetInteger(1, 255, stream); |
| if (x->option_of_associatedSessionID) |
| { |
| x->associatedSessionID = (uint8) GetInteger(1, 255, stream); |
| } |
| if (x->option_of_terminalLabel) |
| { |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| } |
| GetCharString("BMPString", 0, 1, 128, NULL, &x->sessionDescription, stream); |
| Decode_CmtDataType(&x->cmtDataType, stream); |
| if (x->option_of_mediaChannel) |
| { |
| Decode_TransportAddress(&x->mediaChannel, stream); |
| } |
| if (x->option_of_mediaGuaranteedDelivery) |
| { |
| x->mediaGuaranteedDelivery = GetBoolean(stream); |
| } |
| if (x->option_of_mediaControlChannel) |
| { |
| Decode_TransportAddress(&x->mediaControlChannel, stream); |
| } |
| if (x->option_of_mediaControlGuaranteedDelivery) |
| { |
| x->mediaControlGuaranteedDelivery = GetBoolean(stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_redundancyEncoding = OFF; |
| x->option_of_sessionDependency = OFF; |
| x->option_of_destination = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_redundancyEncoding = SigMapValue(0, map); |
| if (x->option_of_redundancyEncoding) |
| { |
| ExtensionPrep(map, stream); |
| Decode_RedundancyEncoding(&x->redundancyEncoding, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_sessionDependency = SigMapValue(1, map); |
| if (x->option_of_sessionDependency) |
| { |
| ExtensionPrep(map, stream); |
| x->sessionDependency = (uint8) GetInteger(1, 255, stream); |
| ReadRemainingBits(stream); |
| } |
| x->option_of_destination = SigMapValue(2, map); |
| if (x->option_of_destination) |
| { |
| ExtensionPrep(map, stream); |
| Decode_TerminalLabel(&x->destination, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CommunicationModeTableEntry: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for CmtDataType (CHOICE) */ |
| /* <====================================> */ |
| void Decode_CmtDataType(PS_CmtDataType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->videoData = (PS_VideoCapability) OSCL_DEFAULT_MALLOC(sizeof(S_VideoCapability)); |
| Decode_VideoCapability(x->videoData, stream); |
| break; |
| case 1: |
| x->audioData = (PS_AudioCapability) OSCL_DEFAULT_MALLOC(sizeof(S_AudioCapability)); |
| Decode_AudioCapability(x->audioData, stream); |
| break; |
| case 2: |
| x->data = (PS_DataApplicationCapability) OSCL_DEFAULT_MALLOC(sizeof(S_DataApplicationCapability)); |
| Decode_DataApplicationCapability(x->data, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CmtDataType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for ConferenceRequest (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_ConferenceRequest(PS_ConferenceRequest x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(8, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (terminalListRequest is NULL) */ |
| break; |
| case 1: |
| /* (makeMeChair is NULL) */ |
| break; |
| case 2: |
| /* (cancelMakeMeChair is NULL) */ |
| break; |
| case 3: |
| x->dropTerminal = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->dropTerminal, stream); |
| break; |
| case 4: |
| x->requestTerminalID = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->requestTerminalID, stream); |
| break; |
| case 5: |
| /* (enterH243Password is NULL) */ |
| break; |
| case 6: |
| /* (enterH243TerminalID is NULL) */ |
| break; |
| case 7: |
| /* (enterH243ConferenceID is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 8: |
| GetLengthDet(stream); |
| /* (enterExtensionAddress is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 9: |
| GetLengthDet(stream); |
| /* (requestChairTokenOwner is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 10: |
| GetLengthDet(stream); |
| x->requestTerminalCertificate = (PS_RequestTerminalCertificate) OSCL_DEFAULT_MALLOC(sizeof(S_RequestTerminalCertificate)); |
| Decode_RequestTerminalCertificate(x->requestTerminalCertificate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->broadcastMyLogicalChannel = (uint16) GetInteger(1, 65535, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->makeTerminalBroadcaster = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->makeTerminalBroadcaster, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->sendThisSource = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->sendThisSource, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 14: |
| GetLengthDet(stream); |
| /* (requestAllTerminalIDs is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->remoteMCRequest = (PS_RemoteMCRequest) OSCL_DEFAULT_MALLOC(sizeof(S_RemoteMCRequest)); |
| Decode_RemoteMCRequest(x->remoteMCRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ConferenceRequest: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for RequestTerminalCertificate (SEQUENCE) */ |
| /* <=====================================================> */ |
| void Decode_RequestTerminalCertificate(PS_RequestTerminalCertificate x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_terminalLabel = GetBoolean(stream); |
| x->option_of_certSelectionCriteria = GetBoolean(stream); |
| x->option_of_sRandom = GetBoolean(stream); |
| if (x->option_of_terminalLabel) |
| { |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| } |
| if (x->option_of_certSelectionCriteria) |
| { |
| Decode_CertSelectionCriteria(&x->certSelectionCriteria, stream); |
| } |
| if (x->option_of_sRandom) |
| { |
| x->sRandom = GetInteger(1, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestTerminalCertificate: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for CertSelectionCriteria (SEQUENCE-OF) */ |
| /* <===================================================> */ |
| void Decode_CertSelectionCriteria(PS_CertSelectionCriteria x, PS_InStream stream) |
| { |
| uint16 i; |
| x->size = (uint8) GetInteger(1, 16, stream); |
| x->item = (PS_Criteria) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_Criteria)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_Criteria(x->item + i, stream); |
| } |
| } |
| |
| /* <===================================> */ |
| /* PER-Decoder for Criteria (SEQUENCE) */ |
| /* <===================================> */ |
| void Decode_Criteria(PS_Criteria x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetObjectID(&x->field, stream); |
| GetOctetString(0, 1, 65535, &x->value, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Criteria: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for TerminalLabel (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_TerminalLabel(PS_TerminalLabel x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->mcuNumber = (uint8) GetInteger(0, 192, stream); |
| x->terminalNumber = (uint8) GetInteger(0, 192, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalLabel: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for ConferenceResponse (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_ConferenceResponse(PS_ConferenceResponse x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(8, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->mCTerminalIDResponse = (PS_MCTerminalIDResponse) OSCL_DEFAULT_MALLOC(sizeof(S_MCTerminalIDResponse)); |
| Decode_MCTerminalIDResponse(x->mCTerminalIDResponse, stream); |
| break; |
| case 1: |
| x->terminalIDResponse = (PS_TerminalIDResponse) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalIDResponse)); |
| Decode_TerminalIDResponse(x->terminalIDResponse, stream); |
| break; |
| case 2: |
| x->conferenceIDResponse = (PS_ConferenceIDResponse) OSCL_DEFAULT_MALLOC(sizeof(S_ConferenceIDResponse)); |
| Decode_ConferenceIDResponse(x->conferenceIDResponse, stream); |
| break; |
| case 3: |
| x->passwordResponse = (PS_PasswordResponse) OSCL_DEFAULT_MALLOC(sizeof(S_PasswordResponse)); |
| Decode_PasswordResponse(x->passwordResponse, stream); |
| break; |
| case 4: |
| x->size = (uint16) GetInteger(1, 256, stream); |
| x->terminalListResponse = (PS_TerminalLabel) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_TerminalLabel)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_TerminalLabel(x->terminalListResponse + i, stream); |
| } |
| break; |
| case 5: |
| /* (videoCommandReject is NULL) */ |
| break; |
| case 6: |
| /* (terminalDropReject is NULL) */ |
| break; |
| case 7: |
| x->makeMeChairResponse = (PS_MakeMeChairResponse) OSCL_DEFAULT_MALLOC(sizeof(S_MakeMeChairResponse)); |
| Decode_MakeMeChairResponse(x->makeMeChairResponse, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 8: |
| GetLengthDet(stream); |
| x->extensionAddressResponse = (PS_ExtensionAddressResponse) OSCL_DEFAULT_MALLOC(sizeof(S_ExtensionAddressResponse)); |
| Decode_ExtensionAddressResponse(x->extensionAddressResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 9: |
| GetLengthDet(stream); |
| x->chairTokenOwnerResponse = (PS_ChairTokenOwnerResponse) OSCL_DEFAULT_MALLOC(sizeof(S_ChairTokenOwnerResponse)); |
| Decode_ChairTokenOwnerResponse(x->chairTokenOwnerResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 10: |
| GetLengthDet(stream); |
| x->terminalCertificateResponse = (PS_TerminalCertificateResponse) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalCertificateResponse)); |
| Decode_TerminalCertificateResponse(x->terminalCertificateResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->broadcastMyLogicalChannelResponse = (PS_BroadcastMyLogicalChannelResponse) OSCL_DEFAULT_MALLOC(sizeof(S_BroadcastMyLogicalChannelResponse)); |
| Decode_BroadcastMyLogicalChannelResponse(x->broadcastMyLogicalChannelResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->makeTerminalBroadcasterResponse = (PS_MakeTerminalBroadcasterResponse) OSCL_DEFAULT_MALLOC(sizeof(S_MakeTerminalBroadcasterResponse)); |
| Decode_MakeTerminalBroadcasterResponse(x->makeTerminalBroadcasterResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->sendThisSourceResponse = (PS_SendThisSourceResponse) OSCL_DEFAULT_MALLOC(sizeof(S_SendThisSourceResponse)); |
| Decode_SendThisSourceResponse(x->sendThisSourceResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 14: |
| GetLengthDet(stream); |
| x->requestAllTerminalIDsResponse = (PS_RequestAllTerminalIDsResponse) OSCL_DEFAULT_MALLOC(sizeof(S_RequestAllTerminalIDsResponse)); |
| Decode_RequestAllTerminalIDsResponse(x->requestAllTerminalIDsResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| x->remoteMCResponse = (PS_RemoteMCResponse) OSCL_DEFAULT_MALLOC(sizeof(S_RemoteMCResponse)); |
| Decode_RemoteMCResponse(x->remoteMCResponse, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ConferenceResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for SendThisSourceResponse (CHOICE) */ |
| /* <===============================================> */ |
| void Decode_SendThisSourceResponse(PS_SendThisSourceResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (grantedSendThisSource is NULL) */ |
| break; |
| case 1: |
| /* (deniedSendThisSource is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_SendThisSourceResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================================> */ |
| /* PER-Decoder for MakeTerminalBroadcasterResponse (CHOICE) */ |
| /* <========================================================> */ |
| void Decode_MakeTerminalBroadcasterResponse(PS_MakeTerminalBroadcasterResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (grantedMakeTerminalBroadcaster is NULL) */ |
| break; |
| case 1: |
| /* (deniedMakeTerminalBroadcaster is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MakeTerminalBroadcasterResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================================> */ |
| /* PER-Decoder for BroadcastMyLogicalChannelResponse (CHOICE) */ |
| /* <==========================================================> */ |
| void Decode_BroadcastMyLogicalChannelResponse(PS_BroadcastMyLogicalChannelResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (grantedBroadcastMyLogicalChannel is NULL) */ |
| break; |
| case 1: |
| /* (deniedBroadcastMyLogicalChannel is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_BroadcastMyLogicalChannelResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for TerminalCertificateResponse (SEQUENCE) */ |
| /* <======================================================> */ |
| void Decode_TerminalCertificateResponse(PS_TerminalCertificateResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_terminalLabel = GetBoolean(stream); |
| x->option_of_certificateResponse = GetBoolean(stream); |
| if (x->option_of_terminalLabel) |
| { |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| } |
| if (x->option_of_certificateResponse) |
| { |
| GetOctetString(0, 1, 65535, &x->certificateResponse, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalCertificateResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for ChairTokenOwnerResponse (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_ChairTokenOwnerResponse(PS_ChairTokenOwnerResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 128, &x->terminalID, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ChairTokenOwnerResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for ExtensionAddressResponse (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_ExtensionAddressResponse(PS_ExtensionAddressResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 1, 128, &x->extensionAddress, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ExtensionAddressResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for MakeMeChairResponse (CHOICE) */ |
| /* <============================================> */ |
| void Decode_MakeMeChairResponse(PS_MakeMeChairResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (grantedChairToken is NULL) */ |
| break; |
| case 1: |
| /* (deniedChairToken is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MakeMeChairResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for PasswordResponse (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_PasswordResponse(PS_PasswordResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 32, &x->password, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_PasswordResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for ConferenceIDResponse (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_ConferenceIDResponse(PS_ConferenceIDResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 32, &x->conferenceID, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ConferenceIDResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for TerminalIDResponse (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_TerminalIDResponse(PS_TerminalIDResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 128, &x->terminalID, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalIDResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for MCTerminalIDResponse (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_MCTerminalIDResponse(PS_MCTerminalIDResponse x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 128, &x->terminalID, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MCTerminalIDResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================================> */ |
| /* PER-Decoder for RequestAllTerminalIDsResponse (SEQUENCE) */ |
| /* <========================================================> */ |
| void Decode_RequestAllTerminalIDsResponse(PS_RequestAllTerminalIDsResponse x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->size_of_terminalInformation = (uint16) GetLengthDet(stream); |
| x->terminalInformation = (PS_TerminalInformation) |
| OSCL_DEFAULT_MALLOC(x->size_of_terminalInformation * sizeof(S_TerminalInformation)); |
| for (i = 0; i < x->size_of_terminalInformation; ++i) |
| { |
| Decode_TerminalInformation(x->terminalInformation + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RequestAllTerminalIDsResponse: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for TerminalInformation (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_TerminalInformation(PS_TerminalInformation x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TerminalLabel(&x->terminalLabel, stream); |
| GetOctetString(0, 1, 128, &x->terminalID, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalInformation: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for RemoteMCRequest (CHOICE) */ |
| /* <========================================> */ |
| void Decode_RemoteMCRequest(PS_RemoteMCRequest x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (masterActivate is NULL) */ |
| break; |
| case 1: |
| /* (slaveActivate is NULL) */ |
| break; |
| case 2: |
| /* (deActivate is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RemoteMCRequest: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for RemoteMCResponse (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_RemoteMCResponse(PS_RemoteMCResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (accept is NULL) */ |
| break; |
| case 1: |
| x->reject = (PS_Reject) OSCL_DEFAULT_MALLOC(sizeof(S_Reject)); |
| Decode_Reject(x->reject, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RemoteMCResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for Reject (CHOICE) */ |
| /* <===============================> */ |
| void Decode_Reject(PS_Reject x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (unspecified is NULL) */ |
| break; |
| case 1: |
| /* (functionNotSupported is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Reject: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for MultilinkRequest (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_MultilinkRequest(PS_MultilinkRequest x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->callInformation = (PS_CallInformation) OSCL_DEFAULT_MALLOC(sizeof(S_CallInformation)); |
| Decode_CallInformation(x->callInformation, stream); |
| break; |
| case 2: |
| x->addConnection = (PS_AddConnection) OSCL_DEFAULT_MALLOC(sizeof(S_AddConnection)); |
| Decode_AddConnection(x->addConnection, stream); |
| break; |
| case 3: |
| x->removeConnection = (PS_RemoveConnection) OSCL_DEFAULT_MALLOC(sizeof(S_RemoveConnection)); |
| Decode_RemoveConnection(x->removeConnection, stream); |
| break; |
| case 4: |
| x->maximumHeaderInterval = (PS_MaximumHeaderInterval) OSCL_DEFAULT_MALLOC(sizeof(S_MaximumHeaderInterval)); |
| Decode_MaximumHeaderInterval(x->maximumHeaderInterval, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MultilinkRequest: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for MaximumHeaderInterval (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_MaximumHeaderInterval(PS_MaximumHeaderInterval x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_RequestType(&x->requestType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MaximumHeaderInterval: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for RequestType (CHOICE) */ |
| /* <====================================> */ |
| void Decode_RequestType(PS_RequestType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (currentIntervalInformation is NULL) */ |
| break; |
| case 1: |
| x->requestedInterval = (uint16) GetInteger(0, 65535, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_RequestType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for RemoveConnection (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_RemoveConnection(PS_RemoveConnection x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_ConnectionIdentifier(&x->connectionIdentifier, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RemoveConnection: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================> */ |
| /* PER-Decoder for AddConnection (SEQUENCE) */ |
| /* <========================================> */ |
| void Decode_AddConnection(PS_AddConnection x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| Decode_DialingInformation(&x->dialingInformation, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_AddConnection: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for CallInformation (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_CallInformation(PS_CallInformation x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->maxNumberOfAdditionalConnections = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CallInformation: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for MultilinkResponse (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_MultilinkResponse(PS_MultilinkResponse x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->respCallInformation = (PS_RespCallInformation) OSCL_DEFAULT_MALLOC(sizeof(S_RespCallInformation)); |
| Decode_RespCallInformation(x->respCallInformation, stream); |
| break; |
| case 2: |
| x->respAddConnection = (PS_RespAddConnection) OSCL_DEFAULT_MALLOC(sizeof(S_RespAddConnection)); |
| Decode_RespAddConnection(x->respAddConnection, stream); |
| break; |
| case 3: |
| x->respRemoveConnection = (PS_RespRemoveConnection) OSCL_DEFAULT_MALLOC(sizeof(S_RespRemoveConnection)); |
| Decode_RespRemoveConnection(x->respRemoveConnection, stream); |
| break; |
| case 4: |
| x->respMaximumHeaderInterval = (PS_RespMaximumHeaderInterval) OSCL_DEFAULT_MALLOC(sizeof(S_RespMaximumHeaderInterval)); |
| Decode_RespMaximumHeaderInterval(x->respMaximumHeaderInterval, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MultilinkResponse: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for RespMaximumHeaderInterval (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_RespMaximumHeaderInterval(PS_RespMaximumHeaderInterval x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->currentInterval = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RespMaximumHeaderInterval: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for RespRemoveConnection (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_RespRemoveConnection(PS_RespRemoveConnection x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_ConnectionIdentifier(&x->connectionIdentifier, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RespRemoveConnection: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for RespAddConnection (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_RespAddConnection(PS_RespAddConnection x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| Decode_ResponseCode(&x->responseCode, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RespAddConnection: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for ResponseCode (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_ResponseCode(PS_ResponseCode x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (accepted is NULL) */ |
| break; |
| case 1: |
| x->rejected = (PS_Rejected) OSCL_DEFAULT_MALLOC(sizeof(S_Rejected)); |
| Decode_Rejected(x->rejected, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_ResponseCode: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for Rejected (CHOICE) */ |
| /* <=================================> */ |
| void Decode_Rejected(PS_Rejected x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (connectionsNotAvailable is NULL) */ |
| break; |
| case 1: |
| /* (userRejected is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Rejected: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for RespCallInformation (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_RespCallInformation(PS_RespCallInformation x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_DialingInformation(&x->dialingInformation, stream); |
| x->callAssociationNumber = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_RespCallInformation: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for MultilinkIndication (CHOICE) */ |
| /* <============================================> */ |
| void Decode_MultilinkIndication(PS_MultilinkIndication x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->crcDesired = (PS_CrcDesired) OSCL_DEFAULT_MALLOC(sizeof(S_CrcDesired)); |
| Decode_CrcDesired(x->crcDesired, stream); |
| break; |
| case 2: |
| x->excessiveError = (PS_ExcessiveError) OSCL_DEFAULT_MALLOC(sizeof(S_ExcessiveError)); |
| Decode_ExcessiveError(x->excessiveError, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_MultilinkIndication: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for ExcessiveError (SEQUENCE) */ |
| /* <=========================================> */ |
| void Decode_ExcessiveError(PS_ExcessiveError x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_ConnectionIdentifier(&x->connectionIdentifier, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ExcessiveError: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for CrcDesired (SEQUENCE) */ |
| /* <=====================================> */ |
| void Decode_CrcDesired(PS_CrcDesired x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CrcDesired: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for DialingInformation (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_DialingInformation(PS_DialingInformation x, PS_InStream stream) |
| { |
| uint16 i; |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| x->size = (uint16) GetInteger(1, 65535, stream); |
| x->differential = (PS_DialingInformationNumber) |
| OSCL_DEFAULT_MALLOC(x->size * sizeof(S_DialingInformationNumber)); |
| for (i = 0; i < x->size; ++i) |
| { |
| Decode_DialingInformationNumber(x->differential + i, stream); |
| } |
| break; |
| case 2: |
| x->infoNotAvailable = (uint16) GetInteger(1, 65535, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_DialingInformation: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for DialingInformationNumber (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_DialingInformationNumber(PS_DialingInformationNumber x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_subAddress = GetBoolean(stream); |
| GetCharString("NumericString", 0, 0, 40, NULL, &x->networkAddress, stream); |
| if (x->option_of_subAddress) |
| { |
| GetCharString("IA5String", 0, 1, 40, NULL, &x->subAddress, stream); |
| } |
| x->size_of_networkType = (uint8) GetInteger(1, 255, stream); |
| x->networkType = (PS_DialingInformationNetworkType) |
| OSCL_DEFAULT_MALLOC(x->size_of_networkType * sizeof(S_DialingInformationNetworkType)); |
| for (i = 0; i < x->size_of_networkType; ++i) |
| { |
| Decode_DialingInformationNetworkType(x->networkType + i, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_DialingInformationNumber: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <======================================================> */ |
| /* PER-Decoder for DialingInformationNetworkType (CHOICE) */ |
| /* <======================================================> */ |
| void Decode_DialingInformationNetworkType(PS_DialingInformationNetworkType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardMessage) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardMessage)); |
| Decode_NonStandardMessage(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (n_isdn is NULL) */ |
| break; |
| case 2: |
| /* (gstn is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_DialingInformationNetworkType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for ConnectionIdentifier (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_ConnectionIdentifier(PS_ConnectionIdentifier x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->channelTag = GetInteger(0, 0xffffffff, stream); |
| x->sequenceNumber = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ConnectionIdentifier: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for LogicalChannelRateRequest (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_LogicalChannelRateRequest(PS_LogicalChannelRateRequest x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| x->maximumBitRate = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_LogicalChannelRateRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <========================================================> */ |
| /* PER-Decoder for LogicalChannelRateAcknowledge (SEQUENCE) */ |
| /* <========================================================> */ |
| void Decode_LogicalChannelRateAcknowledge(PS_LogicalChannelRateAcknowledge x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| x->maximumBitRate = GetInteger(0, 0xffffffff, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_LogicalChannelRateAcknowledge: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for LogicalChannelRateReject (SEQUENCE) */ |
| /* <===================================================> */ |
| void Decode_LogicalChannelRateReject(PS_LogicalChannelRateReject x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_currentMaximumBitRate = GetBoolean(stream); |
| x->sequenceNumber = (uint8) GetInteger(0, 255, stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_LogicalChannelRateRejectReason(&x->rejectReason, stream); |
| if (x->option_of_currentMaximumBitRate) |
| { |
| x->currentMaximumBitRate = GetInteger(0, 0xffffffff, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_LogicalChannelRateReject: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================================> */ |
| /* PER-Decoder for LogicalChannelRateRejectReason (CHOICE) */ |
| /* <=======================================================> */ |
| void Decode_LogicalChannelRateRejectReason(PS_LogicalChannelRateRejectReason x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (undefinedReason is NULL) */ |
| break; |
| case 1: |
| /* (insufficientResources is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_LogicalChannelRateRejectReason: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================================> */ |
| /* PER-Decoder for LogicalChannelRateRelease (SEQUENCE) */ |
| /* <====================================================> */ |
| void Decode_LogicalChannelRateRelease(PS_LogicalChannelRateRelease x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| OSCL_UNUSED_ARG(x); |
| |
| extension = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_LogicalChannelRateRelease: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for SendTerminalCapabilitySet (CHOICE) */ |
| /* <==================================================> */ |
| void Decode_SendTerminalCapabilitySet(PS_SendTerminalCapabilitySet x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->specificRequest = (PS_SpecificRequest) OSCL_DEFAULT_MALLOC(sizeof(S_SpecificRequest)); |
| Decode_SpecificRequest(x->specificRequest, stream); |
| break; |
| case 1: |
| /* (genericRequest is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_SendTerminalCapabilitySet: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for SpecificRequest (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_SpecificRequest(PS_SpecificRequest x, PS_InStream stream) |
| { |
| uint16 i; |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_capabilityTableEntryNumbers = GetBoolean(stream); |
| x->option_of_capabilityDescriptorNumbers = GetBoolean(stream); |
| x->multiplexCapability = GetBoolean(stream); |
| if (x->option_of_capabilityTableEntryNumbers) |
| { |
| x->size_of_capabilityTableEntryNumbers = (uint16) GetInteger(1, 65535, stream); |
| x->capabilityTableEntryNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_capabilityTableEntryNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_capabilityTableEntryNumbers; ++i) |
| { |
| x->capabilityTableEntryNumbers[i] = GetInteger(1, 65535, stream); |
| } |
| } |
| if (x->option_of_capabilityDescriptorNumbers) |
| { |
| x->size_of_capabilityDescriptorNumbers = (uint16) GetInteger(1, 256, stream); |
| x->capabilityDescriptorNumbers = (uint32*) OSCL_DEFAULT_MALLOC(x->size_of_capabilityDescriptorNumbers * sizeof(uint32)); |
| for (i = 0; i < x->size_of_capabilityDescriptorNumbers; ++i) |
| { |
| x->capabilityDescriptorNumbers[i] = GetInteger(0, 255, stream); |
| } |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_SpecificRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for EncryptionCommand (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_EncryptionCommand(PS_EncryptionCommand x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->encryptionSE = (PS_OCTETSTRING) OSCL_DEFAULT_MALLOC(sizeof(S_OCTETSTRING)); |
| GetOctetString(1, 0, 0, x->encryptionSE, stream); |
| break; |
| case 1: |
| /* (encryptionIVRequest is NULL) */ |
| break; |
| case 2: |
| x->encryptionAlgorithmID = (PS_EncryptionAlgorithmID) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionAlgorithmID)); |
| Decode_EncryptionAlgorithmID(x->encryptionAlgorithmID, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_EncryptionCommand: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for EncryptionAlgorithmID (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_EncryptionAlgorithmID(PS_EncryptionAlgorithmID x, PS_InStream stream) |
| { |
| x->h233AlgorithmIdentifier = (uint8) GetInteger(0, 255, stream); |
| Decode_NonStandardParameter(&x->associatedAlgorithm, stream); |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for FlowControlCommand (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_FlowControlCommand(PS_FlowControlCommand x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_FccScope(&x->fccScope, stream); |
| Decode_FccRestriction(&x->fccRestriction, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_FlowControlCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for FccRestriction (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_FccRestriction(PS_FccRestriction x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->maximumBitRate = GetInteger(0, 16777215, stream); |
| break; |
| case 1: |
| /* (noRestriction is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_FccRestriction: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for FccScope (CHOICE) */ |
| /* <=================================> */ |
| void Decode_FccScope(PS_FccScope x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 2: |
| /* (wholeMultiplex is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_FccScope: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for EndSessionCommand (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_EndSessionCommand(PS_EndSessionCommand x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (disconnect is NULL) */ |
| break; |
| case 2: |
| x->gstnOptions = (PS_GstnOptions) OSCL_DEFAULT_MALLOC(sizeof(S_GstnOptions)); |
| Decode_GstnOptions(x->gstnOptions, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 3: |
| GetLengthDet(stream); |
| x->isdnOptions = (PS_IsdnOptions) OSCL_DEFAULT_MALLOC(sizeof(S_IsdnOptions)); |
| Decode_IsdnOptions(x->isdnOptions, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_EndSessionCommand: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for IsdnOptions (CHOICE) */ |
| /* <====================================> */ |
| void Decode_IsdnOptions(PS_IsdnOptions x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (telephonyMode is NULL) */ |
| break; |
| case 1: |
| /* (v140 is NULL) */ |
| break; |
| case 2: |
| /* (terminalOnHold is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IsdnOptions: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for GstnOptions (CHOICE) */ |
| /* <====================================> */ |
| void Decode_GstnOptions(PS_GstnOptions x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(5, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (telephonyMode is NULL) */ |
| break; |
| case 1: |
| /* (v8bis is NULL) */ |
| break; |
| case 2: |
| /* (v34DSVD is NULL) */ |
| break; |
| case 3: |
| /* (v34DuplexFAX is NULL) */ |
| break; |
| case 4: |
| /* (v34H324 is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_GstnOptions: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for ConferenceCommand (CHOICE) */ |
| /* <==========================================> */ |
| void Decode_ConferenceCommand(PS_ConferenceCommand x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(7, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->broadcastMyLogicalChannel = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| x->cancelBroadcastMyLogicalChannel = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 2: |
| x->makeTerminalBroadcaster = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->makeTerminalBroadcaster, stream); |
| break; |
| case 3: |
| /* (cancelMakeTerminalBroadcaster is NULL) */ |
| break; |
| case 4: |
| x->sendThisSource = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->sendThisSource, stream); |
| break; |
| case 5: |
| /* (cancelSendThisSource is NULL) */ |
| break; |
| case 6: |
| /* (dropConference is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 7: |
| GetLengthDet(stream); |
| x->substituteConferenceIDCommand = (PS_SubstituteConferenceIDCommand) OSCL_DEFAULT_MALLOC(sizeof(S_SubstituteConferenceIDCommand)); |
| Decode_SubstituteConferenceIDCommand(x->substituteConferenceIDCommand, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ConferenceCommand: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <========================================================> */ |
| /* PER-Decoder for SubstituteConferenceIDCommand (SEQUENCE) */ |
| /* <========================================================> */ |
| void Decode_SubstituteConferenceIDCommand(PS_SubstituteConferenceIDCommand x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| GetOctetString(0, 16, 16, &x->conferenceIdentifier, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_SubstituteConferenceIDCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for MiscellaneousCommand (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_MiscellaneousCommand(PS_MiscellaneousCommand x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_McType(&x->mcType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MiscellaneousCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for McType (CHOICE) */ |
| /* <===============================> */ |
| void Decode_McType(PS_McType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (equaliseDelay is NULL) */ |
| break; |
| case 1: |
| /* (zeroDelay is NULL) */ |
| break; |
| case 2: |
| /* (multipointModeCommand is NULL) */ |
| break; |
| case 3: |
| /* (cancelMultipointModeCommand is NULL) */ |
| break; |
| case 4: |
| /* (videoFreezePicture is NULL) */ |
| break; |
| case 5: |
| /* (videoFastUpdatePicture is NULL) */ |
| break; |
| case 6: |
| x->videoFastUpdateGOB = (PS_VideoFastUpdateGOB) OSCL_DEFAULT_MALLOC(sizeof(S_VideoFastUpdateGOB)); |
| Decode_VideoFastUpdateGOB(x->videoFastUpdateGOB, stream); |
| break; |
| case 7: |
| x->videoTemporalSpatialTradeOff = (uint8) GetInteger(0, 31, stream); |
| break; |
| case 8: |
| /* (videoSendSyncEveryGOB is NULL) */ |
| break; |
| case 9: |
| /* (videoSendSyncEveryGOBCancel is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 10: |
| GetLengthDet(stream); |
| x->videoFastUpdateMB = (PS_VideoFastUpdateMB) OSCL_DEFAULT_MALLOC(sizeof(S_VideoFastUpdateMB)); |
| Decode_VideoFastUpdateMB(x->videoFastUpdateMB, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->maxH223MUXPDUsize = (uint16) GetInteger(1, (uint16) 65535, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->encryptionUpdate = (PS_EncryptionSync) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionSync)); |
| Decode_EncryptionSync(x->encryptionUpdate, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->encryptionUpdateRequest = (PS_EncryptionUpdateRequest) OSCL_DEFAULT_MALLOC(sizeof(S_EncryptionUpdateRequest)); |
| Decode_EncryptionUpdateRequest(x->encryptionUpdateRequest, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 14: |
| GetLengthDet(stream); |
| /* (switchReceiveMediaOff is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 15: |
| GetLengthDet(stream); |
| /* (switchReceiveMediaOn is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 16: |
| GetLengthDet(stream); |
| x->progressiveRefinementStart = (PS_ProgressiveRefinementStart) OSCL_DEFAULT_MALLOC(sizeof(S_ProgressiveRefinementStart)); |
| Decode_ProgressiveRefinementStart(x->progressiveRefinementStart, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 17: |
| GetLengthDet(stream); |
| /* (progressiveRefinementAbortOne is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 18: |
| GetLengthDet(stream); |
| /* (progressiveRefinementAbortContinuous is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| default: |
| ErrorMessage("Decode_McType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for ProgressiveRefinementStart (SEQUENCE) */ |
| /* <=====================================================> */ |
| void Decode_ProgressiveRefinementStart(PS_ProgressiveRefinementStart x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_PrsRepeatCount(&x->prsRepeatCount, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_ProgressiveRefinementStart: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for PrsRepeatCount (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_PrsRepeatCount(PS_PrsRepeatCount x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (doOneProgression is NULL) */ |
| break; |
| case 1: |
| /* (doContinuousProgressions is NULL) */ |
| break; |
| case 2: |
| /* (doOneIndependentProgression is NULL) */ |
| break; |
| case 3: |
| /* (doContinuousIndependentProgressions is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_PrsRepeatCount: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for VideoFastUpdateMB (SEQUENCE) */ |
| /* <============================================> */ |
| void Decode_VideoFastUpdateMB(PS_VideoFastUpdateMB x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_firstGOB = GetBoolean(stream); |
| x->option_of_firstMB = GetBoolean(stream); |
| if (x->option_of_firstGOB) |
| { |
| x->firstGOB = (uint8) GetInteger(0, 255, stream); |
| } |
| if (x->option_of_firstMB) |
| { |
| x->firstMB = (uint16) GetInteger(1, 8192, stream); |
| } |
| x->numberOfMBs = (uint16) GetInteger(1, 8192, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VideoFastUpdateMB: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for VideoFastUpdateGOB (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_VideoFastUpdateGOB(PS_VideoFastUpdateGOB x, PS_InStream stream) |
| { |
| x->firstGOB = (uint8) GetInteger(0, 17, stream); |
| x->numberOfGOBs = (uint8) GetInteger(1, 18, stream); |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for KeyProtectionMethod (SEQUENCE) */ |
| /* <==============================================> */ |
| void Decode_KeyProtectionMethod(PS_KeyProtectionMethod x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->secureChannel = GetBoolean(stream); |
| x->sharedSecret = GetBoolean(stream); |
| x->certProtectedKey = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_KeyProtectionMethod: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for EncryptionUpdateRequest (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_EncryptionUpdateRequest(PS_EncryptionUpdateRequest x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_keyProtectionMethod = GetBoolean(stream); |
| if (x->option_of_keyProtectionMethod) |
| { |
| Decode_KeyProtectionMethod(&x->keyProtectionMethod, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_EncryptionUpdateRequest: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for H223MultiplexReconfiguration (CHOICE) */ |
| /* <=====================================================> */ |
| void Decode_H223MultiplexReconfiguration(PS_H223MultiplexReconfiguration x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->h223ModeChange = (PS_H223ModeChange) OSCL_DEFAULT_MALLOC(sizeof(S_H223ModeChange)); |
| Decode_H223ModeChange(x->h223ModeChange, stream); |
| break; |
| case 1: |
| x->h223AnnexADoubleFlag = (PS_H223AnnexADoubleFlag) OSCL_DEFAULT_MALLOC(sizeof(S_H223AnnexADoubleFlag)); |
| Decode_H223AnnexADoubleFlag(x->h223AnnexADoubleFlag, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_H223MultiplexReconfiguration: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223AnnexADoubleFlag (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_H223AnnexADoubleFlag(PS_H223AnnexADoubleFlag x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (start is NULL) */ |
| break; |
| case 1: |
| /* (stop is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_H223AnnexADoubleFlag: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for H223ModeChange (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_H223ModeChange(PS_H223ModeChange x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (toLevel0 is NULL) */ |
| break; |
| case 1: |
| /* (toLevel1 is NULL) */ |
| break; |
| case 2: |
| /* (toLevel2 is NULL) */ |
| break; |
| case 3: |
| /* (toLevel2withOptionalHeader is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_H223ModeChange: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==========================================> */ |
| /* PER-Decoder for NewATMVCCommand (SEQUENCE) */ |
| /* <==========================================> */ |
| void Decode_NewATMVCCommand(PS_NewATMVCCommand x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| x->bitRate = (uint16) GetInteger(1, 65535, stream); |
| x->bitRateLockedToPCRClock = GetBoolean(stream); |
| x->bitRateLockedToNetworkClock = GetBoolean(stream); |
| Decode_CmdAal(&x->cmdAal, stream); |
| Decode_CmdMultiplex(&x->cmdMultiplex, stream); |
| Decode_CmdReverseParameters(&x->cmdReverseParameters, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_NewATMVCCommand: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for CmdReverseParameters (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_CmdReverseParameters(PS_CmdReverseParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->bitRate = (uint16) GetInteger(1, 65535, stream); |
| x->bitRateLockedToPCRClock = GetBoolean(stream); |
| x->bitRateLockedToNetworkClock = GetBoolean(stream); |
| Decode_Multiplex(&x->multiplex, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CmdReverseParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for Multiplex (CHOICE) */ |
| /* <==================================> */ |
| void Decode_Multiplex(PS_Multiplex x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noMultiplex is NULL) */ |
| break; |
| case 1: |
| /* (transportStream is NULL) */ |
| break; |
| case 2: |
| /* (programStream is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_Multiplex: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for CmdMultiplex (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_CmdMultiplex(PS_CmdMultiplex x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noMultiplex is NULL) */ |
| break; |
| case 1: |
| /* (transportStream is NULL) */ |
| break; |
| case 2: |
| /* (programStream is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CmdMultiplex: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for CmdAal (CHOICE) */ |
| /* <===============================> */ |
| void Decode_CmdAal(PS_CmdAal x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->cmdAal1 = (PS_CmdAal1) OSCL_DEFAULT_MALLOC(sizeof(S_CmdAal1)); |
| Decode_CmdAal1(x->cmdAal1, stream); |
| break; |
| case 1: |
| x->cmdAal5 = (PS_CmdAal5) OSCL_DEFAULT_MALLOC(sizeof(S_CmdAal5)); |
| Decode_CmdAal5(x->cmdAal5, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CmdAal: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for CmdAal5 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_CmdAal5(PS_CmdAal5 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->backwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CmdAal5: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for CmdAal1 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_CmdAal1(PS_CmdAal1 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_CmdClockRecovery(&x->cmdClockRecovery, stream); |
| Decode_CmdErrorCorrection(&x->cmdErrorCorrection, stream); |
| x->structuredDataTransfer = GetBoolean(stream); |
| x->partiallyFilledCells = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_CmdAal1: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for CmdErrorCorrection (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_CmdErrorCorrection(PS_CmdErrorCorrection x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (nullErrorCorrection is NULL) */ |
| break; |
| case 1: |
| /* (longInterleaver is NULL) */ |
| break; |
| case 2: |
| /* (shortInterleaver is NULL) */ |
| break; |
| case 3: |
| /* (errorCorrectionOnly is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CmdErrorCorrection: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for CmdClockRecovery (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_CmdClockRecovery(PS_CmdClockRecovery x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (nullClockRecovery is NULL) */ |
| break; |
| case 1: |
| /* (srtsClockRecovery is NULL) */ |
| break; |
| case 2: |
| /* (adaptiveClockRecovery is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_CmdClockRecovery: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==============================================> */ |
| /* PER-Decoder for FunctionNotUnderstood (CHOICE) */ |
| /* <==============================================> */ |
| void Decode_FunctionNotUnderstood(PS_FunctionNotUnderstood x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->request = (PS_RequestMessage) OSCL_DEFAULT_MALLOC(sizeof(S_RequestMessage)); |
| Decode_RequestMessage(x->request, stream); |
| break; |
| case 1: |
| x->response = (PS_ResponseMessage) OSCL_DEFAULT_MALLOC(sizeof(S_ResponseMessage)); |
| Decode_ResponseMessage(x->response, stream); |
| break; |
| case 2: |
| x->command = (PS_CommandMessage) OSCL_DEFAULT_MALLOC(sizeof(S_CommandMessage)); |
| Decode_CommandMessage(x->command, stream); |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_FunctionNotUnderstood: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for FunctionNotSupported (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_FunctionNotSupported(PS_FunctionNotSupported x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_returnedFunction = GetBoolean(stream); |
| Decode_FnsCause(&x->fnsCause, stream); |
| if (x->option_of_returnedFunction) |
| { |
| GetOctetString(1, 0, 0, &x->returnedFunction, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_FunctionNotSupported: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for FnsCause (CHOICE) */ |
| /* <=================================> */ |
| void Decode_FnsCause(PS_FnsCause x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (syntaxError is NULL) */ |
| break; |
| case 1: |
| /* (semanticError is NULL) */ |
| break; |
| case 2: |
| /* (unknownFunction is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_FnsCause: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for ConferenceIndication (CHOICE) */ |
| /* <=============================================> */ |
| void Decode_ConferenceIndication(PS_ConferenceIndication x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->sbeNumber = (uint8) GetInteger(0, 9, stream); |
| break; |
| case 1: |
| x->terminalNumberAssign = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->terminalNumberAssign, stream); |
| break; |
| case 2: |
| x->terminalJoinedConference = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->terminalJoinedConference, stream); |
| break; |
| case 3: |
| x->terminalLeftConference = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->terminalLeftConference, stream); |
| break; |
| case 4: |
| /* (seenByAtLeastOneOther is NULL) */ |
| break; |
| case 5: |
| /* (cancelSeenByAtLeastOneOther is NULL) */ |
| break; |
| case 6: |
| /* (seenByAll is NULL) */ |
| break; |
| case 7: |
| /* (cancelSeenByAll is NULL) */ |
| break; |
| case 8: |
| x->terminalYouAreSeeing = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->terminalYouAreSeeing, stream); |
| break; |
| case 9: |
| /* (requestForFloor is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 10: |
| GetLengthDet(stream); |
| /* (withdrawChairToken is NULL) */ |
| SkipOneOctet(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->floorRequested = (PS_TerminalLabel) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalLabel)); |
| Decode_TerminalLabel(x->floorRequested, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 12: |
| GetLengthDet(stream); |
| x->terminalYouAreSeeingInSubPictureNumber = (PS_TerminalYouAreSeeingInSubPictureNumber) OSCL_DEFAULT_MALLOC(sizeof(S_TerminalYouAreSeeingInSubPictureNumber)); |
| Decode_TerminalYouAreSeeingInSubPictureNumber(x->terminalYouAreSeeingInSubPictureNumber, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 13: |
| GetLengthDet(stream); |
| x->videoIndicateCompose = (PS_VideoIndicateCompose) OSCL_DEFAULT_MALLOC(sizeof(S_VideoIndicateCompose)); |
| Decode_VideoIndicateCompose(x->videoIndicateCompose, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_ConferenceIndication: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=================================================================> */ |
| /* PER-Decoder for TerminalYouAreSeeingInSubPictureNumber (SEQUENCE) */ |
| /* <=================================================================> */ |
| void Decode_TerminalYouAreSeeingInSubPictureNumber(PS_TerminalYouAreSeeingInSubPictureNumber x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->terminalNumber = (uint8) GetInteger(0, 192, stream); |
| x->subPictureNumber = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_TerminalYouAreSeeingInSubPictureNumber: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for VideoIndicateCompose (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_VideoIndicateCompose(PS_VideoIndicateCompose x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->compositionNumber = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VideoIndicateCompose: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================================> */ |
| /* PER-Decoder for MiscellaneousIndication (SEQUENCE) */ |
| /* <==================================================> */ |
| void Decode_MiscellaneousIndication(PS_MiscellaneousIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| Decode_MiType(&x->miType, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MiscellaneousIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for MiType (CHOICE) */ |
| /* <===============================> */ |
| void Decode_MiType(PS_MiType x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(10, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (logicalChannelActive is NULL) */ |
| break; |
| case 1: |
| /* (logicalChannelInactive is NULL) */ |
| break; |
| case 2: |
| /* (multipointConference is NULL) */ |
| break; |
| case 3: |
| /* (cancelMultipointConference is NULL) */ |
| break; |
| case 4: |
| /* (multipointZeroComm is NULL) */ |
| break; |
| case 5: |
| /* (cancelMultipointZeroComm is NULL) */ |
| break; |
| case 6: |
| /* (multipointSecondaryStatus is NULL) */ |
| break; |
| case 7: |
| /* (cancelMultipointSecondaryStatus is NULL) */ |
| break; |
| case 8: |
| /* (videoIndicateReadyToActivate is NULL) */ |
| break; |
| case 9: |
| x->videoTemporalSpatialTradeOff = (uint8) GetInteger(0, 31, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 10: |
| GetLengthDet(stream); |
| x->videoNotDecodedMBs = (PS_VideoNotDecodedMBs) OSCL_DEFAULT_MALLOC(sizeof(S_VideoNotDecodedMBs)); |
| Decode_VideoNotDecodedMBs(x->videoNotDecodedMBs, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 11: |
| GetLengthDet(stream); |
| x->transportCapability = (PS_TransportCapability) OSCL_DEFAULT_MALLOC(sizeof(S_TransportCapability)); |
| Decode_TransportCapability(x->transportCapability, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_MiType: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for VideoNotDecodedMBs (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_VideoNotDecodedMBs(PS_VideoNotDecodedMBs x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->firstMB = (uint16) GetInteger(1, 8192, stream); |
| x->numberOfMBs = (uint16) GetInteger(1, 8192, stream); |
| x->temporalReference = (uint8) GetInteger(0, 255, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VideoNotDecodedMBs: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for JitterIndication (SEQUENCE) */ |
| /* <===========================================> */ |
| void Decode_JitterIndication(PS_JitterIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_skippedFrameCount = GetBoolean(stream); |
| x->option_of_additionalDecoderBuffer = GetBoolean(stream); |
| Decode_JiScope(&x->jiScope, stream); |
| x->estimatedReceivedJitterMantissa = (uint8) GetInteger(0, 3, stream); |
| x->estimatedReceivedJitterExponent = (uint8) GetInteger(0, 7, stream); |
| if (x->option_of_skippedFrameCount) |
| { |
| x->skippedFrameCount = (uint8) GetInteger(0, 15, stream); |
| } |
| if (x->option_of_additionalDecoderBuffer) |
| { |
| x->additionalDecoderBuffer = GetInteger(0, 262143, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_JitterIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <================================> */ |
| /* PER-Decoder for JiScope (CHOICE) */ |
| /* <================================> */ |
| void Decode_JiScope(PS_JiScope x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 2: |
| /* (wholeMultiplex is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_JiScope: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for H223SkewIndication (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_H223SkewIndication(PS_H223SkewIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->logicalChannelNumber1 = (uint16) GetInteger(1, 65535, stream); |
| x->logicalChannelNumber2 = (uint16) GetInteger(1, 65535, stream); |
| x->skew = (uint16) GetInteger(0, 4095, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H223SkewIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================================> */ |
| /* PER-Decoder for H2250MaximumSkewIndication (SEQUENCE) */ |
| /* <=====================================================> */ |
| void Decode_H2250MaximumSkewIndication(PS_H2250MaximumSkewIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->logicalChannelNumber1 = (uint16) GetInteger(1, 65535, stream); |
| x->logicalChannelNumber2 = (uint16) GetInteger(1, 65535, stream); |
| x->maximumSkew = (uint16) GetInteger(0, 4095, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_H2250MaximumSkewIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for MCLocationIndication (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_MCLocationIndication(PS_MCLocationIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_TransportAddress(&x->signalAddress, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_MCLocationIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for VendorIdentification (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_VendorIdentification(PS_VendorIdentification x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_productNumber = GetBoolean(stream); |
| x->option_of_versionNumber = GetBoolean(stream); |
| Decode_NonStandardIdentifier(&x->vendor, stream); |
| if (x->option_of_productNumber) |
| { |
| GetOctetString(0, 1, 256, &x->productNumber, stream); |
| } |
| if (x->option_of_versionNumber) |
| { |
| GetOctetString(0, 1, 256, &x->versionNumber, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_VendorIdentification: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=============================================> */ |
| /* PER-Decoder for NewATMVCIndication (SEQUENCE) */ |
| /* <=============================================> */ |
| void Decode_NewATMVCIndication(PS_NewATMVCIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| x->bitRate = (uint16) GetInteger(1, 65535, stream); |
| x->bitRateLockedToPCRClock = GetBoolean(stream); |
| x->bitRateLockedToNetworkClock = GetBoolean(stream); |
| Decode_IndAal(&x->indAal, stream); |
| Decode_IndMultiplex(&x->indMultiplex, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| x->option_of_indReverseParameters = OFF; |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| x->option_of_indReverseParameters = SigMapValue(0, map); |
| if (x->option_of_indReverseParameters) |
| { |
| ExtensionPrep(map, stream); |
| Decode_IndReverseParameters(&x->indReverseParameters, stream); |
| ReadRemainingBits(stream); |
| } |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_NewATMVCIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===============================================> */ |
| /* PER-Decoder for IndReverseParameters (SEQUENCE) */ |
| /* <===============================================> */ |
| void Decode_IndReverseParameters(PS_IndReverseParameters x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->bitRate = (uint16) GetInteger(1, 65535, stream); |
| x->bitRateLockedToPCRClock = GetBoolean(stream); |
| x->bitRateLockedToNetworkClock = GetBoolean(stream); |
| Decode_IrpMultiplex(&x->irpMultiplex, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IndReverseParameters: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for IrpMultiplex (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_IrpMultiplex(PS_IrpMultiplex x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noMultiplex is NULL) */ |
| break; |
| case 1: |
| /* (transportStream is NULL) */ |
| break; |
| case 2: |
| /* (programStream is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IrpMultiplex: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=====================================> */ |
| /* PER-Decoder for IndMultiplex (CHOICE) */ |
| /* <=====================================> */ |
| void Decode_IndMultiplex(PS_IndMultiplex x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (noMultiplex is NULL) */ |
| break; |
| case 1: |
| /* (transportStream is NULL) */ |
| break; |
| case 2: |
| /* (programStream is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IndMultiplex: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <===============================> */ |
| /* PER-Decoder for IndAal (CHOICE) */ |
| /* <===============================> */ |
| void Decode_IndAal(PS_IndAal x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->indAal1 = (PS_IndAal1) OSCL_DEFAULT_MALLOC(sizeof(S_IndAal1)); |
| Decode_IndAal1(x->indAal1, stream); |
| break; |
| case 1: |
| x->indAal5 = (PS_IndAal5) OSCL_DEFAULT_MALLOC(sizeof(S_IndAal5)); |
| Decode_IndAal5(x->indAal5, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IndAal: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for IndAal5 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_IndAal5(PS_IndAal5 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->forwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| x->backwardMaximumSDUSize = (uint16) GetInteger(0, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IndAal5: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==================================> */ |
| /* PER-Decoder for IndAal1 (SEQUENCE) */ |
| /* <==================================> */ |
| void Decode_IndAal1(PS_IndAal1 x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_IndClockRecovery(&x->indClockRecovery, stream); |
| Decode_IndErrorCorrection(&x->indErrorCorrection, stream); |
| x->structuredDataTransfer = GetBoolean(stream); |
| x->partiallyFilledCells = GetBoolean(stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_IndAal1: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===========================================> */ |
| /* PER-Decoder for IndErrorCorrection (CHOICE) */ |
| /* <===========================================> */ |
| void Decode_IndErrorCorrection(PS_IndErrorCorrection x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (nullErrorCorrection is NULL) */ |
| break; |
| case 1: |
| /* (longInterleaver is NULL) */ |
| break; |
| case 2: |
| /* (shortInterleaver is NULL) */ |
| break; |
| case 3: |
| /* (errorCorrectionOnly is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IndErrorCorrection: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=========================================> */ |
| /* PER-Decoder for IndClockRecovery (CHOICE) */ |
| /* <=========================================> */ |
| void Decode_IndClockRecovery(PS_IndClockRecovery x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| /* (nullClockRecovery is NULL) */ |
| break; |
| case 1: |
| /* (srtsClockRecovery is NULL) */ |
| break; |
| case 2: |
| /* (adaptiveClockRecovery is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_IndClockRecovery: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <============================================> */ |
| /* PER-Decoder for UserInputIndication (CHOICE) */ |
| /* <============================================> */ |
| void Decode_UserInputIndication(PS_UserInputIndication x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| x->alphanumeric = (PS_int8STRING) OSCL_DEFAULT_MALLOC(sizeof(S_int8STRING)); |
| GetCharString("GeneralString", 1, 0, 0, NULL, x->alphanumeric, stream); |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| case 2: |
| GetLengthDet(stream); |
| x->userInputSupportIndication = (PS_UserInputSupportIndication) OSCL_DEFAULT_MALLOC(sizeof(S_UserInputSupportIndication)); |
| Decode_UserInputSupportIndication(x->userInputSupportIndication, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 3: |
| GetLengthDet(stream); |
| x->signal = (PS_Signal) OSCL_DEFAULT_MALLOC(sizeof(S_Signal)); |
| Decode_Signal(x->signal, stream); |
| ReadRemainingBits(stream); |
| break; |
| case 4: |
| GetLengthDet(stream); |
| x->signalUpdate = (PS_SignalUpdate) OSCL_DEFAULT_MALLOC(sizeof(S_SignalUpdate)); |
| Decode_SignalUpdate(x->signalUpdate, stream); |
| ReadRemainingBits(stream); |
| break; |
| default: |
| ErrorMessage("Decode_UserInputIndication: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for SignalUpdate (SEQUENCE) */ |
| /* <=======================================> */ |
| void Decode_SignalUpdate(PS_SignalUpdate x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_rtp = GetBoolean(stream); |
| x->duration = (uint16) GetInteger(1, 65535, stream); |
| if (x->option_of_rtp) |
| { |
| Decode_Rtp(&x->rtp, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_SignalUpdate: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <==============================> */ |
| /* PER-Decoder for Rtp (SEQUENCE) */ |
| /* <==============================> */ |
| void Decode_Rtp(PS_Rtp x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Rtp: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for Signal (SEQUENCE) */ |
| /* <=================================> */ |
| void Decode_Signal(PS_Signal x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_duration = GetBoolean(stream); |
| x->option_of_signalRtp = GetBoolean(stream); |
| GetCharString("IA5String", 0, 1, 1, "0123456789#*ABCD!", &x->signalType, stream); |
| if (x->option_of_duration) |
| { |
| x->duration = (uint16) GetInteger(1, 65535, stream); |
| } |
| if (x->option_of_signalRtp) |
| { |
| Decode_SignalRtp(&x->signalRtp, stream); |
| } |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_Signal: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <====================================> */ |
| /* PER-Decoder for SignalRtp (SEQUENCE) */ |
| /* <====================================> */ |
| void Decode_SignalRtp(PS_SignalRtp x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| x->option_of_timestamp = GetBoolean(stream); |
| x->option_of_expirationTime = GetBoolean(stream); |
| if (x->option_of_timestamp) |
| { |
| x->timestamp = GetInteger(0, 0xffffffff, stream); |
| } |
| if (x->option_of_expirationTime) |
| { |
| x->expirationTime = GetInteger(0, 0xffffffff, stream); |
| } |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_SignalRtp: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <===================================================> */ |
| /* PER-Decoder for UserInputSupportIndication (CHOICE) */ |
| /* <===================================================> */ |
| void Decode_UserInputSupportIndication(PS_UserInputSupportIndication x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(4, 1, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->nonStandard = (PS_NonStandardParameter) OSCL_DEFAULT_MALLOC(sizeof(S_NonStandardParameter)); |
| Decode_NonStandardParameter(x->nonStandard, stream); |
| break; |
| case 1: |
| /* (basicString is NULL) */ |
| break; |
| case 2: |
| /* (iA5String is NULL) */ |
| break; |
| case 3: |
| /* (generalString is NULL) */ |
| break; |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| default: |
| ErrorMessage("Decode_UserInputSupportIndication: Unsupported extension (skipping)"); |
| SkipOneExtension(stream); |
| } |
| } |
| |
| /* <================================================> */ |
| /* PER-Decoder for FlowControlIndication (SEQUENCE) */ |
| /* <================================================> */ |
| void Decode_FlowControlIndication(PS_FlowControlIndication x, PS_InStream stream) |
| { |
| uint8 extension; |
| PS_UnknownSigMap map; |
| |
| extension = GetBoolean(stream); |
| Decode_FciScope(&x->fciScope, stream); |
| Decode_FciRestriction(&x->fciRestriction, stream); |
| /* ------------------------------- */ |
| /* ---- Extension Begins Here ---- */ |
| /* ------------------------------- */ |
| if (extension) |
| { |
| map = GetUnknownSigMap(stream); |
| if (SkipUnreadExtensions(map, stream)) |
| { |
| ErrorMessage("Decode_FlowControlIndication: Unknown extensions (skipped)"); |
| } |
| } |
| } |
| |
| /* <=======================================> */ |
| /* PER-Decoder for FciRestriction (CHOICE) */ |
| /* <=======================================> */ |
| void Decode_FciRestriction(PS_FciRestriction x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(2, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->maximumBitRate = GetInteger(0, 16777215, stream); |
| break; |
| case 1: |
| /* (noRestriction is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_FciRestriction: Illegal CHOICE index"); |
| } |
| } |
| |
| /* <=================================> */ |
| /* PER-Decoder for FciScope (CHOICE) */ |
| /* <=================================> */ |
| void Decode_FciScope(PS_FciScope x, PS_InStream stream) |
| { |
| x->index = GetChoiceIndex(3, 0, stream); |
| switch (x->index) |
| { |
| case 0: |
| x->logicalChannelNumber = (uint16) GetInteger(1, 65535, stream); |
| break; |
| case 1: |
| x->resourceID = (uint16) GetInteger(0, 65535, stream); |
| break; |
| case 2: |
| /* (wholeMultiplex is NULL) */ |
| break; |
| default: |
| ErrorMessageAndLeave("Decode_FciScope: Illegal CHOICE index"); |
| } |
| } |
| |