📄 mpegcmn.pas
字号:
// ????????
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 + -