📄 mpegcmn.h
字号:
typedef struct _MPEG_POINT{
ULONG x;
ULONG y;
}MPEG_POINT,*PMPEG_POINT;
// Overlay VGA key
typedef struct _MPEG_OVERLAY_KEY
{
COLORREF rgbColor; // palette index or RGB color
COLORREF rgbMask; // significant bits in color
} MPEG_OVERLAY_KEY, *PMPEG_OVERLAY_KEY;
typedef struct _OVERLAY_COLOUR_REGISTERS
{
USHORT RedUpper;
USHORT RedLower;
USHORT GreenUpper;
USHORT GreenLower;
USHORT BlueUpper;
USHORT BlueLower;
USHORT Mask;
USHORT Status;
} OVERLAY_COLOUR_REGISTERS, *POVERLAY_COLOUR_REGISTERS;
typedef struct _MPEG_OVERLAY_KEY2
{
COLORREF rgbColor; // RGB color
POVERLAY_COLOUR_REGISTERS pOverride;
} MPEG_OVERLAY_KEY2, *PMPEG_OVERLAY_KEY2;
typedef struct _CALIBRATION_PARAMETERS
{
COLORREF UpperFF;
COLORREF LowerFF;
COLORREF Upper80;
COLORREF Lower80;
COLORREF Upper00;
COLORREF Lower00;
} CALIBRATION_PARAMETERS, *PCALIBRATION_PARAMETERS;
typedef struct _MPEG_OVERLAY_BIT_MASK
{
ULONG PixelHeight; // the height of the bit-mask buffer
ULONG PixelWidth; // the wight of the bit-mask buffer
ULONG BufferPitch; // the number of bytes-per-line
ULONG LeftEdgeBitOffset; // the number of bits to skip on the left edge
char *pBitMask; // pointer to the data
} MPEG_OVERLAY_BIT_MASK, *PMPEG_OVERLAY_BIT_MASK;
//
// This should really be a union but mmmidl doesn't support them
//
typedef struct _MPEG_DEVICE_INFO
{
MPEG_DEVICE_STATE DeviceState; // Current MPEG device decode state
REQUESTED_STATE_TYPE RequestedState;// Current requested state of MPEG device
ULONG DecoderBufferSize; // Size of the decoder buffer
ULONG DecoderBufferFullness; // Used bytes in docoder buffer
ULONG StarvationCount; // The numer of times the device has
// entered the starvation state
// The following two are only valid for video
ULONG DecompressHeight; // Native MPEG decode height
ULONG DecompressWidth; // Native MPEG decode width
// The following are only valid for overlay
ULONG MinDestinationHeight; // Minimum height of overlay
ULONG MaxDestinationHeight; // Maximum height of overlay
ULONG MinDestinationWidth; // Minimum width of overlay
ULONG MaxDestinationWidth; // Maximum width of overlay
ULONG EventStatus; // status of an event
} MPEG_DEVICE_INFO, *PMPEG_DEVICE_INFO;
#define MPEG_EVENT_PAUSE_ON_EVENT 0x0001
#define MPEG_EVENT_CONTINUE_ON_EVENT 0x0002
#define MPEG_EVENT_CANCEL_ON_EVENT 0x0004
#define MPEG_EVENT_PAUSE_DSP_ON_EVENT 0x0008
#define MPEG_EVENT_VIDEO_RELATIVE_FRAME 0x0010
#define MPEG_EVENT_VIDEO_ABSOLUTE_FRAME 0x0020
#define MPEG_EVENT_VIDEO_BYTES 0x0040
#define MPEG_EVENT_AUDIO_BYTES 0x0080
#define MPEG_EVENT_STEP 0x0100
typedef struct _MPEG_EVENT
{
MPEG_EVENT_TYPE MpegEvent; // type of event requested
ULONG ulData; // event specific info (eg #of frames)
ULONG ulFlags; // event flags - pause or continue?
} MPEG_EVENT, *PMPEG_EVENT;
typedef struct _CIRCULAR_BUFFER_INFO
{
UCHAR *pBuffer; // pointer to start of buffer
ULONG ulSize; // size of buffer
LONG RdPtr; // offset from start of buffer
LONG WrPtr; // offset from start of buffer
} CIRCULAR_BUFFER_INFO, *PCIRCULAR_BUFFER_INFO;
typedef struct _VXD_ADDRESS
{
ULONG BaseAddress;
ULONG Length;
} VXD_ADDRESS, *PVXD_ADDRESS;
typedef struct _WDM_ADDRESS
{
ULONG HighPart;
ULONG LowPart;
ULONG RangeLength;
BOOLEAN RangeInMemory;
} WDM_ADDRESS, *PWDM_ADDRESS;
typedef struct _HIGHLIGHT_COMMAND
{
MPEG_HLI_CMD command;
DWORD dwParameter;
} HIGHLIGHT_COMMAND, *PHIGHLIGHT_COMMAND;
typedef struct _HIGHLIGHT_COMMANDEX
{
MPEG_HLI_CMD command;
union{
BYTE bButtonNumber;
DWORD dwParam;
MPEG_POINT point;
}u;
} HIGHLIGHT_COMMANDEX, *PHIGHLIGHT_COMMANDEX;
typedef struct _PERFORMANCE_STAT
{
PULONG pAddr;
char szDesc[64];
} PERFORMANCE_STAT, *PPERFORMANCE_STAT;
typedef struct _I2C_INFO
{
ULONG i2c_address;
ULONG reg;
ULONG data;
} I2C_INFO, *PI2C_INFO;
/*
typedef enum _BOARD_CTRL_CMD{
CmdNoCommand,
CmdReadHostRegisters,
CmdWriteHostRegister,
CmdGetDriverAddrInfo,
CmdReadEEPROM,
CmdWriteEEPROM,
CmdReadOvrlRegisters,
CmdWriteOvrlRegister,
CmdReadTVEncRegisters,
CmdWriteTVEncRegister,
CmdGetBoardLayout,
CmdGetDriverInfo
}BOARD_CTRL_CMD;
*/
typedef enum _BOARD_CTL_PROPERTY_SUBID{
NoType = 0,
chip_reg,
ucode_sym,
ovr_reg,
tvenc_reg,
var_rm8400,
rtMaxActiveTable,
rtEEPROM,
data_memory,
rtMaxType
}BOARD_CTL_PROPERTY_SUBID;
#ifndef _RM_WRITE_DEFINED
#define _RM_WRITE_DEFINED
typedef struct _RM_WRITE{
ULONG Addr;
ULONG Data;
}RM_WRITE, *PRM_WRITE;
#endif // _RM_WRITE_DEFINED
typedef struct _BI_HEADER{
ULONG ExtraSize; // in bytes
BOARD_CTL_PROPERTY_SUBID PropSubID;
}BI_HEADER;
typedef struct _BOARD_INFO{
BI_HEADER Header;
union{
RM_WRITE Write;
UCHAR uchar;
USHORT ushort;
ULONG ulong;
ULONGLONG ulonglong;
}u;
}BOARD_INFO,*PBOARD_INFO;
#define DMABFLAGS_KernelMode 0x00000001
#define DMABFLAGS_CheckStatus 0x00000002
typedef struct{
ULONG Size;
PVOID UserVirtualAddress;
ULONGLONG PhysicalAddress;
ULONG Flags;
ULONG Reserved;
}DMABUFFER_INFO, *PDMABUFFER_INFO;
typedef struct _VCXO_SET
{
ULONG Coefficients[2]; // N,M,K,ppmError;
ULONG RepeatCount[2]; // number of VSyncs to keep the corresponding Coefficients
}VCXO_SET,*PVCXO_SET;
typedef enum tagHW_VCXO
{
eHwVcxoDefault = -1,
eHwVcxoPio0,
eHwVcxoPio1,
eHwVcxoPio2,
eHwVcxoPio3,
eHwVcxoPio4,
eHwVcxoPio5,
eHwVcxoPio6,
eHwVcxoPio7,
eHwVcxoPio8,
eHwVcxoPio9,
eHwVcxoPio10,
eHwVcxoPio11,
eHwVcxoPio12,
eHwVcxoPio13,
eHwVcxoPio14,
eHwVcxoPio15,
eHwVcxoNovaLitePll,
eHwVcxoMax
}HW_VCXO;
typedef struct tagPCR_INFO // used for PropId=etimPcrInfo in PropSet=TIME_SET
{
WORD wStructureVersion; // 0
WORD PcrEnable; // 1 for Pcr master, 0 for Apts master
DWORD RecoveryTime; // = log2(TimeRecovery/200us) = 16 for 13.1072sec
DWORD PcrIntrPeriodUs; // 200us ... 13,107,000us (1*200us ... 0xFFFF*200us)
DWORD TimeResolution; // 90000 for unit90k
DWORD DeltaPCR_SCR_Max; // unit90k, ex: 9000 unit90k = 100ms
DWORD DeltaSCR_APTS_Max; // unit90k, ex: 180 unit90k = 2ms
HW_VCXO HwVcxo; // Pio5 for Siemens box
DWORD PpmRange; // 150, for +/-150
}PCR_INFO;
typedef struct tagTIME_INFO // used for PropId=etimPcrTime in PropSet=TIME_SET
{
DWORD dwTimeResolution; // 90000 for 90k pts unit
ULONGLONG dwlTime; // Pts
}TIME_INFO;
typedef enum // used for PropId = eaDualMonoMode in PropSet=AUDIO_SET
{
eDualModeStereo = 0,
eDualModeMonoRight,
eDualModeMonoLeft,
eDualModeMonoMix
}DualMonoMode;
typedef enum // used for PropId = eaAc3Conf in PropSet=AUDIO_SET
{
eAc3SpeakerSurround = 0,
eAc3Speaker1_0,
eAc3Speaker2_0
}Ac3SpeakerConfig;
typedef enum // used for PropId = eaAc3Conf in PropSet=AUDIO_SET
{
eAc3ComprDiagNormOff = 0,
eAc3DiagNormOn,
eAc3LineOut,
eAc3RFModulation
}Ac3ComprDlgNorm;
typedef struct tagAC3_CONF // used for PropId = eaAc3Conf in PropSet=AUDIO_SET
{
WORD wStructureVersion; // 0
BYTE bAc3ComprDlgNorm; // HwLib default eAc3LineOut
BYTE bAc3SpeakerConfig; // HwLib default eAc3SpeakerSurround
WORD wAc3HiLoDynamicRange; // HwLib default 0xFFFF
WORD wAc3RepeatCounter; // HwLib default 0x0000
}AC3_CONF;
// MpegAttrVgaVendorInfo
typedef struct _VGA_VENDOR_INFO
{
WORD wVendorID;
WORD wDeviceID;
WORD wSubSystemVendorID;
WORD wSubSystemID;
UCHAR bRevisionID;
} VGA_VENDOR_INFO, *PVGA_VENDOR_INFO;
// List all the different data format type passed in RM_DATA_FORMAT_STRUCT
typedef enum tagRM_DATA_FORMAT_ENUM
{
RmDataFormatUnknown = -1,
RmDataFormatMPEG12Video = 0,
RmDataFormatMPEG4Video = 1,
RmDataFormatMPEG1Audio = 0x10 + AUDIO_FORMAT_MPEG1,
RmDataFormatMPEG2Audio = 0x10 + AUDIO_FORMAT_MPEG2,
RmDataFormatAC3Audio = 0x10 + AUDIO_FORMAT_AC3,
RmDataFormatPCMAudio = 0x10 + AUDIO_FORMAT_PCM,
RmDataFormatDTSAudio = 0x10 + AUDIO_FORMAT_DTS,
RmDataFormatDVDAudio = 0x10 + AUDIO_FORMAT_DVD_AUDIO,
RmDataFormatReversePCMAudio = 0x10 + AUDIO_FORMAT_REVERSE_PCM,
RmDataFormatMPEG4PCMAudio, // AUDIO_FORMAT_PCM
RmDataFormatMPEG4ReversePCMAudio // AUDIO_FORMAT_REVERSE_PCM,
} RM_DATA_FORMAT_ENUM, *PRM_DATA_FORMAT_ENUM;
// Base structure used to pass new data format to driver inside a data buffer.
// The flags of this packet needs to be set to RMFLAG_DATA_FORMAT_CHANGE
typedef struct tagRM_DATA_FORMAT_STRUCT
{
WORD wStructSize;
BYTE bStandard; // See RM_DATA_FORMAT_ENUM (Use (BYTE) RM_DATA_FORMAT_ENUM)
BYTE bRevision; // Revision number (== RM_DATA_FORMAT_REVISION)
} RM_DATA_FORMAT_STRUCT, *PRM_DATA_FORMAT_STRUCT;
#define RM_DATA_FORMAT_REVISION 1 // Changes every time RM_DATA_FORMAT_STRUCT changes
// Base structure used to pass new data format to driver inside a data buffer.
// The flags of this packet needs to be set to RMFLAG_DATA_FORMAT_CHANGE
typedef struct tagRM_MPEG4_DATA_FORMAT_STRUCT
{
WORD wStructSize;
BYTE bStandard; // See RM_DATA_FORMAT_ENUM (Use (BYTE) RM_DATA_FORMAT_ENUM)
BYTE bRevision; // Revision number (== RM_DATA_FORMAT_REVISION)
DWORD dwTimeScale; // MPEG4 track Time Scale
} RM_MPEG4_DATA_FORMAT_STRUCT, *PRM_MPEG4_DATA_FORMAT_STRUCT;
// RM_DATA_FORMAT_STRUCT structure used to pass RmDataFormatMPEG4Video video format
typedef struct tagRM_MPEG4_VIDEO_FORMAT_STRUCT
{
WORD wStructSize;
BYTE bStandard; // See RM_DATA_FORMAT_ENUM (Use (BYTE) RM_DATA_FORMAT_ENUM)
BYTE bRevision; // Revision number (== RM_DATA_FORMAT_REVISION)
DWORD dwTimeScale; // MPEG4 track Time Scale
DWORD dwVopTimeIncrementResolution; // Number of ticks per second found in DSI or forced
// when bForceFixedVOPRate is 1
BYTE bAspectRatio; // See MPEG4 Video Aspect Ratios
WORD wWidth; // Video Width
WORD wHeight; // Video Height
BOOL bForceFixedVOPRate; // Force VOP Rate <> DSI (Only for DivX)
DWORD dwFixedVopTimeIncrement; // When bForceFixedVOPRate==1, number of ticks per VOP
// (Use dwVopTimeIncrementResolution for time resolution)
} RM_MPEG4_VIDEO_FORMAT_STRUCT, *PRM_MPEG4_VIDEO_FORMAT_STRUCT;
// RM_DATA_FORMAT_STRUCT structure used to pass RmDataFormatPCMAudio audio format
typedef struct tagRM_MPEG4_PCM_FORMAT_STRUCT
{
WORD wStructSize;
BYTE bStandard; // See RM_DATA_FORMAT_ENUM (Use (BYTE) RM_DATA_FORMAT_ENUM)
BYTE bRevision; // Revision number (== RM_DATA_FORMAT_REVISION)
DWORD dwTimeScale; // MPEG4 track Time Scale
LONG lBitsPerSample;
LONG lNumberOfChannels;
LONG lSampling_Frequency;
} RM_MPEG4_PCM_FORMAT_STRUCT, *PRM_MPEG4_PCM_FORMAT_STRUCT;
// Make sure the following size is bigger or equal to the maximum RM_xxx_FORMAT_STRUCT!
#define MAX_DATA_FORMAT_STRUCT_SIZE 100
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -