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

📄 mpegcmn.pas

📁 这份源码已提供了神龙卡的控制接口的全部源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:

// ????????
  MPEG_CAPABILITY_ASPECT_RATIO             =$00000200;

// The video can be displayed on the VGA monitor. Note that it might
// also be possible to display it on TV when MPEG_CAPABILITY_TV_OUTPUT
// is set but it may not be possible at the same time. Use the flag
// MPEG_CAPABILITY_VGA_AND_TV to find if this is possible.
  MPEG_CAPABILITY_VGA_WINDOW               =$00000400;

// Indicates that hardware decryption is supported by the hardware
  MPEG_CAPABILITY_DVD_DECRYPTION           =$00000800;

// Used by DVD station to know if the video source size can change
// depending on the VGA alignement. This is to determine the default DVD
// station window size and to prevent scaling (and therefore video
// artifacts) when scale is 1:1.
  MPEG_CAPABILITY_SRC_CHANGE               =$00001000;

// Indicates that the hardware supports Frame Fast Forward
  MPEG_CAPABILITY_FRAME_FF                 =$00002000 ;

// The video can be displayed on TV. Note that it might also be possible
// to display the video on VGA when the flag MPEG_CAPABILITY_VGA_WINDOW
// is set but it may not be possible at the same time. Use the flag
// MPEG_CAPABILITY_VGA_AND_TV to find if this is possible.
  MPEG_CAPABILITY_TV_OUTPUT                =$00004000;

// Indicates that the video can be displayed both on TV and VGA. When this
// flag is set, both flag MPEG_CAPABILITY_VGA_WINDOW and
// MPEG_CAPABILITY_TV_OUTPUT needs to be set. This capability can change
// in real time depending on the TV output format set using MpegAttrVideoTv.
// Therefore, every time DVD station changes the TV output format to
// PAL or NTSC with or without scale, it needs to verify this flag.
  MPEG_CAPABILITY_VGA_AND_TV               =$00008000;

// Indicates that the TV supports PAL 60, Note that this flag is invalid when
// MPEG_CAPABILITY_TV_OUTPUT is not set. Note also that PAL60 can only be used
// when source is NTSC unless MPEG_CAPABILITY_PAL_NTSC_CONVERT is set. This
// capability does not concern VGA.
  MPEG_CAPABILITY_PAL60                    =$00010000;

// Indicates that the hardware is capable of converting NTSC source into PAL and
// vice-versa. This is mostly usefull when a TV output is present.
  MPEG_CAPABILITY_PAL_NTSC_CONVERT         =$00020000;

// Indicates that the video can be displayed on a HDTV (progressive scan). This
// output format is incompatible (for now) with VGA and TV (ie, it cannot be
// displayed both on HDTV and TV or HDTV and VGA).
  MPEG_CAPABILITY_HDTV_OUTPUT              =$00040000;

// Indicates that the video on VGA cannot be scaled (Dragon products)
// MPEG_CAPABILITY_VGA_WINDOW cannot be set in the same time
  MPEG_CAPABILITY_FULLSCREEN_ONLY          =$00080000;

// Indicates that the video output cannot play simultaneously on VGA
// and TV. If set DVD station will paint a VGA_TV button.
  MPEG_CAPABILITY_VGATV_SWITCH_BUTTON      =$00100000;

// Indicates that the TV encoder can be slightly adjusted for color
// control one some PAL TVs that only display back and white.
  MPEG_CAPABILITY_TV_TOLERANCE             =$00200000;

// Indicates that the EEPROM to store the region code is present on the board
  MPEG_CAPABILITY_EEPROM_PRESENT           =$00400000;

// Indicates that hardware supports seeking accurately (this is used by DirectShow
// in order to allow playing first frame after a StreamPause or Video flush).
  MPEG_CAPABILITY_SEEK_ACCURATE            =$00800000;

// Indicates that hardware only supports NTSC (Only used for IGS to prevent
// double conversion)
  MPEG_CAPABILITY_NTSC_ONLY                =$01000000;

// Indicates that hardware only supports NTSC (Only used for IGS to prevent
// double conversion)
  MPEG_CAPABILITY_PAL_ONLY                 =$02000000;

// Indicates that hardware supports Tv Component YUV
  MPEG_CAPABILITY_TV_YUV_COMPONENT		=$04000000;

// Indicates that hardware can play in the same time PCM data
// through Dac and Spdif
  MPEG_CAPABILITY_DAC_SPDIF				=$08000000;

// Indicates that hardware has a 480P connector to display fullscreen on
// another Vga monitor - Ventura2000
  MPEG_CAPABILITY_480P					=$10000000;

// Indicates that hardware supports Tv Component RGB
  MPEG_CAPABILITY_TV_RGB_COMPONENT		=$20000000;

// Indicates that hardware has DVI output
  MPEG_CAPABILITY_DVI						=$40000000;

// Indicates that hardware has the audio clock controlled by VCXO
  MPEG_CAPABILITY_AUDIO_VCXO				=$80000000;
/*
{#ifndef _RMDEV_CAPABILITIES_DEFINED_
#define _RMDEV_CAPABILITIES_DEFINED_ }

type RMCAP_TYPE(
	RMCAP_Flags_cap0,
	RMCAP_Flags_cap1_dw,
	RMCAP_Flags_cap1_ull
);

type PRMMULTIPLE_ITEM=record (
       Size:Word	;
       Count:Word	;
) ;//RMMULTIPLE_ITEM, *PRMMULTIPLE_ITEM;

type RMMULTIPLE_ITEM=^PRMMULTIPLE_ITEM;

type capA=record(
     Capabilities:word;
     pExtraData:pointer;
    );

type capB=record(
     dwCaps[2]:word;
     ullCaps:word;
     multi_header: RMMULTIPLE_ITEM;
     );

type RMDEV_CAPABILITIES=record(
      		Mtype:RMCAP_TYPE;
          cap0:capA;
          cap1:capB;
      );

type PRMDEV_CAPABILITIES=^RMDEV_CAPABILITIES;
{typedef struct(
	RMCAP_TYPE	type;
	union(
		ULONG	Capabilities;
		PVOID	pExtraData;
	)cap0;
	union(
		DWORD			dwCaps[2];
		ULONGLONG		ullCaps;
		RMMULTIPLE_ITEM	multi_header;
	)cap1;
); //RMDEV_CAPABILITIES,*PRMDEV_CAPABILITIES;
  }
//#endif // _RMDEV_CAPABILITIES_DEFINED_
*/
type MPEG_DEVICE_TYPE(
    MpegAudioDevice,
    MpegVideoDevice,
    MpegOverlayDevice,
    MpegCombinedDevice,
	MpegSubpictureDevice
); //MPEG_DEVICE_TYPE, *PMPEG_DEVICE_TYPE;

type  PMPEG_DEVICE_TYPE=^MPEG_DEVICE_TYPE;

type MPEG_STREAM_TYPE(
    MpegSystemStream = 1,
    MpegAudioStream,
    MpegVideoStream,
  	MpegSubpictureStream,
	  MpegPCIStream
);

type PMPEG_STREAM_TYPE=^MPEG_STREAM_TYPE;

typedef MPEG_CAPABILITY
(
    MpegCapAudioDevice = 0,
    MpegCapVideoDevice,
    MpegCapSeparateStreams,
    MpegCapCombinedStreams,
    MpegCapBitmaskOverlay,
    MpegCapChromaKeyOverlay,
    MpegCapAudioRenderToMemory,
    MpegCapVideoRenderToMemory,
  	MpegCapSubPictureDevice,
    MpegCapMaximumCapability
);

type PMPEG_CAPABILITY=^MPEG_CAPABILITY;

#define MPEG_OEM_CAPABILITY(a)  ((MPEG_CAPABILITY)(((unsigned)a) + 0x00008000))

type MPEG_INFO_ITEM
(
    MpegInfoCurrentPendingRequest = 1,      // Video and Audio
    MpegInfoMaximumPendingRequests,         // Video and Audio
    MpegInfoDecoderBufferSize,              // Video and Audio
    MpegInfoDecoderBufferBytesInUse,        // Video and Audio
    MpegInfoCurrentPacketBytesOutstanding,  // Video and Audio
    MpegInfoCurrentFrameNumber,             // Video and Audio
    MpegInfoStarvationCount,                // Video and Audio
    MpegInfoDecompressHeight,               // Video
    MpegInfoDecompressWidth,                // Video
    MpegInfoMinDestinationHeight,           // Overlay
    MpegInfoMaxDestinationHeight,           // Overlay
    MpegInfoMinDestinationWidth,            // Overlay
    MpegInfoMaxDestinationWidth,            // Overlay
  	MpegInfoEventStatus,					// Video and Audio
	  MpegInfoHwDecode						// Audio
) ;
type  PMPEG_INFO_ITEM=^MPEG_INFO_ITEM;

#define MPEG_OEM_INFO_ITEM(a)   ((MPEG_INFO_ITEM)(((unsigned)a) + 0x00008000))

type MPEG_DEVICE_STATE
(
    MpegStateStartup = 0,
    MpegStatePaused,
    MpegStatePlaying,
    MpegStateStarved,
    MpegStateFailed,
  	MpegStateFrozen
);
type  PMPEG_DEVICE_STATE=^PMPEG_DEVICE_STATE;

type REQUESTED_STATE_TYPE (
    RequestedNone = 0,
    RequestedPlay,
    RequestedPause,
    RequestedStop
);


type MPEG_OVERLAY_MODE
(
    MpegModeNone = 1,
    MpegModeRectangle,
    MpegModeOverlay,
	MpegModeCalibrate
);
type  PMPEG_OVERLAY_MODE=^MPEG_OVERLAY_MODE;

type MPEG_EVENT_TYPE
(
    MpegPulseEvent = 0,
  	MpegTimerEvent,
	 MpegNullEvent
);
type PMPEG_EVENT_TYPE=^PMPEG_EVENT_TYPE;

type MPEG_DISPLAY_CONTEXT
(
	MpegDisplayGdi = 0
);
type PMPEG_DISPLAY_CONTEXT=^MPEG_DISPLAY_CONTEXT;

{#ifdef _WINGDI_

type MPEG_DISPLAY_PALETTE=record
(
	PLOGPALETTE pLogPalette;
	HPALETTE hPalette;
) MPEG_DISPLAY_PALETTE, *PMPEG_DISPLAY_PALETTE;

//#endif
}
type MPEG_HLI_CMD
(
	MpegSelectAdjacentButton = 0,
	MpegActivate,
	MpegSelectAndActivate,
	MpegMouseMove,
	MpegMouseButton,
	MpegSelectButton
);
type PMPEG_HLI_CMD=^PMPEG_HLI_CMD;

type MPEG_HLI_DIRECTION
(
	MpegUpperButton = 0,
	MpegLowerButton,
	MpegLeftButton,
	MpegRightButton
);
type PMPEG_HLI_DIRECTION=^PMPEG_HLI_DIRECTION;

type MPEG_DISPLAY_STATE
(
	MpegDisplayOff = 0,
	MpegDisplayOn
);
type PMPEG_DISPLAY_STATE=^PMPEG_DISPLAY_STATE;

type MPEG_DISPLAY_TYPE
(
	MpegDisplayNormal = 0,  //  4:3
	MpegDisplayWide,        // 16:9
	MpegDisplayLetterBox,
	MpegDisplayPanScan
);
type  PMPEG_DISPLAY_TYPE=^PMPEG_DISPLAY_TYPE;

type MPEG_DISPLAY_RESOLUTION=record
(
	iBitsPerPixel:integer;
	iScreenWidth:integer;
	iScreenHeight:integer;
);
type  PMPEG_DISPLAY_RESOLUTION=^PMPEG_DISPLAY_RESOLUTION;

type MPEG_DISPLAY_RESOLUTION_EX=record
(
	 iBitsPerPixel:integer;
	 iScreenWidt:integerh;
	 iScreenHeight:integer;
	 iHFrequency:integer;
	 iTotalPixelsPerLine:integer;
	 iTotalLinesPerFrame:integer;
	 iPixelXOffset:integer;
	 iLineYOffset:integer;
	 dwReserved[4]:word;
)
type PMPEG_DISPLAY_RESOLUTION_EX=^PMPEG_DISPLAY_RESOLUTION_EX;

type MPEG_ASYNC_CONTEXT
(
		hEvent:HANDLE;
		Reserved[ 10 ]:word;
);
type  PMPEG_ASYNC_CONTEXT=^PMPEG_ASYNC_CONTEXT;

// Color limits for one specified color
//
type COLOR_LIMITS=record
(
	COLORREF crKeyColor;
	COLORREF crUpperLimit;
	COLORREF crLowerLimit;
);
type PCOLOR_LIMITS=^PCOLOR_LIMITS;

type MPEG_DISPLAY_FRAME
(
	MpegDisplayMotion,
	MpegDisplayStill
);
type PMPEG_DISPLAY_FRAME=^MPEG_DISPLAY_FRAME;

type OWNER
(
	NO_OWNER,			// WDM, SYS and VXD not currently using the hardware
	OWNER_IS_WDM,
	OWNER_IS_SYS,		// We may want later to differentiate SYS from VxD
	OWNER_IS_VXD
);
type POWNER=^OWNER;

type HDTV_MODE=record
(
	HFreq:word;
	VFreq:word;;
	VideoWidth:word;;
	VideoHeight:word;;

	HSyncTotal:word;;
	PreHSync:word;;
	HSyncActive:word;;
	PostHSync:word;;

	VSyncTotal:word;;
	PreVSync:word;;
	VSyncActive:word;;
	PostVSync:word;;

	PixelFreq:word;;
	Interlaced:word;;
);
type PHDTV_MODE=^PHDTV_MODE;

//****************************************************************************
// Data Structures
//****************************************************************************

typedef struct _MPEG_PACKET_LIST_ENTRY
{
#ifdef MIDL_PASS
    ADDRESS     pPacketData;
#else
    UCHAR      *pPacketData;
#endif
    ULONG       ulPacketSize;
    MPEG_SYSTEM_TIME Scr;

	// the following 2 fields are used by the windows 95 VxDs
	// please do not use!
	UCHAR		*pData;
	ULONG		ulDataSize;
} MPEG_PACKET_LIST_ENTRY, *PMPEG_PACKET_LIST_ENTRY;

typedef struct _MPEG_ATTRIBUTE_PARAMS
{
    MPEG_ATTRIBUTE Attribute;			// attribute to Get or Set
    LONG	Value;                      // attribute dependent parameter 1
} MPEG_ATTRIBUTE_PARAMS, *PMPEG_ATTRIBUTE_PARAMS;

typedef struct _MPEG_ATTRIBUTE_PARAMS_EX
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -