⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpegcmn.h

📁 神龙卡 SDK_84xx_DShow_145_02.zip 这个是 windows 上二个是linux
💻 H
📖 第 1 页 / 共 3 页
字号:

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 + -