h245caps.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:56k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.6 $
  3.  * $Date: 1998/04/03 15:16:32 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. //       AND elemedia    //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. ///////////////////////////////////////////////////////////////
  19. // File: h245caps.h  //
  20. //  //
  21. // 11_Jul_1997  Unixware port.  //
  22. //  removed virtual keyword from operator =  //
  23. // 10_Dec_1997  Destructor made virtual      //
  24. //      //
  25. ///////////////////////////////////////////////////////////////
  26. #if (!defined(__H245SIGCAPS_H__))
  27. #define __H245SIGCAPS_H__
  28. #include "util/platform.h"
  29. #include "api/h245types.h"
  30. // The Capability Types...
  31. enum H245SigCapType
  32. {
  33. CAP_NONSTD,
  34. CAP_AUDIO,
  35. CAP_VIDEO, 
  36. CAP_DATA,
  37. CAP_CONF
  38. };
  39. // The various Audio capability types...
  40. enum H245SigAudProt
  41. {
  42. AUD_NONSTD = 1,
  43. AUD_G711ALAW64K = 2,
  44. AUD_G711ALAW56K = 3,
  45. AUD_G711ULAW64K = 4,
  46. AUD_G711ULAW56K = 5,
  47. AUD_G722_64K = 6,
  48. AUD_G722_56K = 7,
  49. AUD_G722_48K = 8,
  50. AUD_G7231 = 9,
  51. AUD_G728 = 10, 
  52. AUD_G729 = 11,
  53. AUD_G729A = 12,
  54.     AUD_IS11172 = 13,
  55.     AUD_IS13818 = 14,
  56. AUD_G729AWSILSUPP = 15
  57. }; 
  58. // The various video capability types.
  59. enum H245SigVidProt 
  60. {
  61. VID_NONSTD = 1,
  62.     VID_H261 = 2,
  63.     VID_H262 = 3,
  64.     VID_H263 = 4,
  65.     VID_IS11172 = 5
  66. }; 
  67. // The various data application capability types.
  68. enum H245SigDataProt 
  69. {
  70. DAT_NONSTD = 1,
  71. DAT_T120 = 2,
  72. DAT_DSM_CC = 3,
  73. DAT_USERDATA = 4,
  74. DAT_T84 = 5,
  75. DAT_T434 = 6,
  76. DAT_H224 = 7,
  77. DAT_NLPID = 8,
  78. DAT_DSVDCTRL = 9,
  79. DAT_H222DATAPTNG = 10,
  80. DAT_T84RESTRICTED = 11 /*,*/ // <PORT1>
  81. }; 
  82. // The various data application capability protocol types.
  83. enum H245SigDataProtType
  84. {
  85. DPT_NONSTD = 1,
  86. DPT_V14BUFFERED = 2,
  87. DPT_V42LAPM = 3,
  88. DPT_HDLCFRAMETUNN = 4,
  89. DPT_H310SEPVCSTK = 5,
  90. DPT_H310SINGLEVCSTK = 6,
  91. DPT_TRANSPARENT = 7,
  92. DPT_SEGANDREASSEMBLY = 8,
  93. DPT_HDLCFRAMETUNNWSAR = 9,
  94. DPT_V120 = 10,
  95. DPT_SEPARATELANSTACK = 11,
  96. DPT_INVALID
  97. }; 
  98. // The T84 protocol data application capability types.
  99. enum H245SigDataT84Prot 
  100. {
  101. T84_UNRESTRICTED = 1,
  102. T84_RESTRICTED = 2
  103. }; 
  104. // The only nonstatandard capability type.
  105. enum H245SigNonStdProt 
  106. {
  107. NSP_NONSTD = 1 /*,*/ // <PORT1>
  108. }; 
  109. // The various capability modes..
  110. enum H245SigCapMode
  111. {
  112. CPM_XX,
  113. CPM_NS,
  114. CPM_RX, // Receive only
  115. CPM_TX, // Transmit only
  116. CPM_RW // Receive and Transmit
  117. };
  118. // Forward Class Declarations
  119. class H245Capability;
  120. class H245SigCapTable;
  121. class H245SigNonStdParam;
  122. class H245AudioCapability;
  123. class H245VideoCapability;
  124. class H245NonStandardParameter;
  125. class H245CapabilityDescriptor;
  126. class H245DataApplicationCapability;
  127. class Logger;
  128. struct _H245T84Profile;
  129. struct _H245DataProtocolCapability;
  130. struct _H245H225Capability;
  131. struct _H245H261VideoCapability;
  132. struct _H245H263VideoCapability;
  133. struct _H245IS11172AudioCapability;
  134. // Internal Range checking class
  135. class DLLEXPORT H245SigRange
  136. {
  137.     // Data
  138.     protected: // <PORT1>
  139. unsigned int min;
  140. unsigned int max;
  141.     
  142.     // Methods
  143.     protected:
  144. ProtReturnCode Check(unsigned int value);
  145.     public:
  146. H245SigRange(unsigned int newMin, unsigned int newMax);
  147. };
  148. // Internal Range checking integer class
  149. class DLLEXPORT H245SigInt : protected H245SigRange // <PORT1>
  150. {
  151.     // Data
  152.     private:
  153. unsigned int value;
  154.     
  155.     // Methods
  156.     public:
  157. H245SigInt(unsigned int min, unsigned int max);
  158. ProtReturnCode Set(unsigned int);
  159.         ProtReturnCode Get(unsigned int &);
  160. };
  161. // Internal Range checking optional integer class
  162. class DLLEXPORT H245SigOptInt : protected H245SigRange // <PORT1>
  163. {
  164.     // Data
  165.     private:
  166. unsigned int *value;
  167.     
  168.     // Methods
  169.     public:
  170. H245SigOptInt(unsigned int min, unsigned int max);
  171. H245SigOptInt(H245SigOptInt &);
  172. virtual ~H245SigOptInt();
  173. H245SigOptInt& operator=( H245SigOptInt &);
  174. ProtReturnCode Set(unsigned int);
  175. ProtReturnCode Get(unsigned int &) ;
  176. ProtReturnCode Reset();
  177. };
  178. //
  179. // abstraction of capability
  180. //
  181. // This is an abstract base class for all the H245Sig Capability Classes.
  182. // It should never be instantiated and is intended for use only to define
  183. // interfaces and act as a polymorphic base.
  184. //
  185. class DLLEXPORT H245SigCap
  186. {
  187. // Friends
  188. friend class H245SigCapTable;
  189. // Data
  190. private:
  191. int prot;
  192. int type;
  193. // Methods
  194. private:
  195. virtual ProtReturnCode GetCapability(H245Capability &, int mode) = 0;
  196. virtual ProtReturnCode SetCapability(H245Capability &) = 0;
  197. protected:
  198. H245SigCap(int type, int prot);
  199. public:
  200. virtual ~H245SigCap();
  201. // GetType method
  202. //
  203. // This method returns type information about the capability
  204. // class that is being referenced.
  205. // Parameter: type returns the basic type of the class (Audio, Video etc.)
  206. // Parameter: prot returns the actual protocol or sub-type of the class (G711, H263 etc.)
  207. virtual ProtReturnCode GetType(int &type, int &prot) ;
  208. // Class Factory method.
  209. //
  210. // This is a static class method implementing a virtual constructor.
  211. // It takes parameters representing the type and protocol of the required class,
  212. // and creates a new instance of that class.
  213. // The user is responsible for freeing the memory created here.
  214. static ProtReturnCode Factory(H245SigCap *&, int type, int prot);
  215. // For Protocol internal use..
  216. virtual ProtReturnCode Dump(Logger *, int = 0);
  217. };
  218. //
  219. // Non Standard Capabilities class
  220. //
  221. // This Class represents the generic H245 non-standard class and is
  222. // intended for access by the user.
  223. // It is completely independent of the non standard audio and video classes,
  224. // and is intended to cater for non-standard and new protocol types.
  225. //
  226. class DLLEXPORT H245SigNonStdCap : public H245SigCap
  227. {
  228. // Data
  229. private:
  230. H245NonStandardParameter   *data;
  231. // Methods
  232. private:
  233. virtual ProtReturnCode GetCapability(H245Capability &, int mode);
  234. virtual ProtReturnCode SetCapability(H245Capability &);
  235. friend  class H245SigCap;
  236. static ProtReturnCode Factory(H245SigCap *&, int prot);
  237. public:
  238. // Constructor/Destructor/Assignment methods...
  239. //
  240. // These are implemented because the default compiler generated
  241. // methods would not correctly handle the internal data.
  242. H245SigNonStdCap();
  243. H245SigNonStdCap(H245SigNonStdCap &);
  244. virtual ~H245SigNonStdCap();
  245. H245SigNonStdCap &operator =(H245SigNonStdCap &);
  246. // Data access methods
  247. //
  248. // These methods are used to get and set the internal data of the class.
  249. // They both take references to H245SigNonStdParam types and hence 
  250. // the user is responsible for allocation/de-allocation of the parameters.
  251. virtual ProtReturnCode GetData(H245SigNonStdParam &) ;
  252. virtual ProtReturnCode SetData(H245SigNonStdParam &);
  253. // For Protocol internal use..
  254. virtual H245NonStandardParameter *GetPriv() ;
  255. virtual ProtReturnCode SetPriv(H245NonStandardParameter *);
  256. virtual ProtReturnCode Dump(Logger *, int = 0);
  257. };
  258. //
  259. // Abstraction of Audio Capability
  260. //
  261. // This is a base class for all the H245Sig Audio Capability Classes.
  262. // It should never be instantiated.
  263. //
  264. class DLLEXPORT H245SigAudCap : public H245SigCap
  265. {
  266. // Data
  267. private:
  268. H245AudioCapability *data;
  269. // Methods
  270. private:
  271. virtual ProtReturnCode GetCapability(H245Capability &, int mode);
  272. virtual ProtReturnCode SetCapability(H245Capability &);
  273. friend  class H245SigCap;
  274. static ProtReturnCode Factory(H245SigCap *&, int prot);
  275. protected:
  276. H245SigAudCap(int);
  277. public:
  278. // Constructor/Destructor/Assignment methods...
  279. //
  280. // These are implemented because the default compiler generated
  281. // methods would not correctly handle the internal data.
  282. H245SigAudCap(H245SigAudCap&);
  283. virtual ~H245SigAudCap();
  284. H245SigAudCap& operator=(H245SigAudCap&);
  285. // For Protocol internal use..
  286. virtual H245AudioCapability *GetPriv();
  287. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  288. virtual ProtReturnCode Dump(Logger *, int = 0);
  289. };
  290. //
  291. // Abstraction of Video Capability
  292. //
  293. // This is a base class for all the H245Sig Video Capability Classes.
  294. // It should never be instantiated.
  295. //
  296. class DLLEXPORT H245SigVidCap : public H245SigCap
  297. {
  298. // Data
  299. private:
  300. H245VideoCapability *data;
  301. // Methods
  302. private:
  303. virtual ProtReturnCode GetCapability(H245Capability &, int mode);
  304. virtual ProtReturnCode SetCapability(H245Capability &);
  305. friend  class H245SigCap;
  306. static ProtReturnCode Factory(H245SigCap *&, int prot);
  307. protected:
  308. H245SigVidCap(int);
  309. public:
  310. // Constructor/Destructor/Assignment methods...
  311. //
  312. // These are implemented because the default compiler generated
  313. // methods would not correctly handle the internal data.
  314. H245SigVidCap(H245SigVidCap&);
  315. virtual ~H245SigVidCap();
  316. H245SigVidCap& operator=(H245SigVidCap&);
  317. // For Protocol internal use..
  318. virtual H245VideoCapability *GetPriv();
  319. virtual ProtReturnCode SetPriv(H245VideoCapability *);
  320. virtual ProtReturnCode Dump(Logger *, int = 0);
  321. };
  322. //
  323. // Abstraction of Data Application Capability
  324. //
  325. // This class represents the H245Sig Data Application Capability Class.
  326. // It should never be instantiated.
  327. //
  328. class DLLEXPORT H245SigDataCap : public H245SigCap
  329. {
  330. // Data
  331. private:
  332. H245DataApplicationCapability *data;
  333. H245SigInt maxBitRate;
  334. // Methods
  335. private:
  336. virtual ProtReturnCode GetCapability(H245Capability &, int mode);
  337. virtual ProtReturnCode SetCapability(H245Capability &);
  338. friend  class H245SigCap;
  339. static ProtReturnCode Factory(H245SigCap *&, int prot);
  340. protected:
  341. H245SigDataCap(int);
  342. public:
  343. // Constructor/Destructor/Assignment methods...
  344. //
  345. // These are implemented because the default compiler generated
  346. // methods would not correctly handle the internal data.
  347. H245SigDataCap(H245SigDataCap&);
  348. ~H245SigDataCap();
  349. H245SigDataCap& operator=(H245SigDataCap&);
  350. // Data access methods
  351. //
  352. // These methods are used to get and set the internal data
  353. // common to all the derived classes.
  354. // The Set passes the data in by value, while the Get passes
  355. // the value to be returned by reference.
  356. ProtReturnCode GetMaxBitRate(unsigned int &);
  357. ProtReturnCode SetMaxBitRate(unsigned int);
  358. // For Protocol internal use..
  359. virtual H245DataApplicationCapability   *GetPriv();
  360. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  361. virtual ProtReturnCode Dump(Logger *, int = 0);
  362. };
  363. //
  364. // Non Standard Audio Capabilities class
  365. //
  366. // This Class represents the H245 non-standard Audio class and is
  367. // intended for access by the user.
  368. // It is an audio class intended to cater for proprietary/new audio protocols.
  369. //
  370. class DLLEXPORT H245SigNonStdAudCap : public H245SigAudCap
  371. {
  372. // Data
  373. private:
  374. H245NonStandardParameter   *data;
  375.     // Methods
  376. public:
  377. // Constructor/Destructor/Assignment methods...
  378. //
  379. // These are implemented because the default compiler generated
  380. // methods would not correctly handle the internal data.
  381. H245SigNonStdAudCap();
  382. H245SigNonStdAudCap(H245SigNonStdAudCap &);
  383. virtual ~H245SigNonStdAudCap();
  384. H245SigNonStdAudCap& operator=(H245SigNonStdAudCap &);
  385. // Data access methods
  386. //
  387. // These methods are used to get and set the internal data of the class.
  388. // They both take references to H245SigNonStdParam types and hence 
  389. // the user is responsible for allocation/de-allocation of the parameters.
  390. virtual ProtReturnCode SetData(H245SigNonStdParam &);
  391. virtual ProtReturnCode GetData(H245SigNonStdParam &) ;
  392. // For Protocol internal use..
  393. virtual H245AudioCapability *GetPriv();
  394. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  395. virtual ProtReturnCode Dump(Logger *, int = 0);
  396. };
  397. //
  398. // Simple audio base class - for internal use only
  399. //
  400. // This is a base class for the simple H245Sig Audio Capability Classes that
  401. // share similar implementation details.
  402. // It should never be instantiated.
  403. //
  404. class DLLEXPORT H245SigSimAudCap : public H245SigAudCap
  405. {
  406. // Data
  407. protected:
  408. H245SigInt framesPerPkt;
  409. // Methods
  410. protected:
  411. H245SigSimAudCap(int);
  412. public:
  413. // Data access methods
  414. //
  415. // These methods are used to get and set the internal data of the
  416. // derived classes.
  417. // The Set passes the types in by value, while the Get passes
  418. // the value to be returned by reference.
  419. ProtReturnCode GetFramesPerPkt(unsigned int &);
  420. ProtReturnCode SetFramesPerPkt(unsigned int);
  421. // This method is used to dump the internal data values of the class
  422. virtual ProtReturnCode Dump(Logger *, int = 0);
  423. };
  424. //
  425. // G711Ulaw64k audio class
  426. //
  427. // This Class represents the H245 G711Ulaw64k Audio class and is
  428. // intended for access by the user.
  429. // 
  430. // It is derived from the H245SigSimAudCap class and inherits its
  431. // data accessing methods.
  432. //
  433. class DLLEXPORT H245SigG711Ulaw64kCap : public H245SigSimAudCap
  434. {
  435.     // Methods
  436. public:
  437. H245SigG711Ulaw64kCap();
  438. // For Protocol internal use..
  439. virtual H245AudioCapability *GetPriv() ;
  440. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  441. // For Protocol internal use..
  442. virtual ProtReturnCode Dump(Logger *, int = 0);
  443. };
  444. //
  445. // G711Alaw64k audio class
  446. //
  447. // This Class represents the H245 G711Alaw64k Audio class and is
  448. // intended for access by the user.
  449. // 
  450. // It is derived from the H245SigSimAudCap class and inherits its
  451. // data accessing methods.
  452. //
  453. class DLLEXPORT H245SigG711Alaw64kCap : public H245SigSimAudCap
  454. {
  455.     // Methods
  456. public:
  457. H245SigG711Alaw64kCap();
  458. // For Protocol internal use..
  459. virtual H245AudioCapability *GetPriv() ;
  460. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  461. virtual ProtReturnCode Dump(Logger *, int = 0);
  462. };
  463. //
  464. // G711Ulaw56k audio class
  465. //
  466. // This Class represents the H245 G711Ulaw56k Audio class and is
  467. // intended for access by the user.
  468. // 
  469. // It is derived from the H245SigSimAudCap class and inherits its
  470. // data accessing methods.
  471. //
  472. class DLLEXPORT H245SigG711Ulaw56kCap : public H245SigSimAudCap
  473. {
  474.     // Methods
  475. public:
  476. H245SigG711Ulaw56kCap();
  477. // For Protocol internal use..
  478. virtual H245AudioCapability *GetPriv() ;
  479. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  480. virtual ProtReturnCode Dump(Logger *, int = 0);
  481. };
  482. //
  483. // G711Alaw56k audio class
  484. //
  485. // This Class represents the H245 G711Alaw56k Audio class and is
  486. // intended for access by the user.
  487. // 
  488. // It is derived from the H245SigSimAudCap class and inherits its
  489. // data accessing methods.
  490. //
  491. class DLLEXPORT H245SigG711Alaw56kCap : public H245SigSimAudCap
  492. {
  493.     // Methods
  494. public:
  495. H245SigG711Alaw56kCap();
  496. // For Protocol internal use..
  497. virtual H245AudioCapability *GetPriv() ;
  498. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  499. virtual ProtReturnCode Dump(Logger *, int = 0);
  500. };
  501. //
  502. // G722_64k audio class
  503. //
  504. // This Class represents the H245 G722_64k Audio class and is
  505. // intended for access by the user.
  506. // 
  507. // It is derived from the H245SigSimAudCap class and inherits its
  508. // data accessing methods.
  509. //
  510. class DLLEXPORT H245SigG722_64kCap : public H245SigSimAudCap
  511. {
  512.     // Methods
  513. public:
  514. H245SigG722_64kCap();
  515. // For Protocol internal use..
  516. virtual H245AudioCapability *GetPriv() ;
  517. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  518. virtual ProtReturnCode Dump(Logger *, int = 0);
  519. };
  520. //
  521. // G722_56k audio class
  522. //
  523. // This Class represents the H245 G722_56k Audio class and is
  524. // intended for access by the user.
  525. // 
  526. // It is derived from the H245SigSimAudCap class and inherits its
  527. // data accessing methods.
  528. //
  529. class DLLEXPORT H245SigG722_56kCap : public H245SigSimAudCap
  530. {
  531.     // Methods
  532. public:
  533. H245SigG722_56kCap();
  534. // For Protocol internal use..
  535. virtual H245AudioCapability *GetPriv() ;
  536. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  537. virtual ProtReturnCode Dump(Logger *, int = 0);
  538. };
  539. //
  540. // G722_48k audio class
  541. //
  542. // This Class represents the H245 G722_48k Audio class and is
  543. // intended for access by the user.
  544. // 
  545. // It is derived from the H245SigSimAudCap class and inherits its
  546. // data accessing methods.
  547. //
  548. class DLLEXPORT H245SigG722_48kCap : public H245SigSimAudCap
  549. {
  550.     // Methods
  551. public:
  552. H245SigG722_48kCap();
  553. // For Protocol internal use..
  554. virtual H245AudioCapability *GetPriv() ;
  555. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  556. virtual ProtReturnCode Dump(Logger *, int = 0);
  557. };
  558. //
  559. // G7231 audio class
  560. //
  561. // This Class represents the H245 G7231 Audio class and is
  562. // intended for access by the user.
  563. // 
  564. // It is derived directly from the H245SigAudCap class and
  565. // implements its own data accessing methods.
  566. //
  567. class DLLEXPORT H245SigG7231Cap : public H245SigAudCap
  568. {
  569. // Data
  570. private:
  571. H245SigInt audioFrames;
  572. boolean suppression;
  573.     // Methods
  574. public:
  575. H245SigG7231Cap();
  576. // Data access methods
  577. //
  578. // These methods are used to get and set the internal data
  579. // of the class.
  580. // The Set passes the types in by value, while the Get passes
  581. // the value to be returned by reference.
  582. ProtReturnCode SetMaxFrames(unsigned int);
  583. ProtReturnCode GetMaxFrames(unsigned int &);
  584. ProtReturnCode SetSilenceSupp(boolean);
  585. ProtReturnCode GetSilenceSupp(boolean &) ;
  586. // For Protocol internal use..
  587. virtual H245AudioCapability *GetPriv() ;
  588. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  589. virtual ProtReturnCode Dump(Logger *, int = 0);
  590. };
  591. //
  592. // G728 audio class
  593. //
  594. // This Class represents the H245 G728 Audio class and is
  595. // intended for access by the user.
  596. // 
  597. // It is derived from the H245SigSimAudCap class and inherits its
  598. // data accessing methods.
  599. //
  600. class DLLEXPORT H245SigG728Cap : public H245SigSimAudCap
  601. {
  602.     // Methods
  603. public:
  604. H245SigG728Cap();
  605. // For Protocol internal use..
  606. virtual H245AudioCapability *GetPriv();
  607. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  608. virtual ProtReturnCode Dump(Logger *, int = 0);
  609. };
  610. //
  611. // G729 audio class
  612. //
  613. // This Class represents the H245 G729 Audio class and is
  614. // intended for access by the user.
  615. // 
  616. // It is derived from the H245SigSimAudCap class and inherits its
  617. // data accessing methods.
  618. //
  619. class DLLEXPORT H245SigG729Cap : public H245SigSimAudCap
  620. {
  621.     // Methods
  622. public:
  623. H245SigG729Cap();
  624. // For Protocol internal use..
  625. virtual H245AudioCapability *GetPriv();
  626. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  627. virtual ProtReturnCode Dump(Logger *, int = 0);
  628. };
  629. //
  630. // G729AnnexA audio class
  631. //
  632. // This Class represents the H245 G729AnnexA Audio class and is
  633. // intended for access by the user.
  634. // 
  635. // It is derived from the H245SigSimAudCap class and inherits its
  636. // data accessing methods.
  637. //
  638. class DLLEXPORT H245SigG729AnnexACap : public H245SigSimAudCap
  639. {
  640. // Methods
  641. public:
  642. H245SigG729AnnexACap();
  643. // For Protocol internal use..
  644. virtual H245AudioCapability *GetPriv();
  645. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  646. virtual ProtReturnCode Dump(Logger *, int = 0);
  647. };
  648. //
  649. // IS11172AudioCapability audio class
  650. //
  651. // This Class represents the H245 IS11172AudioCapability
  652. // Audio class and is intended for access by the user.
  653. // 
  654. // It is derived directly from the H245SigAudCap class and
  655. // implements its own data accessing methods.
  656. //
  657. class DLLEXPORT H245SigIS11172AudCap : public H245SigAudCap
  658. {
  659. // Data
  660. private:
  661. boolean audioLayer1;
  662. boolean audioLayer2;
  663. boolean audioLayer3;
  664. boolean audioSampling32k;
  665. boolean audioSampling44k1;
  666. boolean audioSampling48k;
  667. boolean singleChannel;
  668. boolean twoChannels;
  669. H245SigInt bitRate;
  670. // Methods
  671. public:
  672. H245SigIS11172AudCap();
  673. // Data access methods
  674. //
  675. // These methods are used to get and set the internal data
  676. // of the class.
  677. // The Set passes the types in by value, while the Get passes
  678. // the value to be returned by reference.
  679. ProtReturnCode SetAudioLayer1(boolean);
  680. ProtReturnCode GetAudioLayer1(boolean &) ;
  681. ProtReturnCode SetAudioLayer2(boolean);
  682. ProtReturnCode GetAudioLayer2(boolean &) ;
  683. ProtReturnCode SetAudioLayer3(boolean);
  684. ProtReturnCode GetAudioLayer3(boolean &) ;
  685. ProtReturnCode SetAudioSampling32k(boolean);
  686. ProtReturnCode GetAudioSampling32k(boolean &) ;
  687. ProtReturnCode SetAudioSampling44k1(boolean);
  688. ProtReturnCode GetAudioSampling44k1(boolean &) ;
  689. ProtReturnCode SetAudioSampling48k(boolean);
  690. ProtReturnCode GetAudioSampling48k(boolean &) ;
  691. ProtReturnCode SetSingleChannel(boolean);
  692. ProtReturnCode GetSingleChannel(boolean &) ;
  693. ProtReturnCode SetTwoChannels(boolean);
  694. ProtReturnCode GetTwoChannels(boolean &) ;
  695. ProtReturnCode SetBitRate(unsigned int);
  696. ProtReturnCode GetBitRate(unsigned int &) ;
  697. // For Protocol internal use..
  698. virtual H245AudioCapability *GetPriv() ;
  699. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  700. virtual ProtReturnCode Dump(Logger *, int = 0);
  701. };
  702. //
  703. // G729AnnexAwithSilenceSuppression audio class
  704. //
  705. // This Class represents the H245 G729AnnexAwithSilenceSuppression
  706. // Audio class and is intended for access by the user.
  707. // 
  708. // It is derived from the H245SigSimAudCap class and inherits its
  709. // data accessing methods.
  710. //
  711. class DLLEXPORT H245SigG729AnnexAwSSCap : public H245SigSimAudCap
  712. {
  713.     // Methods
  714. public:
  715. H245SigG729AnnexAwSSCap();
  716. // For Protocol internal use..
  717. virtual H245AudioCapability *GetPriv() ;
  718. virtual ProtReturnCode SetPriv(H245AudioCapability *);
  719. virtual ProtReturnCode Dump(Logger *, int = 0);
  720. };
  721. //
  722. // Non Standard Video Capabilities class
  723. //
  724. // This Class represents the H245 non-standard Video class and is
  725. // intended for access by the user.
  726. // It is an audio class intended to cater for proprietary/new video protocols.
  727. //
  728. class DLLEXPORT H245SigNonStdVidCap : public H245SigVidCap
  729. {
  730. // Data
  731. private:
  732. H245NonStandardParameter *data;
  733.     // Methods
  734. public:
  735. // Constructor/Destructor/Assignment methods...
  736. //
  737. // These are implemented because the default compiler generated
  738. // methods would not correctly handle the internal data.
  739. H245SigNonStdVidCap();
  740. H245SigNonStdVidCap(H245SigNonStdVidCap &);
  741. virtual ~H245SigNonStdVidCap();
  742.     H245SigNonStdVidCap& operator=(H245SigNonStdVidCap &);
  743. // Data access methods
  744. //
  745. // These methods are used to get and set the internal data of the class.
  746. // They both take references to H245SigNonStdParam types and hence 
  747. // the user is responsible for allocation/de-allocation of the parameters.
  748. virtual ProtReturnCode GetData(H245SigNonStdParam &) ;
  749. virtual ProtReturnCode SetData(H245SigNonStdParam &);
  750. // For Protocol internal use..
  751. virtual H245VideoCapability *GetPriv() ;
  752. virtual ProtReturnCode SetPriv(H245VideoCapability *);
  753. virtual ProtReturnCode Dump(Logger *, int = 0);
  754. };
  755. //
  756. // H261 video class
  757. //
  758. // This Class represents the H245 H261 Video class and is
  759. // intended for access by the user.
  760. //
  761. class DLLEXPORT H245SigH261VidCap : public H245SigVidCap
  762. {
  763. // Data
  764. private:
  765. H245SigOptInt qcifMPI;
  766. H245SigOptInt cifMPI;
  767. boolean tradeOff;
  768. boolean stillImageTrans;
  769. H245SigInt maxBitRate;
  770.     // Methods
  771. public:
  772. H245SigH261VidCap();
  773. // Data access methods
  774. //
  775. // These methods are used to get, set and reset (where applicable)
  776. // the internal data of the class.
  777. // The Set passes the types in by value, while the Get passes
  778. // the value to be returned by reference.
  779. // The Reset methods are used to remove optional parameters
  780. // (reset by default in the constructor) and take no parameters.
  781. ProtReturnCode SetQcifMPI(unsigned int);
  782. ProtReturnCode GetQcifMPI(unsigned int &);
  783. ProtReturnCode ResetQcifMPI();
  784. ProtReturnCode SetCifMPI(unsigned int);
  785. ProtReturnCode GetCifMPI(unsigned int &);
  786. ProtReturnCode ResetCifMPI();
  787. ProtReturnCode SetTemporalSpatialTradeOff(boolean);
  788. ProtReturnCode GetTemporalSpatialTradeOff(boolean &);
  789. ProtReturnCode SetMaxBitRate(unsigned int);
  790. ProtReturnCode GetMaxBitRate(unsigned int &);
  791. ProtReturnCode SetStillImageTransmission(boolean);
  792. ProtReturnCode GetStillImageTransmission(boolean &);
  793. // For Protocol internal use..
  794. virtual H245VideoCapability *GetPriv() ;
  795. virtual ProtReturnCode SetPriv(H245VideoCapability *);
  796. virtual ProtReturnCode Dump(Logger *, int = 0);
  797. };
  798. //
  799. // H261 video class
  800. //
  801. // This Class represents the H245 H261 Video class and is
  802. // intended for access by the user.
  803. //
  804. class DLLEXPORT H245SigH263VidCap : public H245SigVidCap
  805. {
  806. // Data
  807. private:
  808. boolean unrestrictedVector;
  809. boolean arithmeticCoding;
  810. boolean advancedPrediction;
  811. boolean errorCompensation;
  812. boolean pbFrames;
  813. boolean tradeOff;
  814. H245SigInt maxBitRate;
  815. H245SigOptInt sqcifMPI;
  816. H245SigOptInt qcifMPI;
  817. H245SigOptInt cifMPI;
  818. H245SigOptInt cif4MPI;
  819. H245SigOptInt cif16MPI;
  820. H245SigOptInt hrd_B;
  821. H245SigOptInt bppMaxKb;
  822. H245SigOptInt slowSqcifMPI;
  823. H245SigOptInt slowQcifMPI;
  824. H245SigOptInt slowCifMPI;
  825. H245SigOptInt slowCif4MPI;
  826. H245SigOptInt slowCif16MPI;
  827.     // Methods
  828. public:
  829. H245SigH263VidCap();
  830. // Data access methods
  831. //
  832. // These methods are used to get, set and reset (where applicable)
  833. // the internal data of the class.
  834. // The Set passes the types in by value, while the Get passes
  835. // the value to be returned by reference.
  836. // The Reset methods are used to remove optional parameters
  837. // (reset by default in the constructor) and take no parameters.
  838. ProtReturnCode SetSqcifMPI(unsigned int);
  839. ProtReturnCode GetSqcifMPI(unsigned int &) ;
  840. ProtReturnCode ResetSqcifMPI();
  841. ProtReturnCode SetQcifMPI(unsigned int);
  842. ProtReturnCode GetQcifMPI(unsigned int &) ;
  843. ProtReturnCode ResetQcifMPI();
  844. ProtReturnCode SetCifMPI(unsigned int);
  845. ProtReturnCode GetCifMPI(unsigned int &) ;
  846. ProtReturnCode ResetCifMPI();
  847. ProtReturnCode SetCif4MPI(unsigned int);
  848. ProtReturnCode GetCif4MPI(unsigned int &) ;
  849. ProtReturnCode ResetCif4MPI();
  850. ProtReturnCode SetCif16MPI(unsigned int);
  851. ProtReturnCode GetCif16MPI(unsigned int &) ;
  852. ProtReturnCode ResetCif16MPI();
  853. ProtReturnCode SetMaxBitRate(unsigned int);
  854. ProtReturnCode GetMaxBitRate(unsigned int &) ;
  855. ProtReturnCode SetUnrestrictedVector(boolean);
  856. ProtReturnCode GetUnrestrictedVector(boolean &) ;
  857. ProtReturnCode SetArithmeticCoding(boolean);
  858. ProtReturnCode GetArithmeticCoding(boolean &) ;
  859. ProtReturnCode SetAdvancedPrediction(boolean);
  860. ProtReturnCode GetAdvancedPrediction(boolean &) ;
  861. ProtReturnCode SetPbFrames(boolean);
  862. ProtReturnCode GetPbFrames(boolean &) ;
  863. ProtReturnCode SetTempSpatialTradeOffCap(boolean);
  864. ProtReturnCode GetTempSpatialTradeOffCap(boolean &) ;
  865. ProtReturnCode SetHrd_B(unsigned int);
  866. ProtReturnCode GetHrd_B(unsigned int &);
  867. ProtReturnCode ResetHrd_B();
  868. ProtReturnCode SetBppMaxKb(unsigned int);
  869. ProtReturnCode GetBppMaxKb(unsigned int &);
  870. ProtReturnCode ResetBppMaxKb();
  871. ProtReturnCode SetSlowSqcifMPI(unsigned int);
  872. ProtReturnCode GetSlowSqcifMPI(unsigned int &);
  873. ProtReturnCode ResetSlowSqcifMPI();
  874. ProtReturnCode SetSlowQcifMPI(unsigned int);
  875. ProtReturnCode GetSlowQcifMPI(unsigned int &);
  876. ProtReturnCode ResetSlowQcifMPI();
  877. ProtReturnCode SetSlowCifMPI(unsigned int);
  878. ProtReturnCode GetSlowCifMPI(unsigned int &);
  879. ProtReturnCode ResetSlowCifMPI();
  880. ProtReturnCode SetSlowCif4MPI(unsigned int);
  881. ProtReturnCode GetSlowCif4MPI(unsigned int &);
  882. ProtReturnCode ResetSlowCif4MPI();
  883. ProtReturnCode SetSlowCif16MPI(unsigned int);
  884. ProtReturnCode GetSlowCif16MPI(unsigned int &);
  885. ProtReturnCode ResetSlowCif16MPI();
  886. ProtReturnCode SetErrorCompensation(boolean);
  887. ProtReturnCode GetErrorCompensation(boolean &) ;
  888. // For Protocol internal use..
  889. virtual H245VideoCapability *GetPriv() ;
  890. virtual ProtReturnCode SetPriv(H245VideoCapability *);
  891. virtual ProtReturnCode Dump(Logger *, int = 0);
  892. };
  893. //
  894. // Non Standard Data Application Capabilities class
  895. //
  896. // This Class represents the H245 non-standard Data Application class and is
  897. // intended for access by the user.
  898. // It is a data class intended to cater for proprietary/new data protocols.
  899. //
  900. class DLLEXPORT H245SigNonStdDataCap : public H245SigDataCap
  901. {
  902. // Data
  903. private:
  904. H245NonStandardParameter   *data;
  905.     // Methods
  906. public:
  907. // Constructor/Destructor/Assignment methods...
  908. //
  909. // These are implemented because the default compiler generated
  910. // methods would not correctly handle the internal data.
  911. H245SigNonStdDataCap();
  912. H245SigNonStdDataCap(H245SigNonStdDataCap &);
  913. virtual ~H245SigNonStdDataCap();
  914. H245SigNonStdDataCap& operator=(H245SigNonStdDataCap &);
  915. // Data access methods
  916. //
  917. // These methods are used to get and set the internal data of the class.
  918. // They both take references to H245SigNonStdParam types and hence 
  919. // the user is responsible for allocation/de-allocation of the parameters.
  920. virtual ProtReturnCode SetData(H245SigNonStdParam &);
  921. virtual ProtReturnCode GetData(H245SigNonStdParam &) ;
  922. // For Protocol internal use..
  923. virtual H245DataApplicationCapability *GetPriv();
  924. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  925. virtual ProtReturnCode Dump(Logger *, int = 0);
  926. };
  927. //
  928. // Abstraction of Data Protocol Capability
  929. //
  930. // This class represents the H245Sig Data Protocol Capability Class.
  931. // It should never be instantiated.
  932. //
  933. class DLLEXPORT H245SigComDataProtCap
  934. {
  935. // Data
  936. private:
  937. _H245DataProtocolCapability *data;
  938. H245SigNonStdParam nonstd;
  939. // Methods
  940. protected:
  941. H245SigComDataProtCap(int prot);
  942. public:
  943. // Constructor/Destructor/Assignment methods...
  944. //
  945. // These are implemented because the default compiler generated
  946. // methods would not correctly handle the internal data.
  947. H245SigComDataProtCap(H245SigComDataProtCap &);
  948. virtual ~H245SigComDataProtCap();
  949.     H245SigComDataProtCap& operator=(H245SigComDataProtCap &);
  950. // For Protocol internal use..
  951. ProtReturnCode SetData(int, H245SigNonStdParam &);
  952. ProtReturnCode GetData(int &, H245SigNonStdParam &);
  953. virtual ProtReturnCode Dump(Logger *, int = 0);
  954. virtual _H245DataProtocolCapability *GetPriv();
  955. virtual ProtReturnCode SetPriv(_H245DataProtocolCapability *);
  956. };
  957. //
  958. // Data protocol capability class
  959. //
  960. // This Class represents the H245 Data Protocol Capability class and is
  961. // intended for access by the user. It is intended for use with the
  962. // Data Application Capability classes.
  963. // 
  964. // It is derived from the H245SigComDataProtCap class and inherits its
  965. // data accessing methods.
  966. //
  967. class DLLEXPORT H245SigDataProtCap : public H245SigComDataProtCap
  968. {
  969.     // Methods
  970. public:
  971. H245SigDataProtCap();
  972. // Data access methods
  973. //
  974. // These methods are used to get and set the internal data of the
  975. // derived classes.
  976. // The Set passes the types in by value, while the Get passes
  977. // the value to be returned by reference.
  978. ProtReturnCode SetProt(int);
  979. ProtReturnCode GetProt(int &);
  980. // For Protocol internal use..
  981. virtual ProtReturnCode Dump(Logger *, int = 0);
  982. };
  983. //
  984. // Non Standard data protocol capability class
  985. //
  986. // This Class represents the H245 Non Standard Data Protocol Capability class and is
  987. // intended for access by the user. It is intended for use with the
  988. // Data Application Capability classes.
  989. // 
  990. // It is derived from the H245SigComDataProtCap class and inherits its
  991. // data accessing methods.
  992. //
  993. class DLLEXPORT H245SigNonStdDataProtCap : public H245SigComDataProtCap
  994. {
  995.     // Methods
  996. public:
  997. H245SigNonStdDataProtCap();
  998. // Data access methods
  999. //
  1000. // These methods are used to get and set the internal data of the class.
  1001. // They both take references to H245SigNonStdParam types and hence 
  1002. // the user is responsible for allocation/de-allocation of the parameters.
  1003. virtual ProtReturnCode GetData(H245SigNonStdParam &);
  1004. virtual ProtReturnCode SetData(H245SigNonStdParam &);
  1005. // For Protocol internal use..
  1006. virtual ProtReturnCode Dump(Logger *, int = 0);
  1007. };
  1008. //
  1009. // Common Data Application base class - for internal use only
  1010. //
  1011. // This is a base class for Data Application Capability Classes that
  1012. // share similar implementation details.
  1013. // It should never be instantiated.
  1014. //
  1015. class DLLEXPORT H245SigComDataCap : public H245SigDataCap
  1016. {
  1017. // Data
  1018. protected:
  1019. H245SigDataProtCap *data;
  1020. // Methods
  1021. protected:
  1022. H245SigComDataCap(int);
  1023. public:
  1024. // Constructor/Destructor/Assignment methods...
  1025. //
  1026. // These are implemented because the default compiler generated
  1027. // methods would not correctly handle the internal data.
  1028. H245SigComDataCap(H245SigComDataCap &);
  1029. virtual ~H245SigComDataCap();
  1030.     H245SigComDataCap& operator=(H245SigComDataCap &);
  1031. // Data access methods
  1032. //
  1033. // These methods are used to get and set the internal data of the
  1034. // derived classes.
  1035. // The Set & Get both pass the types in by reference.
  1036. ProtReturnCode GetProtCap(H245SigDataProtCap &);
  1037. ProtReturnCode SetProtCap(H245SigDataProtCap &);
  1038. // This method is used to dump the internal data values of the class
  1039. virtual ProtReturnCode Dump(Logger *, int = 0);
  1040. };
  1041. //
  1042. // T120 data application capability class
  1043. //
  1044. // This Class represents the H245 T120 Data Application Capability class and is
  1045. // intended for access by the user.
  1046. // 
  1047. // It is derived from the H245SigComDataCap class and inherits its
  1048. // data accessing methods.
  1049. //
  1050. class DLLEXPORT H245SigT120Cap : public H245SigComDataCap
  1051. {
  1052.     // Methods
  1053. public:
  1054. H245SigT120Cap();
  1055. // For Protocol internal use..
  1056. virtual H245DataApplicationCapability *GetPriv() ;
  1057. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1058. virtual ProtReturnCode Dump(Logger *, int = 0);
  1059. };
  1060. //
  1061. // DSMCC data application capability class
  1062. //
  1063. // This Class represents the H245 DSMCC Data Application Capability class and is
  1064. // intended for access by the user.
  1065. // 
  1066. // It is derived from the H245SigComDataCap class and inherits its
  1067. // data accessing methods.
  1068. //
  1069. class DLLEXPORT H245SigDSMCCCap : public H245SigComDataCap
  1070. {
  1071.     // Methods
  1072. public:
  1073. H245SigDSMCCCap();
  1074. // For Protocol internal use..
  1075. virtual H245DataApplicationCapability *GetPriv() ;
  1076. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1077. virtual ProtReturnCode Dump(Logger *, int = 0);
  1078. };
  1079. //
  1080. // UserData data application capability class
  1081. //
  1082. // This Class represents the H245 UserData Data Application Capability class and is
  1083. // intended for access by the user.
  1084. // 
  1085. // It is derived from the H245SigComDataCap class and inherits its
  1086. // data accessing methods.
  1087. //
  1088. class DLLEXPORT H245SigUserDataCap : public H245SigComDataCap
  1089. {
  1090.     // Methods
  1091. public:
  1092. H245SigUserDataCap();
  1093. // For Protocol internal use..
  1094. virtual H245DataApplicationCapability *GetPriv() ;
  1095. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1096. virtual ProtReturnCode Dump(Logger *, int = 0);
  1097. };
  1098. //
  1099. // T84Unrestricted data application capability class
  1100. //
  1101. // This Class represents the H245 T84 Data Application Capability class and is
  1102. // intended for access by the user.
  1103. // 
  1104. // It is derived from the H245SigComDataCap class and inherits its
  1105. // data accessing methods
  1106. //
  1107. class DLLEXPORT H245SigT84UnrestrictedCap : public H245SigComDataCap
  1108. {
  1109. // Methods
  1110. public:
  1111. H245SigT84UnrestrictedCap();
  1112. // For Protocol internal use..
  1113. virtual H245DataApplicationCapability *GetPriv() ;
  1114. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1115. virtual ProtReturnCode Dump(Logger *, int = 0);
  1116. };
  1117. //
  1118. // T84Restricted data application capability class
  1119. //
  1120. // This Class represents the H245 T84 Data Application Capability class and is
  1121. // intended for access by the user.
  1122. // 
  1123. // It is derived from the H245SigComDataCap class and inherits its
  1124. // data accessing methods, while also adding its own data and methods.
  1125. //
  1126. class DLLEXPORT H245SigT84RestrictedCap : public H245SigComDataCap
  1127. {
  1128. // Data
  1129. private:
  1130. int qcif;
  1131. int cif;
  1132. int ccir601Seq;
  1133. int ccir601Prog;
  1134. int hdtvSeq;
  1135. int hdtvProg;
  1136. int g3FacsMH200x100;
  1137. int g3FacsMH200x200;
  1138. int g4FacsMMR200x100;
  1139. int g4FacsMMR200x200;
  1140. int jbig200x200Seq;
  1141. int jbig200x200Prog;
  1142. int jbig300x300Seq;
  1143. int jbig300x300Prog;
  1144. int digPhotoLow;
  1145. int digPhotoMedSeq;
  1146. int digPhotoMedProg;
  1147. int digPhotoHighSeq;
  1148. int digPhotoHighProg;
  1149. // Methods
  1150. public:
  1151. H245SigT84RestrictedCap();
  1152. // Data access methods
  1153. //
  1154. // These methods are used to get and set
  1155. // the internal data of the class.
  1156. // The Set passes the types in by value, while the Get passes
  1157. // the value to be returned by reference.
  1158. ProtReturnCode SetQcif(boolean);
  1159. ProtReturnCode GetQcif(boolean &);
  1160. ProtReturnCode SetCif(boolean);
  1161. ProtReturnCode GetCif(boolean &);
  1162. ProtReturnCode SetCcir601Seq(boolean);
  1163. ProtReturnCode GetCcir601Seq(boolean &);
  1164. ProtReturnCode SetCcir601Prog(boolean);
  1165. ProtReturnCode GetCcir601Prog(boolean &);
  1166. ProtReturnCode SetHdtvSeq(boolean);
  1167. ProtReturnCode GetHdtvSeq(boolean &);
  1168. ProtReturnCode SetHdtvProg(boolean);
  1169. ProtReturnCode GetHdtvProg(boolean &);
  1170. ProtReturnCode SetG3FacsMH200x100(boolean);
  1171. ProtReturnCode GetG3FacsMH200x100(boolean &);
  1172. ProtReturnCode SetG3FacsMH200x200(boolean);
  1173. ProtReturnCode GetG3FacsMH200x200(boolean &);
  1174. ProtReturnCode SetG4FacsMMR200x100(boolean);
  1175. ProtReturnCode GetG4FacsMMR200x100(boolean &);
  1176. ProtReturnCode SetG4FacsMMR200x200(boolean);
  1177. ProtReturnCode GetG4FacsMMR200x200(boolean &);
  1178. ProtReturnCode SetJbig200x200Seq(boolean);
  1179. ProtReturnCode GetJbig200x200Seq(boolean &);
  1180. ProtReturnCode SetJbig200x200Prog(boolean);
  1181. ProtReturnCode GetJbig200x200Prog(boolean &);
  1182. ProtReturnCode SetJbig300x300Seq(boolean);
  1183. ProtReturnCode GetJbig300x300Seq(boolean &);
  1184. ProtReturnCode SetJbig300x300Prog(boolean);
  1185. ProtReturnCode GetJbig300x300Prog(boolean &);
  1186. ProtReturnCode SetDigPhotoLow(boolean);
  1187. ProtReturnCode GetDigPhotoLow(boolean &);
  1188. ProtReturnCode SetDigPhotoMedSeq(boolean);
  1189. ProtReturnCode GetDigPhotoMedSeq(boolean &);
  1190. ProtReturnCode SetDigPhotoMedProg(boolean);
  1191. ProtReturnCode GetDigPhotoMedProg(boolean &);
  1192. ProtReturnCode SetDigPhotoHighSeq(boolean);
  1193. ProtReturnCode GetDigPhotoHighSeq(boolean &);
  1194. ProtReturnCode SetDigPhotoHighProg(boolean);
  1195. ProtReturnCode GetDigPhotoHighProg(boolean &);
  1196. // For Protocol internal use..
  1197. virtual H245DataApplicationCapability *GetPriv() ;
  1198. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1199. virtual ProtReturnCode Dump(Logger *, int = 0);
  1200. };
  1201. //
  1202. // T434 data application capability class
  1203. //
  1204. // This Class represents the H245 T434 Data Application Capability class and is
  1205. // intended for access by the user.
  1206. // 
  1207. // It is derived from the H245SigComDataCap class and inherits its
  1208. // data accessing methods.
  1209. //
  1210. class DLLEXPORT H245SigT434Cap : public H245SigComDataCap
  1211. {
  1212.     // Methods
  1213. public:
  1214. H245SigT434Cap();
  1215. // For Protocol internal use..
  1216. virtual H245DataApplicationCapability *GetPriv() ;
  1217. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1218. virtual ProtReturnCode Dump(Logger *, int = 0);
  1219. };
  1220. //
  1221. // H224 data application capability class
  1222. //
  1223. // This Class represents the H245 H224 Data Application Capability class and is
  1224. // intended for access by the user.
  1225. // 
  1226. // It is derived from the H245SigComDataCap class and inherits its
  1227. // data accessing methods.
  1228. //
  1229. class DLLEXPORT H245SigH224Cap : public H245SigComDataCap
  1230. {
  1231.     // Methods
  1232. public:
  1233. H245SigH224Cap();
  1234. // For Protocol internal use..
  1235. virtual H245DataApplicationCapability *GetPriv() ;
  1236. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1237. virtual ProtReturnCode Dump(Logger *, int = 0);
  1238. };
  1239. //
  1240. // Nlpid data application capability class
  1241. //
  1242. // This Class represents the H245 Nlpid Data Application Capability class and is
  1243. // intended for access by the user.
  1244. // 
  1245. // It is derived from the H245SigComDataCap class and inherits its
  1246. // data accessing methods and also adds new ones.
  1247. //
  1248. class DLLEXPORT H245SigNLPIDCap : public H245SigComDataCap
  1249. {
  1250. // Data
  1251. private:
  1252. int length;
  1253. char *data;
  1254.     // Methods
  1255. public:
  1256. H245SigNLPIDCap();
  1257. H245SigNLPIDCap(H245SigNLPIDCap &);
  1258. virtual ~H245SigNLPIDCap();
  1259. H245SigNLPIDCap &operator = (H245SigNLPIDCap &);
  1260. // Data access methods
  1261. //
  1262. // These methods are used to get and set the internal data of the
  1263. // derived classes.
  1264. // The Set passes the types in by reference, while the Get passes
  1265. // the value to be returned as a reference to a pointer.
  1266. ProtReturnCode GetNLPIDData(int &, char *&);
  1267. ProtReturnCode SetNLPIDData(int, char *);
  1268. // For Protocol internal use..
  1269. virtual H245DataApplicationCapability *GetPriv() ;
  1270. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1271. virtual ProtReturnCode Dump(Logger *, int = 0);
  1272. };
  1273. //
  1274. // DSVDControl data application capability class
  1275. //
  1276. // This Class represents the H245 DSVDControl Data Application Capability class and is
  1277. // intended for access by the user.
  1278. // 
  1279. // It is derived from the H245SigDataCap class and inherits its
  1280. // data accessing methods.
  1281. //
  1282. class DLLEXPORT H245SigDSVDControlCap : public H245SigDataCap
  1283. {
  1284.     // Methods
  1285. public:
  1286. H245SigDSVDControlCap();
  1287. // For Protocol internal use..
  1288. virtual H245DataApplicationCapability *GetPriv() ;
  1289. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1290. virtual ProtReturnCode Dump(Logger *, int = 0);
  1291. };
  1292. //
  1293. // DataPartitioning data application capability class
  1294. //
  1295. // This Class represents the H245 DataPartitioning Data Application Capability class and is
  1296. // intended for access by the user.
  1297. // 
  1298. // It is derived from the H245SigComDataCap class and inherits its
  1299. // data accessing methods.
  1300. //
  1301. class DLLEXPORT H245SigH222DataPartitioningCap : public H245SigComDataCap
  1302. {
  1303.     // Methods
  1304. public:
  1305. H245SigH222DataPartitioningCap();
  1306. // For Protocol internal use..
  1307. virtual H245DataApplicationCapability *GetPriv() ;
  1308. virtual ProtReturnCode SetPriv(H245DataApplicationCapability *);
  1309. virtual ProtReturnCode Dump(Logger *, int = 0);
  1310. };
  1311. //
  1312. // CapTable class
  1313. //
  1314. // This Class represents the H245 Capability Table class and is
  1315. // intended for access by the user.
  1316. //
  1317. // It is based on the CapabilityTable H245 Data structure and is used
  1318. // to hold information on all protocol capabilities that are being
  1319. // used. 
  1320. //
  1321. // The protocol capabilities, once they have been created and 
  1322. // initialised with their appropriate data must be registered with the
  1323. // capability table with an appropriate ID before they can be used.
  1324. //
  1325. // The capabilities can be registered in different ways depending on
  1326. // their type:
  1327. //
  1328. // H245SigNonStd types must be registered using RegisterNonStd.
  1329. // H245SigConference types must be registered using RegisterConf (This
  1330. // is currently not yet implemented).
  1331. // H245SigAud..., H245SigVid... and H245SigData... protocol capabilities
  1332. // can ber registered as either Read only, Read/Write or Write only
  1333. // (using RegisterRx/RegisterRW/RegisterTx).
  1334. //
  1335. // All protocol capabilities can be registered multiple times with 
  1336. // different (or the same) values and different (or the same) directions
  1337. // (if allowed by the class type), but each time a class is registered
  1338. // it must use a different ID. (This is not enforced internally - but
  1339. // using the same ID more than once will cause indeterminate results!)
  1340. //
  1341. // When a class is registered, the capability table copies its data
  1342. // internally and stores this data with the ID that is passed in. The
  1343. // ID is then the mechanism used to identify the protocol capability to
  1344. // the rest of the protocol stack.
  1345. //
  1346. class DLLEXPORT H245SigCapTable
  1347. {
  1348. // Data
  1349. private:
  1350. void *data;
  1351. // methods.
  1352. private:
  1353. ProtReturnCode Register(H245SigCap &, int id, int);
  1354. ProtReturnCode Count(int &num,  int mode) ;
  1355. ProtReturnCode GetCaps(int [], int &count,  int mode);
  1356. public:
  1357. // Constructor/Destructor/Assignment methods...
  1358. //
  1359. // These are implemented because the default compiler generated
  1360. // methods would not correctly handle the internal data.
  1361. H245SigCapTable();
  1362. H245SigCapTable( H245SigCapTable &);
  1363. virtual ~H245SigCapTable();
  1364.     H245SigCapTable &operator=( H245SigCapTable &);
  1365. // Capability Registration Methods
  1366. //
  1367. // All take a reference to a H245SigCap and an int ID which is
  1368. // passed by value. No memory is allocated by the method, and
  1369. // all memory handling is the responsibility of the user.
  1370. //
  1371. // As the Capability classes are passed by reference and unaffected
  1372. // by registration, they can be re-registered with the same values
  1373. // in different directions, or, they can have their values changed and
  1374. // then be re-registered in the same directions, or neither or both.
  1375. // The only restriction is that each time any class is registered
  1376. // it MUST use a unique ID (see above).
  1377. // This method is used to register only H245SigNonStdCap protocol
  1378. // capability classes to the capability table. (this does not
  1379. // apply to H245SigNonStdAudCap etc. types which are registered
  1380. // as normal standard types.
  1381. ProtReturnCode RegisterNonStd(H245SigCap &, int id);
  1382. // This method is used to register only H245SigConf protocol
  1383. // capability classes to the capability table.
  1384. // This method is not yet implemented!
  1385. ProtReturnCode RegisterAsConf(H245SigCap &, int id);
  1386. // These methods are used to register the Audio/Video/Data protocol
  1387. // capability classes to the capability table. Specifying seperate
  1388. // values for Read Only (RegisterAsRx), Read/Write (RegisterAsRW)
  1389. // and Write Only (RegisterAsTx).
  1390. ProtReturnCode RegisterAsRx(H245SigCap &, int id);
  1391. ProtReturnCode RegisterAsTx(H245SigCap &, int id);
  1392. ProtReturnCode RegisterAsRW(H245SigCap &, int id);
  1393. // Protocol Count Methods
  1394. //
  1395. // These methods are used to get the numbers of capabilities
  1396. // registered as any one type. They take a reference to an int
  1397. // which is updated by the appropriate method.
  1398. ProtReturnCode GetNumNonStd(int &) ;
  1399. ProtReturnCode GetNumConf(int &) ;
  1400. ProtReturnCode GetNumRx(int &) ;
  1401. ProtReturnCode GetNumTx(int &) ;
  1402. ProtReturnCode GetNumRW(int &) ;
  1403. // Protocol Id Retrieval
  1404. //
  1405. // These methods each retrieve a list of capability IDs registered
  1406. // as any one type.
  1407. // The numeric ID values are placed in an array passed into the method
  1408. // by the user along with the number of elements.
  1409. // The method fills the array with numeric ids and updates the count
  1410. // value to indicate the number of ids actually returned.
  1411. // It is up to the user to check the number of capabilities registered
  1412. // as any one type using the appropriate GetNumXX method, and pass in
  1413. // an array big enough to hold all the values. If the array is too 
  1414. // small, only the number of spaces available will be filled.
  1415. // No memory is allocated by this method and it is up to the user to
  1416. // deal with the memory handling of the array.
  1417. ProtReturnCode GetNonStd(int [], int &count) ;
  1418. ProtReturnCode GetConf(int [], int &count) ;
  1419. ProtReturnCode GetRx(int [], int &count) ;
  1420. ProtReturnCode GetTx(int [], int &count) ;
  1421. ProtReturnCode GetRW(int [], int &count) ;
  1422. // Protocol Type Retrieval
  1423. //
  1424. // This method takes (as an int passed by value) the ID of a registered
  1425. // capability class, and then updates the type and protocol parameters 
  1426. // (passed in by reference) to indicate what type of capability this is.
  1427. ProtReturnCode GetCapType(int &type, int &prot, int id) ;
  1428. // Protocol Data Retrieval
  1429. //
  1430. // This method takes (as an int passed by value) the ID of a registered
  1431. // capability class, and then copies the registered Capability Class to
  1432. // the Class parameter (passed in as a reference).
  1433. //
  1434. // This Class parameter must be an instance of the correct capability class
  1435. // for this call to work. If an incorrect class is passed, an error will be
  1436. // returned.
  1437. //
  1438. // (The parameters returned from the above GetCapType method could be used
  1439. // with the class method: H245SigCap::Factory() to automatically create
  1440. // instances of the appropriate type.)
  1441. //
  1442. // The class is passed in by reference and hence, the user is responsible
  1443. // for memory handling.
  1444. ProtReturnCode GetCap(H245SigCap &, int id) ;
  1445. // This method clears all stored data
  1446. ProtReturnCode Reset();
  1447. // For Protocol internal use.
  1448. void *GetPriv() ;
  1449. ProtReturnCode SetPriv(void *ct);
  1450. virtual ProtReturnCode Dump(Logger *, int = 0);
  1451. };
  1452. //
  1453. // AltSet class
  1454. //
  1455. // This Class represents the H245 Alternate Set class and is
  1456. // intended for access by the user.
  1457. //
  1458. // It is based on the AlternativeCapabilitySet H245 Data structure
  1459. // and is used to group the set of alternative protocol capabilities
  1460. // that can go to make up a single active logical channel.
  1461. //
  1462. // i.e. At any one time, only one of the stored protocols can be the
  1463. // active logical channel represented by the class.
  1464. //
  1465. // The protocol capabilities are identified to the class by means of
  1466. // the numeric IDs used when the capability class is registered with 
  1467. // the capability table.
  1468. //
  1469. // The class contains methods to add an individual protocol capability
  1470. // to the set, get the number of capabilities in the set, and retrieve
  1471. // the capabilities in the set.
  1472. //
  1473. class DLLEXPORT H245SigAltSet
  1474. {
  1475. // Data
  1476. private:
  1477. void *data;
  1478. // methods.
  1479. public:
  1480. // Constructor/Destructor/Assignment methods...
  1481. //
  1482. // These are implemented because the default compiler generated
  1483. // methods would not correctly handle the internal data.
  1484. H245SigAltSet();
  1485. H245SigAltSet( H245SigAltSet &);
  1486. virtual ~H245SigAltSet();
  1487.     H245SigAltSet& operator=( H245SigAltSet &);
  1488. // Data access methods
  1489. //
  1490. // These methods are used to get, set and reset (where applicable)
  1491. // the internal data of the class.
  1492. // The Set passes the types in by value, while the Get passes
  1493. // the value to be returned by reference.
  1494. // The Reset methods are used to remove optional parameters
  1495. // (reset by default in the constructor) and take no parameters.
  1496. // This method adds a capability to the alternate set.
  1497. // The capability is referenced by the numeric ID used when the
  1498. // class was registered with the capability table.
  1499. ProtReturnCode AddCapId(int);
  1500. // This method returns the number of protocol capabilities added
  1501. // to this set. The number is passed by reference, and is updated
  1502. // within the method.
  1503. ProtReturnCode GetNum(int &) ;
  1504. // This method retrieves a list of capabilities grouped in this
  1505. // Alternate Set. The numeric values are placed in an array passed
  1506. // into the method by the user along with the number of elements.
  1507. // The method fills the array with numeric ids and updates the count
  1508. // value to indicate the number of ids actually returned.
  1509. // It is up to the user to check the number of capabilities grouped
  1510. // in the set using the GetNum method, and pass in an array big enough
  1511. // to hold all the values. If the array is too small, only the number
  1512. // of spaces available will be filled.
  1513. // No memory is allocated by this method and it is up to the user to
  1514. // deal with the memory handling of the array.
  1515. ProtReturnCode GetCaps(int [], int &count) ;
  1516. // This method clears all stored data
  1517. ProtReturnCode Reset();
  1518. // For protocol internal use.
  1519. void *GetPriv() ;
  1520. ProtReturnCode SetPriv(void *);
  1521. virtual ProtReturnCode Dump(Logger *, int = 0);
  1522. };
  1523. //
  1524. // CapDesc class
  1525. //
  1526. // This Class represents the H245 Capability Descriptor class and is
  1527. // intended for access by the user.
  1528. //
  1529. // It is based on the CapabilityDescriptor H245 Data structure and is
  1530. // used to represent set of logical channels (each represented by an
  1531. // AltSet Class) that can be simultaneously active at any one time.
  1532. //
  1533. // i.e. A CapabilityDescriptor contains multiple
  1534. // AlternativeCapabilitySets. From each of the contained 
  1535. // AlternativeCapabilitySets, one of its alternative protocols
  1536. // can be used as a single logical channel that can be used
  1537. // simultaneously with the other single alternative protocols from
  1538. // all the other AlternativeCapabilitySets.
  1539. //
  1540. // Thus a CapabilityDescriptor represents a possible group of logical
  1541. // channel alternatives.
  1542. //
  1543. // The class contains methods to add and retrieve AlternativeCapabilitySet
  1544. // classes stored in this class.
  1545. //
  1546. // The class also contains methods to get and set an ID which is used
  1547. // to identify it to the CapabilityDescriptorSet of CapabilityDescriptor
  1548. // classes that represent all the possible combinations of alternative
  1549. // logical channels that can be active at any one time.
  1550. //
  1551. class DLLEXPORT H245SigCapDesc
  1552. {
  1553. // Data
  1554. private:
  1555. int id;
  1556. void *data;
  1557. H245CapabilityDescriptor *desc;
  1558. // Methods
  1559. public:
  1560. // Constructor/Destructor/Assignment methods...
  1561. //
  1562. // These are implemented because the default compiler generated
  1563. // methods would not correctly handle the internal data.
  1564. H245SigCapDesc();
  1565. H245SigCapDesc(H245SigCapDesc &);
  1566. virtual ~H245SigCapDesc();
  1567.     H245SigCapDesc& operator=(H245SigCapDesc &);
  1568. // Id Setting Methods
  1569. //
  1570. // These methods are used to Set and Get the Id of the CapDesc.
  1571. // The Set passes the ID in by value, while the Get passes
  1572. // the value to be returned by reference.
  1573. ProtReturnCode SetId(int);
  1574. ProtReturnCode GetId(int &);
  1575. // AltSet Manipulation Methods
  1576. //
  1577. // These methods are used to Add and Retrieve information about
  1578. // Logical Channels in the form of AltSets stored in the CApDesc.
  1579. // This method is used to add an Alternate Set to the Capability
  1580. // Descriptor. The method copies the relevant data leaving the 
  1581. // Alternative Set (passed in by reference) unchanged. Hence all
  1582. // memory handling is the responsinility of the user.
  1583. ProtReturnCode AddSet(H245SigAltSet &);
  1584. // These methods are used to iteratively retrive copies of the
  1585. // Alternative Cability sets from the Descriptor into the 
  1586. // (passed by  reference) parameters.
  1587. // No memory is allocated, and the stored data is not affected
  1588. // by being copied - its data cannot be manipulated by this
  1589. // process - only viewed.
  1590. ProtReturnCode GetFirstSet(H245SigAltSet &);
  1591. ProtReturnCode GetNextSet(H245SigAltSet &);
  1592. // This method clears all stored data
  1593. ProtReturnCode Reset();
  1594. // For protocol internal use.
  1595. H245CapabilityDescriptor *GetPriv() ;
  1596. ProtReturnCode SetPriv(H245CapabilityDescriptor *);
  1597. virtual ProtReturnCode Dump(Logger *, int = 0);
  1598. };
  1599. //
  1600. // CapDescs class
  1601. //
  1602. // This Class represents the H245 Capability Descriptor Set class and is
  1603. // intended for access by the user.
  1604. //
  1605. // It is based on the CapabilityDescriptorSet H245 Data structure and is
  1606. // used to represent every (relevant) possible combination of logical
  1607. // channels that can be simultaneously opened at any one time.
  1608. //
  1609. // i.e. Whereas each CapabilityDescriptor represents one possible group
  1610. // of alternatives, the CapabilityDescriptorSet represents the complete
  1611. // set of groups of alternative simultaneous logical channels.
  1612. //
  1613. // The class contains methods to add an individual capability descriptor
  1614. // to the set, get the number of capability descriptors in the set, and 
  1615. // retrieve the capability descriptors in the set.
  1616. //
  1617. class DLLEXPORT H245SigCapDescs
  1618. {
  1619. // Data
  1620. private:
  1621. void *descs;
  1622. // Methods
  1623. public:
  1624. // Constructor/Destructor/Assignment methods...
  1625. //
  1626. // These are implemented because the default compiler generated
  1627. // methods would not correctly handle the internal data.
  1628. H245SigCapDescs();
  1629. H245SigCapDescs( H245SigCapDescs &);
  1630. virtual ~H245SigCapDescs();
  1631.     H245SigCapDescs& operator=( H245SigCapDescs &);
  1632. // Data Manipulation Methods
  1633. //
  1634. // These methods are used to Add and Retrieve information about
  1635. // Capability Descriptors stored in the set.
  1636. // This method is used to add a Capability Descriptor to the set.
  1637. // The method copies the relevant data leaving the descriptor
  1638. // (passed in by reference) unchanged. Hence all memory handling
  1639. // is the responsinility of the user.
  1640. ProtReturnCode AddDesc(H245SigCapDesc &);
  1641. // These methods are used to iteratively retrive copies of the
  1642. // Capability Descriptors from the set into the (passed by 
  1643. // reference) parameters.
  1644. // No memory is allocated, and the stored data is not affected
  1645. // by being copied - its data cannot be manipulated by this
  1646. // process - only viewed.
  1647. ProtReturnCode GetFirstDesc(H245SigCapDesc &);
  1648. ProtReturnCode GetNextDesc(H245SigCapDesc &);
  1649. // This methods are used to selectively retrive a copy of the
  1650. // Capability Descriptor specified by the ID parameter (passed
  1651. // in by value) from the set into the parameters (passed by
  1652. // reference).
  1653. // No memory is allocated, and the stored data is not affected
  1654. // by being copied - its data cannot be manipulated by this
  1655. // process - only viewed.
  1656. ProtReturnCode GetDesc(H245SigCapDesc &, int id);
  1657. // This method clears all stored data
  1658. ProtReturnCode Reset();
  1659. // For protocol internal use.
  1660. void *GetPriv() ;
  1661. ProtReturnCode SetPriv(void *);
  1662. virtual ProtReturnCode Dump(Logger *, int = 0);
  1663. };
  1664. #endif  // __H245SIGCAPS_H__