34 #ifndef OPAL_H323_H323CAPS_H
35 #define OPAL_H323_H323CAPS_H
57 class H245_Capability;
59 class H245_ModeElement;
60 class H245_AudioCapability;
62 class H245_VideoCapability;
64 class H245_DataApplicationCapability;
66 class H245_DataProtocolCapability;
67 class H245_H2250LogicalChannelParameters;
68 class H245_TerminalCapabilitySet;
69 class H245_NonStandardParameter;
72 class H245_CapabilityIdentifier;
73 class H245_GenericCapability;
74 class H245_GenericParameter;
75 class H245_EncryptionSync;
76 class H245_EncryptionAuthenticationAndIntegrity;
77 class H235SecurityCapability;
122 Comparison
Compare(
const PObject & obj)
const;
126 void PrintOn(ostream & strm)
const;
219 const H245_H2250LogicalChannelParameters * param
240 H245_Capability & pdu
262 H245_ModeElement & pdu
278 const H245_Capability & pdu
289 const H245_DataType & pdu,
296 const PASN_Object & subTypePDU,
297 const PString & mediaPacketization
355 #if OPAL_H235_6 || OPAL_H235_8
364 H245_EncryptionSync & encryptionSync,
372 const H245_EncryptionSync & encryptionSync,
379 virtual bool PostTCS(
399 #if OPAL_H235_6 || OPAL_H235_8
400 H235SecurityCapability * m_cryptoCapability;
404 P_REMOVE_VIRTUAL(PBoolean,
IsMatch(
const PASN_Choice &)
const,
false);
428 const BYTE * dataBlock,
435 const BYTE * dataBlock,
445 const BYTE * dataBlock,
457 const BYTE * dataBlock,
480 const PBYTEArray &
data
483 PBoolean
IsMatch(
const H245_NonStandardParameter & param)
const;
486 const H245_NonStandardParameter & param
492 unsigned nonStandardTag
495 const PASN_Choice & pdu,
496 unsigned nonStandardTag
503 const PBYTEArray &
data
538 H245_GenericCapability & pdu,
544 const H245_GenericCapability & pdu,
550 const H245_GenericCapability & param
592 const H245_H2250LogicalChannelParameters * param
675 H245_Capability & pdu
699 H245_ModeElement & pdu
711 H245_AudioCapability & pdu,
715 H245_AudioCapability & pdu,
744 const H245_Capability & pdu
757 const H245_DataType & pdu,
770 const H245_AudioCapability & pdu,
771 unsigned & packetSize
774 const H245_AudioCapability & pdu,
775 unsigned & packetSize,
799 const BYTE * dataBlock,
805 const BYTE * dataBlock = NULL,
815 const BYTE * dataBlock = NULL,
827 const BYTE * dataBlock = NULL,
839 Comparison
Compare(
const PObject & obj)
const;
863 H245_AudioCapability & pdu,
888 const H245_AudioCapability & pdu,
889 unsigned & packetSize
895 const PASN_Object & subTypePDU,
896 const PString & mediaPacketization
919 const PString & capabilityId,
920 unsigned fixedBitRate
929 Comparison
Compare(
const PObject & obj)
const;
953 H245_AudioCapability & pdu,
979 const H245_AudioCapability & pdu,
980 unsigned & packetSize,
987 const PASN_Object & subTypePDU,
988 const PString & mediaPacketization
994 template <const
char * o
id, const OpalAudioFormat & fmtFunc(),
unsigned fixedBitRate = 0>
1060 H245_Capability & pdu
1084 H245_ModeElement & pdu
1095 H245_VideoCapability & pdu
1098 H245_VideoCapability & pdu,
1111 H245_VideoMode & pdu
1124 const H245_Capability & pdu
1135 const H245_DataType & pdu,
1147 const H245_VideoCapability & pdu
1150 const H245_VideoCapability & pdu,
1174 const BYTE * dataBlock,
1180 const BYTE * dataBlock = NULL,
1181 PINDEX dataSize = 0,
1189 const PString &
oid,
1190 const BYTE * dataBlock = NULL,
1191 PINDEX dataSize = 0,
1202 const BYTE * dataBlock = NULL,
1203 PINDEX dataSize = 0,
1214 Comparison
Compare(
const PObject & obj)
const;
1239 H245_VideoCapability & pdu
1251 H245_VideoMode & pdu
1263 const H245_VideoCapability & pdu
1269 const PASN_Object & subTypePDU,
1270 const PString & mediaPacketization
1293 const PString & capabilityId,
1294 unsigned fixedBitRate = 0
1303 Comparison
Compare(
const PObject & obj)
const;
1327 H245_VideoCapability & pdu,
1340 H245_VideoMode & pdu
1352 const H245_VideoCapability & pdu,
1359 const PASN_Object & subTypePDU,
1360 const PString & mediaPacketization
1366 template <const
char * o
id, const OpalV
ideoFormat & fmtFunc()>
1401 const PString & identifier
1426 H245_VideoCapability & pdu,
1439 H245_VideoMode & pdu
1451 const H245_VideoCapability & pdu,
1458 const PASN_Object & subTypePDU,
1459 const PString & mediaPacketization
1483 const PString & identifier
1513 H245_Capability & pdu
1526 const H245_Capability & pdu
1532 const PASN_Object & subTypePDU,
1533 const PString & mediaPacketization
1560 Comparison
Compare(
const PObject & obj)
const;
1564 virtual PObject *
Clone()
const;
1585 H245_VideoCapability & pdu,
1598 const H245_VideoCapability & pdu,
1623 virtual PObject *
Clone()
const;
1637 #endif // OPAL_VIDEO
1642 #if OPAL_H235_6 || OPAL_H235_8
1653 H235SecurityCapability(
1684 H245_Capability & pdu
1700 const H245_Capability & pdu
1705 H245_EncryptionSync & encryptionSync,
1713 const H245_EncryptionSync & encryptionSync,
1720 virtual bool PostTCS(
1726 virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu)
const = 0;
1727 virtual bool OnReceivedPDU(
const H245_EncryptionAuthenticationAndIntegrity & pdu) = 0;
1732 unsigned GetMediaCapabilityNumber()
const {
return m_mediaCapabilityNumber; }
1736 static void AddAllCapabilities(
1738 const PStringArray & cryptoSuites,
1743 unsigned m_mediaCapabilityNumber;
1744 PString m_mediaCapabilityName;
1748 #endif // OPAL_H235_6 || OPAL_H235_8
1755 class H235SecurityAlgorithmCapability :
public H235SecurityCapability
1757 PCLASSINFO(H235SecurityAlgorithmCapability, H235SecurityCapability);
1764 H235SecurityAlgorithmCapability(
1773 virtual PObject * Clone()
const;
1780 virtual PBoolean IsMatch(
1781 const PASN_Object & subTypePDU,
1782 const PString & mediaPacketization
1786 virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu)
const;
1787 virtual bool OnReceivedPDU(
const H245_EncryptionAuthenticationAndIntegrity & pdu);
1793 #endif // OPAL_H235_6
1800 class H235SecurityGenericCapability :
public H235SecurityCapability,
1803 PCLASSINFO(H235SecurityGenericCapability, H235SecurityCapability);
1810 H235SecurityGenericCapability(
1819 virtual PObject * Clone()
const;
1827 const PASN_Object & subTypePDU,
1828 const PString & mediaPacketization
1832 virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu)
const;
1833 virtual bool OnReceivedPDU(
const H245_EncryptionAuthenticationAndIntegrity & pdu);
1839 #endif // OPAL_H235_8
1895 H245_Capability & pdu
1919 H245_ModeElement & pdu
1930 H245_DataApplicationCapability & pdu
1933 H245_DataApplicationCapability & pdu,
1959 const H245_Capability & pdu
1970 const H245_DataType & pdu,
1982 const H245_DataApplicationCapability & pdu
1985 const H245_DataApplicationCapability & pdu,
2013 unsigned maxBitRate,
2014 const BYTE * dataBlock = NULL,
2015 PINDEX dataSize = 0,
2023 unsigned maxBitRate,
2024 const PString &
oid,
2025 const BYTE * dataBlock = NULL,
2026 PINDEX dataSize = 0,
2034 unsigned maxBitRate,
2038 const BYTE * dataBlock = NULL,
2039 PINDEX dataSize = 0,
2050 Comparison
Compare(
const PObject & obj)
const;
2075 H245_DataApplicationCapability & pdu
2099 const H245_DataApplicationCapability & pdu
2105 const PASN_Object & subTypePDU,
2106 const PString & mediaPacketization
2130 const PString & capabilityId,
2131 unsigned fixedBitRate
2140 Comparison
Compare(
const PObject & obj)
const;
2164 H245_DataApplicationCapability & pdu,
2189 const H245_DataApplicationCapability & pdu,
2196 const PASN_Object & subTypePDU,
2197 const PString & mediaPacketization
2242 virtual PObject *
Clone()
const;
2301 virtual PObject *
Clone()
const;
2333 H245_Capability & pdu
2357 const H245_Capability & pdu
2368 const H245_DataType & pdu,
2387 PINDEX descriptorNum,
2388 PINDEX simultaneous,
2412 unsigned protectedCapability
2442 H245_Capability & pdu
2458 const H245_Capability & pdu
2462 unsigned GetProtectedCapability()
const
2464 return m_protectedCapability;
2467 static void AddAllCapabilities(
2474 unsigned m_protectedCapability;
2477 #endif // OPAL_RTP_FEC
2484 PARRAY(H323CapabilitiesListArray, H323CapabilitiesList);
2492 PBoolean
SetSize(PINDEX newSize);
2506 PBoolean
SetSize(PINDEX newSize);
2526 const H245_TerminalCapabilitySet & pdu
2586 PINDEX descriptorNum,
2587 PINDEX simultaneous,
2595 PINDEX descriptorNum,
2596 PINDEX simultaneous,
2607 PINDEX descriptorNum,
2608 PINDEX simultaneous,
2609 const PString & name,
2610 PBoolean exact =
false
2616 PINDEX descriptorNum,
2617 PINDEX simultaneous,
2618 const PString & name,
2619 PBoolean exact =
false
2658 const PString & formatName
2665 const PStringArray & formatNames
2680 unsigned capabilityNumber
2699 const PString & formatName,
2702 PBoolean exact =
false
2731 const H245_Capability & cap
2740 const H245_DataType & dataType,
2741 const PString & mediaPacketization = PString::Empty()
2750 const H245_ModeElement & modeElement,
2751 const PString & mediaPacketization = PString::Empty()
2761 unsigned subType = UINT_MAX
2768 H245_TerminalCapabilitySet & pdu
2784 const PStringArray & preferenceOrder
2796 unsigned capabilityNumber
2809 unsigned capabilityNumber1,
2810 unsigned capabilityNumber2
2835 #define H323_REGISTER_CAPABILITY(cls, capName) PFACTORY_CREATE(H323CapabilityFactory, cls, capName, true)
2840 #endif // OPAL_H323_H323CAPS_H