mpeg2structs.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #include <mpeg2data.h>
  7. #include <mpeg2bits.h>
  8. #ifndef __INC_MPEG2STRUCTS__
  9. #define __INC_MPEG2STRUCTS__
  10. typedef enum _MPEG_CONTEXT_TYPE {
  11. MPEG_CONTEXT_BCS_DEMUX = 0,
  12. MPEG_CONTEXT_WINSOCK
  13. } MPEG_CONTEXT_TYPE;
  14. typedef enum _MPEG_CURRENT_NEXT_BIT {
  15. MPEG_SECTION_IS_NEXT = 0,
  16. MPEG_SECTION_IS_CURRENT = 1
  17. } MPEG_CURRENT_NEXT_BIT;
  18. typedef enum _MPEG_REQUEST_TYPE {
  19. MPEG_RQST_UNKNOWN = 0,
  20. MPEG_RQST_GET_SECTION,
  21. MPEG_RQST_GET_SECTION_ASYNC,
  22. MPEG_RQST_GET_TABLE,
  23. MPEG_RQST_GET_TABLE_ASYNC,
  24. MPEG_RQST_GET_SECTIONS_STREAM,
  25. MPEG_RQST_GET_PES_STREAM,
  26. MPEG_RQST_GET_TS_STREAM,
  27. MPEG_RQST_START_MPE_STREAM
  28. } MPEG_REQUEST_TYPE;
  29. typedef struct _DSMCC_ELEMENT {
  30. PID pid;
  31. BYTE bComponentTag;
  32. DWORD dwCarouselId;
  33. DWORD dwTransactionId;
  34. struct _DSMCC_ELEMENT *pNext;
  35. } DSMCC_ELEMENT, *PDSMCC_ELEMENT;
  36. typedef struct {
  37. WINBOOL fSpecifyProtocol;
  38. BYTE Protocol;
  39. WINBOOL fSpecifyType;
  40. BYTE Type;
  41. WINBOOL fSpecifyMessageId;
  42. WORD MessageId;
  43. WINBOOL fSpecifyTransactionId;
  44. WINBOOL fUseTrxIdMessageIdMask;
  45. DWORD TransactionId;
  46. WINBOOL fSpecifyModuleVersion;
  47. BYTE ModuleVersion;
  48. WINBOOL fSpecifyBlockNumber;
  49. WORD BlockNumber;
  50. WINBOOL fGetModuleCall;
  51. WORD NumberOfBlocksInModule;
  52. } DSMCC_FILTER_OPTIONS;
  53. typedef struct _MPEG_HEADER_BITS_MIDL {
  54. WORD Bits;
  55. } MPEG_HEADER_BITS_MIDL;
  56. typedef struct _MPEG_HEADER_VERSION_BITS_MIDL {
  57. BYTE Bits;
  58. } MPEG_HEADER_VERSION_BITS_MIDL;
  59. typedef struct _DSMCC_SECTION {
  60. TID TableId;
  61. __C89_NAMELESS union {
  62. MPEG_HEADER_BITS_MIDL S;
  63. WORD W;
  64. } Header;
  65. WORD TableIdExtension;
  66. __C89_NAMELESS union {
  67. MPEG_HEADER_VERSION_BITS_MIDL S;
  68. BYTE B;
  69. } Version;
  70. BYTE SectionNumber;
  71. BYTE LastSectionNumber;
  72. BYTE ProtocolDiscriminator;
  73. BYTE DsmccType;
  74. WORD MessageId;
  75. DWORD TransactionId;
  76. BYTE Reserved;
  77. BYTE AdaptationLength;
  78. WORD MessageLength;
  79. BYTE RemainingData[1];
  80. } DSMCC_SECTION, *PDSMCC_SECTION;
  81. typedef struct _DVB_EIT_FILTER_OPTIONS {
  82. WINBOOL fSpecifySegment;
  83. BYTE bSegment;
  84. } DVB_EIT_FILTER_OPTIONS, *PDVB_EIT_FILTER_OPTIONS;
  85. typedef struct {
  86. TID TableId;
  87. __C89_NAMELESS union {
  88. MPEG_HEADER_BITS_MIDL S;
  89. WORD W;
  90. } Header;
  91. WORD TableIdExtension;
  92. __C89_NAMELESS union {
  93. MPEG_HEADER_VERSION_BITS_MIDL S;
  94. BYTE B;
  95. } Version;
  96. BYTE SectionNumber;
  97. BYTE LastSectionNumber;
  98. BYTE RemainingData[1];
  99. } LONG_SECTION, *PLONG_SECTION;
  100. typedef struct _MPE_ELEMENT {
  101. PID pid;
  102. BYTE bComponentTag;
  103. struct _MPE_ELEMENT *pNext;
  104. } MPE_ELEMENT, *PMPE_ELEMENT;
  105. typedef struct _MPEG2_FILTER {
  106. BYTE bVersionNumber;
  107. WORD wFilterSize;
  108. WINBOOL fUseRawFilteringBits;
  109. BYTE Filter[16];
  110. BYTE Mask[16];
  111. WINBOOL fSpecifyTableIdExtension;
  112. WORD TableIdExtension;
  113. WINBOOL fSpecifyVersion;
  114. BYTE Version;
  115. WINBOOL fSpecifySectionNumber;
  116. BYTE SectionNumber;
  117. WINBOOL fSpecifyCurrentNext;
  118. WINBOOL fNext;
  119. WINBOOL fSpecifyDsmccOptions;
  120. DSMCC_FILTER_OPTIONS Dsmcc;
  121. WINBOOL fSpecifyAtscOptions;
  122. ATSC_FILTER_OPTIONS Atsc;
  123. } MPEG2_FILTER, *PMPEG2_FILTER;
  124. typedef struct {
  125. BYTE bVersionNumber;
  126. WORD wFilterSize;
  127. WINBOOL fUseRawFilteringBits;
  128. BYTE Filter[16];
  129. BYTE Mask[16];
  130. WINBOOL fSpecifyTableIdExtension;
  131. WORD TableIdExtension;
  132. WINBOOL fSpecifyVersion;
  133. BYTE Version;
  134. WINBOOL fSpecifySectionNumber;
  135. BYTE SectionNumber;
  136. WINBOOL fSpecifyCurrentNext;
  137. WINBOOL fNext;
  138. WINBOOL fSpecifyDsmccOptions;
  139. DSMCC_FILTER_OPTIONS Dsmcc;
  140. WINBOOL fSpecifyAtscOptions;
  141. ATSC_FILTER_OPTIONS Atsc;
  142. WINBOOL fSpecifyDvbEitOptions;
  143. DVB_EIT_FILTER_OPTIONS Dvb_Eit;
  144. } MPEG2_FILTER2, *PMPEG2_FILTER2;
  145. typedef struct _MPEG_BCS_DEMUX {
  146. DWORD AVMGraphId;
  147. } MPEG_BCS_DEMUX;
  148. typedef struct _MPEG_WINSOCK {
  149. DWORD AVMGraphId;
  150. } MPEG_WINSOCK;
  151. typedef struct _MPEG_CONTEXT {
  152. MPEG_CONTEXT_TYPE Type;
  153. __C89_NAMELESS union {
  154. MPEG_BCS_DEMUX Demux;
  155. MPEG_WINSOCK Winsock;
  156. } U;
  157. } MPEG_CONTEXT, *PMPEG_CONTEXT;
  158. typedef struct _MPEG_DATE {
  159. BYTE Date;
  160. BYTE Month;
  161. WORD Year;
  162. } MPEG_DATE;
  163. typedef struct _MPEG_TIME {
  164. BYTE Hours;
  165. BYTE Minutes;
  166. BYTE Seconds;
  167. } MPEG_TIME;
  168. typedef struct _MPEG_DATE_AND_TIME {
  169. MPEG_DATE D;
  170. MPEG_TIME T;
  171. } MPEG_DATE_AND_TIME;
  172. typedef MPEG_TIME MPEG_DURATION;
  173. typedef struct {
  174. TID TableId;
  175. __C89_NAMELESS union {
  176. MPEG_HEADER_BITS_MIDL S;
  177. WORD W;
  178. } Header;
  179. BYTE SectionData[1];
  180. } SECTION, *PSECTION;
  181. typedef struct _MPEG_RQST_PACKET {
  182. DWORD dwLength;
  183. PSECTION pSection;
  184. } MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
  185. typedef struct _MPEG_PACKET_LIST {
  186. WORD wPacketCount;
  187. PMPEG_RQST_PACKET PacketList[1];
  188. } MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
  189. typedef struct _MPEG_STREAM_BUFFER {
  190. HRESULT hr;
  191. DWORD dwDataBufferSize;
  192. DWORD dwSizeOfDataRead;
  193. BYTE *pDataBuffer;
  194. } MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
  195. #endif /*__INC_MPEG2STRUCTS__*/