#include <h323caps.h>
Public Member Functions | |
Construction | |
| H323Capabilities () | |
| H323Capabilities (const H323Connection &connection, const H245_TerminalCapabilitySet &pdu) | |
| H323Capabilities (const H323Capabilities &original) | |
| H323Capabilities & | operator= (const H323Capabilities &original) |
Overrides from class PObject | |
| void | PrintOn (ostream &strm) const |
Operations | |
| PINDEX | GetSize () const |
| H323Capability & | operator[] (PINDEX i) const |
| PINDEX | SetCapability (PINDEX descriptorNum, PINDEX simultaneous, H323Capability *cap) |
| PINDEX | AddAllCapabilities (PINDEX descriptorNum, PINDEX simultaneous, const PString &name) |
| PINDEX | AddAllCapabilities (H323EndPoint &, PINDEX descriptorNum, PINDEX simultaneous, const PString &name) |
| void | Add (H323Capability *capability) |
| H323Capability * | Copy (const H323Capability &capability) |
| void | Remove (H323Capability *capability) |
| void | Remove (const PString &formatName) |
| void | Remove (const PStringArray &formatNames) |
| void | RemoveAll () |
| BOOL | SetVideoFrameSize (H323Capability::CapabilityFrameSize frameSize, int frameUnits) |
| H323Capability * | FindCapability (unsigned capabilityNumber) const |
| H323Capability * | FindCapability (const PString &formatName, H323Capability::CapabilityDirection direction=H323Capability::e_Unknown) const |
| H323Capability * | FindCapability (H323Capability::CapabilityDirection direction) const |
| H323Capability * | FindCapability (const H323Capability &capability) const |
| H323Capability * | FindCapability (const H245_Capability &cap) const |
| H323Capability * | FindCapability (const H245_DataType &dataType) const |
| H323Capability * | FindCapability (const H245_ModeElement &modeElement) const |
| H323Capability * | FindCapability (H323Capability::MainTypes mainType, const PASN_Choice &subTypePDU, const unsigned *translationTable) const |
| H323Capability * | FindCapability (H323Capability::MainTypes mainType, unsigned subType=UINT_MAX) const |
| void | BuildPDU (const H323Connection &connection, H245_TerminalCapabilitySet &pdu) const |
| BOOL | Merge (const H323Capabilities &newCaps) |
| void | Reorder (const PStringArray &preferenceOrder) |
| BOOL | IsAllowed (const H323Capability &capability) |
| BOOL | IsAllowed (unsigned capabilityNumber) |
| BOOL | IsAllowed (const H323Capability &capability1, const H323Capability &capability2) |
| BOOL | IsAllowed (unsigned capabilityNumber1, unsigned capabilityNumber2) |
Protected Attributes | |
| H323CapabilitiesList | table |
| H323CapabilitiesSet | set |
Definition at line 2145 of file h323caps.h.
| H323Capabilities::H323Capabilities | ( | ) |
Construct an empty capability set.
Definition at line 2682 of file h323caps.cxx.
| H323Capabilities::H323Capabilities | ( | const H323Connection & | connection, | |
| const H245_TerminalCapabilitySet & | pdu | |||
| ) |
Construct a capability set from the H.245 PDU provided.
| connection | Connection for capabilities |
| pdu | PDU to convert to a capability set. |
Definition at line 2687 of file h323caps.cxx.
References Add(), H323_UserInputCapability::AddAllCapabilities(), AddAllCapabilities(), Copy(), H245_CapabilityTableEntry::e_capability, H245_TerminalCapabilitySet::e_capabilityTable, H245_CapabilityDescriptor::e_simultaneousCapabilities, FindCapability(), H323Connection::GetLocalCapabilities(), GetSize(), H245_TerminalCapabilitySet::m_capabilityDescriptors, H245_TerminalCapabilitySet::m_capabilityTable, H323Capability::OnReceivedPDU(), H323Capability::SetCapabilityNumber(), and table.
| H323Capabilities::H323Capabilities | ( | const H323Capabilities & | original | ) |
Construct a copy of a capability set. Note this will completely duplicate the set by making clones of every capability in the original set.
| original | Original capabilities to duplicate |
Definition at line 2737 of file h323caps.cxx.
References operator=().
| H323Capabilities & H323Capabilities::operator= | ( | const H323Capabilities & | original | ) |
Assign a copy of a capability set. Note this will completely duplicate the set by making clones of every capability in the original set.
| original | Original capabilities to duplicate |
Definition at line 2743 of file h323caps.cxx.
References Copy(), FindCapability(), GetSize(), RemoveAll(), set, and H323CapabilitiesSet::SetSize().
Referenced by H323Capabilities().
| void H323Capabilities::PrintOn | ( | ostream & | strm | ) | const |
Print out the object to the stream, virtual version of << operator.
| strm | Stream to print out to. |
Definition at line 2766 of file h323caps.cxx.
References table.
| PINDEX H323Capabilities::GetSize | ( | ) | const [inline] |
Get the number of capabilities in the set.
Definition at line 2192 of file h323caps.h.
References table.
Referenced by H323Capabilities(), IsAllowed(), Merge(), H323Connection::OnReceivedCapabilitySet(), H323Connection::OnReceivedSignalSetup(), operator=(), Remove(), H323Connection::SelectDefaultLogicalChannel(), H323Connection::SelectFastStartChannels(), and H323Connection::SendSignalSetup().
| H323Capability& H323Capabilities::operator[] | ( | PINDEX | i | ) | const [inline] |
Get the capability at the specified index.
Definition at line 2196 of file h323caps.h.
References table.
| PINDEX H323Capabilities::SetCapability | ( | PINDEX | descriptorNum, | |
| PINDEX | simultaneous, | |||
| H323Capability * | cap | |||
| ) |
Set the capability descriptor lists. This is three tier set of codecs. The top most level is a list of particular capabilities. Each of these consists of a list of alternatives that can operate simultaneously. The lowest level is a list of codecs that cannot operate together. See H323 section 6.2.8.1 and H245 section 7.2 for details.
If descriptorNum is P_MAX_INDEX, the the next available index in the array of descriptors is used. Similarly if simultaneous is P_MAX_INDEX the the next available SimultaneousCapabilitySet is used. The return value is the index used for the new entry. Note if both are P_MAX_INDEX then the return value is the descriptor index as the simultaneous index must be zero.
Note that the capability specified here is automatically added to the capability table using the AddCapability() function. A specific instance of a capability is only ever added once, so multiple SetCapability() calls with the same H323Capability pointer will only add that capability once.
| descriptorNum | The member of the capabilityDescriptor to add |
| simultaneous | The member of the SimultaneousCapabilitySet to add |
| cap | New capability specification |
Definition at line 2785 of file h323caps.cxx.
References Add().
Referenced by AddAllCapabilities(), H323_UserInputCapability::AddAllCapabilities(), H323Connection::CreateLogicalChannel(), H323Connection::HandleFastStartAcknowledge(), and H323EndPoint::SetCapability().
| PINDEX H323Capabilities::AddAllCapabilities | ( | PINDEX | descriptorNum, | |
| PINDEX | simultaneous, | |||
| const PString & | name | |||
| ) |
Add all matching capabilities to descriptor lists. All capabilities that match the specified name are added as in the other form of the SetCapability() function.
| descriptorNum | The member of the capabilityDescriptor to add |
| simultaneous | The member of the SimultaneousCapabilitySet to add |
| name | New capabilities name, if using "known" one. |
Definition at line 2832 of file h323caps.cxx.
References H323Capability::Create(), FindCapability(), OpalMediaFormat::FirstSessionID, OpalMediaFormat::GetDefaultSessionID(), OpalMediaFormat::IsValid(), OpalMediaFormat::LastSessionID, and SetCapability().
Referenced by H323EndPoint::AddAllCapabilities(), AddAllCapabilities(), and H323Capabilities().
| PINDEX H323Capabilities::AddAllCapabilities | ( | H323EndPoint & | , | |
| PINDEX | descriptorNum, | |||
| PINDEX | simultaneous, | |||
| const PString & | name | |||
| ) | [inline] |
| descriptorNum | The member of the capabilityDescriptor to add |
| simultaneous | The member of the SimultaneousCapabilitySet to add |
| name | New capabilities name, if using "known" one. |
Definition at line 2233 of file h323caps.h.
References AddAllCapabilities().
| void H323Capabilities::Add | ( | H323Capability * | capability | ) |
Add a codec to the capabilities table. This will assure that the assignedCapabilityNumber field in the capability is unique for all capabilities installed on this set.
If the specific instance of the capability is already in the table, it is not added again. Ther can be multiple instances of the same capability class however.
| capability | New capability specification |
Definition at line 2896 of file h323caps.cxx.
References H323Capability::SetCapabilityNumber().
Referenced by H323EndPoint::AddCapability(), H323Capabilities(), and SetCapability().
| H323Capability * H323Capabilities::Copy | ( | const H323Capability & | capability | ) |
Copy a codec to the capabilities table. This will make a clone of the capability and assure that the assignedCapabilityNumber field in the capability is unique for all capabilities installed on this set.
Returns the copy that is put in the table.
| capability | New capability specification |
Definition at line 2912 of file h323caps.cxx.
References H323Capability::GetCapabilityNumber(), and H323Capability::SetCapabilityNumber().
Referenced by H323Connection::CreateLogicalChannel(), H323Capabilities(), H323Connection::HandleFastStartAcknowledge(), Merge(), and operator=().
| void H323Capabilities::Remove | ( | H323Capability * | capability | ) |
Remove a capability from the table. Note that the the parameter must be the actual instance of the capability in the table. The instance is deleted when removed from the table.
| capability | Existing capability specification |
Definition at line 2923 of file h323caps.cxx.
References H323Capability::GetCapabilityNumber(), and GetSize().
Referenced by Remove(), and H323EndPoint::RemoveCapabilities().
| void H323Capabilities::Remove | ( | const PString & | formatName | ) |
Remove all capabilities matching the string. This uses FindCapability() to locate the first capability whose format name does a partial match for the argument.
| formatName | Format name to search for. |
Definition at line 2951 of file h323caps.cxx.
References FindCapability(), and Remove().
| void H323Capabilities::Remove | ( | const PStringArray & | formatNames | ) |
Remove all capabilities matching any of the strings provided. This simply calls Remove() for each string in the list.
| formatNames | Array of format names to remove |
Definition at line 2964 of file h323caps.cxx.
References Remove().
| void H323Capabilities::RemoveAll | ( | ) |
Remove all of the capabilities.
Definition at line 2971 of file h323caps.cxx.
Referenced by H323Connection::DecodeFastStartCaps(), H323Connection::OnReceivedCapabilitySet(), and operator=().
| BOOL H323Capabilities::SetVideoFrameSize | ( | H323Capability::CapabilityFrameSize | frameSize, | |
| int | frameUnits | |||
| ) |
Set the Video Frame Size. This is used for capabilities that use 1 definition for all Video Frame Sizes. This will remove all capabilities not matching the specified Frame Size and send a message to the remaining video capabilities to set the maximum framesize allowed to the specified value
| H323Capability * H323Capabilities::FindCapability | ( | unsigned | capabilityNumber | ) | const |
Find the capability given the capability number. This number is guarenteed to be unique for a give capability table. Note that is may not be the same as the index into the table.
Returns: NULL if no capability meeting the criteria was found
Definition at line 2978 of file h323caps.cxx.
Referenced by AddAllCapabilities(), H323Connection::CreateLogicalChannel(), H323EndPoint::FindCapability(), FindCapability(), H323Capabilities(), H323Connection::HandleFastStartAcknowledge(), H323Connection::InternalEstablishedConnectionCheck(), Merge(), H323Connection::OnAcceptModeChange(), H323Connection::OnConflictingLogicalChannel(), H323Connection::OnModeChanged(), H323Connection::OnRequestModeChange(), operator=(), Remove(), H323Connection::SelectDefaultLogicalChannel(), and H245NegRequestMode::StartRequest().
| H323Capability * H323Capabilities::FindCapability | ( | const PString & | formatName, | |
| H323Capability::CapabilityDirection | direction = H323Capability::e_Unknown | |||
| ) | const |
Find the capability given the capability format name string. This does a partial match for the supplied argument. If the argument matches a substring of the actual capabilities name, then it is returned. For example "GSM" or "0610" will match "GSM 0610". Note case is not significant.
The user should be carefull of using short strings such as "G"!
The direction parameter can further refine the search for specific receive or transmit capabilities. The default value of e_Unknown will wildcard that field.
Returns: NULL if no capability meeting the criteria was found
| formatName | Wildcard format name to search for |
| direction | Optional direction to include into search criteria |
Definition at line 2993 of file h323caps.cxx.
References H323Capability::e_Unknown.
| H323Capability * H323Capabilities::FindCapability | ( | H323Capability::CapabilityDirection | direction | ) | const |
Find the first capability in the table of the specified direction.
Returns: NULL if no capability meeting the criteria was found
| direction | Direction to search for |
Definition at line 3014 of file h323caps.cxx.
| H323Capability * H323Capabilities::FindCapability | ( | const H323Capability & | capability | ) | const |
Find the capability given the capability. This does a value compare of the two capabilities. Usually this means the mainType and subType are the same.
Returns: NULL if no capability meeting the criteria was found
| capability | Capability to search for |
Definition at line 3030 of file h323caps.cxx.
| H323Capability * H323Capabilities::FindCapability | ( | const H245_Capability & | cap | ) | const |
Find the capability given the H.245 capability PDU.
Returns: NULL if no capability meeting the criteria was found
| cap | H245 capability table entry |
Definition at line 3045 of file h323caps.cxx.
References H323Capability::e_Audio, H245_Capability::e_conferenceCapability, H323Capability::e_ConferenceControl, H323Capability::e_Data, H245_Capability::e_receiveAndTransmitAudioCapability, H245_Capability::e_receiveAndTransmitDataApplicationCapability, H245_Capability::e_receiveAndTransmitUserInputCapability, H245_Capability::e_receiveAndTransmitVideoCapability, H245_Capability::e_receiveAudioCapability, H245_Capability::e_receiveDataApplicationCapability, H245_Capability::e_receiveRTPAudioTelephonyEventCapability, H245_Capability::e_receiveUserInputCapability, H245_Capability::e_receiveVideoCapability, H245_Capability::e_transmitAudioCapability, H245_Capability::e_transmitDataApplicationCapability, H245_Capability::e_transmitUserInputCapability, H245_Capability::e_transmitVideoCapability, H323Capability::e_UserInput, H323Capability::e_Video, FindCapability(), and H245_DataApplicationCapability::m_application.
| H323Capability * H323Capabilities::FindCapability | ( | const H245_DataType & | dataType | ) | const |
Find the capability given the H.245 data type PDU.
Returns: NULL if no capability meeting the criteria was found
| dataType | H245 data type of codec |
Definition at line 3096 of file h323caps.cxx.
References H245_DataType::Clone(), H245_DataType::e_audioData, H245_DataType::e_data, H245_DataType::e_videoData, H245_DataApplicationCapability::m_application, and H323Capability::OnReceivedPDU().
| H323Capability * H323Capabilities::FindCapability | ( | const H245_ModeElement & | modeElement | ) | const |
Find the capability given the H.245 data type PDU.
Returns: NULL if no capability meeting the criteria was found
| modeElement | H245 data type of codec |
Definition at line 3144 of file h323caps.cxx.
References H323Capability::e_Audio, H245_ModeElementType::e_audioMode, H323Capability::e_Data, H245_ModeElementType::e_dataMode, H245_DataApplicationCapability_application::e_dsm_cc, H245_DataApplicationCapability_application::e_dsvdControl, H245_AudioCapability::e_g711Alaw56k, H245_AudioCapability::e_g711Alaw64k, H245_AudioCapability::e_g711Ulaw56k, H245_AudioCapability::e_g711Ulaw64k, H245_AudioCapability::e_g722_48k, H245_AudioCapability::e_g722_56k, H245_AudioCapability::e_g722_64k, H245_AudioCapability::e_g7231, H245_AudioCapability::e_g7231AnnexCCapability, H245_AudioCapability::e_g728, H245_AudioCapability::e_g729, H245_AudioCapability::e_g729AnnexA, H245_AudioCapability::e_g729AnnexAwAnnexB, H245_AudioCapability::e_g729Extensions, H245_AudioCapability::e_g729wAnnexB, H245_AudioCapability::e_genericAudioCapability, H245_DataApplicationCapability_application::e_genericDataCapability, H245_VideoCapability::e_genericVideoCapability, H245_AudioCapability::e_gsmEnhancedFullRate, H245_AudioCapability::e_gsmFullRate, H245_AudioCapability::e_gsmHalfRate, H245_DataApplicationCapability_application::e_h222DataPartitioning, H245_DataApplicationCapability_application::e_h224, H245_VideoCapability::e_h261VideoCapability, H245_VideoCapability::e_h262VideoCapability, H245_VideoCapability::e_h263VideoCapability, H245_AudioCapability::e_is11172AudioCapability, H245_VideoCapability::e_is11172VideoCapability, H245_AudioCapability::e_is13818AudioCapability, H245_DataApplicationCapability_application::e_nlpid, H245_DataApplicationCapability_application::e_nonStandard, H245_VideoCapability::e_nonStandard, H245_AudioCapability::e_nonStandard, H245_DataApplicationCapability_application::e_t120, H245_DataApplicationCapability_application::e_t140, H245_DataApplicationCapability_application::e_t30fax, H245_DataApplicationCapability_application::e_t38fax, H245_DataApplicationCapability_application::e_t434, H245_DataApplicationCapability_application::e_t84, H245_DataApplicationCapability_application::e_userData, H323Capability::e_Video, H245_ModeElementType::e_videoMode, FindCapability(), H245_DataMode::m_application, and H245_ModeElement::m_type.
| H323Capability * H323Capabilities::FindCapability | ( | H323Capability::MainTypes | mainType, | |
| const PASN_Choice & | subTypePDU, | |||
| const unsigned * | translationTable | |||
| ) | const |
Find the capability given the sub-type info.
Returns: NULL if no capability meeting the criteria was found
| mainType | Main type to find |
| subTypePDU | Sub-type info |
| translationTable | Translation table sub-type tags |
Definition at line 3223 of file h323caps.cxx.
References FindCapability().
| H323Capability * H323Capabilities::FindCapability | ( | H323Capability::MainTypes | mainType, | |
| unsigned | subType = UINT_MAX | |||
| ) | const |
Find the capability given the type codecs.
Returns: NULL if no capability meeting the criteria was found
| mainType | Main type to find |
| subType | Sub-type to find (UINT_MAX=ignore) |
Definition at line 3248 of file h323caps.cxx.
| void H323Capabilities::BuildPDU | ( | const H323Connection & | connection, | |
| H245_TerminalCapabilitySet & | pdu | |||
| ) | const |
Build a H.245 PDU from the information in the capability set.
| connection | Connection building PDU for |
| pdu | PDU to build |
Definition at line 3295 of file h323caps.cxx.
References H245_CapabilityTableEntry::e_capability, H245_TerminalCapabilitySet::e_capabilityDescriptors, H245_TerminalCapabilitySet::e_capabilityTable, H245_MediaPacketizationCapability::e_rtpPayloadType, H245_CapabilityDescriptor::e_simultaneousCapabilities, H245_CapabilityTableEntry::m_capability, H245_TerminalCapabilitySet::m_capabilityDescriptors, H245_TerminalCapabilitySet::m_capabilityTable, H245_CapabilityTableEntry::m_capabilityTableEntryNumber, H245_H2250Capability::m_mediaPacketizationCapability, H245_TerminalCapabilitySet::m_multiplexCapability, H245_MediaPacketizationCapability::m_rtpPayloadType, and RTP_DataFrame::MaxPayloadType.
Referenced by H323ControlPDU::BuildTerminalCapabilitySet().
| BOOL H323Capabilities::Merge | ( | const H323Capabilities & | newCaps | ) |
Merge the capabilities into this set.
Definition at line 3368 of file h323caps.cxx.
References Copy(), FindCapability(), GetSize(), set, and H323CapabilitiesSet::SetSize().
Referenced by H323Connection::OnReceivedCapabilitySet().
| void H323Capabilities::Reorder | ( | const PStringArray & | preferenceOrder | ) |
Change the order of capabilities in the table to the order specified. Note that this does not change the unique capability numbers assigned when the capability is first added to the set.
The string matching rules are as for the FindCapability() function.
| preferenceOrder | New order |
Definition at line 3404 of file h323caps.cxx.
Referenced by H323EndPoint::ReorderCapabilities().
| BOOL H323Capabilities::IsAllowed | ( | const H323Capability & | capability | ) |
Test if the capability is allowed.
Definition at line 3444 of file h323caps.cxx.
References H323Capability::GetCapabilityNumber().
Referenced by IsAllowed(), and H323Connection::OnCreateLogicalChannel().
| BOOL H323Capabilities::IsAllowed | ( | unsigned | capabilityNumber | ) |
Test if the capability is allowed.
Definition at line 3450 of file h323caps.cxx.
References GetSize().
| BOOL H323Capabilities::IsAllowed | ( | const H323Capability & | capability1, | |
| const H323Capability & | capability2 | |||
| ) |
Test if the capabilities are an allowed combination.
Definition at line 3469 of file h323caps.cxx.
References H323Capability::GetCapabilityNumber(), and IsAllowed().
| BOOL H323Capabilities::IsAllowed | ( | unsigned | capabilityNumber1, | |
| unsigned | capabilityNumber2 | |||
| ) |
Test if the capabilities are an allowed combination.
Definition at line 3477 of file h323caps.cxx.
References GetSize().
1.5.2