summaryrefslogtreecommitdiffstats
path: root/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dxsdk/Include/DShowIDL/Mpeg2Structs.idl368
1 files changed, 368 insertions, 0 deletions
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl b/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
new file mode 100644
index 00000000..e04353f4
--- /dev/null
+++ b/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
@@ -0,0 +1,368 @@
+/////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// Module Name:
+//
+// Mpeg2Structs.idl
+//
+// Abstract:
+//
+// Definitions for the common structures used in Mpeg2Data
+//
+// Notes:
+//
+// This IDL file is not built independently, but is included and built
+// in the master IDL file Mpeg2Data.idl
+//
+/////////////////////////////////////////////////////////////////////////////
+
+ // Include Files
+#include "Mpeg2Bits.h"
+
+
+
+//
+// Basic Type Aliases
+//
+
+typedef WORD PID;
+typedef BYTE TID;
+typedef UINT ClientKey;
+
+
+
+//
+// MPEG-2 Current/Next bit field
+//
+
+typedef enum
+{
+ MPEG_SECTION_IS_NEXT = 0,
+ MPEG_SECTION_IS_CURRENT = 1
+} MPEG_CURRENT_NEXT_BIT;
+
+
+
+//
+// MPEG-2 TID Extension structure
+//
+
+typedef struct
+{
+ WORD wTidExt;
+ WORD wCount;
+} TID_EXTENSION, *PTID_EXTENSION;
+
+
+
+//
+// MPEG-2 packet "small" header structure
+//
+
+typedef struct
+{
+ TID TableId;
+ union
+ {
+ MPEG_HEADER_BITS_MIDL S;
+ WORD W;
+ } Header;
+ BYTE SectionData[1]; // Array size is Header.S.SectionLength
+} SECTION, *PSECTION;
+
+
+
+//
+// MPEG-2 packet "long" header structure
+//
+
+typedef struct
+{
+ TID TableId;
+ union
+ {
+ MPEG_HEADER_BITS_MIDL S;
+ WORD W;
+ } Header;
+ WORD TableIdExtension;
+ union
+ {
+ MPEG_HEADER_VERSION_BITS_MIDL S;
+ BYTE B;
+ } Version;
+ BYTE SectionNumber;
+ BYTE LastSectionNumber;
+ BYTE RemainingData[1]; // Array size is Header.S.SectionLength - 5
+} LONG_SECTION, *PLONG_SECTION;
+
+
+
+//
+// DSM-CC packet header structure
+//
+
+typedef struct
+{
+ TID TableId;
+ union
+ {
+ MPEG_HEADER_BITS_MIDL S;
+ WORD W;
+ } Header;
+ WORD TableIdExtension;
+ union
+ {
+ MPEG_HEADER_VERSION_BITS_MIDL S;
+ BYTE B;
+ } Version;
+ BYTE SectionNumber;
+ BYTE LastSectionNumber;
+ BYTE ProtocolDiscriminator;
+ BYTE DsmccType;
+ WORD MessageId;
+ DWORD TransactionId;
+ BYTE Reserved;
+ BYTE AdaptationLength;
+ WORD MessageLength;
+ BYTE RemainingData[1];
+} DSMCC_SECTION, *PDSMCC_SECTION;
+
+
+
+//
+// MPEG-2 request/response packets structures
+//
+
+typedef struct
+{
+ DWORD dwLength;
+ PSECTION pSection;
+} MPEG_RQST_PACKET, *PMPEG_RQST_PACKET;
+
+typedef struct
+{
+ WORD wPacketCount;
+ PMPEG_RQST_PACKET PacketList[1]; // Array size is wPacketCount;
+} MPEG_PACKET_LIST, *PMPEG_PACKET_LIST;
+
+
+
+//
+// DSM-CC request filter options
+//
+
+typedef struct
+{
+ BOOL fSpecifyProtocol; // If true, Protocol should be set to desired value
+ BYTE Protocol;
+ BOOL fSpecifyType; // If true, Type should be set to desired value
+ BYTE Type;
+ BOOL fSpecifyMessageId; // If true, MessageId should be set to desired value
+ WORD MessageId;
+ BOOL fSpecifyTransactionId; // If true, TransactionId (or DownloadId for DDB msgs) should be set to desired value
+ BOOL fUseTrxIdMessageIdMask; // If false, TransactionId is filtered as is.
+ // If true, TransactionId is masked to look
+ // for any version of message with associated
+ // message identifier. See DVB - Data
+ // Broadcasting Guidlines 4.6.5. (Assignment
+ // and use of transactionId values).
+ DWORD TransactionId;
+ BOOL fSpecifyModuleVersion; // If true, ModuleVersion should be set to the desired value
+ BYTE ModuleVersion;
+ BOOL fSpecifyBlockNumber; // If true, BlockNumber should be set to desired value
+ WORD BlockNumber;
+ BOOL fGetModuleCall; // If true, NumberOfBlocksInModule should be set
+ WORD NumberOfBlocksInModule;
+} DSMCC_FILTER_OPTIONS;
+// 45 BYTES
+
+
+
+//
+// ATSC request filter options
+//
+
+typedef struct
+{
+ BOOL fSpecifyEtmId; // If true, EtmId should be set to desired value
+ DWORD EtmId;
+} ATSC_FILTER_OPTIONS;
+// 8 BYTES
+
+
+
+//
+// MPEG-2 request filter structure
+//
+
+typedef struct
+{
+ BYTE bVersionNumber; // Must be set to 1 or more to match filter definition
+ WORD wFilterSize; // Size of total filter structure. Version 1 filter is 73 bytes.
+ BOOL fUseRawFilteringBits; // If true, Filter and Mask fields should be set to desired value, all other
+ // fields with be ignored.
+ BYTE Filter[16]; // Bits with values to compare against for a match.
+ BYTE Mask[16]; // Bits set to 0 are bits that are compared to those in the filter, those
+ // bits set to 1 are ignored.
+ BOOL fSpecifyTableIdExtension; // If true, TableIdExtension should be set to desired value (false = don't care)
+ WORD TableIdExtension;
+ BOOL fSpecifyVersion; // If true, Version should be set to desired value (false = don't care)
+ BYTE Version;
+ BOOL fSpecifySectionNumber; // If true, SectionNumber should be set to desired value (false = don't care)
+ BYTE SectionNumber;
+ BOOL fSpecifyCurrentNext; // If true, fNext should be set to desired value (false = don't care)
+ BOOL fNext; // If true, next table is queried. Else, current
+ BOOL fSpecifyDsmccOptions; // If true, Dsmcc should be set with desired filter options
+ DSMCC_FILTER_OPTIONS Dsmcc;
+ BOOL fSpecifyAtscOptions; // If true, Atsc should be set with desired filter options
+ ATSC_FILTER_OPTIONS Atsc;
+} MPEG2_FILTER, *PMPEG2_FILTER;
+// 124 BYTES
+
+cpp_quote("#define MPEG2_FILTER_VERSION_1_SIZE 124")
+
+
+//
+// Mpeg-2 Stream buffer structure
+//
+
+typedef struct
+{
+ HRESULT hr;
+ DWORD dwDataBufferSize;
+ DWORD dwSizeOfDataRead;
+ BYTE * pDataBuffer;
+} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;
+
+
+
+//
+// MPEG-2 Time and Date structures
+//
+
+typedef struct
+{
+ BYTE Hours; // Legal Range: 0 to 23
+ BYTE Minutes; // Legal Range: 0 to 59
+ BYTE Seconds; // Legal Range: 0 to 59
+} MPEG_TIME;
+
+typedef MPEG_TIME MPEG_DURATION;
+
+typedef struct
+{
+ BYTE Date; // Legal Range: 1 to 31
+ BYTE Month; // Legal Range: 1 to 12
+ WORD Year; // Legal Range: 1900 to 2100
+} MPEG_DATE;
+
+typedef struct
+{
+ MPEG_DATE D;
+ MPEG_TIME T;
+} MPEG_DATE_AND_TIME;
+
+
+
+//
+// MPEG-2 API Context structures
+//
+
+typedef enum
+{
+ MPEG_CONTEXT_BCS_DEMUX,
+ MPEG_CONTEXT_WINSOCK
+} MPEG_CONTEXT_TYPE;
+
+typedef struct
+{
+ DWORD AVMGraphId;
+} MPEG_BCS_DEMUX;
+
+typedef struct
+{
+ DWORD AVMGraphId;
+} MPEG_WINSOCK;
+
+typedef struct
+{
+ MPEG_CONTEXT_TYPE Type;
+ union
+ {
+ MPEG_BCS_DEMUX Demux;
+ MPEG_WINSOCK Winsock;
+ } U;
+} MPEG_CONTEXT, *PMPEG_CONTEXT;
+
+
+
+//
+// MPEG-2 Service Request and Responses
+//
+
+typedef enum
+{
+ MPEG_RQST_UNKNOWN = 0,
+ MPEG_RQST_GET_SECTION,
+ MPEG_RQST_GET_SECTION_ASYNC,
+ MPEG_RQST_GET_TABLE,
+ MPEG_RQST_GET_TABLE_ASYNC,
+ MPEG_RQST_GET_SECTIONS_STREAM,
+ MPEG_RQST_GET_PES_STREAM,
+ MPEG_RQST_GET_TS_STREAM,
+ MPEG_RQST_START_MPE_STREAM,
+} MPEG_REQUEST_TYPE;
+
+typedef struct
+{
+ MPEG_REQUEST_TYPE Type;
+ MPEG_CONTEXT Context;
+ PID Pid;
+ TID TableId;
+ MPEG2_FILTER Filter;
+ DWORD Flags;
+} MPEG_SERVICE_REQUEST, *PMPEG_SERVICE_REQUEST;
+
+typedef struct
+{
+ DWORD IPAddress;
+ WORD Port;
+} MPEG_SERVICE_RESPONSE, *PMPEG_SERVICE_RESPONSE;
+
+
+
+//
+// DSM-CC & MPE Query Results
+//
+
+typedef struct _DSMCC_ELEMENT
+{
+ PID pid;
+ BYTE bComponentTag;
+ DWORD dwCarouselId;
+ DWORD dwTransactionId;
+ struct _DSMCC_ELEMENT * pNext;
+} DSMCC_ELEMENT, *PDSMCC_ELEMENT;
+
+typedef struct _MPE_ELEMENT
+{
+ PID pid;
+ BYTE bComponentTag;
+ struct _MPE_ELEMENT * pNext;
+} MPE_ELEMENT, *PMPE_ELEMENT;
+
+
+
+//
+// MPEG-2 Stream Filtering Structure
+//
+
+typedef struct _MPEG_STREAM_FILTER
+{
+ WORD wPidValue; // PID value
+ DWORD dwFilterSize; // size of filter in bits
+ BOOL fCrcEnabled; // enable/disable CRC check
+ BYTE rgchFilter[16]; // filter data
+ BYTE rgchMask[16]; // filter mask
+} MPEG_STREAM_FILTER;