bdatypes.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:15k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //------------------------------------------------------------------------------
  2. // File: BDATypes.h
  3. //
  4. // Desc: Typedefs and enums needed by both the WDM drivers and the user mode
  5. //       COM interfaces.
  6. //
  7. // Copyright (c) 1999 - 2000, Microsoft Corporation.  All rights reserved.
  8. //------------------------------------------------------------------------------
  9. #ifndef _BDATYPES_
  10. #define _BDATYPES_      1
  11. /* Utility Macros */
  12. #define MIN_DIMENSION   1
  13. #define NATURAL     4
  14. #define CACHE_LINE  128
  15. #define PAGE        4096
  16. #define ALIGN( pointer, size) (((ULONG)(pointer) + (ULONG)(size) - 1) & ~((ULONG)(size) - 1))
  17. #define BDA_STRING_CONST(x)   {sizeof(L##x)-2, sizeof(L##x), L##x}
  18. #ifdef __midl
  19. #define V1_ENUM [v1_enum]
  20. #else
  21. #define V1_ENUM
  22. #endif
  23. //===========================================================================
  24. //
  25. //  BDA Topology Structures
  26. //
  27. //===========================================================================
  28. typedef struct _BDA_TEMPLATE_CONNECTION
  29. {
  30.     ULONG   FromNodeType;
  31.     ULONG   FromNodePinType;
  32.     ULONG   ToNodeType;
  33.     ULONG   ToNodePinType;
  34. }BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
  35. typedef struct _BDA_TEMPLATE_PIN_JOINT
  36. {
  37.     ULONG   uliTemplateConnection;
  38.     ULONG   ulcInstancesMax;
  39. }BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
  40. //===========================================================================
  41. //
  42. //  BDA Events
  43. //
  44. //===========================================================================
  45. //  In-band Event IDs
  46. //
  47. typedef enum {
  48.     BDA_EVENT_SIGNAL_LOSS = 0,
  49.     BDA_EVENT_SIGNAL_LOCK,
  50.     BDA_EVENT_DATA_START,
  51.     BDA_EVENT_DATA_STOP,
  52.     BDA_EVENT_CHANNEL_ACQUIRED,
  53.     BDA_EVENT_CHANNEL_LOST,
  54.     BDA_EVENT_CHANNEL_SOURCE_CHANGED,
  55.     BDA_EVENT_CHANNEL_ACTIVATED,
  56.     BDA_EVENT_CHANNEL_DEACTIVATED,
  57.     BDA_EVENT_SUBCHANNEL_ACQUIRED,
  58.     BDA_EVENT_SUBCHANNEL_LOST,
  59.     BDA_EVENT_SUBCHANNEL_SOURCE_CHANGED,
  60.     BDA_EVENT_SUBCHANNEL_ACTIVATED,
  61.     BDA_EVENT_SUBCHANNEL_DEACTIVATED,
  62.     BDA_EVENT_ACCESS_GRANTED,
  63.     BDA_EVENT_ACCESS_DENIED,
  64.     BDA_EVENT_OFFER_EXTENDED,
  65.     BDA_EVENT_PURCHASE_COMPLETED,
  66.     BDA_EVENT_SMART_CARD_INSERTED,
  67.     BDA_EVENT_SMART_CARD_REMOVED
  68. } BDA_EVENT_ID, *PBDA_EVENT_ID;
  69. //===========================================================================
  70. //
  71. //  KSSTREAM_HEADER extensions for BDA
  72. //
  73. //===========================================================================
  74. typedef struct tagKS_BDA_FRAME_INFO {
  75.     ULONG                   ExtendedHeaderSize; // Size of this extended header
  76.     DWORD                   dwFrameFlags;  //
  77.     ULONG                   ulEvent; //
  78.     ULONG                   ulChannelNumber; //
  79.     ULONG                   ulSubchannelNumber; //
  80.     ULONG                   ulReason; //
  81. } KS_BDA_FRAME_INFO, *PKS_BDA_FRAME_INFO;
  82. //------------------------------------------------------------
  83. //
  84. //  BDA Network Ethernet Filter Property Set
  85. //
  86. // {71985F43-1CA1-11d3-9CC8-00C04F7971E0}
  87. //
  88. typedef struct _BDA_ETHERNET_ADDRESS {
  89.     BYTE    rgbAddress[6];
  90. } BDA_ETHERNET_ADDRESS, *PBDA_ETHERNET_ADDRESS;
  91. typedef struct _BDA_ETHERNET_ADDRESS_LIST {
  92.     ULONG               ulcAddresses;
  93.     BDA_ETHERNET_ADDRESS    rgAddressl[MIN_DIMENSION];
  94. } BDA_ETHERNET_ADDRESS_LIST, * PBDA_ETHERNET_ADDRESS_LIST;
  95. typedef enum {
  96.     BDA_PROMISCUOUS_MULTICAST = 0,
  97.     BDA_FILTERED_MULTICAST,
  98.     BDA_NO_MULTICAST
  99. } BDA_MULTICAST_MODE, *PBDA_MULTICAST_MODE;
  100. //------------------------------------------------------------
  101. //
  102. //  BDA Network IPv4 Filter Property Set
  103. //
  104. // {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
  105. //
  106. typedef struct _BDA_IPv4_ADDRESS {
  107.     BYTE    rgbAddress[4];
  108. } BDA_IPv4_ADDRESS, *PBDA_IPv4_ADDRESS;
  109. typedef struct _BDA_IPv4_ADDRESS_LIST {
  110.     ULONG               ulcAddresses;
  111.     BDA_IPv4_ADDRESS    rgAddressl[MIN_DIMENSION];
  112. } BDA_IPv4_ADDRESS_LIST, * PBDA_IPv4_ADDRESS_LIST;
  113. //------------------------------------------------------------
  114. //
  115. //  BDA Network IPv4 Filter Property Set
  116. //
  117. // {E1785A74-2A23-4fb3-9245-A8F88017EF33}
  118. //
  119. typedef struct _BDA_IPv6_ADDRESS {
  120.     BYTE    rgbAddress[6];
  121. } BDA_IPv6_ADDRESS, *PBDA_IPv6_ADDRESS;
  122. typedef struct _BDA_IPv6_ADDRESS_LIST {
  123.     ULONG               ulcAddresses;
  124.     BDA_IPv6_ADDRESS    rgAddressl[MIN_DIMENSION];
  125. } BDA_IPv6_ADDRESS_LIST, * PBDA_IPv6_ADDRESS_LIST;
  126. //------------------------------------------------------------
  127. //
  128. //
  129. //  BDA Signal Property Set
  130. //
  131. //  {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
  132. //
  133. typedef enum {
  134.     BDA_SIGNAL_UNAVAILABLE = 0,
  135.     BDA_SIGNAL_INACTIVE,
  136.     BDA_SIGNAL_ACTIVE
  137. } BDA_SIGNAL_STATE, * PBDA_SIGNAL_STATE;
  138. //------------------------------------------------------------
  139. //
  140. //
  141. //  BDA Change Sync Method Set
  142. //
  143. // {FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}
  144. //
  145. typedef enum
  146. {
  147.     BDA_CHANGES_COMPLETE = 0,
  148.     BDA_CHANGES_PENDING
  149. } BDA_CHANGE_STATE, * PBDA_CHANGE_STATE;
  150. //------------------------------------------------------------
  151. //
  152. //
  153. //  BDA Device Configuration Method Set
  154. //
  155. // {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
  156. //
  157. //------------------------------------------------------------
  158. //
  159. //
  160. //  BDA Topology Property Set
  161. //
  162. // {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
  163. //
  164. typedef struct _BDANODE_DESCRIPTOR
  165. {
  166.     ULONG               ulBdaNodeType;  // The node type as it is used
  167.                                         // in the BDA template topology
  168.     GUID                guidFunction;   // GUID from BdaMedia.h describing
  169.                                         // the node's function (e.g.
  170.                                         // KSNODE_BDA_RF_TUNER)
  171.     GUID                guidName;       // GUID that can be use to look up
  172.                                         // a displayable name for the node.
  173. } BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
  174. //------------------------------------------------------------
  175. //
  176. //
  177. //  BDA Void Transform Property Set
  178. //
  179. // {71985F46-1CA1-11d3-9CC8-00C04F7971E0}
  180. //
  181. //------------------------------------------------------------
  182. //
  183. //
  184. //  BDA Null Transform Property Set
  185. //
  186. // {DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}
  187. //
  188. //------------------------------------------------------------
  189. //
  190. //
  191. //  BDA Frequency Filter Property Set
  192. //
  193. // {71985F47-1CA1-11d3-9CC8-00C04F7971E0}
  194. //
  195. //------------------------------------------------------------
  196. //
  197. //
  198. //  BDA Autodemodulate Property Set
  199. //
  200. // {DDF15B12-BD25-11d2-9CA0-00C04F7971E0}
  201. //
  202. //------------------------------------------------------------
  203. //
  204. //
  205. //  BDA PmtProcessor Property Set
  206. //
  207. // {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
  208. //
  209. typedef struct _BDA_PMT
  210. {
  211.     ULONG               ulTableID;
  212.     ULONG               ulcbSectionLength;
  213.     ULONG               argbSectionData[MIN_DIMENSION];
  214. } BDA_PMT, *PBDA_PMT;
  215. //------------------------------------------------------------
  216. //
  217. //
  218. //  BDA Descriptor Property Set
  219. //
  220. // {DE6A1C9E-87DF-48aa-95AA-289B7AA4F49F}
  221. //
  222. typedef struct _BDA_CAT_DESCRIPTOR
  223. {
  224.     ULONG               ulTag;
  225.     ULONG               ulcbLength;
  226.     ULONG               argbData[MIN_DIMENSION];
  227. } BDA_CAT_DESCRIPTOR, *PBDA_CAT_DESCRIPTOR;
  228. typedef struct _BDA_ES_DESCRIPTOR
  229. {
  230.     ULONG               ulProgramNum;
  231.     ULONG               ulContentPID;
  232.     ULONG               ulTag;
  233.     ULONG               ulcbLength;
  234.     ULONG               argbData[MIN_DIMENSION];
  235. } BDA_ES_DESCRIPTOR, *PBDA_ES_DESCRIPTOR;
  236. typedef struct _BDA_PROGRAM_DESCRIPTOR
  237. {
  238.     ULONG               ulProgramNum;
  239.     ULONG               ulTag;
  240.     ULONG               ulcbLength;
  241.     ULONG               argbData[MIN_DIMENSION];
  242. } BDA_PROGRAM_DESCRIPTOR, *PBDA_PROGRAM_DESCRIPTOR;
  243. //------------------------------------------------------------
  244. //
  245. //
  246. //  BDA EsMap Property Set
  247. //
  248. // {FA14A8B3-6068-48ef-96DD-53010B985A7D}
  249. //
  250. typedef enum
  251. {
  252.     ES_MAP_STATE_GOOD_FLOW = 0,
  253.     ES_MAP_STATE_NO_CONTENT,
  254.     ES_MAP_STATE_NO_ECM,
  255.     ES_MAP_STATE_BAD_MAP
  256. } BDA_ES_MAP_STATE, *PBDA_ES_MAP_STATE;
  257. typedef struct _BDA_ES_MAP
  258. {
  259.     ULONG               ulContentPID;
  260.     ULONG               ulProgramNum;
  261.     ULONG               ulStreamType;
  262.     BDA_ES_MAP_STATE    mapState;
  263. } BDA_ES_MAP, *PBDA_ES_MAP;
  264. //------------------------------------------------------------
  265. //
  266. //
  267. //  BDA PID Filter Property Set
  268. //
  269. // {D0A67D65-08DF-4fec-8533-E5B550410B85}
  270. //
  271. //---------------------------------------------------------------------
  272. // From IEnumPIDMap interface
  273. //---------------------------------------------------------------------
  274. typedef enum {
  275.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  276.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  277.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  278.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  279. } MEDIA_SAMPLE_CONTENT ;
  280. typedef struct {
  281.     ULONG                   ulPID ;
  282.     MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  283. } PID_MAP ;
  284. typedef struct _BDA_PID_MAP
  285. {
  286.     MEDIA_SAMPLE_CONTENT    MediaSampleContent;
  287.     ULONG                   ulcPIDs;
  288.     ULONG                   aulPIDs[MIN_DIMENSION];
  289. } BDA_PID_MAP, *PBDA_PID_MAP;
  290. typedef struct _BDA_PID_UNMAP
  291. {
  292.     ULONG               ulcPIDs;
  293.     ULONG               aulPIDs[MIN_DIMENSION];
  294. } BDA_PID_UNMAP, *PBDA_PID_UNMAP;
  295. //------------------------------------------------------------
  296. //
  297. //
  298. //  BDA CA Property Set
  299. //
  300. // {B0693766-5278-4ec6-B9E1-3CE40560EF5A}
  301. //
  302. typedef struct _BDA_CA_MODULE_UI
  303. {
  304.     ULONG   ulFormat;
  305.     ULONG   ulbcDesc;
  306.     ULONG   ulDesc[MIN_DIMENSION];
  307. } BDA_CA_MODULE_UI, *PBDA_CA_MODULE_UI;
  308. //------------------------------------------------------------
  309. //
  310. //
  311. //  BDA CA Event Set
  312. //
  313. // {488C4CCC-B768-4129-8EB1-B00A071F9068}
  314. //
  315. //=============================================================
  316. //
  317. //
  318. //  BDA Tuning Model enumerations
  319. //
  320. //
  321. //=============================================================
  322. // system type for particular DVB Tuning Space instance
  323. typedef enum DVBSystemType {
  324.     DVB_Cable,
  325.     DVB_Terrestrial,
  326.     DVB_Satellite,
  327. } DVBSystemType;
  328. //------------------------------------------------------------
  329. //
  330. //  BDA Channel Tune Request
  331. V1_ENUM enum {
  332.     BDA_UNDEFINED_CHANNEL = -1,
  333. };
  334. //------------------------------------------------------------
  335. //
  336. //  BDA Component(substream)
  337. //
  338. typedef V1_ENUM enum ComponentCategory
  339. {
  340.     CategoryNotSet = -1,
  341.     CategoryOther = 0,
  342.     CategoryVideo,
  343.     CategoryAudio,
  344.     CategoryText,
  345.     CategoryData,
  346. } ComponentCategory;
  347. // Component Status
  348. typedef enum ComponentStatus
  349. {
  350.     StatusActive,
  351.     StatusInactive,
  352.     StatusUnavailable,
  353. } ComponentStatus;
  354. //------------------------------------------------------------
  355. //
  356. //  BDA MPEG2 Component Type
  357. //
  358. // from the MPEG2 specification
  359. typedef V1_ENUM enum MPEG2StreamType {
  360.     BDA_UNITIALIZED_MPEG2STREAMTYPE = -1,
  361.     Reserved1 = 0x0,
  362.     ISO_IEC_11172_2_VIDEO   = Reserved1 + 1,
  363.     ISO_IEC_13818_2_VIDEO   = ISO_IEC_11172_2_VIDEO + 1,
  364.     ISO_IEC_11172_3_AUDIO   = ISO_IEC_13818_2_VIDEO + 1,
  365.     ISO_IEC_13818_3_AUDIO   = ISO_IEC_11172_3_AUDIO + 1,
  366.     ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1,
  367.     ISO_IEC_13818_1_PES     = ISO_IEC_13818_1_PRIVATE_SECTION + 1,
  368.     ISO_IEC_13522_MHEG      = ISO_IEC_13818_1_PES + 1,
  369.     ANNEX_A_DSM_CC          = ISO_IEC_13522_MHEG + 1,
  370.     ITU_T_REC_H_222_1       = ANNEX_A_DSM_CC + 1,
  371.     ISO_IEC_13818_6_TYPE_A  = ITU_T_REC_H_222_1 + 1,
  372.     ISO_IEC_13818_6_TYPE_B  = ISO_IEC_13818_6_TYPE_A + 1,
  373.     ISO_IEC_13818_6_TYPE_C  = ISO_IEC_13818_6_TYPE_B + 1,
  374.     ISO_IEC_13818_6_TYPE_D  = ISO_IEC_13818_6_TYPE_C + 1,
  375.     ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1,
  376.     ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1,
  377.     USER_PRIVATE            = ISO_IEC_13818_1_RESERVED + 1
  378. } MPEG2StreamType;
  379. //------------------------------------------------------------
  380. //
  381. //  BDA ATSC Component Type
  382. //
  383. //
  384. // ATSC made AC3 Audio a descriptor instead of
  385. // defining a user private stream type.
  386. typedef enum ATSCComponentTypeFlags {
  387.     // bit flags for various component type properties
  388.     ATSCCT_AC3 = 0x00000001,
  389. } ATSCComponentTypeFlags;
  390. //------------------------------------------------------------
  391. //
  392. //  BDA Locators
  393. //
  394. typedef V1_ENUM enum BinaryConvolutionCodeRate {
  395.     BDA_BCC_RATE_NOT_SET = -1,
  396.     BDA_BCC_RATE_NOT_DEFINED = 0,
  397.     BDA_BCC_RATE_1_2 = 1,   // 1/2
  398.     BDA_BCC_RATE_2_3,   // 2/3
  399.     BDA_BCC_RATE_3_4,   // 3/4
  400.     BDA_BCC_RATE_3_5,
  401.     BDA_BCC_RATE_4_5,
  402.     BDA_BCC_RATE_5_6,   // 5/6
  403.     BDA_BCC_RATE_5_11,
  404.     BDA_BCC_RATE_7_8,   // 7/8
  405.     BDA_BCC_RATE_MAX,
  406. } BinaryConvolutionCodeRate;
  407. typedef V1_ENUM enum FECMethod {
  408.     BDA_FEC_METHOD_NOT_SET = -1,
  409.     BDA_FEC_METHOD_NOT_DEFINED = 0,
  410.     BDA_FEC_VITERBI = 1,          // FEC is a Viterbi Binary Convolution.
  411.     BDA_FEC_RS_204_188,       // The FEC is Reed-Solomon 204/188 (outer FEC)
  412.     BDA_FEC_MAX,
  413. } FECMethod;
  414. typedef V1_ENUM enum ModulationType {
  415.     BDA_MOD_NOT_SET = -1,
  416.     BDA_MOD_NOT_DEFINED = 0,
  417.     BDA_MOD_16QAM = 1,
  418.     BDA_MOD_32QAM,
  419.     BDA_MOD_64QAM,
  420.     BDA_MOD_80QAM,
  421.     BDA_MOD_96QAM,
  422.     BDA_MOD_112QAM,
  423.     BDA_MOD_128QAM,
  424.     BDA_MOD_160QAM,
  425.     BDA_MOD_192QAM,
  426.     BDA_MOD_224QAM,
  427.     BDA_MOD_256QAM,
  428.     BDA_MOD_320QAM,
  429.     BDA_MOD_384QAM,
  430.     BDA_MOD_448QAM,
  431.     BDA_MOD_512QAM,
  432.     BDA_MOD_640QAM,
  433.     BDA_MOD_768QAM,
  434.     BDA_MOD_896QAM,
  435.     BDA_MOD_1024QAM,
  436.     BDA_MOD_QPSK,
  437.     BDA_MOD_BPSK,
  438.     BDA_MOD_OQPSK,
  439.     BDA_MOD_8VSB,
  440.     BDA_MOD_16VSB,
  441.     BDA_MOD_ANALOG_AMPLITUDE,  // std am
  442.     BDA_MOD_ANALOG_FREQUENCY,  // std fm
  443.     BDA_MOD_MAX,
  444. } ModulationType;
  445. typedef V1_ENUM enum SpectralInversion {
  446.     BDA_SPECTRAL_INVERSION_NOT_SET = -1,
  447.     BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
  448.     BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
  449.     BDA_SPECTRAL_INVERSION_NORMAL,
  450.     BDA_SPECTRAL_INVERSION_INVERTED,
  451.     BDA_SPECTRAL_INVERSION_MAX
  452. } SpectralInversion;
  453. typedef V1_ENUM enum Polarisation {
  454.     BDA_POLARISATION_NOT_SET = -1,
  455.     BDA_POLARISATION_NOT_DEFINED = 0,
  456.     BDA_POLARISATION_LINEAR_H = 1, // Linear horizontal polarisation
  457.     BDA_POLARISATION_LINEAR_V, // Linear vertical polarisation
  458.     BDA_POLARISATION_CIRCULAR_L, // Circular left polarisation
  459.     BDA_POLARISATION_CIRCULAR_R, // Circular right polarisation
  460.     BDA_POLARISATION_MAX,
  461. } Polarisation;
  462. typedef V1_ENUM enum GuardInterval {
  463.     BDA_GUARD_NOT_SET = -1,
  464.     BDA_GUARD_NOT_DEFINED = 0,
  465.     BDA_GUARD_1_32 = 1, // Guard interval is 1/32
  466.     BDA_GUARD_1_16, // Guard interval is 1/16
  467.     BDA_GUARD_1_8, // Guard interval is 1/8
  468.     BDA_GUARD_1_4, // Guard interval is 1/4
  469.     BDA_GUARD_MAX,
  470. } GuardInterval;
  471. typedef V1_ENUM enum HierarchyAlpha {
  472.     BDA_HALPHA_NOT_SET = -1,
  473.     BDA_HALPHA_NOT_DEFINED = 0,
  474.     BDA_HALPHA_1 = 1, // Hierarchy alpha is 1.
  475.     BDA_HALPHA_2, // Hierarchy alpha is 2.
  476.     BDA_HALPHA_4, // Hierarchy alpha is 4.
  477.     BDA_HALPHA_MAX,
  478. } HierarchyAlpha;
  479. typedef V1_ENUM enum TransmissionMode {
  480.     BDA_XMIT_MODE_NOT_SET = -1,
  481.     BDA_XMIT_MODE_NOT_DEFINED = 0,
  482.     BDA_XMIT_MODE_2K = 1, // Transmission uses 1705 carriers (use a 2K FFT)
  483.     BDA_XMIT_MODE_8K, // Transmission uses 6817 carriers (use an 8K FFT)
  484.     BDA_XMIT_MODE_MAX,
  485. } TransmissionMode;
  486. #endif // not defined _BDATYPES_
  487. // end of file -- bdatypes.h