Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1373 lines
45 KiB

  1. /* Copyright (C) Microsoft Corporation 1999, All rights reserved. */
  2. #ifndef __H245FMT_H__
  3. #define __H245FMT_H__
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /*
  8. This file defines the structural interface that exists between
  9. installable H.245-compatible filter components and core TAPI MSP
  10. components.
  11. */
  12. // FORMAT_H245VERSION indicates the version number of H.245 that
  13. // was in effect at the time the module was compiled. Core MSP
  14. // maintain backward compatibility with modules compiled using this
  15. // header file.
  16. #define FORMAT_H245VERSION 3
  17. /*
  18. The following data types are defined here to be consistent with
  19. the ASN.1 library that is/was used to build TAPI core components.
  20. If the ASN core files are also to be included, they must be included
  21. before including this file.
  22. */
  23. #ifndef __MS_ASN1_H__ // avoid duplicate definitions when msasn1.h is included
  24. #define __MS_ASN1_H__
  25. /* ------ Basic integer types ------ */
  26. typedef unsigned char ASN1uint8_t;
  27. typedef signed char ASN1int8_t;
  28. typedef unsigned short ASN1uint16_t;
  29. typedef signed short ASN1int16_t;
  30. typedef unsigned long ASN1uint32_t;
  31. typedef signed long ASN1int32_t;
  32. typedef ASN1int32_t ASN1enum_t; // enumerated type
  33. typedef ASN1uint16_t ASN1choice_t; // choice
  34. /* ------ Basic ASN.1 types ------ */
  35. typedef ASN1uint8_t ASN1octet_t;
  36. typedef ASN1uint8_t ASN1bool_t;
  37. typedef struct ASN1objectidentifier_s
  38. {
  39. struct ASN1objectidentifier_s *next;
  40. ASN1uint32_t value;
  41. }*ASN1objectidentifier_t;
  42. typedef struct tagASN1octetstring_t
  43. {
  44. ASN1uint32_t length;
  45. ASN1octet_t *value;
  46. }ASN1octetstring_t;
  47. #endif __MS_ASN1_H__
  48. #ifndef _H245ASN_Module_H_ // avoid duplicate definitions when h245asn.h is included
  49. #define _H245ASN_Module_H_
  50. /* ------ H.245 audio and video structures ------ */
  51. typedef ASN1uint16_t CustomPictureFormat_pixelAspectInformation_pixelAspectCode_Set;
  52. typedef ASN1uint16_t RTPH263VideoRedundancyEncoding_containedThreads_Seq;
  53. typedef ASN1uint16_t RTPH263VideoRedundancyFrameMapping_frameSequence_Seq;
  54. typedef struct RedundancyEncodingCapability_secondaryEncoding * PRedundancyEncodingCapability_secondaryEncoding;
  55. typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom * PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom;
  56. typedef struct H263Options_customPictureFormat * PH263Options_customPictureFormat;
  57. typedef struct H263Options_customPictureClockFrequency * PH263Options_customPictureClockFrequency;
  58. typedef struct H263Options_modeCombos * PH263Options_modeCombos;
  59. typedef struct EnhancementLayerInfo_bPictureEnhancement * PEnhancementLayerInfo_bPictureEnhancement;
  60. typedef struct EnhancementLayerInfo_spatialEnhancement * PEnhancementLayerInfo_spatialEnhancement;
  61. typedef struct EnhancementLayerInfo_snrEnhancement * PEnhancementLayerInfo_snrEnhancement;
  62. typedef struct H2250Capability_redundancyEncodingCapability * PH2250Capability_redundancyEncodingCapability;
  63. typedef struct EncryptionCapability * PEncryptionCapability;
  64. typedef ASN1uint16_t CapabilityTableEntryNumber;
  65. typedef struct NonStandardIdentifier_h221NonStandard {
  66. ASN1uint16_t t35CountryCode;
  67. ASN1uint16_t t35Extension;
  68. ASN1uint16_t manufacturerCode;
  69. } NonStandardIdentifier_h221NonStandard;
  70. typedef struct NonStandardIdentifier {
  71. ASN1choice_t choice;
  72. union {
  73. # define object_chosen 1
  74. ASN1objectidentifier_t object;
  75. # define h221NonStandard_chosen 2
  76. NonStandardIdentifier_h221NonStandard h221NonStandard;
  77. } u;
  78. } NonStandardIdentifier;
  79. typedef struct NonStandardParameter {
  80. NonStandardIdentifier nonStandardIdentifier;
  81. ASN1octetstring_t data;
  82. } NonStandardParameter;
  83. typedef struct CustomPictureFormat_pixelAspectInformation_extendedPAR_Set {
  84. ASN1uint16_t width;
  85. ASN1uint16_t height;
  86. } CustomPictureFormat_pixelAspectInformation_extendedPAR_Set;
  87. typedef struct CustomPictureFormat_mPI_customPCF_Set {
  88. ASN1uint16_t clockConversionCode;
  89. ASN1uint16_t clockDivisor;
  90. ASN1uint16_t customMPI;
  91. } CustomPictureFormat_mPI_customPCF_Set;
  92. typedef struct VCCapability_availableBitRates_type_rangeOfBitRates {
  93. ASN1uint16_t lowerBitRate;
  94. ASN1uint16_t higherBitRate;
  95. } VCCapability_availableBitRates_type_rangeOfBitRates;
  96. typedef struct CustomPictureFormat_mPI_customPCF {
  97. ASN1uint32_t count;
  98. CustomPictureFormat_mPI_customPCF_Set value[16];
  99. } CustomPictureFormat_mPI_customPCF;
  100. typedef struct CustomPictureFormat_pixelAspectInformation_extendedPAR {
  101. ASN1uint32_t count;
  102. CustomPictureFormat_pixelAspectInformation_extendedPAR_Set value[256];
  103. } CustomPictureFormat_pixelAspectInformation_extendedPAR;
  104. typedef struct CustomPictureFormat_pixelAspectInformation_pixelAspectCode {
  105. ASN1uint32_t count;
  106. CustomPictureFormat_pixelAspectInformation_pixelAspectCode_Set value[14];
  107. } CustomPictureFormat_pixelAspectInformation_pixelAspectCode;
  108. typedef struct H263VideoMode_resolution {
  109. ASN1choice_t choice;
  110. # define sqcif_chosen 1
  111. # define H263VideoMode_resolution_qcif_chosen 2
  112. # define H263VideoMode_resolution_cif_chosen 3
  113. # define cif4_chosen 4
  114. # define cif16_chosen 5
  115. } H263VideoMode_resolution;
  116. typedef struct H262VideoMode_profileAndLevel {
  117. ASN1choice_t choice;
  118. # define profileAndLevel_SPatML_chosen 1
  119. # define profileAndLevel_MPatLL_chosen 2
  120. # define profileAndLevel_MPatML_chosen 3
  121. # define profileAndLevel_MPatH_14_chosen 4
  122. # define profileAndLevel_MPatHL_chosen 5
  123. # define profileAndLevel_SNRatLL_chosen 6
  124. # define profileAndLevel_SNRatML_chosen 7
  125. # define profileAndLevel_SpatialatH_14_chosen 8
  126. # define profileAndLevel_HPatML_chosen 9
  127. # define profileAndLevel_HPatH_14_chosen 10
  128. # define profileAndLevel_HPatHL_chosen 11
  129. } H262VideoMode_profileAndLevel;
  130. typedef struct H261VideoMode_resolution {
  131. ASN1choice_t choice;
  132. # define H261VideoMode_resolution_qcif_chosen 1
  133. # define H261VideoMode_resolution_cif_chosen 2
  134. } H261VideoMode_resolution;
  135. typedef struct CustomPictureFormat_pixelAspectInformation {
  136. ASN1choice_t choice;
  137. union {
  138. # define anyPixelAspectRatio_chosen 1
  139. ASN1bool_t anyPixelAspectRatio;
  140. # define pixelAspectCode_chosen 2
  141. CustomPictureFormat_pixelAspectInformation_pixelAspectCode pixelAspectCode;
  142. # define extendedPAR_chosen 3
  143. CustomPictureFormat_pixelAspectInformation_extendedPAR extendedPAR;
  144. } u;
  145. } CustomPictureFormat_pixelAspectInformation;
  146. typedef struct CustomPictureFormat_mPI {
  147. union {
  148. ASN1uint16_t bit_mask;
  149. ASN1octet_t o[1];
  150. };
  151. # define standardMPI_present 0x80
  152. ASN1uint16_t standardMPI;
  153. # define customPCF_present 0x40
  154. CustomPictureFormat_mPI_customPCF customPCF;
  155. } CustomPictureFormat_mPI;
  156. typedef struct RefPictureSelection_videoBackChannelSend {
  157. ASN1choice_t choice;
  158. # define RefPictureSelection_videoBackChannelSend_none_chosen 1
  159. # define ackMessageOnly_chosen 2
  160. # define nackMessageOnly_chosen 3
  161. # define ackOrNackMessageOnly_chosen 4
  162. # define ackAndNackMessage_chosen 5
  163. } RefPictureSelection_videoBackChannelSend;
  164. typedef struct RefPictureSelection_additionalPictureMemory {
  165. union {
  166. ASN1uint16_t bit_mask;
  167. ASN1octet_t o[1];
  168. };
  169. # define sqcifAdditionalPictureMemory_present 0x80
  170. ASN1uint16_t sqcifAdditionalPictureMemory;
  171. # define qcifAdditionalPictureMemory_present 0x40
  172. ASN1uint16_t qcifAdditionalPictureMemory;
  173. # define cifAdditionalPictureMemory_present 0x20
  174. ASN1uint16_t cifAdditionalPictureMemory;
  175. # define cif4AdditionalPictureMemory_present 0x10
  176. ASN1uint16_t cif4AdditionalPictureMemory;
  177. # define cif16AdditionalPictureMemory_present 0x8
  178. ASN1uint16_t cif16AdditionalPictureMemory;
  179. # define bigCpfAdditionalPictureMemory_present 0x4
  180. ASN1uint16_t bigCpfAdditionalPictureMemory;
  181. } RefPictureSelection_additionalPictureMemory;
  182. typedef struct RTPH263VideoRedundancyFrameMapping_frameSequence {
  183. ASN1uint32_t count;
  184. RTPH263VideoRedundancyFrameMapping_frameSequence_Seq value[256];
  185. } RTPH263VideoRedundancyFrameMapping_frameSequence;
  186. typedef struct RTPH263VideoRedundancyEncoding_containedThreads {
  187. ASN1uint32_t count;
  188. RTPH263VideoRedundancyEncoding_containedThreads_Seq value[256];
  189. } RTPH263VideoRedundancyEncoding_containedThreads;
  190. typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping {
  191. ASN1choice_t choice;
  192. union {
  193. # define roundrobin_chosen 1
  194. # define custom_chosen 2
  195. PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom custom;
  196. } u;
  197. } RTPH263VideoRedundancyEncoding_frameToThreadMapping;
  198. typedef struct RedundancyEncodingCapability_secondaryEncoding {
  199. PRedundancyEncodingCapability_secondaryEncoding next;
  200. CapabilityTableEntryNumber value;
  201. } RedundancyEncodingCapability_secondaryEncoding_Element;
  202. typedef struct RTPH263VideoRedundancyEncoding {
  203. union {
  204. ASN1uint16_t bit_mask;
  205. ASN1octet_t o[1];
  206. };
  207. ASN1uint16_t numberOfThreads;
  208. ASN1uint16_t framesBetweenSyncPoints;
  209. RTPH263VideoRedundancyEncoding_frameToThreadMapping frameToThreadMapping;
  210. # define containedThreads_present 0x80
  211. RTPH263VideoRedundancyEncoding_containedThreads containedThreads;
  212. } RTPH263VideoRedundancyEncoding;
  213. typedef struct RTPH263VideoRedundancyFrameMapping {
  214. ASN1uint16_t threadNumber;
  215. RTPH263VideoRedundancyFrameMapping_frameSequence frameSequence;
  216. } RTPH263VideoRedundancyFrameMapping;
  217. typedef struct H261VideoCapability {
  218. union {
  219. ASN1uint16_t bit_mask;
  220. ASN1octet_t o[1];
  221. };
  222. # define H261VideoCapability_qcifMPI_present 0x80
  223. ASN1uint16_t qcifMPI;
  224. # define H261VideoCapability_cifMPI_present 0x40
  225. ASN1uint16_t cifMPI;
  226. ASN1bool_t temporalSpatialTradeOffCapability;
  227. ASN1uint16_t maxBitRate;
  228. ASN1bool_t stillImageTransmission;
  229. } H261VideoCapability;
  230. typedef struct H262VideoCapability {
  231. union {
  232. ASN1uint16_t bit_mask;
  233. ASN1octet_t o[1];
  234. };
  235. ASN1bool_t profileAndLevel_SPatML;
  236. ASN1bool_t profileAndLevel_MPatLL;
  237. ASN1bool_t profileAndLevel_MPatML;
  238. ASN1bool_t profileAndLevel_MPatH_14;
  239. ASN1bool_t profileAndLevel_MPatHL;
  240. ASN1bool_t profileAndLevel_SNRatLL;
  241. ASN1bool_t profileAndLevel_SNRatML;
  242. ASN1bool_t profileAndLevel_SpatialatH_14;
  243. ASN1bool_t profileAndLevel_HPatML;
  244. ASN1bool_t profileAndLevel_HPatH_14;
  245. ASN1bool_t profileAndLevel_HPatHL;
  246. # define H262VideoCapability_videoBitRate_present 0x80
  247. ASN1uint32_t videoBitRate;
  248. # define H262VideoCapability_vbvBufferSize_present 0x40
  249. ASN1uint32_t vbvBufferSize;
  250. # define H262VideoCapability_samplesPerLine_present 0x20
  251. ASN1uint16_t samplesPerLine;
  252. # define H262VideoCapability_linesPerFrame_present 0x10
  253. ASN1uint16_t linesPerFrame;
  254. # define H262VideoCapability_framesPerSecond_present 0x8
  255. ASN1uint16_t framesPerSecond;
  256. # define H262VideoCapability_luminanceSampleRate_present 0x4
  257. ASN1uint32_t luminanceSampleRate;
  258. } H262VideoCapability;
  259. typedef struct EnhancementLayerInfo {
  260. union {
  261. ASN1uint16_t bit_mask;
  262. ASN1octet_t o[1];
  263. };
  264. ASN1bool_t baseBitRateConstrained;
  265. # define snrEnhancement_present 0x80
  266. PEnhancementLayerInfo_snrEnhancement snrEnhancement;
  267. # define spatialEnhancement_present 0x40
  268. PEnhancementLayerInfo_spatialEnhancement spatialEnhancement;
  269. # define bPictureEnhancement_present 0x20
  270. PEnhancementLayerInfo_bPictureEnhancement bPictureEnhancement;
  271. } EnhancementLayerInfo;
  272. typedef struct TransparencyParameters {
  273. ASN1uint16_t presentationOrder;
  274. ASN1int32_t offset_x;
  275. ASN1int32_t offset_y;
  276. ASN1uint16_t scale_x;
  277. ASN1uint16_t scale_y;
  278. } TransparencyParameters;
  279. typedef struct RefPictureSelection {
  280. union {
  281. ASN1uint16_t bit_mask;
  282. ASN1octet_t o[1];
  283. };
  284. # define additionalPictureMemory_present 0x80
  285. RefPictureSelection_additionalPictureMemory additionalPictureMemory;
  286. ASN1bool_t videoMux;
  287. RefPictureSelection_videoBackChannelSend videoBackChannelSend;
  288. } RefPictureSelection;
  289. typedef struct CustomPictureClockFrequency {
  290. union {
  291. ASN1uint16_t bit_mask;
  292. ASN1octet_t o[1];
  293. };
  294. ASN1uint16_t clockConversionCode;
  295. ASN1uint16_t clockDivisor;
  296. # define CustomPictureClockFrequency_sqcifMPI_present 0x80
  297. ASN1uint16_t sqcifMPI;
  298. # define CustomPictureClockFrequency_qcifMPI_present 0x40
  299. ASN1uint16_t qcifMPI;
  300. # define CustomPictureClockFrequency_cifMPI_present 0x20
  301. ASN1uint16_t cifMPI;
  302. # define CustomPictureClockFrequency_cif4MPI_present 0x10
  303. ASN1uint16_t cif4MPI;
  304. # define CustomPictureClockFrequency_cif16MPI_present 0x8
  305. ASN1uint16_t cif16MPI;
  306. } CustomPictureClockFrequency;
  307. typedef struct CustomPictureFormat {
  308. ASN1uint16_t maxCustomPictureWidth;
  309. ASN1uint16_t maxCustomPictureHeight;
  310. ASN1uint16_t minCustomPictureWidth;
  311. ASN1uint16_t minCustomPictureHeight;
  312. CustomPictureFormat_mPI mPI;
  313. CustomPictureFormat_pixelAspectInformation pixelAspectInformation;
  314. } CustomPictureFormat;
  315. typedef struct H263ModeComboFlags {
  316. ASN1bool_t unrestrictedVector;
  317. ASN1bool_t arithmeticCoding;
  318. ASN1bool_t advancedPrediction;
  319. ASN1bool_t pbFrames;
  320. ASN1bool_t advancedIntraCodingMode;
  321. ASN1bool_t deblockingFilterMode;
  322. ASN1bool_t unlimitedMotionVectors;
  323. ASN1bool_t slicesInOrder_NonRect;
  324. ASN1bool_t slicesInOrder_Rect;
  325. ASN1bool_t slicesNoOrder_NonRect;
  326. ASN1bool_t slicesNoOrder_Rect;
  327. ASN1bool_t improvedPBFramesMode;
  328. ASN1bool_t referencePicSelect;
  329. ASN1bool_t dynamicPictureResizingByFour;
  330. ASN1bool_t dynamicPictureResizingSixteenthPel;
  331. ASN1bool_t dynamicWarpingHalfPel;
  332. ASN1bool_t dynamicWarpingSixteenthPel;
  333. ASN1bool_t reducedResolutionUpdate;
  334. ASN1bool_t independentSegmentDecoding;
  335. ASN1bool_t alternateInterVLCMode;
  336. ASN1bool_t modifiedQuantizationMode;
  337. } H263ModeComboFlags;
  338. typedef struct IS11172VideoCapability {
  339. union {
  340. ASN1uint16_t bit_mask;
  341. ASN1octet_t o[1];
  342. };
  343. ASN1bool_t constrainedBitstream;
  344. # define IS11172VideoCapability_videoBitRate_present 0x80
  345. ASN1uint32_t videoBitRate;
  346. # define IS11172VideoCapability_vbvBufferSize_present 0x40
  347. ASN1uint32_t vbvBufferSize;
  348. # define IS11172VideoCapability_samplesPerLine_present 0x20
  349. ASN1uint16_t samplesPerLine;
  350. # define IS11172VideoCapability_linesPerFrame_present 0x10
  351. ASN1uint16_t linesPerFrame;
  352. # define IS11172VideoCapability_pictureRate_present 0x8
  353. ASN1uint16_t pictureRate;
  354. # define IS11172VideoCapability_luminanceSampleRate_present 0x4
  355. ASN1uint32_t luminanceSampleRate;
  356. } IS11172VideoCapability;
  357. typedef struct H261VideoMode {
  358. H261VideoMode_resolution resolution;
  359. ASN1uint16_t bitRate;
  360. ASN1bool_t stillImageTransmission;
  361. } H261VideoMode;
  362. typedef struct H262VideoMode {
  363. union {
  364. ASN1uint16_t bit_mask;
  365. ASN1octet_t o[1];
  366. };
  367. H262VideoMode_profileAndLevel profileAndLevel;
  368. # define H262VideoMode_videoBitRate_present 0x80
  369. ASN1uint32_t videoBitRate;
  370. # define H262VideoMode_vbvBufferSize_present 0x40
  371. ASN1uint32_t vbvBufferSize;
  372. # define H262VideoMode_samplesPerLine_present 0x20
  373. ASN1uint16_t samplesPerLine;
  374. # define H262VideoMode_linesPerFrame_present 0x10
  375. ASN1uint16_t linesPerFrame;
  376. # define H262VideoMode_framesPerSecond_present 0x8
  377. ASN1uint16_t framesPerSecond;
  378. # define H262VideoMode_luminanceSampleRate_present 0x4
  379. ASN1uint32_t luminanceSampleRate;
  380. } H262VideoMode;
  381. typedef struct IS11172VideoMode {
  382. union {
  383. ASN1uint16_t bit_mask;
  384. ASN1octet_t o[1];
  385. };
  386. ASN1bool_t constrainedBitstream;
  387. # define IS11172VideoMode_videoBitRate_present 0x80
  388. ASN1uint32_t videoBitRate;
  389. # define IS11172VideoMode_vbvBufferSize_present 0x40
  390. ASN1uint32_t vbvBufferSize;
  391. # define IS11172VideoMode_samplesPerLine_present 0x20
  392. ASN1uint16_t samplesPerLine;
  393. # define IS11172VideoMode_linesPerFrame_present 0x10
  394. ASN1uint16_t linesPerFrame;
  395. # define IS11172VideoMode_pictureRate_present 0x8
  396. ASN1uint16_t pictureRate;
  397. # define IS11172VideoMode_luminanceSampleRate_present 0x4
  398. ASN1uint32_t luminanceSampleRate;
  399. } IS11172VideoMode;
  400. typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom {
  401. PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom next;
  402. RTPH263VideoRedundancyFrameMapping value;
  403. } RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom_Element;
  404. typedef struct H263VideoModeCombos_h263VideoCoupledModes {
  405. ASN1uint32_t count;
  406. H263ModeComboFlags value[16];
  407. } H263VideoModeCombos_h263VideoCoupledModes;
  408. typedef struct H263Options_customPictureFormat {
  409. PH263Options_customPictureFormat next;
  410. CustomPictureFormat value;
  411. } H263Options_customPictureFormat_Element;
  412. typedef struct H263Options_customPictureClockFrequency {
  413. PH263Options_customPictureClockFrequency next;
  414. CustomPictureClockFrequency value;
  415. } H263Options_customPictureClockFrequency_Element;
  416. typedef struct H263VideoModeCombos {
  417. H263ModeComboFlags h263VideoUncoupledModes;
  418. H263VideoModeCombos_h263VideoCoupledModes h263VideoCoupledModes;
  419. } H263VideoModeCombos;
  420. typedef struct H263Options_modeCombos {
  421. PH263Options_modeCombos next;
  422. H263VideoModeCombos value;
  423. } H263Options_modeCombos_Element;
  424. typedef struct H263Options {
  425. union {
  426. ASN1uint16_t bit_mask;
  427. ASN1octet_t o[1];
  428. };
  429. ASN1bool_t advancedIntraCodingMode;
  430. ASN1bool_t deblockingFilterMode;
  431. ASN1bool_t improvedPBFramesMode;
  432. ASN1bool_t unlimitedMotionVectors;
  433. ASN1bool_t fullPictureFreeze;
  434. ASN1bool_t partialPictureFreezeAndRelease;
  435. ASN1bool_t resizingPartPicFreezeAndRelease;
  436. ASN1bool_t fullPictureSnapshot;
  437. ASN1bool_t partialPictureSnapshot;
  438. ASN1bool_t videoSegmentTagging;
  439. ASN1bool_t progressiveRefinement;
  440. ASN1bool_t dynamicPictureResizingByFour;
  441. ASN1bool_t dynamicPictureResizingSixteenthPel;
  442. ASN1bool_t dynamicWarpingHalfPel;
  443. ASN1bool_t dynamicWarpingSixteenthPel;
  444. ASN1bool_t independentSegmentDecoding;
  445. ASN1bool_t slicesInOrder_NonRect;
  446. ASN1bool_t slicesInOrder_Rect;
  447. ASN1bool_t slicesNoOrder_NonRect;
  448. ASN1bool_t slicesNoOrder_Rect;
  449. ASN1bool_t alternateInterVLCMode;
  450. ASN1bool_t modifiedQuantizationMode;
  451. ASN1bool_t reducedResolutionUpdate;
  452. # define transparencyParameters_present 0x80
  453. TransparencyParameters transparencyParameters;
  454. ASN1bool_t separateVideoBackChannel;
  455. # define refPictureSelection_present 0x40
  456. RefPictureSelection refPictureSelection;
  457. # define customPictureClockFrequency_present 0x20
  458. PH263Options_customPictureClockFrequency customPictureClockFrequency;
  459. # define customPictureFormat_present 0x10
  460. PH263Options_customPictureFormat customPictureFormat;
  461. # define modeCombos_present 0x8
  462. PH263Options_modeCombos modeCombos;
  463. } H263Options;
  464. typedef struct H263VideoMode {
  465. union {
  466. ASN1uint16_t bit_mask;
  467. ASN1octet_t o[1];
  468. };
  469. H263VideoMode_resolution resolution;
  470. ASN1uint16_t bitRate;
  471. ASN1bool_t unrestrictedVector;
  472. ASN1bool_t arithmeticCoding;
  473. ASN1bool_t advancedPrediction;
  474. ASN1bool_t pbFrames;
  475. # define H263VideoMode_errorCompensation_present 0x80
  476. ASN1bool_t errorCompensation;
  477. # define H263VideoMode_enhancementLayerInfo_present 0x40
  478. EnhancementLayerInfo enhancementLayerInfo;
  479. # define H263VideoMode_h263Options_present 0x20
  480. H263Options h263Options;
  481. } H263VideoMode;
  482. typedef struct H263VideoCapability {
  483. union {
  484. ASN1uint16_t bit_mask;
  485. ASN1octet_t o[2];
  486. };
  487. # define H263VideoCapability_sqcifMPI_present 0x80
  488. ASN1uint16_t sqcifMPI;
  489. # define H263VideoCapability_qcifMPI_present 0x40
  490. ASN1uint16_t qcifMPI;
  491. # define H263VideoCapability_cifMPI_present 0x20
  492. ASN1uint16_t cifMPI;
  493. # define H263VideoCapability_cif4MPI_present 0x10
  494. ASN1uint16_t cif4MPI;
  495. # define H263VideoCapability_cif16MPI_present 0x8
  496. ASN1uint16_t cif16MPI;
  497. ASN1uint32_t maxBitRate;
  498. ASN1bool_t unrestrictedVector;
  499. ASN1bool_t arithmeticCoding;
  500. ASN1bool_t advancedPrediction;
  501. ASN1bool_t pbFrames;
  502. ASN1bool_t temporalSpatialTradeOffCapability;
  503. # define hrd_B_present 0x4
  504. ASN1uint32_t hrd_B;
  505. # define bppMaxKb_present 0x2
  506. ASN1uint16_t bppMaxKb;
  507. # define H263VideoCapability_slowSqcifMPI_present 0x8000
  508. ASN1uint16_t slowSqcifMPI;
  509. # define H263VideoCapability_slowQcifMPI_present 0x4000
  510. ASN1uint16_t slowQcifMPI;
  511. # define H263VideoCapability_slowCifMPI_present 0x2000
  512. ASN1uint16_t slowCifMPI;
  513. # define H263VideoCapability_slowCif4MPI_present 0x1000
  514. ASN1uint16_t slowCif4MPI;
  515. # define H263VideoCapability_slowCif16MPI_present 0x800
  516. ASN1uint16_t slowCif16MPI;
  517. # define H263VideoCapability_errorCompensation_present 0x400
  518. ASN1bool_t errorCompensation;
  519. # define H263VideoCapability_enhancementLayerInfo_present 0x200
  520. EnhancementLayerInfo enhancementLayerInfo;
  521. # define H263VideoCapability_h263Options_present 0x100
  522. H263Options h263Options;
  523. } H263VideoCapability;
  524. typedef struct EnhancementOptions {
  525. union {
  526. ASN1uint16_t bit_mask;
  527. ASN1octet_t o[2];
  528. };
  529. # define EnhancementOptions_sqcifMPI_present 0x80
  530. ASN1uint16_t sqcifMPI;
  531. # define EnhancementOptions_qcifMPI_present 0x40
  532. ASN1uint16_t qcifMPI;
  533. # define EnhancementOptions_cifMPI_present 0x20
  534. ASN1uint16_t cifMPI;
  535. # define EnhancementOptions_cif4MPI_present 0x10
  536. ASN1uint16_t cif4MPI;
  537. # define EnhancementOptions_cif16MPI_present 0x8
  538. ASN1uint16_t cif16MPI;
  539. ASN1uint32_t maxBitRate;
  540. ASN1bool_t unrestrictedVector;
  541. ASN1bool_t arithmeticCoding;
  542. ASN1bool_t temporalSpatialTradeOffCapability;
  543. # define EnhancementOptions_slowSqcifMPI_present 0x4
  544. ASN1uint16_t slowSqcifMPI;
  545. # define EnhancementOptions_slowQcifMPI_present 0x2
  546. ASN1uint16_t slowQcifMPI;
  547. # define EnhancementOptions_slowCifMPI_present 0x1
  548. ASN1uint16_t slowCifMPI;
  549. # define EnhancementOptions_slowCif4MPI_present 0x8000
  550. ASN1uint16_t slowCif4MPI;
  551. # define EnhancementOptions_slowCif16MPI_present 0x4000
  552. ASN1uint16_t slowCif16MPI;
  553. ASN1bool_t errorCompensation;
  554. # define EnhancementOptions_h263Options_present 0x2000
  555. H263Options h263Options;
  556. } EnhancementOptions;
  557. typedef struct BEnhancementParameters {
  558. EnhancementOptions enhancementOptions;
  559. ASN1uint16_t numberOfBPictures;
  560. } BEnhancementParameters;
  561. typedef struct EnhancementLayerInfo_bPictureEnhancement {
  562. PEnhancementLayerInfo_bPictureEnhancement next;
  563. BEnhancementParameters value;
  564. } EnhancementLayerInfo_bPictureEnhancement_Element;
  565. typedef struct VideoMode {
  566. ASN1choice_t choice;
  567. union {
  568. # define VideoMode_nonStandard_chosen 1
  569. NonStandardParameter nonStandard;
  570. # define h261VideoMode_chosen 2
  571. H261VideoMode h261VideoMode;
  572. # define h262VideoMode_chosen 3
  573. H262VideoMode h262VideoMode;
  574. # define h263VideoMode_chosen 4
  575. H263VideoMode h263VideoMode;
  576. # define is11172VideoMode_chosen 5
  577. IS11172VideoMode is11172VideoMode;
  578. } u;
  579. } VideoMode;
  580. typedef struct VideoCapability {
  581. ASN1choice_t choice;
  582. union {
  583. # define VideoCapability_nonStandard_chosen 1
  584. NonStandardParameter nonStandard;
  585. # define h261VideoCapability_chosen 2
  586. H261VideoCapability h261VideoCapability;
  587. # define h262VideoCapability_chosen 3
  588. H262VideoCapability h262VideoCapability;
  589. # define h263VideoCapability_chosen 4
  590. H263VideoCapability h263VideoCapability;
  591. # define is11172VideoCapability_chosen 5
  592. IS11172VideoCapability is11172VideoCapability;
  593. } u;
  594. } VideoCapability;
  595. /******************************************************************************
  596. Audio Format/Capability definitions and structures
  597. *******************************************************************************
  598. */
  599. typedef struct G7231AnnexCCapability_g723AnnexCAudioMode {
  600. ASN1uint16_t highRateMode0;
  601. ASN1uint16_t highRateMode1;
  602. ASN1uint16_t lowRateMode0;
  603. ASN1uint16_t lowRateMode1;
  604. ASN1uint16_t sidMode0;
  605. ASN1uint16_t sidMode1;
  606. } G7231AnnexCCapability_g723AnnexCAudioMode;
  607. typedef struct G7231AnnexCCapability {
  608. union {
  609. ASN1uint16_t bit_mask;
  610. ASN1octet_t o[1];
  611. };
  612. ASN1uint16_t maxAl_sduAudioFrames;
  613. ASN1bool_t silenceSuppression;
  614. # define g723AnnexCAudioMode_present 0x80
  615. G7231AnnexCCapability_g723AnnexCAudioMode g723AnnexCAudioMode;
  616. } G7231AnnexCCapability;
  617. typedef struct IS11172AudioCapability {
  618. ASN1bool_t audioLayer1;
  619. ASN1bool_t audioLayer2;
  620. ASN1bool_t audioLayer3;
  621. ASN1bool_t audioSampling32k;
  622. ASN1bool_t audioSampling44k1;
  623. ASN1bool_t audioSampling48k;
  624. ASN1bool_t singleChannel;
  625. ASN1bool_t twoChannels;
  626. ASN1uint16_t bitRate;
  627. } IS11172AudioCapability;
  628. typedef struct IS13818AudioCapability {
  629. ASN1bool_t audioLayer1;
  630. ASN1bool_t audioLayer2;
  631. ASN1bool_t audioLayer3;
  632. ASN1bool_t audioSampling16k;
  633. ASN1bool_t audioSampling22k05;
  634. ASN1bool_t audioSampling24k;
  635. ASN1bool_t audioSampling32k;
  636. ASN1bool_t audioSampling44k1;
  637. ASN1bool_t audioSampling48k;
  638. ASN1bool_t singleChannel;
  639. ASN1bool_t twoChannels;
  640. ASN1bool_t threeChannels2_1;
  641. ASN1bool_t threeChannels3_0;
  642. ASN1bool_t fourChannels2_0_2_0;
  643. ASN1bool_t fourChannels2_2;
  644. ASN1bool_t fourChannels3_1;
  645. ASN1bool_t fiveChannels3_0_2_0;
  646. ASN1bool_t fiveChannels3_2;
  647. ASN1bool_t lowFrequencyEnhancement;
  648. ASN1bool_t multilingual;
  649. ASN1uint16_t bitRate;
  650. } IS13818AudioCapability;
  651. typedef struct GSMAudioCapability {
  652. ASN1uint16_t audioUnitSize;
  653. ASN1bool_t comfortNoise;
  654. ASN1bool_t scrambled;
  655. } GSMAudioCapability;
  656. typedef struct AudioMode_g7231 {
  657. ASN1choice_t choice;
  658. # define noSilenceSuppressionLowRate_chosen 1
  659. # define noSilenceSuppressionHighRate_chosen 2
  660. # define silenceSuppressionLowRate_chosen 3
  661. # define silenceSuppressionHighRate_chosen 4
  662. } AudioMode_g7231;
  663. typedef struct AudioCapability_g7231 {
  664. ASN1uint16_t maxAl_sduAudioFrames;
  665. ASN1bool_t silenceSuppression;
  666. } AudioCapability_g7231;
  667. typedef struct G7231AnnexCMode_g723AnnexCAudioMode {
  668. ASN1uint16_t highRateMode0;
  669. ASN1uint16_t highRateMode1;
  670. ASN1uint16_t lowRateMode0;
  671. ASN1uint16_t lowRateMode1;
  672. ASN1uint16_t sidMode0;
  673. ASN1uint16_t sidMode1;
  674. } G7231AnnexCMode_g723AnnexCAudioMode;
  675. typedef struct G7231AnnexCMode {
  676. ASN1uint16_t maxAl_sduAudioFrames;
  677. ASN1bool_t silenceSuppression;
  678. G7231AnnexCMode_g723AnnexCAudioMode g723AnnexCAudioMode;
  679. } G7231AnnexCMode;
  680. typedef struct IS13818AudioMode_multichannelType {
  681. ASN1choice_t choice;
  682. # define IS13818AudioMode_multichannelType_singleChannel_chosen 1
  683. # define IS13818AudioMode_multichannelType_twoChannelStereo_chosen 2
  684. # define IS13818AudioMode_multichannelType_twoChannelDual_chosen 3
  685. # define threeChannels2_1_chosen 4
  686. # define threeChannels3_0_chosen 5
  687. # define fourChannels2_0_2_0_chosen 6
  688. # define fourChannels2_2_chosen 7
  689. # define fourChannels3_1_chosen 8
  690. # define fiveChannels3_0_2_0_chosen 9
  691. # define fiveChannels3_2_chosen 10
  692. } IS13818AudioMode_multichannelType;
  693. typedef struct IS13818AudioMode_audioSampling {
  694. ASN1choice_t choice;
  695. # define audioSampling16k_chosen 1
  696. # define audioSampling22k05_chosen 2
  697. # define audioSampling24k_chosen 3
  698. # define IS13818AudioMode_audioSampling_audioSampling32k_chosen 4
  699. # define IS13818AudioMode_audioSampling_audioSampling44k1_chosen 5
  700. # define IS13818AudioMode_audioSampling_audioSampling48k_chosen 6
  701. } IS13818AudioMode_audioSampling;
  702. typedef struct IS13818AudioMode_audioLayer {
  703. ASN1choice_t choice;
  704. # define IS13818AudioMode_audioLayer_audioLayer1_chosen 1
  705. # define IS13818AudioMode_audioLayer_audioLayer2_chosen 2
  706. # define IS13818AudioMode_audioLayer_audioLayer3_chosen 3
  707. } IS13818AudioMode_audioLayer;
  708. typedef struct IS11172AudioMode_multichannelType {
  709. ASN1choice_t choice;
  710. # define IS11172AudioMode_multichannelType_singleChannel_chosen 1
  711. # define IS11172AudioMode_multichannelType_twoChannelStereo_chosen 2
  712. # define IS11172AudioMode_multichannelType_twoChannelDual_chosen 3
  713. } IS11172AudioMode_multichannelType;
  714. typedef struct IS11172AudioMode_audioSampling {
  715. ASN1choice_t choice;
  716. # define IS11172AudioMode_audioSampling_audioSampling32k_chosen 1
  717. # define IS11172AudioMode_audioSampling_audioSampling44k1_chosen 2
  718. # define IS11172AudioMode_audioSampling_audioSampling48k_chosen 3
  719. } IS11172AudioMode_audioSampling;
  720. typedef struct IS11172AudioMode_audioLayer {
  721. ASN1choice_t choice;
  722. # define IS11172AudioMode_audioLayer_audioLayer1_chosen 1
  723. # define IS11172AudioMode_audioLayer_audioLayer2_chosen 2
  724. # define IS11172AudioMode_audioLayer_audioLayer3_chosen 3
  725. } IS11172AudioMode_audioLayer;
  726. typedef struct IS11172AudioMode {
  727. IS11172AudioMode_audioLayer audioLayer;
  728. IS11172AudioMode_audioSampling audioSampling;
  729. IS11172AudioMode_multichannelType multichannelType;
  730. ASN1uint16_t bitRate;
  731. } IS11172AudioMode;
  732. typedef struct IS13818AudioMode {
  733. IS13818AudioMode_audioLayer audioLayer;
  734. IS13818AudioMode_audioSampling audioSampling;
  735. IS13818AudioMode_multichannelType multichannelType;
  736. ASN1bool_t lowFrequencyEnhancement;
  737. ASN1bool_t multilingual;
  738. ASN1uint16_t bitRate;
  739. } IS13818AudioMode;
  740. typedef struct AudioCapability {
  741. ASN1choice_t choice;
  742. union {
  743. # define AudioCapability_nonStandard_chosen 1
  744. NonStandardParameter nonStandard;
  745. # define AudioCapability_g711Alaw64k_chosen 2
  746. ASN1uint16_t g711Alaw64k;
  747. # define AudioCapability_g711Alaw56k_chosen 3
  748. ASN1uint16_t g711Alaw56k;
  749. # define AudioCapability_g711Ulaw64k_chosen 4
  750. ASN1uint16_t g711Ulaw64k;
  751. # define AudioCapability_g711Ulaw56k_chosen 5
  752. ASN1uint16_t g711Ulaw56k;
  753. # define AudioCapability_g722_64k_chosen 6
  754. ASN1uint16_t g722_64k;
  755. # define AudioCapability_g722_56k_chosen 7
  756. ASN1uint16_t g722_56k;
  757. # define AudioCapability_g722_48k_chosen 8
  758. ASN1uint16_t g722_48k;
  759. # define AudioCapability_g7231_chosen 9
  760. AudioCapability_g7231 g7231;
  761. # define AudioCapability_g728_chosen 10
  762. ASN1uint16_t g728;
  763. # define AudioCapability_g729_chosen 11
  764. ASN1uint16_t g729;
  765. # define AudioCapability_g729AnnexA_chosen 12
  766. ASN1uint16_t g729AnnexA;
  767. # define is11172AudioCapability_chosen 13
  768. IS11172AudioCapability is11172AudioCapability;
  769. # define is13818AudioCapability_chosen 14
  770. IS13818AudioCapability is13818AudioCapability;
  771. # define AudioCapability_g729wAnnexB_chosen 15
  772. ASN1uint16_t g729wAnnexB;
  773. # define AudioCapability_g729AnnexAwAnnexB_chosen 16
  774. ASN1uint16_t g729AnnexAwAnnexB;
  775. # define g7231AnnexCCapability_chosen 17
  776. G7231AnnexCCapability g7231AnnexCCapability;
  777. # define AudioCapability_gsmFullRate_chosen 18
  778. GSMAudioCapability gsmFullRate;
  779. # define AudioCapability_gsmHalfRate_chosen 19
  780. GSMAudioCapability gsmHalfRate;
  781. # define AudioCapability_gsmEnhancedFullRate_chosen 20
  782. GSMAudioCapability gsmEnhancedFullRate;
  783. } u;
  784. } AudioCapability;
  785. typedef struct AudioMode {
  786. ASN1choice_t choice;
  787. union {
  788. # define AudioMode_nonStandard_chosen 1
  789. NonStandardParameter nonStandard;
  790. # define AudioMode_g711Alaw64k_chosen 2
  791. # define AudioMode_g711Alaw56k_chosen 3
  792. # define AudioMode_g711Ulaw64k_chosen 4
  793. # define AudioMode_g711Ulaw56k_chosen 5
  794. # define AudioMode_g722_64k_chosen 6
  795. # define AudioMode_g722_56k_chosen 7
  796. # define AudioMode_g722_48k_chosen 8
  797. # define AudioMode_g728_chosen 9
  798. # define AudioMode_g729_chosen 10
  799. # define AudioMode_g729AnnexA_chosen 11
  800. # define AudioMode_g7231_chosen 12
  801. AudioMode_g7231 g7231;
  802. # define is11172AudioMode_chosen 13
  803. IS11172AudioMode is11172AudioMode;
  804. # define is13818AudioMode_chosen 14
  805. IS13818AudioMode is13818AudioMode;
  806. # define AudioMode_g729wAnnexB_chosen 15
  807. ASN1uint16_t g729wAnnexB;
  808. # define AudioMode_g729AnnexAwAnnexB_chosen 16
  809. ASN1uint16_t g729AnnexAwAnnexB;
  810. # define g7231AnnexCMode_chosen 17
  811. G7231AnnexCMode g7231AnnexCMode;
  812. # define AudioMode_gsmFullRate_chosen 18
  813. GSMAudioCapability gsmFullRate;
  814. # define AudioMode_gsmHalfRate_chosen 19
  815. GSMAudioCapability gsmHalfRate;
  816. # define AudioMode_gsmEnhancedFullRate_chosen 20
  817. GSMAudioCapability gsmEnhancedFullRate;
  818. } u;
  819. } AudioMode;
  820. typedef struct T84Profile_t84Restricted {
  821. ASN1bool_t qcif;
  822. ASN1bool_t cif;
  823. ASN1bool_t ccir601Seq;
  824. ASN1bool_t ccir601Prog;
  825. ASN1bool_t hdtvSeq;
  826. ASN1bool_t hdtvProg;
  827. ASN1bool_t g3FacsMH200x100;
  828. ASN1bool_t g3FacsMH200x200;
  829. ASN1bool_t g4FacsMMR200x100;
  830. ASN1bool_t g4FacsMMR200x200;
  831. ASN1bool_t jbig200x200Seq;
  832. ASN1bool_t jbig200x200Prog;
  833. ASN1bool_t jbig300x300Seq;
  834. ASN1bool_t jbig300x300Prog;
  835. ASN1bool_t digPhotoLow;
  836. ASN1bool_t digPhotoMedSeq;
  837. ASN1bool_t digPhotoMedProg;
  838. ASN1bool_t digPhotoHighSeq;
  839. ASN1bool_t digPhotoHighProg;
  840. } T84Profile_t84Restricted;
  841. typedef struct V42bis {
  842. ASN1uint32_t numberOfCodewords;
  843. ASN1uint16_t maximumStringLength;
  844. } V42bis;
  845. typedef struct T84Profile {
  846. ASN1choice_t choice;
  847. union {
  848. # define t84Unrestricted_chosen 1
  849. # define t84Restricted_chosen 2
  850. T84Profile_t84Restricted t84Restricted;
  851. } u;
  852. } T84Profile;
  853. typedef struct CompressionType {
  854. ASN1choice_t choice;
  855. union {
  856. # define v42bis_chosen 1
  857. V42bis v42bis;
  858. } u;
  859. } CompressionType;
  860. typedef struct DataProtocolCapability_v76wCompression {
  861. ASN1choice_t choice;
  862. union {
  863. # define transmitCompression_chosen 1
  864. CompressionType transmitCompression;
  865. # define receiveCompression_chosen 2
  866. CompressionType receiveCompression;
  867. # define transmitAndReceiveCompression_chosen 3
  868. CompressionType transmitAndReceiveCompression;
  869. } u;
  870. } DataProtocolCapability_v76wCompression;
  871. typedef struct DataProtocolCapability {
  872. ASN1choice_t choice;
  873. union {
  874. # define DataProtocolCapability_nonStandard_chosen 1
  875. NonStandardParameter nonStandard;
  876. # define v14buffered_chosen 2
  877. # define v42lapm_chosen 3
  878. # define hdlcFrameTunnelling_chosen 4
  879. # define h310SeparateVCStack_chosen 5
  880. # define h310SingleVCStack_chosen 6
  881. # define transparent_chosen 7
  882. # define segmentationAndReassembly_chosen 8
  883. # define hdlcFrameTunnelingwSAR_chosen 9
  884. # define v120_chosen 10
  885. # define separateLANStack_chosen 11
  886. # define v76wCompression_chosen 12
  887. DataProtocolCapability_v76wCompression v76wCompression;
  888. } u;
  889. } DataProtocolCapability;
  890. typedef struct DataMode_application_nlpid {
  891. DataProtocolCapability nlpidProtocol;
  892. ASN1octetstring_t nlpidData;
  893. } DataMode_application_nlpid;
  894. typedef struct DataMode_application {
  895. ASN1choice_t choice;
  896. union {
  897. # define DataMode_application_nonStandard_chosen 1
  898. NonStandardParameter nonStandard;
  899. # define DataMode_application_t120_chosen 2
  900. DataProtocolCapability t120;
  901. # define DataMode_application_dsm_cc_chosen 3
  902. DataProtocolCapability dsm_cc;
  903. # define DataMode_application_userData_chosen 4
  904. DataProtocolCapability userData;
  905. # define DataMode_application_t84_chosen 5
  906. DataProtocolCapability t84;
  907. # define DataMode_application_t434_chosen 6
  908. DataProtocolCapability t434;
  909. # define DataMode_application_h224_chosen 7
  910. DataProtocolCapability h224;
  911. # define DataMode_application_nlpid_chosen 8
  912. DataMode_application_nlpid nlpid;
  913. # define DataMode_application_dsvdControl_chosen 9
  914. # define DataMode_application_h222DataPartitioning_chosen 10
  915. DataProtocolCapability h222DataPartitioning;
  916. # define DataMode_application_t30fax_chosen 11
  917. DataProtocolCapability t30fax;
  918. # define DataMode_application_t140_chosen 12
  919. DataProtocolCapability t140;
  920. } u;
  921. } DataMode_application;
  922. typedef struct DataMode {
  923. DataMode_application application;
  924. ASN1uint32_t bitRate;
  925. } DataMode;
  926. typedef struct EncryptionMode {
  927. ASN1choice_t choice;
  928. union {
  929. # define EncryptionMode_nonStandard_chosen 1
  930. NonStandardParameter nonStandard;
  931. # define h233Encryption_chosen 2
  932. } u;
  933. } EncryptionMode;
  934. typedef struct AuthenticationCapability {
  935. union {
  936. ASN1uint16_t bit_mask;
  937. ASN1octet_t o[1];
  938. };
  939. # define AuthenticationCapability_nonStandard_present 0x80
  940. NonStandardParameter nonStandard;
  941. } AuthenticationCapability;
  942. typedef struct IntegrityCapability {
  943. union {
  944. ASN1uint16_t bit_mask;
  945. ASN1octet_t o[1];
  946. };
  947. # define IntegrityCapability_nonStandard_present 0x80
  948. NonStandardParameter nonStandard;
  949. } IntegrityCapability;
  950. typedef struct EncryptionAuthenticationAndIntegrity {
  951. union {
  952. ASN1uint16_t bit_mask;
  953. ASN1octet_t o[1];
  954. };
  955. # define encryptionCapability_present 0x80
  956. PEncryptionCapability encryptionCapability;
  957. # define authenticationCapability_present 0x40
  958. AuthenticationCapability authenticationCapability;
  959. # define integrityCapability_present 0x20
  960. IntegrityCapability integrityCapability;
  961. } EncryptionAuthenticationAndIntegrity;
  962. typedef struct H235Mode_mediaMode {
  963. ASN1choice_t choice;
  964. union {
  965. # define H235Mode_mediaMode_nonStandard_chosen 1
  966. NonStandardParameter nonStandard;
  967. # define H235Mode_mediaMode_videoMode_chosen 2
  968. VideoMode videoMode;
  969. # define H235Mode_mediaMode_audioMode_chosen 3
  970. AudioMode audioMode;
  971. # define H235Mode_mediaMode_dataMode_chosen 4
  972. DataMode dataMode;
  973. } u;
  974. } H235Mode_mediaMode;
  975. typedef struct H235Mode {
  976. EncryptionAuthenticationAndIntegrity encryptionAuthenticationAndIntegrity;
  977. H235Mode_mediaMode mediaMode;
  978. } H235Mode;
  979. typedef struct ModeElement_type {
  980. ASN1choice_t choice;
  981. union {
  982. # define ModeElement_type_nonStandard_chosen 1
  983. NonStandardParameter nonStandard;
  984. # define ModeElement_type_videoMode_chosen 2
  985. VideoMode videoMode;
  986. # define ModeElement_type_audioMode_chosen 3
  987. AudioMode audioMode;
  988. # define ModeElement_type_dataMode_chosen 4
  989. DataMode dataMode;
  990. # define encryptionMode_chosen 5
  991. EncryptionMode encryptionMode;
  992. # define h235Mode_chosen 6
  993. H235Mode h235Mode;
  994. } u;
  995. } ModeElement_type;
  996. #endif // _H245ASN_Module_H_
  997. typedef VideoCapability H245VideoCapability;
  998. typedef AudioCapability H245AudioCapability;
  999. typedef ModeElement_type H245_MODE_ELEMENT;
  1000. typedef struct
  1001. {
  1002. DWORD dwApplicationCapID;
  1003. ASN1choice_t choiceSetupProcedure;
  1004. BOOL fRestrictAudio;
  1005. BOOL fRestrictVideo;
  1006. DataProtocolCapability T120ProtocolCap;
  1007. //NonStandardParameter *pNonStandardParameter;
  1008. }H245T120Capability;
  1009. typedef enum
  1010. {
  1011. H245MediaType_Audio,
  1012. H245MediaType_Video,
  1013. H245MediaType_T120
  1014. }H245MediaCapabilityType;
  1015. // media capability structure
  1016. typedef struct tag_H245MediaCapability
  1017. {
  1018. H245MediaCapabilityType media_type;
  1019. union
  1020. {
  1021. H245AudioCapability audio_cap;
  1022. H245VideoCapability video_cap;
  1023. H245T120Capability T120_cap;
  1024. }capability;
  1025. }H245MediaCapability;
  1026. typedef struct tag_FormatResourceBounds
  1027. {
  1028. DWORD dwBitsPerSecond;
  1029. DWORD dwCPUUtilization;
  1030. } FormatResourceBounds;
  1031. #ifdef __cplusplus
  1032. /*****************************************************************************
  1033. * @doc INTERNAL H245VIDCSTRUCTENUM
  1034. *
  1035. * @struct H245VideoCapabilityMap | The <t H245VideoCapabilityMap> structure
  1036. * is used to specify the relationship between supported formats and
  1037. * estimated maximum system resources for the supported format.
  1038. *
  1039. * @field H245MediaCapability | h245MediaCapability | Specifies the H.245
  1040. * video/audio format, including all parameters and options. This structure
  1041. * is H.245 version specific: its definition depends on the version of
  1042. * H.245 used by the TAPI MSP filters. For video, this structure may indicate
  1043. * format parameters for more than one standard video size at a time if
  1044. * the resource requirements are similar for all sizes.
  1045. *
  1046. * @field GUID | filterGuid | Specifies a GUID value that uniquely
  1047. * identifies the TAPI MSP filter.
  1048. *
  1049. * @field DWORD | dwUniqueID | Specifies a DWORD value that uniquely
  1050. * identifies the capability of the TAPI MSP filter.
  1051. *
  1052. * @field UINT | uNumEntries | This indicates the number of elements
  1053. * referenced by <t pResourceBoundArray>.
  1054. *
  1055. * @field FormatResourceBounds* | pResourceBoundArray | Specifies an array
  1056. * of <t FormatResourceBounds> structures that indicate the approximate
  1057. * resource bounds of each entry.
  1058. ***************************************************************************/
  1059. typedef struct tag_H245MediaCapabilityMap
  1060. {
  1061. H245MediaCapability h245MediaCapability;
  1062. GUID filterGuid;
  1063. DWORD dwUniqueID;
  1064. UINT uNumEntries;
  1065. FormatResourceBounds *pResourceBoundArray;
  1066. } H245MediaCapabilityMap;
  1067. /*****************************************************************************
  1068. * @doc INTERNAL H245VIDCSTRUCTENUM
  1069. *
  1070. * @struct H245MediaCapabilityTable | The <t H245MediaCapabilityTable> structure
  1071. * is used to specify the set of formats that are supported by the TAPI MSP
  1072. * filters.
  1073. *
  1074. * @field UINT | uMappedCapabilities | Specifies the number of
  1075. * <t H245VideoCapabilityMap> structures in <t pCapabilityArray>.
  1076. *
  1077. * @field H245MediaCapabilityMap* | pCapabilityArray | Specifies a pointer
  1078. * to an array of <t H245MediaCapabilityMap> structures.
  1079. ***************************************************************************/
  1080. typedef struct tag_H245MediaCapabilityTable
  1081. {
  1082. UINT uMappedCapabilities;
  1083. H245MediaCapabilityMap *pCapabilityArray;
  1084. } H245MediaCapabilityTable;
  1085. /*****************************************************************************
  1086. * @doc INTERNAL CONST
  1087. *
  1088. * @const int | TAPI_H245_VERSION_ID | Specifies the H.245 platform
  1089. * version 3.
  1090. ***************************************************************************/
  1091. #define TAPI_H245_VERSION_ID 3
  1092. // H.245 video capability interface (pin interface)
  1093. interface DECLSPEC_UUID("ec35770f-b64d-405d-a5f2-4514164ba87a") IH245Capability : public IUnknown
  1094. {
  1095. public:
  1096. virtual STDMETHODIMP GetH245VersionID(OUT DWORD *pdwVersionID) PURE;
  1097. virtual STDMETHODIMP GetFormatTable(OUT H245MediaCapabilityTable *pTable) PURE;
  1098. virtual STDMETHODIMP ReleaseFormatTable(IN H245MediaCapabilityTable *pTable) PURE;
  1099. virtual STDMETHODIMP IntersectFormats(
  1100. IN DWORD dwUniqueID,
  1101. IN const H245MediaCapability *pLocalCapability,
  1102. IN const H245MediaCapability *pRemoteCapability,
  1103. OUT H245MediaCapability **ppIntersectedCapability,
  1104. OUT DWORD *pdwPayloadType
  1105. ) PURE;
  1106. virtual STDMETHODIMP Refine(IN OUT H245MediaCapability *pLocalCapability, IN DWORD dwUniqueID, IN DWORD dwResourceBoundIndex) PURE;
  1107. virtual STDMETHODIMP GetLocalFormat(IN DWORD dwUniqueID, IN const H245MediaCapability *pIntersectedCapability, OUT AM_MEDIA_TYPE **ppAMMediaType) PURE;
  1108. virtual STDMETHODIMP ReleaseNegotiatedCapability(IN H245MediaCapability *pIntersectedCapability) PURE;
  1109. virtual STDMETHODIMP FindIDByRange(IN const AM_MEDIA_TYPE *pAMMediaType, OUT DWORD *pdwUniqueID) PURE;
  1110. };
  1111. // IH245EncoderCommand interface (pin interface)
  1112. interface DECLSPEC_UUID("b4263e5b-f216-4b58-9968-ba9ab7808ab3") IH245EncoderCommand : public IUnknown
  1113. {
  1114. public:
  1115. virtual STDMETHODIMP videoFastUpdatePicture() PURE;
  1116. virtual STDMETHODIMP videoFastUpdateGOB(IN DWORD dwFirstGOB, IN DWORD dwNumberOfGOBs) PURE;
  1117. virtual STDMETHODIMP videoFastUpdateMB(IN DWORD dwFirstGOB, IN DWORD dwFirstMB, IN DWORD dwNumberOfMBs) PURE;
  1118. virtual STDMETHODIMP videoSendSyncEveryGOB(IN BOOL fEnable) PURE;
  1119. virtual STDMETHODIMP videoNotDecodedMBs(IN DWORD dwFirstMB, IN DWORD dwNumberOfMBs, IN DWORD dwTemporalReference) PURE;
  1120. };
  1121. // IH245DecoderCommand interface (pin interface)
  1122. interface DECLSPEC_UUID("a542d119-6abd-48a5-92db-dac1dfe6995c") IH245DecoderCommand : public IUnknown
  1123. {
  1124. public:
  1125. virtual STDMETHODIMP videoFreezePicture() PURE;
  1126. };
  1127. #ifdef USE_PROGRESSIVE_REFINEMENT
  1128. // Progressive refinement interface (pin interface)
  1129. interface DECLSPEC_UUID("46a02824-6d1f-49d9-9e62-e1694f28ab1a") IProgressiveRefinement : public IUnknown
  1130. {
  1131. public:
  1132. virtual STDMETHODIMP doOneProgression() PURE;
  1133. virtual STDMETHODIMP doContinuousProgressions() PURE;
  1134. virtual STDMETHODIMP doOneIndependentProgression() PURE;
  1135. virtual STDMETHODIMP doContinuousIndependentProgressions() PURE;
  1136. virtual STDMETHODIMP progressiveRefinementAbortOne() PURE;
  1137. virtual STDMETHODIMP progressiveRefinementAbortContinuous() PURE;
  1138. };
  1139. #endif
  1140. #if !defined(STREAM_INTERFACES_DEFINED)
  1141. #define MAX_DESCRIPTION_LEN 256
  1142. typedef enum tagStreamConfigCapsType
  1143. {
  1144. AudioStreamConfigCaps,
  1145. VideoStreamConfigCaps
  1146. } StreamConfigCapsType;
  1147. typedef struct _TAPI_AUDIO_STREAM_CONFIG_CAPS
  1148. {
  1149. WCHAR Description[MAX_DESCRIPTION_LEN];
  1150. ULONG MinimumChannels;
  1151. ULONG MaximumChannels;
  1152. ULONG ChannelsGranularity;
  1153. ULONG MinimumBitsPerSample;
  1154. ULONG MaximumBitsPerSample;
  1155. ULONG BitsPerSampleGranularity;
  1156. ULONG MinimumSampleFrequency;
  1157. ULONG MaximumSampleFrequency;
  1158. ULONG SampleFrequencyGranularity;
  1159. ULONG MinimumAvgBytesPerSec;
  1160. ULONG MaximumAvgBytesPerSec;
  1161. ULONG AvgBytesPerSecGranularity;
  1162. } TAPI_AUDIO_STREAM_CONFIG_CAPS, *PTAPI_AUDIO_STREAM_CONFIG_CAPS;
  1163. typedef struct _TAPI_VIDEO_STREAM_CONFIG_CAPS
  1164. {
  1165. WCHAR Description[MAX_DESCRIPTION_LEN];
  1166. ULONG VideoStandard;
  1167. SIZE InputSize;
  1168. SIZE MinCroppingSize;
  1169. SIZE MaxCroppingSize;
  1170. int CropGranularityX;
  1171. int CropGranularityY;
  1172. int CropAlignX;
  1173. int CropAlignY;
  1174. SIZE MinOutputSize;
  1175. SIZE MaxOutputSize;
  1176. int OutputGranularityX;
  1177. int OutputGranularityY;
  1178. int StretchTapsX;
  1179. int StretchTapsY;
  1180. int ShrinkTapsX;
  1181. int ShrinkTapsY;
  1182. LONGLONG MinFrameInterval;
  1183. LONGLONG MaxFrameInterval;
  1184. LONG MinBitsPerSecond;
  1185. LONG MaxBitsPerSecond;
  1186. } TAPI_VIDEO_STREAM_CONFIG_CAPS, *PTAPI_VIDEO_STREAM_CONFIG_CAPS;
  1187. typedef struct tagTAPI_STREAM_CONFIG_CAPS
  1188. {
  1189. StreamConfigCapsType CapsType;
  1190. union
  1191. {
  1192. TAPI_VIDEO_STREAM_CONFIG_CAPS VideoCap;
  1193. TAPI_AUDIO_STREAM_CONFIG_CAPS AudioCap;
  1194. };
  1195. } TAPI_STREAM_CONFIG_CAPS, *PTAPI_STREAM_CONFIG_CAPS;
  1196. #endif
  1197. // used in SetFormat when the payload type is unknown.
  1198. const DWORD UNKNOWN_PAYLOAD = (DWORD)(-1);
  1199. // IStreamConfig interface (pin interface)
  1200. interface DECLSPEC_UUID("c5888472-8f4f-475b-8f5b-93b6c8e7567f") IStreamConfig : public IUnknown
  1201. {
  1202. // TODO, we need to introduce a new interface to handle all the RTP payload type
  1203. // related issues. The payload type info shouldn't be in this interface.
  1204. public:
  1205. virtual STDMETHODIMP SetFormat(IN DWORD dwRTPPayLoadType, IN AM_MEDIA_TYPE *pMediaType) PURE;
  1206. virtual STDMETHODIMP GetFormat(OUT DWORD *pdwRTPPayLoadType, OUT AM_MEDIA_TYPE **ppMediaType) PURE;
  1207. virtual STDMETHODIMP GetNumberOfCapabilities(OUT DWORD *pdwCount) PURE;
  1208. virtual STDMETHODIMP GetStreamCaps(IN DWORD dwIndex, OUT AM_MEDIA_TYPE **ppMediaType, OUT TAPI_STREAM_CONFIG_CAPS *pTSCC, OUT DWORD *pdwRTPPayLoadType) PURE;
  1209. };
  1210. #endif // __cplusplus
  1211. #ifdef __cplusplus
  1212. }
  1213. #endif
  1214. #endif // __H245FMT_H__