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