mirror of
https://github.com/halpz/re3.git
synced 2025-06-27 03:06:17 +00:00
skeleton updated, windows specific stuff added
This commit is contained in:
368
dxsdk/Include/DShowIDL/Mpeg2Structs.idl
Normal file
368
dxsdk/Include/DShowIDL/Mpeg2Structs.idl
Normal file
@ -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;
|
Reference in New Issue
Block a user