OPAL  Version 3.18.8
h323caps.h
Go to the documentation of this file.
1 /*
2  * h323caps.h
3  *
4  * H.323 protocol handler
5  *
6  * Open H323 Library
7  *
8  * Copyright (c) 1998-2001 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open H323 Library.
21  *
22  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23  *
24  * Portions of this code were written with the assisance of funding from
25  * Vovida Networks, Inc. http://www.vovida.com.
26  *
27  * Contributor(s): ______________________________________.
28  */
29 
30 #ifndef OPAL_H323_H323CAPS_H
31 #define OPAL_H323_H323CAPS_H
32 
33 #ifdef P_USE_PRAGMA
34 #pragma interface
35 #endif
36 
37 #include <opal_config.h>
38 
39 #if OPAL_H323
40 
41 #include <opal/mediafmt.h>
42 #include <h323/channels.h>
43 #include <opal/mediasession.h>
44 
45 
46 /* The following classes have forward references to avoid including the VERY
47  large header files for H225 and H245. If an application requires access
48  to the protocol classes they can include them, but for simple usage their
49  inclusion can be avoided.
50  */
51 class PASN_Object;
52 class PASN_Choice;
53 class H245_Capability;
54 class H245_DataType;
55 class H245_ModeElement;
56 class H245_AudioCapability;
57 class H245_AudioMode;
58 class H245_VideoCapability;
59 class H245_VideoMode;
60 class H245_DataApplicationCapability;
61 class H245_DataMode;
62 class H245_DataProtocolCapability;
63 class H245_H2250LogicalChannelParameters;
64 class H245_TerminalCapabilitySet;
65 class H245_NonStandardParameter;
66 class H323Connection;
67 class H323Capabilities;
68 class H245_CapabilityIdentifier;
69 class H245_GenericCapability;
70 class H245_GenericParameter;
71 class H245_EncryptionSync;
72 class H245_EncryptionAuthenticationAndIntegrity;
73 class H235SecurityCapability;
74 
75 #if OPAL_H239
77 #endif
78 
79 
81 
95 class H323Capability : public PObject
96 {
97  PCLASSINFO(H323Capability, PObject);
98 
99  public:
104  H323Capability();
105  H323Capability(const H323Capability & other);
106  H323Capability & operator=(const H323Capability & other);
107 
110  ~H323Capability();
112 
118  Comparison Compare(const PObject & obj) const;
119 
122  void PrintOn(ostream & strm) const;
124 
127  enum MainTypes {
136  };
137 
143  virtual MainTypes GetMainType() const = 0;
144 
148  virtual unsigned GetSubType() const = 0;
149 
152  virtual PString GetFormatName() const = 0;
154 
160  static H323Capability * Create(
161  const PString & name
162  );
163 
164  enum {
170  };
171 
180  virtual unsigned GetDefaultSessionID() const;
181 
190  virtual void SetTxFramesInPacket(
191  unsigned frames
192  );
193 
198  virtual unsigned GetTxFramesInPacket() const;
199 
204  virtual unsigned GetRxFramesInPacket() const;
205 
211  virtual H323Channel * CreateChannel(
212  H323Connection & connection,
214  unsigned sessionID,
215  const H245_H2250LogicalChannelParameters * param
217  ) const;
219 
222  enum CommandType {
226  };
227 
235  virtual PBoolean OnSendingPDU(
236  H245_Capability & pdu
237  ) const = 0;
238 
246  virtual PBoolean OnSendingPDU(
247  H245_DataType & pdu
248  ) const;
249 
257  virtual PBoolean OnSendingPDU(
258  H245_ModeElement & pdu
259  ) const;
260 
273  virtual PBoolean OnReceivedPDU(
274  const H245_Capability & pdu
275  );
276 
284  virtual PBoolean OnReceivedPDU(
285  const H245_DataType & pdu,
286  PBoolean receiver
287  );
288 
291  virtual PBoolean IsMatch(
292  const PASN_Object & subTypePDU,
293  const PString & mediaPacketization
294  ) const;
295 
303  virtual PBoolean IsUsable(
304  const H323Connection & connection
305  ) const;
307 
317  };
318 
322 
327  ) { capabilityDirection = dir; }
328 
330  unsigned GetCapabilityNumber() const { return assignedCapabilityNumber; }
331 
333  void SetCapabilityNumber(unsigned num) { assignedCapabilityNumber = num; }
334 
338 
341  bool UpdateMediaFormat(
342  const OpalMediaFormat & format
343  );
344 
347 
350 
351 #if OPAL_H235_6 || OPAL_H235_8
352  const OpalMediaCryptoSuite * GetCryptoSuite() const;
354 
356  void SetCryptoSuite(const OpalMediaCryptoSuite & cryptoSuite);
357 
359  virtual bool OnSendingPDU(
360  H245_EncryptionSync & encryptionSync,
361  const H323Connection & connection,
362  unsigned sessionID,
363  bool rx
364  );
365 
367  virtual bool OnReceivedPDU(
368  const H245_EncryptionSync & encryptionSync,
369  const H323Connection & connection,
370  unsigned sessionID,
371  bool rx
372  );
373 
375  virtual bool PostTCS(
376  const H323Connection & connection,
377  const H323Capabilities & capabilities
378  );
379 #endif
380 
381 
382 #if PTRACING
383  friend ostream & operator<<(ostream & o , MainTypes t);
384  friend ostream & operator<<(ostream & o , CapabilityDirection d);
385 #endif
386 
387  protected:
389 
392 
394 
395 #if OPAL_H235_6 || OPAL_H235_8
396  H235SecurityCapability * m_cryptoCapability;
397 #endif
398 
399  private:
400  P_REMOVE_VIRTUAL(PBoolean, IsMatch(const PASN_Choice &) const, false);
401 
402  friend class H323Capabilities;
403 };
404 
405 
406 
416 {
417  public:
418  typedef PObject::Comparison (*CompareFuncType)(struct PluginCodec_H323NonStandardCodecData *);
419 
424  const BYTE * dataBlock,
425  PINDEX dataSize
426  );
427 
431  const BYTE * dataBlock,
432  PINDEX dataSize,
433  PINDEX comparisonOffset = 0,
434  PINDEX comparisonLength = P_MAX_INDEX
435  );
436 
440  const PString & oid,
441  const BYTE * dataBlock,
442  PINDEX dataSize,
443  PINDEX comparisonOffset = 0,
444  PINDEX comparisonLength = P_MAX_INDEX
445  );
446 
450  BYTE country,
451  BYTE extension,
452  WORD maufacturer,
453  const BYTE * dataBlock,
454  PINDEX dataSize,
455  PINDEX comparisonOffset = 0,
456  PINDEX comparisonLength = P_MAX_INDEX
457  );
458 
462 
467  virtual PBoolean OnSendingPDU(
468  PBYTEArray & data
469  ) const;
470 
475  virtual PBoolean OnReceivedPDU(
476  const PBYTEArray & data
477  );
478 
479  PBoolean IsMatch(const H245_NonStandardParameter & param) const;
480 
481  PObject::Comparison CompareParam(
482  const H245_NonStandardParameter & param
483  ) const;
484 
485  protected:
486  PBoolean OnSendingNonStandardPDU(
487  PASN_Choice & pdu,
488  unsigned nonStandardTag
489  ) const;
490  PBoolean OnReceivedNonStandardPDU(
491  const PASN_Choice & pdu,
492  unsigned nonStandardTag
493  );
494 
495  PObject::Comparison CompareInfo(
497  ) const;
498  PObject::Comparison CompareData(
499  const PBYTEArray & data
500  ) const;
501 
502  PString oid;
506  PBYTEArray nonStandardData;
510 };
511 
522 {
523  public:
525  const PString & id,
526  unsigned maxBitRate,
527  bool fixedBitRate
528  );
529 
531 
532  protected:
533  virtual PBoolean OnSendingGenericPDU(
534  H245_GenericCapability & pdu,
535  const OpalMediaFormat & mediaFormat,
537  ) const;
538  virtual PBoolean OnReceivedGenericPDU(
539  OpalMediaFormat & mediaFormat,
540  const H245_GenericCapability & pdu,
542  );
543 
544  PBoolean IsMatch(
545  const OpalMediaFormat & mediaFormat,
546  const H245_GenericCapability & param
547  ) const;
548  PObject::Comparison CompareInfo(
549  const H323GenericCapabilityInfo & obj
550  ) const;
551 
552 
553  PString m_identifier;
555  enum {
559  } m_bitRateMode;
560 };
561 
569 {
571 
572  public:
577  virtual ~H323RealTimeCapability();
579 
584  virtual H323Channel * CreateChannel(
585  H323Connection & connection,
587  unsigned sessionID,
588  const H245_H2250LogicalChannelParameters * param
590  ) const;
592 };
593 
594 
602 {
604 
605  public:
612 
618  virtual MainTypes GetMainType() const;
620 
631  virtual unsigned GetDefaultSessionID() const;
632 
641  virtual void SetTxFramesInPacket(
642  unsigned frames
643  );
644 
650  virtual unsigned GetTxFramesInPacket() const;
651 
657  virtual unsigned GetRxFramesInPacket() const;
659 
670  virtual PBoolean OnSendingPDU(
671  H245_Capability & pdu
672  ) const;
673 
682  virtual PBoolean OnSendingPDU(
683  H245_DataType & pdu
684  ) const;
685 
694  virtual PBoolean OnSendingPDU(
695  H245_ModeElement & pdu
696  ) const;
697 
706  virtual PBoolean OnSendingPDU(
707  H245_AudioCapability & pdu,
708  unsigned packetSize
709  ) const;
710  virtual PBoolean OnSendingPDU(
711  H245_AudioCapability & pdu,
712  unsigned packetSize,
713  CommandType type
714  ) const;
715 
724  virtual PBoolean OnSendingPDU(
725  H245_AudioMode & pdu
726  ) const;
727 
739  virtual PBoolean OnReceivedPDU(
740  const H245_Capability & pdu
741  );
742 
752  virtual PBoolean OnReceivedPDU(
753  const H245_DataType & pdu,
754  PBoolean receiver
755  );
756 
765  virtual PBoolean OnReceivedPDU(
766  const H245_AudioCapability & pdu,
767  unsigned & packetSize
768  );
769  virtual PBoolean OnReceivedPDU(
770  const H245_AudioCapability & pdu,
771  unsigned & packetSize,
772  CommandType type
773  );
775 };
776 
777 
787 {
789 
790  public:
795  const BYTE * dataBlock,
796  PINDEX dataSize
797  );
801  const BYTE * dataBlock = NULL,
802  PINDEX dataSize = 0,
803  PINDEX comparisonOffset = 0,
804  PINDEX comparisonLength = P_MAX_INDEX
805  );
806 
810  const PString & oid,
811  const BYTE * dataBlock = NULL,
812  PINDEX dataSize = 0,
813  PINDEX comparisonOffset = 0,
814  PINDEX comparisonLength = P_MAX_INDEX
815  );
816 
820  BYTE country,
821  BYTE extension,
822  WORD maufacturer,
823  const BYTE * dataBlock = NULL,
824  PINDEX dataSize = 0,
825  PINDEX comparisonOffset = 0,
826  PINDEX comparisonLength = P_MAX_INDEX
827  );
829 
835  Comparison Compare(const PObject & obj) const;
837 
845  virtual unsigned GetSubType() const;
847 
858  virtual PBoolean OnSendingPDU(
859  H245_AudioCapability & pdu,
860  unsigned packetSize
861  ) const;
862 
871  virtual PBoolean OnSendingPDU(
872  H245_AudioMode & pdu
873  ) const;
874 
883  virtual PBoolean OnReceivedPDU(
884  const H245_AudioCapability & pdu,
885  unsigned & packetSize
886  );
887 
890  virtual PBoolean IsMatch(
891  const PASN_Object & subTypePDU,
892  const PString & mediaPacketization
893  ) const;
895 };
896 
906 {
908 
909  public:
915  const PString & capabilityId,
916  unsigned fixedBitRate
917  );
919 
925  Comparison Compare(const PObject & obj) const;
927 
935  virtual unsigned GetSubType() const;
937 
948  virtual PBoolean OnSendingPDU(
949  H245_AudioCapability & pdu,
950  unsigned packetSize,
951  CommandType type
952  ) const;
953 
962  virtual PBoolean OnSendingPDU(
963  H245_AudioMode & pdu
964  ) const;
965 
974  virtual PBoolean OnReceivedPDU(
975  const H245_AudioCapability & pdu,
976  unsigned & packetSize,
977  CommandType type
978  );
979 
982  virtual PBoolean IsMatch(
983  const PASN_Object & subTypePDU,
984  const PString & mediaPacketization
985  ) const;
987 };
988 
989 
990 template <const char * oid, const OpalAudioFormat & fmtFunc(), unsigned fixedBitRate = 0>
992 {
993  public:
995  : H323GenericAudioCapability(oid, fixedBitRate)
996  {
997  }
998 
999  virtual PObject * Clone() const
1000  {
1001  return new H323GenericAudioCapabilityTemplate(*this);
1002  }
1003 
1004  virtual PString GetFormatName() const
1005  {
1006  return fmtFunc();
1007  }
1008 };
1009 
1010 
1011 #if OPAL_VIDEO
1012 
1020 {
1022 
1023  public:
1029  virtual MainTypes GetMainType() const;
1031 
1042  virtual unsigned GetDefaultSessionID() const;
1044 
1055  virtual PBoolean OnSendingPDU(
1056  H245_Capability & pdu
1057  ) const;
1058 
1067  virtual PBoolean OnSendingPDU(
1068  H245_DataType & pdu
1069  ) const;
1070 
1079  virtual PBoolean OnSendingPDU(
1080  H245_ModeElement & pdu
1081  ) const;
1082 
1090  virtual PBoolean OnSendingPDU(
1091  H245_VideoCapability & pdu
1092  ) const;
1093  virtual PBoolean OnSendingPDU(
1094  H245_VideoCapability & pdu,
1095  CommandType type
1096  ) const;
1097 
1106  virtual PBoolean OnSendingPDU(
1107  H245_VideoMode & pdu
1108  ) const;
1109 
1119  virtual PBoolean OnReceivedPDU(
1120  const H245_Capability & pdu
1121  );
1122 
1130  virtual PBoolean OnReceivedPDU(
1131  const H245_DataType & pdu,
1132  PBoolean receiver
1133  );
1134 
1142  virtual PBoolean OnReceivedPDU(
1143  const H245_VideoCapability & pdu
1144  );
1145  virtual PBoolean OnReceivedPDU(
1146  const H245_VideoCapability & pdu,
1147  CommandType type
1148  );
1150 };
1151 
1152 
1162 {
1164 
1165  public:
1170  const BYTE * dataBlock,
1171  PINDEX dataSize
1172  );
1176  const BYTE * dataBlock = NULL,
1177  PINDEX dataSize = 0,
1178  PINDEX comparisonOffset = 0,
1179  PINDEX comparisonLength = P_MAX_INDEX
1180  );
1181 
1185  const PString & oid,
1186  const BYTE * dataBlock = NULL,
1187  PINDEX dataSize = 0,
1188  PINDEX comparisonOffset = 0,
1189  PINDEX comparisonLength = P_MAX_INDEX
1190  );
1191 
1195  BYTE country,
1196  BYTE extension,
1197  WORD maufacturer,
1198  const BYTE * dataBlock = NULL,
1199  PINDEX dataSize = 0,
1200  PINDEX comparisonOffset = 0,
1201  PINDEX comparisonLength = P_MAX_INDEX
1202  );
1204 
1210  Comparison Compare(const PObject & obj) const;
1212 
1221  virtual unsigned GetSubType() const;
1223 
1234  virtual PBoolean OnSendingPDU(
1235  H245_VideoCapability & pdu
1236  ) const;
1237 
1246  virtual PBoolean OnSendingPDU(
1247  H245_VideoMode & pdu
1248  ) const;
1249 
1258  virtual PBoolean OnReceivedPDU(
1259  const H245_VideoCapability & pdu
1260  );
1261 
1264  virtual PBoolean IsMatch(
1265  const PASN_Object & subTypePDU,
1266  const PString & mediaPacketization
1267  ) const;
1269 };
1270 
1280 {
1282 
1283  public:
1289  const PString & capabilityId,
1290  unsigned fixedBitRate = 0
1291  );
1293 
1299  Comparison Compare(const PObject & obj) const;
1301 
1309  virtual unsigned GetSubType() const;
1311 
1322  virtual PBoolean OnSendingPDU(
1323  H245_VideoCapability & pdu,
1324  CommandType type
1325  ) const;
1326 
1335  virtual PBoolean OnSendingPDU(
1336  H245_VideoMode & pdu
1337  ) const;
1338 
1347  virtual PBoolean OnReceivedPDU(
1348  const H245_VideoCapability & pdu,
1349  CommandType type
1350  );
1351 
1354  virtual PBoolean IsMatch(
1355  const PASN_Object & subTypePDU,
1356  const PString & mediaPacketization
1357  ) const;
1359 };
1360 
1361 
1362 template <const char * oid, const OpalVideoFormat & fmtFunc()>
1364 {
1365  public:
1368  {
1369  }
1370 
1371  virtual PObject * Clone() const
1372  {
1373  return new H323GenericVideoCapabilityTemplate(*this);
1374  }
1375 
1376  virtual PString GetFormatName() const
1377  {
1378  return fmtFunc();
1379  }
1380 };
1381 
1382 
1383 #if OPAL_H239
1384 
1388 {
1390 
1391  public:
1397  const PString & identifier
1398  );
1400 
1408  virtual unsigned GetSubType() const;
1410 
1421  virtual PBoolean OnSendingPDU(
1422  H245_VideoCapability & pdu,
1423  CommandType type
1424  ) const;
1425 
1434  virtual PBoolean OnSendingPDU(
1435  H245_VideoMode & pdu
1436  ) const;
1437 
1446  virtual PBoolean OnReceivedPDU(
1447  const H245_VideoCapability & pdu,
1448  CommandType type
1449  );
1450 
1453  virtual PBoolean IsMatch(
1454  const PASN_Object & subTypePDU,
1455  const PString & mediaPacketization
1456  ) const;
1458 
1459  protected:
1461 };
1462 
1463 
1465 
1470 {
1472 
1473  public:
1479  const PString & identifier
1480  );
1482 
1488  virtual MainTypes GetMainType() const;
1489 
1495  virtual unsigned GetSubType() const;
1497 
1508  virtual PBoolean OnSendingPDU(
1509  H245_Capability & pdu
1510  ) const;
1511 
1521  virtual PBoolean OnReceivedPDU(
1522  const H245_Capability & pdu
1523  );
1524 
1527  virtual PBoolean IsMatch(
1528  const PASN_Object & subTypePDU,
1529  const PString & mediaPacketization
1530  ) const;
1532 };
1533 
1534 
1536 
1538 {
1540 
1541  public:
1547  const OpalMediaFormat & videoFormat
1548  );
1550 
1556  Comparison Compare(const PObject & obj) const;
1557 
1560  virtual PObject * Clone() const;
1562 
1567  virtual PString GetFormatName() const;
1569 
1580  virtual PBoolean OnSendingPDU(
1581  H245_VideoCapability & pdu,
1582  CommandType type
1583  ) const;
1584 
1593  virtual PBoolean OnReceivedPDU(
1594  const H245_VideoCapability & pdu,
1595  CommandType type
1596  );
1598 };
1599 
1600 
1602 
1604 {
1606 
1607  public:
1614 
1619  virtual PObject * Clone() const;
1621 
1626  virtual PString GetFormatName() const;
1628 };
1629 
1630 
1631 #endif // OPAL_H239
1632 
1633 #endif // OPAL_VIDEO
1634 
1635 
1637 
1638 #if OPAL_H235_6 || OPAL_H235_8
1639 
1640 class H235SecurityCapability : public H323Capability
1641 {
1642  PCLASSINFO(H235SecurityCapability, H323Capability);
1643 
1644  public:
1649  H235SecurityCapability(
1650  const H323Capability & mediaCapability
1651  );
1653 
1661  virtual MainTypes GetMainType() const;
1662 
1666  virtual unsigned GetSubType() const;
1667 
1670  virtual PString GetFormatName() const;
1671 
1679  virtual PBoolean OnSendingPDU(
1680  H245_Capability & pdu
1681  ) const;
1682 
1695  virtual PBoolean OnReceivedPDU(
1696  const H245_Capability & pdu
1697  );
1698 
1700  virtual bool OnSendingPDU(
1701  H245_EncryptionSync & encryptionSync,
1702  const H323Connection & connection,
1703  unsigned sessionID,
1704  bool rx
1705  );
1706 
1708  virtual bool OnReceivedPDU(
1709  const H245_EncryptionSync & encryptionSync,
1710  const H323Connection & connection,
1711  unsigned sessionID,
1712  bool rx
1713  );
1714 
1716  virtual bool PostTCS(
1717  const H323Connection & connection,
1718  const H323Capabilities & capabilities
1719  );
1721 
1722  virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu) const = 0;
1723  virtual bool OnReceivedPDU(const H245_EncryptionAuthenticationAndIntegrity & pdu) = 0;
1724 
1725  virtual bool OnSendingPDU(H245_EncryptionSync & encryptionSync, const H323Connection & connection, const OpalMediaCryptoKeyList & keys) = 0;
1726  virtual bool OnReceivedPDU(const H245_EncryptionSync & encryptionSync, const H323Connection & connection, OpalMediaCryptoKeyList & keys) = 0;
1727 
1728  unsigned GetMediaCapabilityNumber() const { return m_mediaCapabilityNumber; }
1729  const OpalMediaCryptoSuite::List & GetCryptoSuites() const { return m_cryptoSuites; }
1730  void SetCryptoSuites(const OpalMediaCryptoSuite::List & cryptoSuites) { m_cryptoSuites = cryptoSuites; }
1731 
1732  static void AddAllCapabilities(
1733  H323Capabilities & capabilities,
1734  const PStringArray & cryptoSuites,
1735  const char * prefix
1736  );
1737 
1738  protected:
1739  unsigned m_mediaCapabilityNumber;
1740  PString m_mediaCapabilityName;
1741  OpalMediaCryptoSuite::List m_cryptoSuites;
1742 };
1743 
1744 #endif // OPAL_H235_6 || OPAL_H235_8
1745 
1746 
1748 
1749 #if OPAL_H235_6
1750 
1751 class H235SecurityAlgorithmCapability : public H235SecurityCapability
1752 {
1753  PCLASSINFO(H235SecurityAlgorithmCapability, H235SecurityCapability);
1754 
1755  public:
1760  H235SecurityAlgorithmCapability(
1761  const H323Capability & mediaCapability
1762  );
1764 
1769  virtual PObject * Clone() const;
1771 
1776  virtual PBoolean IsMatch(
1777  const PASN_Object & subTypePDU,
1778  const PString & mediaPacketization
1779  ) const;
1781 
1782  virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu) const;
1783  virtual bool OnReceivedPDU(const H245_EncryptionAuthenticationAndIntegrity & pdu);
1784 
1785  virtual bool OnSendingPDU(H245_EncryptionSync & encryptionSync, const H323Connection & connection, const OpalMediaCryptoKeyList & keys);
1786  virtual bool OnReceivedPDU(const H245_EncryptionSync & encryptionSync, const H323Connection & connection, OpalMediaCryptoKeyList & keys);
1787 };
1788 
1789 #endif // OPAL_H235_6
1790 
1791 
1793 
1794 #if OPAL_H235_8
1795 
1796 class H235SecurityGenericCapability : public H235SecurityCapability,
1798 {
1799  PCLASSINFO(H235SecurityGenericCapability, H235SecurityCapability);
1800 
1801  public:
1806  H235SecurityGenericCapability(
1807  const H323Capability & mediaCapability
1808  );
1810 
1815  virtual PObject * Clone() const;
1817 
1822  virtual PBoolean IsMatch(
1823  const PASN_Object & subTypePDU,
1824  const PString & mediaPacketization
1825  ) const;
1827 
1828  virtual bool OnSendingPDU(H245_EncryptionAuthenticationAndIntegrity & pdu) const;
1829  virtual bool OnReceivedPDU(const H245_EncryptionAuthenticationAndIntegrity & pdu);
1830 
1831  virtual bool OnSendingPDU(H245_EncryptionSync & encryptionSync, const H323Connection & connection, const OpalMediaCryptoKeyList & keys);
1832  virtual bool OnReceivedPDU(const H245_EncryptionSync & encryptionSync, const H323Connection & connection, OpalMediaCryptoKeyList & keys);
1833 };
1834 
1835 #endif // OPAL_H235_8
1836 
1837 
1839 
1847 {
1848  PCLASSINFO(H323DataCapability, H323Capability);
1849 
1850  public:
1856  unsigned maxBitRate
1857  );
1859 
1865  virtual MainTypes GetMainType() const;
1867 
1877  virtual unsigned GetDefaultSessionID() const;
1879 
1890  virtual PBoolean OnSendingPDU(
1891  H245_Capability & pdu
1892  ) const;
1893 
1902  virtual PBoolean OnSendingPDU(
1903  H245_DataType & pdu
1904  ) const;
1905 
1914  virtual PBoolean OnSendingPDU(
1915  H245_ModeElement & pdu
1916  ) const;
1917 
1925  virtual PBoolean OnSendingPDU(
1926  H245_DataApplicationCapability & pdu
1927  ) const;
1928  virtual PBoolean OnSendingPDU(
1929  H245_DataApplicationCapability & pdu,
1930  CommandType type
1931  ) const;
1932 
1941  virtual PBoolean OnSendingPDU(
1942  H245_DataMode & pdu
1943  ) const = 0;
1944 
1954  virtual PBoolean OnReceivedPDU(
1955  const H245_Capability & pdu
1956  );
1957 
1965  virtual PBoolean OnReceivedPDU(
1966  const H245_DataType & pdu,
1967  PBoolean receiver
1968  );
1969 
1977  virtual PBoolean OnReceivedPDU(
1978  const H245_DataApplicationCapability & pdu
1979  );
1980  virtual PBoolean OnReceivedPDU(
1981  const H245_DataApplicationCapability & pdu,
1982  CommandType type
1983  );
1985 
1986  protected:
1988 };
1989 
1990 
2000 {
2002 
2003  public:
2009  unsigned maxBitRate,
2010  const BYTE * dataBlock = NULL,
2011  PINDEX dataSize = 0,
2012  PINDEX comparisonOffset = 0,
2013  PINDEX comparisonLength = P_MAX_INDEX
2014  );
2015 
2019  unsigned maxBitRate,
2020  const PString & oid,
2021  const BYTE * dataBlock = NULL,
2022  PINDEX dataSize = 0,
2023  PINDEX comparisonOffset = 0,
2024  PINDEX comparisonLength = P_MAX_INDEX
2025  );
2026 
2030  unsigned maxBitRate,
2031  BYTE country,
2032  BYTE extension,
2033  WORD maufacturer,
2034  const BYTE * dataBlock = NULL,
2035  PINDEX dataSize = 0,
2036  PINDEX comparisonOffset = 0,
2037  PINDEX comparisonLength = P_MAX_INDEX
2038  );
2040 
2046  Comparison Compare(const PObject & obj) const;
2048 
2057  virtual unsigned GetSubType() const;
2059 
2070  virtual PBoolean OnSendingPDU(
2071  H245_DataApplicationCapability & pdu
2072  ) const;
2073 
2082  virtual PBoolean OnSendingPDU(
2083  H245_DataMode & pdu
2084  ) const;
2085 
2094  virtual PBoolean OnReceivedPDU(
2095  const H245_DataApplicationCapability & pdu
2096  );
2097 
2100  virtual PBoolean IsMatch(
2101  const PASN_Object & subTypePDU,
2102  const PString & mediaPacketization
2103  ) const;
2105 };
2106 
2107 
2117 {
2119 
2120  public:
2126  const PString & capabilityId,
2127  unsigned fixedBitRate
2128  );
2130 
2136  Comparison Compare(const PObject & obj) const;
2138 
2146  virtual unsigned GetSubType() const;
2148 
2159  virtual PBoolean OnSendingPDU(
2160  H245_DataApplicationCapability & pdu,
2161  CommandType type
2162  ) const;
2163 
2172  virtual PBoolean OnSendingPDU(
2173  H245_DataMode & pdu
2174  ) const;
2175 
2184  virtual PBoolean OnReceivedPDU(
2185  const H245_DataApplicationCapability & pdu,
2186  CommandType type
2187  );
2188 
2191  virtual PBoolean IsMatch(
2192  const PASN_Object & subTypePDU,
2193  const PString & mediaPacketization
2194  ) const;
2196 };
2197 
2198 
2200 // Known audio codecs
2201 
2205 {
2207 
2208  public:
2210  enum Mode {
2215  };
2217  enum Speed {
2222  };
2223 
2229  Mode mode = muLaw,
2230  Speed speed = At64k
2231  );
2233 
2238  virtual PObject * Clone() const;
2240 
2249  virtual unsigned GetSubType() const;
2250 
2253  virtual PString GetFormatName() const;
2255 
2256  protected:
2259 };
2260 
2262 
2266 {
2268 
2269  public:
2272  enum SubTypes {
2280  };
2281  static const char * GetSubTypeName(SubTypes subType);
2282  friend ostream & operator<<(ostream & strm, SubTypes subType) { return strm << GetSubTypeName(subType); }
2283 
2290  );
2292 
2297  virtual PObject * Clone() const;
2299 
2307  virtual MainTypes GetMainType() const;
2308 
2312  virtual unsigned GetSubType() const;
2313 
2316  virtual PString GetFormatName() const;
2318 
2328  virtual PBoolean OnSendingPDU(
2329  H245_Capability & pdu
2330  ) const;
2331 
2339  virtual PBoolean OnSendingPDU(
2340  H245_DataType & pdu
2341  ) const;
2342 
2352  virtual PBoolean OnReceivedPDU(
2353  const H245_Capability & pdu
2354  );
2355 
2363  virtual PBoolean OnReceivedPDU(
2364  const H245_DataType & pdu,
2365  PBoolean receiver
2366  );
2367 
2376  virtual PBoolean IsUsable(
2377  const H323Connection & connection
2378  ) const;
2380 
2381  static void AddAllCapabilities(
2382  H323Capabilities & capabilities,
2383  PINDEX descriptorNum,
2384  PINDEX simultaneous,
2385  H323Capability * rfc2833 = NULL
2386  );
2387 
2388  protected:
2390 };
2391 
2392 
2394 
2395 #if OPAL_RTP_FEC
2396 
2397 class H323FECCapability : public H323Capability
2398 {
2399  PCLASSINFO(H323FECCapability, H323Capability);
2400 
2401 public:
2406  H323FECCapability(
2407  const OpalMediaFormat & mediaFormat,
2408  unsigned protectedCapability
2409  );
2411 
2419  virtual MainTypes GetMainType() const;
2420 
2424  virtual unsigned GetSubType() const;
2425 
2428  virtual PString GetFormatName() const;
2429 
2437  virtual PBoolean OnSendingPDU(
2438  H245_Capability & pdu
2439  ) const;
2440 
2453  virtual PBoolean OnReceivedPDU(
2454  const H245_Capability & pdu
2455  );
2457 
2458  unsigned GetProtectedCapability() const
2459  {
2460  return m_protectedCapability;
2461  }
2462 
2463  static void AddAllCapabilities(
2464  H323Capabilities & capabilities,
2465  const OpalMediaFormatList & localFormats
2466  );
2467 
2468 protected:
2469  PString m_scheme;
2470  unsigned m_protectedCapability;
2471 };
2472 
2473 #endif // OPAL_RTP_FEC
2474 
2475 
2477 
2478 PARRAY(H323CapabilitiesList, H323Capability);
2479 
2480 PARRAY(H323CapabilitiesListArray, H323CapabilitiesList);
2481 
2482 class H323SimultaneousCapabilities : public H323CapabilitiesListArray
2483 {
2484  PCLASSINFO(H323SimultaneousCapabilities, H323CapabilitiesListArray);
2485  public:
2487 
2488  PBoolean SetSize(PINDEX newSize);
2489 
2491 };
2492 
2493 
2494 PARRAY(H323CapabilitiesSetArray, H323SimultaneousCapabilities);
2495 
2496 
2497 class H323CapabilitiesSet : public H323CapabilitiesSetArray
2498 {
2499  PCLASSINFO(H323CapabilitiesSet, H323CapabilitiesSetArray);
2500  public:
2502  PBoolean SetSize(PINDEX newSize);
2503 };
2504 
2505 
2508 class H323Capabilities : public PObject
2509 {
2510  PCLASSINFO(H323Capabilities, PObject);
2511  public:
2516  H323Capabilities();
2517 
2521  H323Connection & connection,
2522  const H245_TerminalCapabilitySet & pdu
2523  );
2524 
2530  const H323Capabilities & original
2531  );
2532 
2538  const H323Capabilities & original
2539  );
2541 
2546  void PrintOn(
2547  ostream & strm
2548  ) const;
2550 
2555  PINDEX GetSize() const { return m_table.GetSize(); }
2556 
2559  H323Capability & operator[](PINDEX i) const { return m_table[i]; }
2560 
2581  PINDEX SetCapability(
2582  PINDEX descriptorNum,
2583  PINDEX simultaneous,
2584  H323Capability * cap,
2585  H323Capability * before = NULL
2586  );
2587 
2590  PINDEX AddMediaFormat(
2591  PINDEX descriptorNum,
2592  PINDEX simultaneous,
2593  const OpalMediaFormat & mediaFormat,
2596  );
2597 
2602  PINDEX AddAllCapabilities(
2603  PINDEX descriptorNum,
2604  PINDEX simultaneous,
2605  const PString & name,
2606  PBoolean exact = false
2607  );
2608 
2609  // this function is retained for backwards compatibility
2611  const H323EndPoint &,
2612  PINDEX descriptorNum,
2613  PINDEX simultaneous,
2614  const PString & name,
2615  PBoolean exact = false
2616  )
2617  { return AddAllCapabilities(descriptorNum, simultaneous, name, exact); }
2618 
2627  void Add(
2628  H323Capability * capability
2629  );
2630 
2637  H323Capability * Copy(
2638  const H323Capability & capability
2639  );
2640 
2645  void Remove(
2646  H323Capability * capability
2647  );
2648 
2653  void Remove(
2654  const PString & formatName
2655  );
2656 
2660  void Remove(
2661  const PStringArray & formatNames
2662  );
2663 
2666  void RemoveAll();
2667 
2676  unsigned capabilityNumber
2677  ) const;
2678 
2695  const PString & formatName,
2698  PBoolean exact = false
2699  ) const;
2700 
2708  ) const;
2709 
2718  const H323Capability & capability
2719  ) const;
2720 
2727  const H245_Capability & cap
2728  ) const;
2729 
2736  const H245_DataType & dataType,
2737  const PString & mediaPacketization = PString::Empty()
2738  ) const;
2739 
2746  const H245_ModeElement & modeElement,
2747  const PString & mediaPacketization = PString::Empty()
2748  ) const;
2749 
2756  H323Capability::MainTypes mainType,
2757  unsigned subType = UINT_MAX
2758  ) const;
2759 
2762  void BuildPDU(
2763  const H323Connection & connection,
2764  H245_TerminalCapabilitySet & pdu
2765  ) const;
2766 
2769  PBoolean Merge(
2770  const H323Capabilities & newCaps
2771  );
2772 
2779  void Reorder(
2780  const PStringArray & preferenceOrder
2781  );
2782 
2785  PBoolean IsAllowed(
2786  const H323Capability & capability
2787  );
2788 
2791  PBoolean IsAllowed(
2792  unsigned capabilityNumber
2793  );
2794 
2797  PBoolean IsAllowed(
2798  const H323Capability & capability1,
2799  const H323Capability & capability2
2800  );
2801 
2804  PBoolean IsAllowed(
2805  unsigned capabilityNumber1,
2806  unsigned capabilityNumber2
2807  );
2808 
2812 
2813  const PStringSet & GetMediaPacketizations() const { return m_mediaPacketizations; }
2814 
2815  const H323CapabilitiesSet & GetSet() const { return m_set; }
2817 
2818  protected:
2819  H323CapabilitiesList m_table;
2822 };
2823 
2824 
2826 
2827 /* New capability registration macros based on abstract factories
2828  */
2829 #define H323_REGISTER_CAPABILITY(cls, capName) PFACTORY_CREATE(H323CapabilityFactory, cls, capName, true)
2830 
2831 
2832 #endif // OPAL_H323
2833 
2834 #endif // OPAL_H323_H323CAPS_H
2835 
2836 
Forward Error Correction.
Definition: h323caps.h:134
H323NonStandardAudioCapability(H323NonStandardCapabilityInfo::CompareFuncType compareFunc, const BYTE *dataBlock, PINDEX dataSize)
CommandType
Definition: h323caps.h:222
CapabilityDirection
Definition: h323caps.h:310
Definition: h323caps.h:415
PObject::Comparison CompareInfo(const H323NonStandardCapabilityInfo &obj) const
Definition: h323caps.h:568
virtual void SetTxFramesInPacket(unsigned frames)
PString m_identifier
Definition: h323caps.h:553
H323SimultaneousCapabilities()
Definition: h323caps.h:2486
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const
Mode
Specific G.711 encoding algorithm.
Definition: h323caps.h:2210
void Remove(H323Capability *capability)
const OpalMediaFormat & GetH239VideoMediaFormat()
virtual PBoolean OnSendingPDU(PBYTEArray &data) const
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: h323caps.h:311
BYTE t35Extension
Definition: h323caps.h:504
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const
unsigned m_capabilityDescriptorNumber
Definition: h323caps.h:2490
H323H239VideoCapability(const OpalMediaFormat &videoFormat)
Definition: h323caps.h:225
PObject::Comparison(* CompareFuncType)(struct PluginCodec_H323NonStandardCodecData *)
Definition: h323caps.h:418
H323ExtendedVideoCapability(const PString &identifier)
Comparison Compare(const PObject &obj) const
void SetPayloadType(RTP_DataFrame::PayloadTypes pt)
Set the payload type for the capaibility.
Definition: h323caps.h:349
static const char * GetSubTypeName(SubTypes subType)
virtual PObject * Clone() const
Definition: h323caps.h:1371
virtual PString GetFormatName() const
PINDEX SetCapability(PINDEX descriptorNum, PINDEX simultaneous, H323Capability *cap, H323Capability *before=NULL)
H323GenericVideoCapability(const PString &capabilityId, unsigned fixedBitRate=0)
Definition: h323caps.h:521
SubTypes
Definition: h323caps.h:2272
H323Capability & operator[](PINDEX i) const
Definition: h323caps.h:2559
virtual unsigned GetSubType() const
PStringSet m_mediaPacketizations
Definition: h323caps.h:2821
PINDEX AddMediaFormat(PINDEX descriptorNum, PINDEX simultaneous, const OpalMediaFormat &mediaFormat, H323Capability::CapabilityDirection direction=H323Capability::e_Receive)
virtual ~H323GenericCapabilityInfo()
Definition: h323caps.h:530
Speed speed
Definition: h323caps.h:2258
Definition: h323caps.h:95
RTP_DataFrame::PayloadTypes GetPayloadType() const
Definition: mediafmt.h:1006
H323NonStandardDataCapability(unsigned maxBitRate, const BYTE *dataBlock=NULL, PINDEX dataSize=0, PINDEX comparisonOffset=0, PINDEX comparisonLength=P_MAX_INDEX)
Directions
Definition: channels.h:125
PINDEX comparisonOffset
Definition: h323caps.h:507
PObject::Comparison CompareData(const PBYTEArray &data) const
virtual H323Channel * CreateChannel(H323Connection &connection, H323Channel::Directions dir, unsigned sessionID, const H245_H2250LogicalChannelParameters *param) const
Definition: h323caps.h:1363
Ca;ability type has no direction.
Definition: h323caps.h:315
virtual unsigned GetSubType() const
BYTE t35CountryCode
Definition: h323caps.h:503
CapabilityDirection GetCapabilityDirection() const
Definition: h323caps.h:321
User Input capability.
Definition: h323caps.h:131
Definition: h323caps.h:1537
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const
Definition: mediasession.h:321
virtual void SetTxFramesInPacket(unsigned frames)
Comparison Compare(const PObject &obj) const
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu, CommandType type) const
Definition: h323caps.h:2273
Count of main types.
Definition: h323caps.h:135
virtual MainTypes GetMainType() const
Definition: h323caps.h:2115
virtual unsigned GetSubType() const
H.235 security capability.
Definition: h323caps.h:133
virtual PString GetFormatName() const
Definition: h323caps.h:223
Comparison Compare(const PObject &obj) const
Definition: h323caps.h:2497
virtual unsigned GetDefaultSessionID() const
virtual MainTypes GetMainType() const
European standard.
Definition: h323caps.h:2212
H323GenericDataCapability(const PString &capabilityId, unsigned fixedBitRate)
virtual PString GetFormatName() const =0
H323GenericAudioCapabilityTemplate()
Definition: h323caps.h:994
virtual unsigned GetSubType() const
European standard.
Definition: h323caps.h:2219
virtual PBoolean OnReceivedPDU(const H245_DataApplicationCapability &pdu)
static void AddAllCapabilities(H323Capabilities &capabilities, PINDEX descriptorNum, PINDEX simultaneous, H323Capability *rfc2833=NULL)
PayloadTypes
Definition: rtp.h:556
virtual PObject * Clone() const
virtual unsigned GetDefaultSessionID() const
Definition: h323caps.h:2204
American standard.
Definition: h323caps.h:2221
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
WORD manufacturerCode
Definition: h323caps.h:505
Definition: mediafmt.h:112
Generic Control.
Definition: h323caps.h:132
PString oid
Definition: h323caps.h:502
Definition: channels.h:95
PObject::Comparison CompareInfo(const H323GenericCapabilityInfo &obj) const
Speed
Specific G.711 encoding bit rates.
Definition: h323caps.h:2217
PObject::Comparison CompareParam(const H245_NonStandardParameter &param) const
static H323Capability * Create(const PString &name)
Definition: mediafmt.h:60
H323GenericVideoCapabilityTemplate()
Definition: h323caps.h:1366
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
virtual unsigned GetSubType() const
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const
OpalMediaFormat GetMediaFormat() const
Definition: h323caps.h:1160
H323Capability * Copy(const H323Capability &capability)
virtual unsigned GetRxFramesInPacket() const
const H323CapabilitiesSet & GetSet() const
Definition: h323caps.h:2815
PBoolean SetSize(PINDEX newSize)
Set the new size of the table, internal use only.
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: mediasession.h:312
virtual PString GetFormatName() const
Definition: h323caps.h:1004
virtual PBoolean OnSendingPDU(H245_DataApplicationCapability &pdu) const
Definition: h323caps.h:991
enum H323GenericCapabilityInfo::@19 m_bitRateMode
Definition: mediafmt.h:806
CapabilityDirection capabilityDirection
Unique ID assigned to capability.
Definition: h323caps.h:391
Audio codec capability.
Definition: h323caps.h:128
virtual MainTypes GetMainType() const
const PStringSet & GetMediaPacketizations() const
Definition: h323caps.h:2813
H323Capability * FindCapability(unsigned capabilityNumber) const
H323Capabilities & operator=(const H323Capabilities &original)
Definition: h323caps.h:316
unsigned assignedCapabilityNumber
Definition: h323caps.h:390
virtual unsigned GetSubType() const
PINDEX comparisonLength
Definition: h323caps.h:508
unsigned GetCapabilityNumber() const
Get unique capability number.
Definition: h323caps.h:330
void Reorder(const PStringArray &preferenceOrder)
PBoolean SetSize(PINDEX newSize)
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu) const
Arbitrary data capability.
Definition: h323caps.h:130
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
virtual unsigned GetRxFramesInPacket() const
virtual PBoolean OnReceivedPDU(const H245_AudioCapability &pdu, unsigned &packetSize, CommandType type)
H323NonStandardVideoCapability(H323NonStandardCapabilityInfo::CompareFuncType compareFunc, const BYTE *dataBlock, PINDEX dataSize)
virtual PBoolean OnSendingPDU(H245_AudioCapability &pdu, unsigned packetSize, CommandType type) const
PBoolean Merge(const H323Capabilities &newCaps)
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu)
virtual PString GetFormatName() const
Receive capability.
Definition: h323caps.h:312
void SetCapabilityNumber(unsigned num)
Set unique capability number.
Definition: h323caps.h:333
SubTypes subType
Definition: h323caps.h:2389
virtual PBoolean OnReceivedPDU(const PBYTEArray &data)
const unsigned char * data
Definition: opalplugin.h:689
Definition: h323caps.h:2277
virtual unsigned GetSubType() const
OpalBandwidth m_maxBitRate
Definition: h323caps.h:554
Definition: h323caps.h:1846
Definition: h323con.h:137
virtual unsigned GetSubType() const =0
H323GenericControlCapability(const PString &identifier)
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu, CommandType type)
Definition: h323caps.h:167
H323Capability & operator=(const H323Capability &other)
PBYTEArray nonStandardData
Definition: h323caps.h:506
friend ostream & operator<<(ostream &strm, SubTypes subType)
Definition: h323caps.h:2282
Comparison Compare(const PObject &obj) const
PBoolean OnSendingNonStandardPDU(PASN_Choice &pdu, unsigned nonStandardTag) const
H323GenericCapabilityInfo(const PString &id, unsigned maxBitRate, bool fixedBitRate)
Definition: h323caps.h:2279
Definition: h323caps.h:1603
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const
virtual PBoolean IsUsable(const H323Connection &connection) const
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu, CommandType type)
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
virtual MainTypes GetMainType() const
American standard.
Definition: h323caps.h:2214
Definition: h323caps.h:2508
PINDEX AddAllCapabilities(const H323EndPoint &, PINDEX descriptorNum, PINDEX simultaneous, const PString &name, PBoolean exact=false)
Definition: h323caps.h:2610
Comparison Compare(const PObject &obj) const
PBoolean IsMatch(const OpalMediaFormat &mediaFormat, const H245_GenericCapability &param) const
Definition: h323caps.h:166
CompareFuncType compareFunc
Definition: h323caps.h:509
virtual ~H323RealTimeCapability()
virtual PBoolean IsUsable(const H323Connection &connection) const
Definition: h323caps.h:1019
Definition: opalplugin.h:684
PARRAY(H323CapabilitiesList, H323Capability)
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu, CommandType type) const
virtual PBoolean OnSendingPDU(H245_DataApplicationCapability &pdu, CommandType type) const
virtual PBoolean OnReceivedPDU(const H245_AudioCapability &pdu, unsigned &packetSize)
void SetPayloadType(RTP_DataFrame::PayloadTypes type)
Definition: mediafmt.h:1007
Definition: h323caps.h:1998
virtual PBoolean OnReceivedPDU(const H245_VideoCapability &pdu, CommandType type)
Comparison Compare(const PObject &obj) const
void PrintOn(ostream &strm) const
virtual PBoolean OnSendingGenericPDU(H245_GenericCapability &pdu, const OpalMediaFormat &mediaFormat, H323Capability::CommandType type) const
virtual PBoolean OnSendingPDU(H245_VideoCapability &pdu, CommandType type) const
OpalMediaFormatList m_videoFormats
Definition: h323caps.h:1460
virtual PBoolean OnSendingPDU(H245_AudioCapability &pdu, unsigned packetSize) const
void Add(H323Capability *capability)
RTP_DataFrame::PayloadTypes GetPayloadType() const
Get the payload type for the capaibility.
Definition: h323caps.h:346
Definition: h323caps.h:224
Comparison Compare(const PObject &obj) const
virtual PObject * Clone() const
Symmetric capability.
Definition: h323caps.h:314
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
bool UpdateMediaFormat(const OpalMediaFormat &format)
virtual unsigned GetDefaultSessionID() const
PBoolean IsAllowed(const H323Capability &capability)
Definition: h323caps.h:2482
virtual PObject * Clone() const
Definition: h323caps.h:999
Definition: h323caps.h:1387
Comparison Compare(const PObject &obj) const
Definition: h323caps.h:165
OpalMediaFormat m_mediaFormat
Definition: h323caps.h:393
virtual H323Channel * CreateChannel(H323Connection &connection, H323Channel::Directions dir, unsigned sessionID, const H245_H2250LogicalChannelParameters *param) const
virtual MainTypes GetMainType() const
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: h323caps.h:785
virtual unsigned GetSubType() const
void BuildPDU(const H323Connection &connection, H245_TerminalCapabilitySet &pdu) const
Definition: h323caps.h:2275
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
H323CapabilitiesSet m_set
Definition: h323caps.h:2820
Definition: h323caps.h:1468
virtual MainTypes GetMainType() const =0
PINDEX AddAllCapabilities(PINDEX descriptorNum, PINDEX simultaneous, const PString &name, PBoolean exact=false)
Video codec capability.
Definition: h323caps.h:129
OpalMediaFormatList GetMediaFormats() const
Definition: h323caps.h:1278
virtual PBoolean OnReceivedPDU(const H245_DataApplicationCapability &pdu, CommandType type)
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: h323caps.h:2265
Definition: mediasession.h:354
virtual unsigned GetSubType() const
Definition: h323caps.h:2276
H323_UserInputCapability(SubTypes subType)
PBoolean IsMatch(const H245_NonStandardParameter &param) const
virtual unsigned GetTxFramesInPacket() const
void PrintOn(ostream &strm) const
virtual PObject * Clone() const
virtual PBoolean OnReceivedGenericPDU(OpalMediaFormat &mediaFormat, const H245_GenericCapability &pdu, H323Capability::CommandType type)
virtual unsigned GetSubType() const
Definition: h323caps.h:2274
PBoolean OnReceivedNonStandardPDU(const PASN_Choice &pdu, unsigned nonStandardTag)
Definition: h323ep.h:82
void SetCapabilityDirection(CapabilityDirection dir)
Definition: h323caps.h:325
virtual unsigned GetDefaultSessionID() const
Definition: h323caps.h:601
H323DataCapability(unsigned maxBitRate)
virtual PObject * Clone() const
Mode mode
Definition: h323caps.h:2257
MainTypes
Definition: h323caps.h:127
virtual unsigned GetTxFramesInPacket() const
H323GenericAudioCapability(const PString &capabilityId, unsigned fixedBitRate)
virtual PBoolean IsMatch(const PASN_Object &subTypePDU, const PString &mediaPacketization) const
Definition: h323caps.h:169
virtual PString GetFormatName() const
Definition: h323caps.h:904
H323_G711Capability(Mode mode=muLaw, Speed speed=At64k)
OpalMediaFormat & GetWritableMediaFormat() const
virtual PBoolean OnSendingPDU(H245_Capability &pdu) const =0
H323NonStandardCapabilityInfo(CompareFuncType compareFunc, const BYTE *dataBlock, PINDEX dataSize)
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
PINDEX GetSize() const
Definition: h323caps.h:2555
OpalBandwidth m_maxBitRate
Definition: h323caps.h:1987
Transmit only capability.
Definition: h323caps.h:313
virtual PString GetFormatName() const
Definition: h323caps.h:1376
virtual PBoolean OnReceivedPDU(const H245_Capability &pdu)
H323CapabilitiesList m_table
Definition: h323caps.h:2819