fpc/packages/extra/os2units/mmtk/mci.pas
2003-02-15 18:44:55 +00:00

2538 lines
118 KiB
ObjectPascal

{
$Id$
Copyright (c) 1991, 1992, 1993 International Business Machines Corporation
Copyright (c) 2002 by Andry Svirgunov (cool2@ngs.ru)
Copyright (c) 2002-2003 by Yuri Prokushev (prokushev@freemail.ru)
This is Media Control Interface of MMPM/2
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License (LGPL) as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Library General Public License for more details. You should
have received a copy of the GNU Library General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**********************************************************************}
{
@abstract(Media Control Interface of MMPM/2)
@author(Andry Svirgunov (cool2@ngs.ru))
@author(Yuri Prokushev (prokushev@freemail.ru))
@created(29 Nov 2002)
@lastmod(05 Dec 2002)
This is Media Control Interface of MMPM/2.
Warning: This code is alfa. Future versions of this unit will propably
not be compatible.
}
Unit mci;
Interface
Uses
mmbase,
os2def,
pmgpi;
Const
MCI_TRUE = 1;
MCI_FALSE = 0;
// MCI command message identifiers
MCI_OPEN = 1;
MCI_CLOSE = 2;
MCI_ESCAPE = 3;
MCI_PLAY = 4;
MCI_SEEK = 5;
MCI_STOP = 6;
MCI_PAUSE = 7;
MCI_INFO = 8;
MCI_GETDEVCAPS = 9;
MCI_STATUS = 10;
MCI_SPIN = 11;
MCI_SET = 12;
MCI_STEP = 13;
MCI_RECORD = 14;
MCI_SYSINFO = 15;
MCI_SAVE = 16;
MCI_CUE = 17;
MCI_UPDATE = 18;
MCI_SET_CUEPOINT = 19;
MCI_SET_POSITION_ADVISE = 20;
MCI_SET_SYNC_OFFSET = 21;
MCI_LOAD = 22;
MCI_ACQUIREDEVICE = 23;
MCI_RELEASEDEVICE = 24;
MCI_MASTERAUDIO = 25;
MCI_GETTOC = 26;
MCI_DEVICESETTINGS = 27;
MCI_CONNECTOR = 28;
MCI_RESUME = 29;
MCI_CONNECTORINFO = 31;
MCI_DEFAULT_CONNECTION = 32;
MCI_CONNECTION = 33;
MCI_GROUP = 34;
MCI_NETWORD_DEFAULT_CONNECTION= 35;
// MCI command message identifiers reserved for Digital Video and Video Overlay
MCI_CAPTURE = 40;
MCI_FREEZE = 41;
MCI_GETIMAGEBUFFER = 42;
MCI_GETIMAGEPALETTE = 43;
MCI_PUT = 44;
MCI_REALIZE = 45;
MCI_REWIND = 46;
MCI_RESTORE = 47;
MCI_SETIMAGEBUFFER = 48;
MCI_SETIMAGEPALETTE = 49;
MCI_UNFREEZE = 50;
MCI_WHERE = 51;
MCI_WINDOW = 52;
MCI_DELETE = 53;
MCI_CUT = 54;
MCI_PASTE = 55;
MCI_COPY = 56;
MCI_REDO = 57;
MCI_UNDO = 58;
MCI_MIXNOTIFY = 59;
MCI_SETTUNER = 60;
MCI_FILTER = 61;
MCI_BUFFER = 62;
MCI_MIXSETUP = 63;
MCI_MAX_COMMAND = 64;
Type
RECT = LongInt;
HDCT = LongInt;
Const
// this and all subsequent message ID's are reserved for the user
MCI_USER_MESSAGES = 2000;
// Special Device ID for "all"
MCI_ALL_DEVICE_ID = $FFFF;
// MCI implementation limits
MAX_DEVICE_NAME = 20;
MAX_ALIAS_NAME = 20;
MAX_PRODINFO = 40;
MAX_EXTENSION_NAME = 4;
MAX_DEV_PARAMS = 128;
MAX_VERSION_NUMBER = 6;
MAX_PDD_NAME = 9;
MAX_DLL_NAME = 260;
MAX_CLASSES = 10;
MAX_CONNECTORS = 10;
MAX_EXTENSIONS = 25;
MAX_TYPEBUFFER = 256;
// MCI Device Type Constants
MCI_DEVTYPE_VIDEOTAPE = 1;
MCI_DEVTYPE_VIDEODISC = 2;
MCI_DEVTYPE_CD_AUDIO = 3;
MCI_DEVTYPE_DAT = 4;
MCI_DEVTYPE_AUDIO_TAPE = 5;
MCI_DEVTYPE_OTHER = 6;
MCI_DEVTYPE_WAVEFORM_AUDIO = 7;
MCI_DEVTYPE_SEQUENCER = 8;
MCI_DEVTYPE_AUDIO_AMPMIX = 9;
MCI_DEVTYPE_OVERLAY = 10;
MCI_DEVTYPE_ANIMATION = 11;
MCI_DEVTYPE_DIGITAL_VIDEO = 12;
MCI_DEVTYPE_SPEAKER = 13;
MCI_DEVTYPE_HEADPHONE = 14;
MCI_DEVTYPE_MICROPHONE = 15;
MCI_DEVTYPE_MONITOR = 16;
MCI_DEVTYPE_CDXA = 17;
MCI_DEVTYPE_FILTER = 18;
MCI_DEVTYPE_TTS = 19;
// MCI Device Type Names
MCI_DEVTYPE_VIDEOTAPE_NAME = 'Videotape';
MCI_DEVTYPE_VIDEODISC_NAME = 'Videodisc';
MCI_DEVTYPE_CD_AUDIO_NAME = 'CDaudio';
MCI_DEVTYPE_DAT_NAME = 'DAT';
MCI_DEVTYPE_AUDIO_TAPE_NAME = 'Audiotape';
MCI_DEVTYPE_OTHER_NAME = 'Other';
MCI_DEVTYPE_WAVEFORM_AUDIO_NAME = 'Waveaudio';
MCI_DEVTYPE_SEQUENCER_NAME = 'Sequencer';
MCI_DEVTYPE_AUDIO_AMPMIX_NAME = 'Ampmix';
MCI_DEVTYPE_OVERLAY_NAME = 'Overlay';
MCI_DEVTYPE_ANIMATION_NAME = 'Animation';
MCI_DEVTYPE_DIGITAL_VIDEO_NAME= 'Digitalvideo';
MCI_DEVTYPE_SPEAKER_NAME = 'Speaker';
MCI_DEVTYPE_HEADPHONE_NAME = 'Headphone';
MCI_DEVTYPE_MICROPHONE_NAME = 'Microphone';
MCI_DEVTYPE_MONITOR_NAME = 'Monitor';
MCI_DEVTYPE_CDXA_NAME = 'CDXA';
MCI_DEVTYPE_FILTER_NAME = 'Filter';
MCI_DEVTYPE_TTS_NAME = 'Texttospeech';
MCI_MAX_SYSTEM_DEVICE_NAMES = 19;
// Getdevcaps, set, and status item base values
MCI_AMP_ITEM_BASE = $1000;
MCI_CD_ITEM_BASE = $2000;
MCI_CDXA_ITEM_BASE = $3000;
MCI_VD_ITEM_BASE = $4000;
MCI_SEQ_ITEM_BASE = $5000;
MCI_WAVE_ITEM_BASE = $6000;
MCI_VID_ITEM_BASE = $7000;
MCI_DGV_ITEM_BASE = $8000;
MCI_OVLY_ITEM_BASE = $9000;
// Flags for mciDriverNotify
MCI_NOTIFY_SUCCESSFUL = $0000;
MCI_NOTIFY_SUPERSEDED = $0001;
MCI_NOTIFY_ABORTED = $0002;
MCI_NOTIFY_ERROR = $0003;
// mciDriverNotify Message Types
MM_MCINOTIFY = $0500;
MM_MCIPASSDEVICE = $0501;
MM_MCIPOSITIONCHANGE = $0502;
MM_MCICUEPOINT = $0503;
MM_MCIPLAYLISTMESSAGE = $0504;
MM_MCIEVENT = $0505;
MM_MCISYNCH = $0506;
MCI_LOSING_USE = $00000001;
MCI_GAINING_USE = $00000002;
// Common message flags 0x000000XX are reserved for common flags */
MCI_NOTIFY = $00000001;
MCI_WAIT = $00000002;
MCI_FROM = $00000004;
MCI_TO = $00000008;
MCI_MILLISECONDS = $00000010;
MCI_TRACK = $00000020;
MCI_OVER = $00000040;
MCI_TEST = $00000080;
MCI_TO_BUFFER = $00000100;
MCI_FROM_BUFFER = $00000200;
MCI_CONVERT_FORMAT = $00000400;
// Time formats
MCI_FORMAT_MILLISECONDS = $00000001;
MCI_FORMAT_mmTime = $00000002;
MCI_FORMAT_MSF = $00000005;
MCI_FORMAT_TMSF = $00000006;
MCI_FORMAT_CHAPTERS = $00000007;
MCI_FORMAT_FRAMES = $00000008;
MCI_FORMAT_HMS = $00000009;
MCI_FORMAT_TRACKS = $0000000A;
MCI_FORMAT_BYTES = $0000000B;
MCI_FORMAT_SAMPLES = $0000000C;
MCI_FORMAT_HMSF = $0000000D;
MCI_FORMAT_SET_SMPTE_24 = $0000000E;
MCI_FORMAT_SET_SMPTE_25 = $0000000F;
MCI_FORMAT_SET_SMPTE_30 = $00000010;
MCI_FORMAT_SET_SMPTE_30DROP = $00000011;
MCI_FORMAT_SET_SONGPTR = $00000012;
MCI_FORMAT_uSec = $00000013;
// Speed formats
MCI_FORMAT_PERCENTAGE = $00000003;
MCI_FORMAT_FPS = $00000004;
// Time format conversions functions
function mSecFromMM(Value: mmTime): LongInt;
function mSecToMM(Value: Cardinal): mmTime;
function RedBookToMM(Value: Cardinal): mmTime;
function fps24ToMM(Value: Cardinal): mmTime;
function fps25ToMM(Value: Cardinal): mmTime;
function fps30ToMM(Value: Cardinal): mmTime;
function HMSToMM(Value: Cardinal): mmTime;
// The +20 is used for rounding purposes. It is derived by:
// 1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME
function RedBookFromMM(Value: mmTime): Cardinal;
function FPS24FromMM(Value: mmTime): Cardinal;
function FPS25FromMM(value: mmTime): Cardinal;
function FPS30FromMM(value: mmTime): Cardinal;
function HMSFromMM(value: mmTime): Cardinal;
function tmsf_track(time: mmTime): Byte;
function tmsf_minute(time: mmTime): Byte;
function tmsf_second(time: mmTime): Byte;
function tmsf_frame(time: mmTime): Byte;
function msf_minute(time: mmTime): Byte;
function msf_second(time: mmTime): Byte;
function msf_frame(time: mmTime): Byte;
// BYTE ACCESS WITH A DWORD MACROS
function uLong_lwlb(var ul): Byte; // Low word low byte
function uLong_lwhb(var ul): Byte; // Low word high byte
function uLong_hwlb(var ul): Byte; // High word low byte
function uLong_hwhb(var ul): Byte; // High word high byte
function uLong_lowd(var ul): Word; // Low word
function uLong_hiwd(var ul): Word; // High word
// parameters for default command messages with empty parameter lists
type
mci_Generic_Parms = record
hwndCallback : hwnd;
end;
pmci_Generic_Parms = ^mci_Generic_Parms;
// flags for the MCI_ACQUIREDEVICE message
// 0x00000X00 are reserved for MCI_ACQUIREDEVICE flags
Const
MCI_EXCLUSIVE = $00000100;
MCI_EXCLUSIVE_INSTANCE = $00000200;
MCI_ACQUIRE_QUEUE = $00000400;
// flags for the MCI_CAPTURE message */
// 0x0000XX00 are reserved for MCI_CAPTURE flags */
// MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
// MCI_CAPTURE, and MCI_RESTORE */
MCI_CAPTURE_RECT = $00000100;
MCI_CONVERT = $00001000;
type
// parameter structure for the MCI_CAPTURE message */
mci_Capture_Parms = record
hwndCallback : hwnd;
Rect : RectL;
end;
pmci_Capture_Parms = ^mci_Capture_Parms;
// flags for MCI_CONNECTOR and MCI_CONNECTION messages */
Const
MCI_ENABLE_CONNECTOR = $00000100;
MCI_DISABLE_CONNECTOR = $00000200;
MCI_QUERY_CONNECTOR_STATUS = $00000400;
MCI_CONNECTOR_TYPE = $00000800;
MCI_CONNECTOR_INDEX = $00001000;
MCI_TO_CONNECTOR_INDEX = $00002000;
MCI_TO_CONNECTOR_TYPE = $00004000;
MCI_QUERY_CONNECTION = $00008000;
MCI_MAKE_CONNECTION = $00010000;
MCI_BREAK_CONNECTION = $00020000;
MCI_ENUMERATE_CONNECTORS = $00040000;
MCI_QUERY_CONNECTOR_TYPE = $00080000;
MCI_QUERY_VALID_CONNECTION = $00100000;
MCI_CONNECTOR_ALIAS = $00200000;
MCI_EXTERNAL_CONNECTION = $00400000;
// Connector types
MCI_MIDI_STREAM_CONNECTOR = $00000001;
MCI_CD_STREAM_CONNECTOR = $00000002;
MCI_WAVE_STREAM_CONNECTOR = $00000003;
MCI_AMP_STREAM_CONNECTOR = $00000004;
MCI_XA_STREAM_CONNECTOR = $00000005;
MCI_HEADPHONES_CONNECTOR = $00000006;
MCI_SPEAKERS_CONNECTOR = $00000007;
MCI_MICROPHONE_CONNECTOR = $00000008;
MCI_LINE_IN_CONNECTOR = $00000009;
MCI_LINE_OUT_CONNECTOR = $0000000a;
MCI_VIDEO_IN_CONNECTOR = $0000000b;
MCI_VIDEO_OUT_CONNECTOR = $0000000c;
MCI_PHONE_SET_CONNECTOR = $0000000d;
MCI_PHONE_LINE_CONNECTOR = $0000000e;
MCI_AUDIO_IN_CONNECTOR = $0000000f;
MCI_AUDIO_OUT_CONNECTOR = $00000010;
MCI_UNIVERSAL_CONNECTOR = $00000011;
MCI_INTERNAL_AUDIO_CONNECTOR = $00000012;
MCI_MIDI_IN_CONNECTOR = $00000013;
MCI_MIDI_OUT_CONNECTOR = $00000014;
MCI_NULL_CONNECTOR = $00000015;
Type
// parameter structure for the MCI_CONNECTION message
mci_Connection_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulConnectorType : LongInt; // Connector type
ulConnectorIndex : LongInt; // Connector index
pszAlias : pChar; // Connection device alias
usToDeviceID : Integer; // Connected to device ID
usReserved0 : Integer; // Reserved field
ulReserved1 : LongInt; // Reserved field
ulReserved2 : LongInt; // Reserved field
end;
pmci_Connection_Parms = ^mci_Connection_Parms;
//********************************************************************/
// parameter structure for the MCI_CONNECTOR message */
//********************************************************************/
mci_Connector_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : LongInt; // Return information
ulConnectorType : LongInt; // If specified, ulConnectorIndex is relative
// to the specified connector type
ulConnectorIndex : LongInt; // Connector number
end;
pmci_Connector_Parms = ^mci_Connector_Parms;
//********************************************************************/
// Flags for use with ulParam1 */
//********************************************************************/
CONST
MCI_MIXSETUP_INIT =$00010000;
MCI_MIXSETUP_DEINIT =$00020000;
MCI_MIXSETUP_QUERYMODE =$00040000;
//********************************************************************/
// parameter structure for the MCI_BUFFER message */
//********************************************************************/
Type
mci_mix_buffer = record
ulStructLength:LongInt; // Length of the structure */
pBuffer:Pointer; // Pointer to a buffer */
ulBufferLength:LongInt; // Length of the buffer */
ulFlags:LongInt; // Flags */
ulUserParm:LongInt; // Caller parameter */
ulTime:LongInt; // OUT--Current time in MS */
ulReserved1:LongInt; // Unused. */
ulReserved2:LongInt; // Unused. */
end;
PMCI_MIX_BUFFER=^mci_mix_buffer;
//********************************************************************/
// valid options for the ulFlags field of MCI_MIX_BUFFER */
//********************************************************************/
CONST
MIX_BUFFER_EOS =$00000001;
type
MixerProc=Function(ulHandle:LongInt;pBuffer:PMCI_MIX_BUFFER;ulFlags:LongInt):Longint; cdecl;
MixerEvent=Function(ulStatus:LongInt;pBuffer:PMCI_MIX_BUFFER;ulFlags:LongInt):LongInt; cdecl;
//********************************************************************/
// valid returns for the ulFlags param of the MIXEREVENT entry */
//********************************************************************/
CONST
MIX_STREAM_ERROR =$00000080;
MIX_READ_COMPLETE =$00000001;
MIX_WRITE_COMPLETE =$00000002;
//********************************************************************/
// parameter structure for the MCI_MIXSETUP_PARMS message */
//********************************************************************/
TYPE MCI_MIXSETUP_PARMS = record
hwndCallback:HWND; // PM window handle for MCI notify message */
ulBitsPerSample:LongInt; // IN Number of Bits per Sample */
ulFormatTag:LongInt; // IN Format Tag */
ulSamplesPerSec:LongInt; // IN Sampling Rate */
ulChannels:LongInt; // IN Number of channels */
ulFormatMode:LongInt; // IN Either MCI_RECORD or MCI_PLAY */
ulDeviceType:LongInt; // IN MCI_DEVTYPE (i.e. DEVTYPE_WAVEFORM etc.) */
ulMixHandle:LongInt; // OUT--mixer returns handle for write/read */
pmixWrite:MixerProc; // OUT-Mixer Write Routine entry point */
pmixRead:MixerProc; // OUT-Mixer Read Routine entry point */
pmixEvent:MixerEvent; // IN--Mixer Read Routine entry point */
pExtendedInfo:Pointer; // Ptr to extended wave information */
ulBufferSize:longInt; // OUT--suggested buffer size for current mode */
ulNumBuffers:LongInt; // OUT--suggested # of buffers for current mode */
end;
pmci_mixsetup_parms=^mci_mixsetup_parms;
//********************************************************************/
// Flags for use with ulParam1 */
//********************************************************************/
CONST
MCI_BUFFER_QUERY =$00010000;
MCI_BUFFER_SET =$00020000;
MCI_ALLOCATE_MEMORY =$00040000;
MCI_DEALLOCATE_MEMORY =$00080000;
//********************************************************************/
// parameter structure for the MCI_BUFFER message */
//********************************************************************/
type mci_buffer_parms=record
hwndCallback:hwnd; // PM window handle for MCI notify message */
ulStructLength:longint; // Length of the MCI Buffer command */
ulNumBuffers:longInt; // Number of buffers MCI driver should use */
ulBufferSize:longint; // Size of buffers MCI driver should use */
ulMinToStart:longint; // Min number of buffers to create a stream. */
ulSrcStart:longint; // # of EMPTY buffers required to start Source*/
ulTgtStart:longint; // # of FULL buffers required to start Target */
pBufList:pointer; // Pointer to a list of buffers */
end;
pmci_buffer_parms=^mci_buffer_parms;
//********************************************************************/
// parameter structure for the MCI_CONNECTORINFO message */
//********************************************************************/
mci_ConnectorInfo_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : Longint; // Return information
ulDeviceTypeID : Longint; // MCI device type
ulConnectorType : Longint; // If specified, ulConnectorIndex is relative
// to the specified connector type
ulConnectorIndex : Longint; // Connector number
ulToConnectorType: Longint; // Connector type to test if
// MCI_QUERY_VALID_CONNECTION is specified
end;
pmci_ConnectorInfo_Parms = ^mci_ConnectorInfo_Parms;
//********************************************************************/
// flags for the MCI_CUE message */
// 0x00000x00 are reserved for MCI_CUE flags */
//********************************************************************/
CONST
MCI_CUE_INPUT = $00000100;
MCI_CUE_OUTPUT = $00000200;
MCI_SHOW = $00000400;
MCI_NOSHOW = $00000800;
//************************************************/
// Additional flags for Wave Audio for MCI_CUE */
//************************************************/
MCI_WAVE_INPUT = $00001000;
MCI_WAVE_OUTPUT = $00002000;
//****************************************************************************/
// the MCI_CONNLIST structure used in the NETWORK_DEFAULT_CONNECTION message */
//****************************************************************************/
type mci_connlist=record
ulFromDevice: LongInt; // Ordinal position of device within pDevices array */
ulSrcConnType: LongInt; // Type of source connector */
ulSrcConnNum: LongInt; // Source Connector Number */
ulToDevice: LongInt; // Ordinal position of device within pDevices array */
ulTgtConnType: LongInt; // Type of target connector */
ulTgtConnNum: Longint; // Target Connector Number */
end;
pmci_connlist=^mci_connlist;
//****************************************************************************/
// parameter structure for the MCI_NETWORK_DEFAULT_CONNECTION message */
//****************************************************************************/
type mci_network_default_connection_parms=record
hwndCallback:HWND; // PM window handle for MCI notify message */
szInstallName:ARRAY [0..MAX_DEVICE_NAME] of Char; // Name of section containing default conn. */
ulNumDevices:LongInt; // Number of additional devices in connection */
ulNumPlayConnections:LongInt; // Number of Play connections */
ulNumRecordConnections:LongInt; // Number of Record connections */
pDevices:ARRAY [0..MAX_DEVICE_NAME] of ^Char; // Pointer to array of device names to open */
pPlayConnections:PMCI_CONNLIST; // Pointer to array of connections to "make" */
pRecordConnections:PMCI_CONNLIST; // Pointer to array of connections to "make" */
end;
type pmci_network_default_connection_parms=^mci_network_default_connection_parms;
//******************************************************/
// Additional flags for MCI_NETWORK_DEFAULT_CONNECTION */
//******************************************************/
CONST
MCI_RECORD_DEFAULTS =$00000004;
MCI_PLAY_DEFAULTS =$00000008;
//********************************************************************/
// parameter structure for the MCI_DEFAULT_CONNECTION message */
//********************************************************************/
type mci_Default_Connection_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pszDevice : pChar; // Device name
ulConnectorType : LongInt; // If specified, ulConnectorIndex is relative
// to the specified connector type
ulConnectorIndex : LongInt; // Connector number
pszToDevice : pChar; // Return device name to which the connection exists
ulToConnectorType: LongInt; // Connector type
ulToConnectorIndex:LongInt; // Connector number
end;
pmci_Default_Connection_Parms = ^mci_Default_Connection_Parms;
//********************************************************************/
// parameter structure for the MCI_DEVICESETTINGS message */
//********************************************************************/
mci_DeviceSettings_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
hwndNotebook : hwnd; // Hwhd to notebook window
usDeviceType : Integer; // Device type
pszDeviceName : pChar; // Device name
end;
pmci_DeviceSettings_Parms = ^mci_DeviceSettings_Parms;
//*********************************************************************/
// parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
//*********************************************************************/
mci_Edit_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulStructLen : Longint; // Length of the Structure
ulFrom : Longint; // Beginning Point of Range
ulTo : Longint; // ending point of range
pBuff : Pointer; // user buffer
ulBufLen : Longint; // length of user buffer
pHeader : Pointer; // header which describes the buffer
end;
pmci_Edit_Parms = ^mci_Edit_Parms;
//********************************************************************/
// flags and parameter structure for the MCI_ESCAPE message */
// 0x00000X00 are reserved for MCI_ESCAPE flags */
//********************************************************************/
const
mci_Escape_String = $00000100;
type
mci_Escape_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pszCommand : pChar; // Command to send to the device
end;
pmci_Escape_Parms = ^mci_Escape_Parms;
//********************************************************************/
// flags for the MCI_FREEZE message */
// 0x0000XX00 are reserved for MCI_FREEZE flags */
//********************************************************************/
CONST
MCI_OVLY_FREEZE_RECT = $00000100;
MCI_OVLY_FREEZE_RECT_OUTSIDE = $00000200;
//********************************************************************/
// flags for the MCI_GETDEVCAPS message */
// 0x00XXXX00 are reserved for MCI_GETDEVCAPS flags */
//********************************************************************/
MCI_GETDEVCAPS_MESSAGE = $00000100;
MCI_GETDEVCAPS_ITEM = $00000200;
MCI_GETDEVCAPS_EXTENDED = $00000400;
//************************************************/
// General MCI_GETDEVCAPS item values */
//************************************************/
MCI_GETDEVCAPS_CAN_EJECT = $00000001;
MCI_GETDEVCAPS_CAN_LOCKEJECT = $00000002;
MCI_GETDEVCAPS_CAN_PLAY = $00000003;
MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL = $00000004;
MCI_GETDEVCAPS_CAN_RECORD = $00000005;
MCI_GETDEVCAPS_CAN_RECORD_INSERT = $00000006;
MCI_GETDEVCAPS_CAN_SAVE = $00000007;
MCI_GETDEVCAPS_CAN_SETVOLUME = $00000008;
MCI_GETDEVCAPS_CAN_STREAM = $00000009;
MCI_GETDEVCAPS_DEVICE_TYPE = $0000000A;
MCI_GETDEVCAPS_HAS_AUDIO = $0000000B;
MCI_GETDEVCAPS_HAS_VIDEO = $0000000C;
MCI_GETDEVCAPS_PREROLL_TIME = $0000000D;
MCI_GETDEVCAPS_PREROLL_TYPE = $0000000E;
MCI_GETDEVCAPS_USES_FILES = $0000000F;
MCI_GETDEVCAPS_HAS_IMAGE = $00000010;
MCI_GETDEVCAPS_WAVE_FORMAT = $00000011;
MCI_GETDEVCAPS_CAN_CLOSE_DOOR = $00000012;
//**********************************************/
// return ID's for videodisc MCI_GETDEVCAPS */
//**********************************************/
MCI_VD_MEDIA_CLV=$00000001;
MCI_VD_MEDIA_CAV=$00000002;
MCI_VD_MEDIA_OTHER=$00000003;
//************************************************/
// MCI_GETDEVCAPS item values for video devices */
//************************************************/
MCI_VID_GETDEVCAPS_CAN_STRETCH = MCI_VID_ITEM_BASE;
MCI_VID_GETDEVCAPS_CAN_DISTORT = MCI_VID_ITEM_BASE+1;
MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_ITEM_BASE+2;
MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_ITEM_BASE+3;
MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_ITEM_BASE+4;
MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_ITEM_BASE+5;
MCI_VID_GETDEVCAPS_MAX_WINDOWS = MCI_VID_ITEM_BASE+6;
MCI_VID_GETDEVCAPS_CAN_FREEZE = MCI_VID_ITEM_BASE+7;
MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_ITEM_BASE+8;
MCI_VID_GETDEVCAPS_CAN_REVERSE = MCI_VID_ITEM_BASE+9;
MCI_VID_GETDEVCAPS_FAST_RATE = MCI_VID_ITEM_BASE+10;
MCI_VID_GETDEVCAPS_SLOW_RATE = MCI_VID_ITEM_BASE+11;
MCI_VID_GETDEVCAPS_NORMAL_RATE = MCI_VID_ITEM_BASE+12;
MCI_VID_GETDEVCAPS_MINIMUM_RATE = MCI_VID_ITEM_BASE+13;
MCI_VID_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_ITEM_BASE+14;
//************************************************/
// MCI_GETDEVCAPS flag values for Videodisc */
//************************************************/
MCI_VD_GETDEVCAPS_CLV = $00000400;
MCI_VD_GETDEVCAPS_CAV = $00000800;
//************************************************/
// MCI_GETDEVCAPS item values for Videodisc */
//************************************************/
MCI_VD_GETDEVCAPS_CAN_REVERSE = MCI_VID_GETDEVCAPS_CAN_REVERSE;
MCI_VD_GETDEVCAPS_FAST_RATE = MCI_VID_GETDEVCAPS_FAST_RATE;
MCI_VD_GETDEVCAPS_SLOW_RATE = MCI_VID_GETDEVCAPS_SLOW_RATE;
MCI_VD_GETDEVCAPS_NORMAL_RATE = MCI_VID_GETDEVCAPS_NORMAL_RATE;
MCI_VD_GETDEVCAPS_MINIMUM_RATE = MCI_VID_GETDEVCAPS_MINIMUM_RATE;
MCI_VD_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
//***********************************************/
// MCI_GETDEVCAPS item values for Digital Video */
//***********************************************/
MCI_DGV_GETDEVCAPS_CAN_REVERSE = MCI_VID_GETDEVCAPS_CAN_REVERSE;
MCI_DGV_GETDEVCAPS_CAN_STRETCH = MCI_VID_GETDEVCAPS_CAN_STRETCH;
MCI_DGV_GETDEVCAPS_CAN_DISTORT = MCI_VID_GETDEVCAPS_CAN_DISTORT;
MCI_DGV_GETDEVCAPS_FAST_RATE = MCI_VID_GETDEVCAPS_FAST_RATE;
MCI_DGV_GETDEVCAPS_SLOW_RATE = MCI_VID_GETDEVCAPS_SLOW_RATE;
MCI_DGV_GETDEVCAPS_NORMAL_RATE = MCI_VID_GETDEVCAPS_NORMAL_RATE;
MCI_DGV_GETDEVCAPS_MINIMUM_RATE = MCI_VID_GETDEVCAPS_MINIMUM_RATE;
MCI_DGV_GETDEVCAPS_MAXIMUM_RATE = MCI_VID_GETDEVCAPS_MAXIMUM_RATE;
MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
MCI_DGV_GETDEVCAPS_MAX_WINDOWS = MCI_VID_GETDEVCAPS_MAX_WINDOWS;
MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
MCI_DGV_GETDEVCAPS_HAS_TUNER = MCI_DGV_ITEM_BASE;
MCI_DGV_GETDEVCAPS_HAS_TELETEX = MCI_DGV_ITEM_BASE+1;
MCI_DGV_GETDEVCAPS_HAS_AFC = MCI_DGV_ITEM_BASE+2;
//************************************************/
// MCI_GETDEVCAPS item values for Video Overlay */
//************************************************/
MCI_OVLY_GETDEVCAPS_CAN_STRETCH = MCI_VID_GETDEVCAPS_CAN_STRETCH;
MCI_OVLY_GETDEVCAPS_CAN_DISTORT = MCI_VID_GETDEVCAPS_CAN_DISTORT;
MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT;
MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT = MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT;
MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT;
MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT = MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT;
MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = MCI_VID_GETDEVCAPS_MAX_WINDOWS;
MCI_OVLY_GETDEVCAPS_CAN_FREEZE = MCI_VID_GETDEVCAPS_CAN_FREEZE;
MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS = MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS;
MCI_PREROLL_NOTIFIED = $00000001;
MCI_PREROLL_DETERMINISTIC = $00000002;
MCI_PREROLL_NONE = $00000003;
//********************************************************************/
// parameter structure for the MCI_GETDEVCAPS message */
//********************************************************************/
TYPE
mci_GetDevCaps_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : Longint; // Return field
ulItem : Longint; // Item field for GETDEVCAPS item to query
usMessage : integer; // Field to hold MCI message to query
usReserved0 : integer; // Reserved field
end;
pmci_GetDevCaps_Parms = ^mci_GetDevCaps_Parms;
//********************************************************************/
// parameter structure for the MCI_WAVE_GETDEVCAPS */
//********************************************************************/
mci_Wave_GetDevCaps_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : Longint; // Return field
ulItem : Longint; // Item field for GETDEVCAPS item to query
usMessage : Integer; // Field to hold MCI message to query
usReserved0 : Integer; // Reserved field
ulLength : Longint; // Length of structure in ULONGS
ulBitsPerSample : Longint; // Number of Bits per Sample
ulFormatTag : Longint; // Format Tag
ulSamplesPerSec : Longint; // Sampling Rate
ulChannels : Longint; // Number of channels
ulFormatMode : Longint; // Either MCI_RECORD or MCI_PLAY
end;
pmci_Wave_GetDevCaps_Parms = ^mci_Wave_GetDevCaps_Parms;
//********************************************************************/
// potential values for the ulValue field of MCI_AMP_GETDEVCAPS */
//********************************************************************/
CONST
MCI_SET_MONITOR = $00000001;
MCI_SET_MONITOR_AUDIO = $00000002;
MCI_SET_MONITOR_VIDEO = $00000003;
MCI_SET_RECORD = $00000004;
// MCI_SET flags for amp/mixer;
MCI_AMP_SET_BALANCE = $00100000;
MCI_AMP_SET_PITCH = $00200000;
MCI_AMP_SET_TREBLE = $00400000;
MCI_AMP_SET_BASS = $00800000;
MCI_AMP_SET_GAIN = $01000000;
MCI_AMP_SET_ALC = $00000004;
MCI_AMP_SET_AUDIO = $00000008;
MCI_AMP_SET_CROSSOVER = $00000010;
MCI_AMP_SET_LOUDNESS = $00000020;
MCI_AMP_SET_MUTE = $00000040;
MCI_AMP_SET_REVERB = $00000080;
MCI_AMP_SET_STEREOENHANCE = $00000100;
MCI_AMP_SET_CUSTOM1 = $00000200;
MCI_AMP_SET_CUSTOM2 = $00000400;
MCI_AMP_SET_CUSTOM3 = $00000800;
MCI_AMP_SET_LRVOLUME = $00001000;
MCI_AMP_SET_MID = $00020000;
MCI_AMP_SET_CHORUS = $00004000; // typo? 40000?
MCI_AMP_SET_VOLUME = $00080000; // MCI_SET_VOLUME;
MCI_AMP_SET_MONITOR = MCI_SET_MONITOR_AUDIO;
// Potential values for the ulValue field of MCI_AMP_GETDEVCAPS
MCI_AMP_CAN_SET_MONITOR = MCI_AMP_SET_MONITOR;
MCI_AMP_CAN_SET_BALANCE = MCI_AMP_SET_BALANCE;
MCI_AMP_CAN_SET_ALC = MCI_AMP_SET_ALC;
MCI_AMP_CAN_SET_CROSSOVER = MCI_AMP_SET_CROSSOVER;
MCI_AMP_CAN_SET_LOUDNESS = MCI_AMP_SET_LOUDNESS;
MCI_AMP_CAN_SET_MUTE = MCI_AMP_SET_MUTE;
MCI_AMP_CAN_SET_REVERB = MCI_AMP_SET_REVERB;
MCI_AMP_CAN_SET_STEREOENHANCE = MCI_AMP_SET_STEREOENHANCE;
MCI_AMP_CAN_SET_CUSTOM1 = MCI_AMP_SET_CUSTOM1;
MCI_AMP_CAN_SET_CUSTOM2 = MCI_AMP_SET_CUSTOM2;
MCI_AMP_CAN_SET_CUSTOM3 = MCI_AMP_SET_CUSTOM3;
MCI_AMP_CAN_SET_LRVOLUME = MCI_AMP_SET_LRVOLUME;
MCI_AMP_CAN_SET_BASS = MCI_AMP_SET_BASS;
MCI_AMP_CAN_SET_MID = MCI_AMP_SET_MID;
MCI_AMP_CAN_SET_TREBLE = MCI_AMP_SET_TREBLE;
MCI_AMP_CAN_SET_PITCH = MCI_AMP_SET_PITCH;
MCI_AMP_CAN_SET_GAIN = MCI_AMP_SET_GAIN;
MCI_AMP_CAN_SET_CHORUS = MCI_AMP_SET_CHORUS;
MCI_AMP_CAN_SET_VOLUME = MCI_AMP_SET_VOLUME;
//************************************************************************/
// potential values for the ulExtended field of MCI_AMP_GETDEVCAPS_PARMS */
//************************************************************************/
MCI_MIXER_LINE = $00000001;
//********************************************************************/
// parameter structure for the MCI_AMP_GETDEVCAPS */
//********************************************************************/
type
mci_Amp_GetDevCaps_Parms = record
hwndCallback : Longint; // PM window handle for MCI notify message
ulReturn : Longint; // Return field
ulItem : Longint; // Item field for GETDEVCAPS item to query
usMessage : Integer; // Field to hold MCI message to query
usReserved0 : Integer; // Reserved field
ulLength : LongInt; // Length of structure in uLongS
ulValue : LongInt; // Value to determine caps
ulAttribute : LongInt; // Flags to modified the extended parms
ulExtended : LongInt; // Extended flags field
end;
pmci_Amp_GetDevCaps_Parms = ^mci_Amp_GetDevCaps_Parms;
//********************************************************************/
// values for the ulFlags field of MCI_MIXEVENT_PARMS */
//********************************************************************/
CONST
MCI_MIX_ATTRIBUTE = $00000001;
MCI_MIX_CONNECTOR = $00000002;
//********************************************************************/
// values for the lParam field for mix_notify */
//********************************************************************/
MCI_MIXNOTIFY_ON = $00000004;
MCI_MIXNOTIFY_OFF = $00000008;
//********************************************************************/
// value to indicate type of MM_MCIEVENT */
//********************************************************************/
MCI_MIXEVENT = $00000001;
//********************************************************************/
// parameter structure for the MCI_MIXEVENT_PARMS */
//********************************************************************/
type
mci_MixEvent_Parms = record
ulLength : Longint; // Length of struct
hwndMixer : hwnd; // window to inform of mixer changes
ulFlags : Longint; // Either MCI_MIX_ATTRIBUTE
// or MCI_MIX_CONNECTOR
usDeviceID : Integer; // device id to notify of the change
ulDeviceType : LongInt; // Device Type which generated the change
ulDeviceOrdinal : LongInt; // Ordinal of device Type
ulAttribute : LongInt; // Attribute that changed(volume, bass etc.)
ulValue : LongInt; // new value of the attribute which changed
ulConnectorType : LongInt; // Connector Type
ulConnectorIndex : LongInt; // Connector Index
ulConnStatus : LongInt; // Is connector enabled/disabled.
end;
pmci_MixEvent_Parms = ^mci_MixEvent_Parms;
//********************************************************************/
// flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
// 0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and */
// MCI_SETIMAGEBUFFER Flags */
// MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L */
//********************************************************************/
CONST
MCI_USE_HW_BUFFER = $00000400;
MCI_GET_HW_BUFFER_PTR = $00000800;
//**************************************************/
// parm structure for MCI_GETIMAGEBUFFER and */
// MCI_SETIMAGEBUFFER messages */
//**************************************************/
type
mci_Image_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulPelFormat : Longint; // Format of the image data returned
usBitCount : Integer; // Number of bitsimage data returned
usReserved0 : Integer; // Reserved field
ulImageCompression : LongInt; //
rect : RectL; // Image area to get/set
pPelBuffer : Pointer; // Pel data buffer
ulPelBufferHeight : LongInt; // Number of rows in buffer
ulPelBufferWidth : LongInt; // Pels per row in buffer
ulBufLen : LongInt; // Pel data buffer length in bytes
end;
pmci_Image_Parms = ^mci_Image_Parms;
//********************************************************************/
// flags for the MCI_GETIMAGEPALETTE message */
// 0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags */
//********************************************************************/
CONST
MCI_FIND_BEST_REGISTERED = $00000100;
MCI_QUERY_REGISTERED_MAP = $00000200;
MCI_QUERY_REGISTERED_MAP_SIZE = $00000400;
//**************************************************/
// parameter structure for MCI_GETIMAGEPALETTE and */
// MCI_SETIMAGEPALETTE messages */
//**************************************************/
type
mci_Palette_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
usRegisteredMap : Integer; // Id of the palette from the registed color map
usReserved0 : Integer; // Reserved field
ulPalEntries : LongInt; // size of the palette returned
pPalette : Pointer; // pointer to the palette
end;
pmci_Palette_Parms = ^mci_Palette_Parms;
//********************************************************************/
// Parameter structure for the MCI_GETTOC message */
//********************************************************************/
mci_Toc_Rec = record
TrackNum : BYTE; // Returned Track Number
ulStartAddr : LongInt; // Starting address of the track in MMTIME format
ulEndAddr : LongInt; // Ending address of the track in MMTIME format
Control : BYTE; // Track Control information
usCountry : Integer; // Country
ulOwner : LongInt; // Owner
ulSerialNum : LongInt; // Serial Number
end;
pTocRec = ^mci_Toc_Rec;
mci_Toc_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pBuf : pTocRec; // Pointer to array MCI_TOC_REC structures to
// be filled in by the mci device
ulBufSize : LongInt; // Size of the array
end;
pmci_Toc_Parms = ^mci_Toc_Parms;
//********************************************************************/
// parameters for the MCI_GROUP message */
// 0x00XXXX00 are reserved for MCI_GROUP flags */
//********************************************************************/
const
MCI_SYNCHRONIZE = $00000100;
MCI_NOPIECEMEAL = $00000200;
MCI_GROUP_MAKE = $00000400;
MCI_GROUP_DELETE = $00000800;
MCI_GROUP_ALIAS = $00001000;
MCI_GROUP_MASTER = $00002000;
MCI_GROUP_NONE = $00004000; // No group!
type
mci_Group_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message.
usGroupID : Integer; // GroupID
usReserved0 : Integer; // RESERVED
ulStructLength : LongInt; // Length of Structure in ULONGS.
usMasterID : Integer; // ID of Master device in Synchrounous groups.
usReserved1 : Integer; // RESERVED
pszGroupAlias : pChar; // Pointer to Alias Name.
ulNumDevices : LongInt; // Number of Devices in group.
paulDeviceID : PLongInt; // Array of Device ids in the group.
end;
pmci_Group_Parms = ^mci_Group_Parms;
//********************************************************************/
// flags for the MCI_INFO message */
// 0x00000X00 are reserved for MCI_INFO flags */
//********************************************************************/
CONST
MCI_INFO_PRODUCT = $00000100;
MCI_INFO_FILE = $00000200;
//***********************************************/
// CD Audio MCI_INFO */
//***********************************************/
MCI_CD_INFO_ID = $00010000;
MCI_CD_INFO_UPC = $00020000;
//***********************************************/
// Videodisc MCI_INFO */
//***********************************************/
MCI_VD_INFO_LABEL = $00001000;
//***********************************************/
// Digital Video MCI_INFO */
//***********************************************/
MCI_DGV_INFO_VIDEO_FILE = $00001000;
MCI_DGV_INFO_IMAGE_FILE = $00002000;
MCI_DGV_INFO_REGION = $00004000;
MCI_DGV_INFO_REGION_TEXT = $00008000;
MCI_DGV_INFO_TEXT = $00010000;
//***********************************************/
// Video Overlay MCI_INFO */
//***********************************************/
MCI_OVLY_INFO_TEXT = $00010000;
type
mci_Info_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pszReturn : pChar; // Pointer to return buffer
ulRetSize : LongInt; // Return buffer size
end;
pmci_Info_Parms = ^mci_Info_Parms;
//********************************************************************/
// parameters and flags for the MCI_LOAD message */
// 0x00000X00 are reserved for MCI_LOAD flags */
//********************************************************************/
mci_Load_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pszElementName : pChar; // File name to loads
end;
pmci_Load_Parms = ^mci_Load_Parms;
//********************************************************************/
// parameters and flags for the MCI_MASTERAUDIO */
// 0x000XXX00 are reserved for MCI_MASTERAUDIO flags */
//********************************************************************/
CONST
MCI_ON = $00000100;
MCI_OFF = $00000200;
MCI_HEADPHONES = $00000400;
MCI_SPEAKERS = $00000800;
MCI_MASTERVOL = $00001000;
MCI_SAVESETTING = $00002000;
MCI_QUERYSAVEDSETTING = $00004000;
MCI_QUERYCURRENTSETTING = $00008000;
type
mci_MasterAudio_Parms = record
hwndDummyCallback : hwnd; // Notify not allowed for this message
ulReturn : LongInt; // Return field for query information
ulMasterVolume : LongInt; // Master volume field
end;
pmci_MasterAudio_Parms = ^mci_MasterAudio_Parms;
//********************************************************************/
// parameters and flags for the MCI_OPEN message */
// 0x0000XX00 are reserved for MCI_OPEN flags */
//********************************************************************/
CONST
MCI_OPEN_ELEMENT = $00000100;
MCI_OPEN_ALIAS = $00000200;
MCI_OPEN_ELEMENT_ID = $00000400;
MCI_OPEN_PLAYLIST = $00000800;
MCI_OPEN_TYPE_ID = $00001000;
MCI_OPEN_SHAREABLE = $00002000;
MCI_OPEN_MMIO = $00004000;
MCI_READONLY = $00008000;
//**************************************************/
// parameters and flags for the MCI_OPEN message */
// Digital Video, Video Overlay specific */
//**************************************************/
MCI_VID_OPEN_PARENT = $01000000;
MCI_DGV_OPEN_PARENT = MCI_VID_OPEN_PARENT;
MCI_OVLY_OPEN_PARENT = MCI_VID_OPEN_PARENT;
type
mci_Open_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
usDeviceID : Integer; // Device ID returned to user
usReserved0 : Integer; // Reserved
pszDeviceType : pChar; // Device name from SYSTEM.INI
pszElementName : pChar; // Typically a file name or NULL
pszAlias : pChar; // Optional device alias
end;
pmci_Open_Parms = ^mci_Open_Parms;
//*********************************************************/
// parameters for the AMP MCI_OPEN message */
//*********************************************************/
mci_Amp_Open_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
usDeviceID : Integer; // Device ID returned to user
usReserved0 : Integer; // Reserved field
pszDeviceType : pChar; // Device name from SYSTEM.INI
pszElementName : pChar; // Typically a file name or NULL
pszAlias : pChar; // Optional device alias
pDevDataPtr : Pointer; // Pointer to device data
end;
pmci_Amp_Open_Parms = ^mci_Amp_Open_Parms;
//*********************************************************/
// parameters for MCI_OPEN message for video devices */
//*********************************************************/
mci_Vid_Open_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
usDeviceID : Integer; // Device ID returned to user
usReserved0 : Integer; // Reserved field
pszDeviceType : pChar; // Device name from SYSTEM.INI
pszElementName : pChar; // Typically a file name or NULL
pszAlias : pChar; // Optional device alias
hwndParent : hwnd; // Parent window handle
end;
pmci_Vid_Open_Parms = ^mci_Vid_Open_Parms;
mci_dgv_Open_Parms = mci_Vid_Open_Parms;
pmci_dgv_Open_Parms = ^mci_dgv_Open_Parms;
mci_Ovly_Open_Parms = mci_Vid_Open_Parms;
pmci_Ovly_Open_Parms = ^mci_Ovly_Open_Parms;
//**************************************************/
// MCI_PLAY flag values for videodisc */
//**************************************************/
CONST
MCI_VD_PLAY_REVERSE = $00001000;
MCI_VD_PLAY_FAST = $00002000;
MCI_VD_PLAY_SPEED = $00004000;
MCI_VD_PLAY_SCAN = $00008000;
MCI_VD_PLAY_SLOW = $00010000;
//**************************************************/
// MCI_PLAY flag values for digital video */
//**************************************************/
MCI_DGV_PLAY_REVERSE = $00001000;
MCI_DGV_PLAY_FAST = $00002000;
MCI_DGV_PLAY_SPEED = $00004000;
MCI_DGV_PLAY_SCAN = $00008000;
MCI_DGV_PLAY_SLOW = $00010000;
MCI_DGV_PLAY_REPEAT = $00020000;
type
mci_Play_Parms = record
hwndCallback : hwnd;
ulFrom : LongInt;
ulTo : LongInt;
end;
pmci_Play_Parms = ^mci_Play_Parms;
mci_VD_Play_Parms = record
hwndCallback : hwnd;
ulFrom : LongInt;
ulTo : LongInt;
ulFactor : LongInt;
end;
pmci_VD_Play_Parms = ^mci_VD_Play_Parms;
mci_DGV_play_Parms = record
hwndCallback : hwnd;
ulFrom : LongInt;
ulTo : LongInt;
ulSpeed : LongInt;
end;
pmci_DGV_play_Parms = ^mci_DGV_play_Parms;
//********************************************************************/
// parameters for the MCI_PUT message */
// 0x00000X00 are reserved for MCI_PUT flags */
//********************************************************************/
CONST
MCI_VID_PUT_RECT = $00000100;
MCI_VID_PUT_DESTINATION = $00000200;
MCI_VID_PUT_SOURCE = $00000400;
MCI_VID_PUT_WINDOW_MOVE = $00000800;
MCI_VID_PUT_WINDOW_SIZE = $00001000;
MCI_DGV_PUT_RECT = MCI_VID_PUT_RECT;
MCI_DGV_PUT_DESTINATION = MCI_VID_PUT_DESTINATION;
MCI_DGV_PUT_SOURCE = MCI_VID_PUT_SOURCE;
MCI_DGV_PUT_WINDOW_MOVE = MCI_VID_PUT_WINDOW_MOVE;
MCI_DGV_PUT_WINDOW_SIZE = MCI_VID_PUT_WINDOW_SIZE;
MCI_DGV_MONITOR = $00010000;
MCI_DGV_RECORD = $00020000;
MCI_OVLY_PUT_RECT = MCI_VID_PUT_RECT;
MCI_OVLY_PUT_DESTINATION = MCI_VID_PUT_DESTINATION;
MCI_OVLY_PUT_SOURCE = MCI_VID_PUT_SOURCE;
MCI_OVLY_PUT_WINDOW_MOVE = MCI_VID_PUT_WINDOW_MOVE;
MCI_OVLY_PUT_WINDOW_SIZE = MCI_VID_PUT_WINDOW_SIZE;
//**************************************************/
// Rectangle parameters for MCI_PUT, MCI_WHERE, */
// MCI_FREEZE, and MCI_UNFREEZE */
//**************************************************/
type
mci_Vid_Rect_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
rc : RectL; // rectangle array specifying the offset
// and size of a rectangle
end;
mci_Dgv_Rect_Parms = mci_Vid_Rect_Parms;
pmci_Dgv_Rect_Parms = ^mci_Dgv_Rect_Parms;
mci_Ovly_Rect_Parms = mci_Vid_Rect_Parms;
pmci_Ovly_Rect_Parms = ^mci_Ovly_Rect_Parms;
//********************************************************************/
// parameters for the MCI_RECORD message */
// 0x00000X00 are reserved for MCI_RECORD flags */
//********************************************************************/
CONST
MCI_RECORD_INSERT = $00000100;
MCI_RECORD_OVERWRITE = $00000200;
MCI_DGV_RECORD_RECT = $00000400;
type
mci_Record_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulFrom : LongInt; // Record from position
ulTo : LongInt; // Record to position
end;
pmci_Record_Parms = ^mci_Record_Parms;
//********************************************************************/
// parameters for the MCI_RELEASEDEVICE message */
// 0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message */
//********************************************************************/
CONST
MCI_RETURN_RESOURCE = $00000100;
//********************************************************************/
// parameters for the MCI_RESTORE message */
// 0x0000XX00 are reserved for MCI_RESTORE flags */
// MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L */
//********************************************************************/
MCI_RESTORE_SRC_RECT = $00000100;
MCI_RESTORE_DEST_RECT = $00000200;
type mci_Restore_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
SrcRect : RectL; // Rectangle array specifying the source
// area to be restored
RestRect : RectL; // Rectangle array specifying the destination
// area to be restored
end;
pmci_Restore_Parms = ^mci_Restore_Parms;
//********************************************************************/
// parameters for the MCI_SAVE message */
// 0x00000X00 are reserved for MCI_SAVE flags */
//********************************************************************/
const
MCI_SAVE_FILE = $00000100;
//************************************************/
// Digital Video MCI_SAVE */
//************************************************/
MCI_DGV_SAVE_VIDEO_FILE = $00001000;
MCI_DGV_SAVE_IMAGE_FILE = $00002000;
type
mci_Save_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
pszFileName : pChar; // Filename to save data to
end;
pmci_Save_Parms = ^mci_Save_Parms;
//********************************************************************/
// parameters for the MCI_SEEK message */
// 0x00000X00 are reserved for MCI_SEEK flags */
//********************************************************************/
const
MCI_TO_START = $00000100;
MCI_TO_END = $00000200;
//************************************************/
// Digital Video MCI_SEEK */
//************************************************/
MCI_DGV_SEEK_TO_NEAREST_IFRAME = $00100000;
//************************************************/
// Videodisc MCI_SEEK */
//************************************************/
MCI_VD_SEEK_REVERSE = $00001000;
type
mci_Seek_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTo : LongInt; // Seek to this position
end;
pmci_Seek_Parms = ^mci_Seek_Parms;
//********************************************************************/
// Flags for the MCI_SET message */
// 0x00XXXX00 are reserved for MCI_SET flags */
//********************************************************************/
const
MCI_SET_ITEM = $00000100;
MCI_SET_ON = $00000200;
MCI_SET_OFF = $00000400;
MCI_SET_VIDEO = $00000800;
MCI_SET_AUDIO = $00001000;
MCI_SET_DOOR_OPEN = $00002000;
MCI_SET_DOOR_CLOSED = $00004000;
MCI_SET_SPEED_FORMAT = $00008000;
MCI_SET_TIME_FORMAT = $00010000;
MCI_SET_DOOR_LOCK = $00020000;
MCI_SET_DOOR_UNLOCK = $00040000;
MCI_SET_VOLUME = $00080000;
MCI_SET_ITEM_FOURCC = $00100000;
MCI_SET_REVERSE = $00200000;
//******************************************************/
// Values for the ulAudio field */
//******************************************************/
MCI_SET_AUDIO_ALL = $00000000;
MCI_SET_AUDIO_LEFT = $00000001;
MCI_SET_AUDIO_RIGHT = $00000002;
//******************************************************/
// MCI_SET flags for CDXA */
//******************************************************/
MCI_CDXA_SET_CHANNEL = $01000000;
MCI_CDXA_AUDIO_DEVICE = $10000000;
MCI_CDXA_AUDIO_BUFFER = $02000000;
MCI_CDXA_VIDEO_BUFFER = $04000000;
MCI_CDXA_DATA_BUFFER = $08000000;
//******************************************************/
// MCI_SET flags for videodisc */
//******************************************************/
MCI_VD_SET_ON = MCI_SET_ON;
MCI_VD_SET_OFF = MCI_SET_OFF;
MCI_VD_SET_VIDEO = MCI_SET_VIDEO;
MCI_VD_SET_CHANNEL = $00100000;
MCI_VD_SET_DISPLAY = $00200000;
MCI_VD_SET_DONTCARE = $00400000; // Dont care!
//******************************************************/
// Generic MCI_SET item values for video devices */
//******************************************************/
MCI_VID_SET_VIDEO_COMPRESSION = MCI_VID_ITEM_BASE;
MCI_VID_SET_IMAGE_COMPRESSION = MCI_VID_ITEM_BASE+1;
MCI_VID_SET_IMAGE_BITSPERPEL = MCI_VID_ITEM_BASE+2;
MCI_VID_SET_IMAGE_PELFORMAT = MCI_VID_ITEM_BASE+3;
MCI_VID_SET_BRIGHTNESS = MCI_VID_ITEM_BASE+4;
MCI_VID_SET_CONTRAST = MCI_VID_ITEM_BASE+5;
MCI_VID_SET_HUE = MCI_VID_ITEM_BASE+6;
MCI_VID_SET_SATURATION = MCI_VID_ITEM_BASE+7;
MCI_VID_SET_SHARPNESS = MCI_VID_ITEM_BASE+8;
MCI_VID_SET_GREYSCALE = MCI_VID_ITEM_BASE+9;
MCI_VID_SET_IMAGE_QUALITY = MCI_VID_ITEM_BASE+10;
MCI_VID_SET_VIDEO_QUALITY = MCI_VID_ITEM_BASE+11;
MCI_VID_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_ITEM_BASE+12;
MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_ITEM_BASE+13;
MCI_VID_SET_IMAGE_FILE_FORMAT = MCI_VID_ITEM_BASE+14;
MCI_VID_SET_REF_INTERVAL = MCI_VID_ITEM_BASE+15;
MCI_VID_SET_MAXDATARATE = MCI_VID_ITEM_BASE+16;
MCI_VID_SET_VIDEO_FILE_FORMAT = MCI_VID_ITEM_BASE+17;
//******************************************************/
// MCI_SET item values for video overlay */
//******************************************************/
MCI_OVLY_SET_IMAGE_COMPRESSION = MCI_VID_SET_IMAGE_COMPRESSION;
MCI_OVLY_SET_IMAGE_BITSPERPEL = MCI_VID_SET_IMAGE_BITSPERPEL;
MCI_OVLY_SET_IMAGE_PELFORMAT = MCI_VID_SET_IMAGE_PELFORMAT;
MCI_OVLY_SET_BRIGHTNESS = MCI_VID_SET_BRIGHTNESS;
MCI_OVLY_SET_CONTRAST = MCI_VID_SET_CONTRAST;
MCI_OVLY_SET_HUE = MCI_VID_SET_HUE;
MCI_OVLY_SET_SATURATION = MCI_VID_SET_SATURATION;
MCI_OVLY_SET_SHARPNESS = MCI_VID_SET_SHARPNESS;
MCI_OVLY_SET_GREYSCALE = MCI_VID_SET_GREYSCALE;
MCI_OVLY_SET_IMAGE_QUALITY = MCI_VID_SET_IMAGE_QUALITY;
MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
MCI_OVLY_SET_IMAGE_FILE_FORMAT = MCI_VID_SET_IMAGE_FILE_FORMAT;
//******************************************************/
// MCI_SET item values for digital video */
//******************************************************/
MCI_DGV_SET_VIDEO_COMPRESSION = MCI_VID_SET_VIDEO_COMPRESSION;
MCI_DGV_SET_IMAGE_COMPRESSION = MCI_VID_SET_IMAGE_COMPRESSION;
MCI_DGV_SET_IMAGE_BITSPERPEL = MCI_VID_SET_IMAGE_BITSPERPEL;
MCI_DGV_SET_IMAGE_PELFORMAT = MCI_VID_SET_IMAGE_PELFORMAT;
MCI_DGV_SET_BRIGHTNESS = MCI_VID_SET_BRIGHTNESS;
MCI_DGV_SET_CONTRAST = MCI_VID_SET_CONTRAST;
MCI_DGV_SET_HUE = MCI_VID_SET_HUE;
MCI_DGV_SET_SATURATION = MCI_VID_SET_SATURATION;
MCI_DGV_SET_SHARPNESS = MCI_VID_SET_SHARPNESS;
MCI_DGV_SET_GREYSCALE = MCI_VID_SET_GREYSCALE;
MCI_DGV_SET_IMAGE_QUALITY = MCI_VID_SET_IMAGE_QUALITY;
MCI_DGV_SET_VIDEO_QUALITY = MCI_VID_SET_VIDEO_QUALITY;
MCI_DGV_SET_IMAGE_COMPRESSION_METHOD = MCI_VID_SET_IMAGE_COMPRESSION_METHOD;
MCI_DGV_SET_MONITOR = MCI_SET_MONITOR;
MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE = MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE;
MCI_DGV_SET_IMAGE_FILE_FORMAT = MCI_VID_SET_IMAGE_FILE_FORMAT;
MCI_DGV_SET_REF_INTERVAL = MCI_VID_SET_REF_INTERVAL;
MCI_DGV_SET_MAXDATARATE = MCI_VID_SET_MAXDATARATE;
MCI_DGV_SET_VIDEO_FILE_FORMAT = MCI_VID_SET_VIDEO_FILE_FORMAT;
MCI_DGV_SET_AUDIO_COMPRESSION = MCI_DGV_ITEM_BASE;
MCI_DGV_SET_AUDIO_QUALITY = MCI_DGV_ITEM_BASE+1;
MCI_DGV_SET_CHANNELS = MCI_DGV_ITEM_BASE+2;
MCI_DGV_SET_BITSPERSAMPLE = MCI_DGV_ITEM_BASE+3;
MCI_DGV_SET_SAMPLESPERSEC = MCI_DGV_ITEM_BASE+4;
MCI_DGV_SET_FORMATTAG = MCI_DGV_ITEM_BASE+5;
MCI_DGV_SET_BLOCKALIGN = MCI_DGV_ITEM_BASE+6;
MCI_DGV_SET_AVGBYTESPERSEC = MCI_DGV_ITEM_BASE+7;
MCI_DGV_SET_VIDEO_COMPRESSION_SUBTYPE = MCI_DGV_ITEM_BASE+8;
MCI_DGV_SET_VIDEO_RECORD_RATE = MCI_DGV_ITEM_BASE+9;
MCI_DGV_SET_VIDEO_RECORD_FRAME_DURATION = MCI_DGV_ITEM_BASE+10;
MCI_DGV_SET_RECORD_AUDIO = MCI_DGV_ITEM_BASE+11;
MCI_DGV_SET_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+12;
MCI_DGV_SET_GRAPHIC_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+12;
MCI_DGV_SET_AUDIOSYNC = MCI_DGV_ITEM_BASE+13;
MCI_DGV_SET_VIDEO_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+14;
//******************************************************/
// Video file format */
//******************************************************/
MCI_VID_FILE_FORMAT_AVI = $20495641;
//******************************************************/
// Audio/video/image compression types */
//******************************************************/
MCI_AUD_COMP_ADPCM4 = $00000001;
MCI_AUD_COMP_PCM8 = $00000002;
MCI_VID_COMP_RTV_2_0 = $00000101;
MCI_VID_COMP_RTV_2_1 = $00000102;
MCI_VID_COMP_ULTI = $49544C55;
MCI_VID_COMP_RT21 = $31325452;
MCI_VID_COMP_NONE = $20424944; // This is 'DIB ' now.
MCI_IMG_COMP_NONE = $00000201;
MCI_IMG_COMP_PIC9_1_0 = $00000202;
MCI_IMG_COMP_PIC16_1_0 = $00000203;
MCI_IMG_COMP_JPEG9 = $00000204;
MCI_IMG_COMP_JPEG9_1_0 = MCI_IMG_COMP_JPEG9;
MCI_IMG_COMP_BMP_RLE4 = $00000205;
MCI_IMG_COMP_BMP_RLE8 = $00000206;
MCI_IMG_COMP_JPEGN = $00000207;
//******************************************************/
// PEL Formats (video/image) */
//******************************************************/
MCI_VID_PALETTE = $00000001;
MCI_VID_RGB = $00000002;
MCI_VID_YUV = $00000003;
MCI_IMG_PALETTE = MCI_VID_PALETTE;
MCI_IMG_RGB = MCI_VID_RGB;
MCI_IMG_YUV = MCI_VID_YUV;
//******************************************************/
// Audio/video/image quality levels */
//******************************************************/
MCI_AUD_QUALITY_HIGH = $00000001;
MCI_AUD_QUALITY_MED = $00000002;
MCI_AUD_QUALITY_LOW = $00000003;
MCI_VID_QUALITY_HIGH = $00000101;
MCI_VID_QUALITY_MED = $00000102;
MCI_VID_QUALITY_LOW = $00000103;
MCI_VID_QUALITY_BEST = MCI_VID_QUALITY_HIGH;
MCI_VID_QUALITY_CDROM = MCI_VID_QUALITY_MED;
MCI_VID_QUALITY_COMPACT = MCI_VID_QUALITY_LOW;
MCI_VID_QUALITY_BETTER = MCI_VID_QUALITY_MED;
MCI_VID_QUALITY_GOOD = MCI_VID_QUALITY_LOW;
MCI_IMG_QUALITY_HIGH = $00000201;
MCI_IMG_QUALITY_MED = $00000202;
MCI_IMG_QUALITY_LOW = $00000203;
//******************************************************/
// MCI_SET flags for wave audio */
//******************************************************/
MCI_WAVE_SET_SAMPLESPERSEC = $01000000;
MCI_WAVE_SET_AVGBYTESPERSEC = $02000000;
MCI_WAVE_SET_BLOCKALIGN = $04000000;
MCI_WAVE_SET_FORMATTAG = $08000000;
MCI_WAVE_SET_CHANNELS = $10000000;
MCI_WAVE_SET_BITSPERSAMPLE = $80000000;
//******************************************************/
// Wave format tag defines */
//******************************************************/
MCI_WAVE_FORMAT_PCM = DATATYPE_WAVEFORM;
MCI_WAVE_FORMAT_ADPCM = $0002;
MCI_WAVE_FORMAT_IBM_CVSD = $0005;
MCI_WAVE_FORMAT_ALAW = DATATYPE_RIFF_ALAW;
MCI_WAVE_FORMAT_MULAW = DATATYPE_RIFF_MULAW;
MCI_WAVE_FORMAT_OKI_ADPCM = $0010;
MCI_WAVE_FORMAT_DVI_ADPCM = $0011;
MCI_WAVE_FORMAT_DIGISTD = $0015;
MCI_WAVE_FORMAT_DIGIFIX = $0016;
MCI_WAVE_FORMAT_AVC_ADPCM = DATATYPE_ADPCM_AVC;
MCI_WAVE_FORMAT_IBM_ADPCM = DATATYPE_ADPCM_AVC;
MCI_WAVE_FORMAT_IBM_MULAW = DATATYPE_MULAW;
MCI_WAVE_FORMAT_IBM_ALAW = DATATYPE_ALAW;
MCI_WAVE_FORMAT_CT_ADPCM = DATATYPE_CT_ADPCM;
MCI_WAVE_FORMAT_MPEG1 = DATATYPE_MPEG1AUDIO;
//******************************************************/
// MCI_SET flags for sequencer */
//******************************************************/
MCI_SEQ_SET_TEMPO = $00100000;
MCI_SEQ_SET_PORT = $00200000;
MCI_SEQ_ENABLE_PORT_MAPPER = $00400000;
MCI_SEQ_DISABLE_PORT_MAPPER = $00800000;
MCI_SEQ_SET_OFFSET = $01000000;
MCI_SEQ_SET_MASTER = $02000000;
MCI_SEQ_SET_SLAVE = $04000000;
//*********************************************/
// SEQ time formats */
//*********************************************/
MCI_SEQ_SET_SMPTE_24 = $00000100;
MCI_SEQ_SET_SMPTE_25 = $00000200;
MCI_SEQ_SET_SMPTE_30 = $00000300;
MCI_SEQ_SET_SMPTE_30DROP = $00000400;
MCI_SEQ_SET_SONGPTR = $00000500;
//*********************************************/
// SEQ synchronization types */
//*********************************************/
MCI_SEQ_MIDI = $00000001;
MCI_SEQ_SMPTE = $00000002;
MCI_SEQ_FILE = $00000003;
MCI_SEQ_NONE = $00000004;
//*********************************************/
// SEQ PORT TYPES */
//*********************************************/
MCI_SET_NONE = $10000000;
MIDI_MAPPER = $20000000;
MCI_MIDI_MAPPER = MIDI_MAPPER;
type
mci_Set_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTimeFormat : Longint; // Time format to be used by the device
ulSpeedFormat : Longint; // Speed format used by this device
ulAudio : Longint; // Channel number for this operation
// (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
// MCI_SET_AUDIO_ALL)
ulLevel : Longint; // Volume, treble or bass level as % of max.
ulOver : Longint; // Delay time for vectored change in millisecond
ulItem : Longint; // Item field for set item flags
ulValue : Longint; // Value associated with item flag
end;
pmci_Set_Parms = ^mci_Set_Parms;
mci_Amp_Set_Parms = mci_Set_Parms;
pmci_Amp_Set_Parms = ^mci_Amp_Set_Parms;
mci_DGV_Set_Parms = mci_Set_Parms;
pmci_DGV_Set_Parms = ^mci_DGV_Set_Parms;
mci_Ovly_Set_Parms = mci_Set_Parms;
pmci_Ovly_Set_Parms = ^mci_Ovly_Set_Parms;
mci_CDXA_Set_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTimeFormat : Longint; // Time format to be used by the device
ulSpeedFormat : Longint; // Speed format used by this device
ulAudio : Longint; // Channel number for this operation
// (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
// MCI_SET_AUDIO_ALL)
ulLevel : Longint; // Volume, treble or bass level as % of max.
ulOver : Longint; // Delay time for vectored change in milliseconds
ulItem : Longint; // Item field for set item flags
ulValue : Longint; // Value associated with item flag
ulChannel : Longint; // Channel number
pPlayList : Pointer; // Pointer to play list
ulPlayListSize : Longint; // Play list size
end;
pmci_CDXA_Set_Parms = ^mci_CDXA_Set_Parms;
mci_VD_Set_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTimeFormat : LongInt; // Time format to be used by the device
ulSpeedFormat : LongInt; // Speed format used by this device
ulAudio : LongInt; // Channel number for this operation
// (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
// MCI_SET_AUDIO_ALL)
ulLevel : LongInt; // Volume, treble or bass level as % of max.
ulOver : LongInt; // Delay time for vectored change in milliseconds
ulItem : LongInt; // Item field for set item flags
ulValue : LongInt; // Value associated with item flag
ulChannel : LongInt; // Videodisc channel
end;
pmci_VD_Set_Parms = ^mci_VD_Set_Parms;
mci_Wave_Set_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTimeFormat : Longint; // Time format to be used by the device
ulSpeedFormat : Longint; // Speed format used by this device
ulAudio : Longint; // Channel number for this operation
// (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
// MCI_SET_AUDIO_ALL)
ulLevel : Longint; // Volume, trebble or bass level as % of max.
ulOver : Longint; // Delay time for vectored change in milliseconds
ulItem : Longint; // Item field for set item flags
ulValue : Longint; // Value associated with item flag
usInput : Integer; // Channel for input
usReserved0 : Integer; // Reserved field
usOutput : Integer; // Channel for output
usReserved1 : Integer; // Reserved field
usFormatTag : Integer; // Format tag
usReserved2 : Integer; // Reserved field
usChannels : Integer; // mono(1) or stereo(2)
usReserved3 : Integer; // Reserved field
ulSamplesPerSec : Longint; // Samples per seconds
ulAvgBytesPerSec : LongInt; // Bytes per seconds
usBlockAlign : Integer; // Block alignment of data
usReserved4 : Integer; // Reserved field
usBitsPerSample : Integer; // Bits per seconds
usReserved5 : Integer; // Reserved field
end;
pmci_Wave_Set_Parms = ^mci_Wave_Set_Parms;
mci_Seq_Set_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulTimeFormat : Longint; // Time format to be used by the device
ulSpeedFormat : Longint; // Speed format used by this device
ulAudio : Longint; // Channel number for this operation
// (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,
// MCI_SET_AUDIO_ALL)
ulLevel : Longint; // Volume, trebble or bass level as % of max.
ulOver : Longint; // Delay time for vectored change in millisecond
ulItem : Longint; // Item field for set item flags
ulValue : Longint; // Value associated with item flag
ulTempo : Longint; // Specified the tempo
ulPort : Longint; // Output port
ulSlave : Longint; // Unused field
ulMaster : Longint; // Unused field
ulOffset : Longint; // Specified the data offset
end;
pmci_Seq_Set_Parms = ^mci_Seq_Set_Parms;
//********************************************************************/
// parameters for the MCI_SET_CUEPOINT message */
// 0x00000x00 are reserved for MCI_SET_CUEPOINT flags */
//********************************************************************/
CONST
MCI_SET_CUEPOINT_ON = $00000100;
MCI_SET_CUEPOINT_OFF = $00000200;
type
mci_CuePoint_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulCuepoint : Longint; // Specifies the cuepoint location
usUserParm : Integer; // User parmameter returned on cuepoint
// notify message
usReserved0 : Integer; // Reserved field
end;
pmci_CuePoint_Parms = ^mci_CuePoint_Parms;
//********************************************************************/
// parameters for the MCI_SETIMAGEPALETTE message */
// 0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags */
//********************************************************************/
CONST
MCI_SET_REGISTERED = $00000100;
//********************************************************************/
// flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
// 0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags */
//********************************************************************/
MCI_SET_POSITION_ADVISE_ON = $00000100;
MCI_SET_POSITION_ADVISE_OFF = $00000200;
type
mci_Position_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulUnits : Longint; // Specifies position change notifiication
// granularity
usUserParm : Integer; // User parameter returned on position change
// notification message.
Reserved0 : Integer; // Reserved field
Reserved1 : LongInt; // Reserved field
end;
pmci_Position_Parms = ^mci_Position_Parms;
//********************************************************************/
// parameter structure for the MCI_SET_SYNC_OFFSET message */
//********************************************************************/
mci_Sync_Offset_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulOffset : LongInt; // Specifies the device media position offset
// in the currently specified device units.
end;
pmci_Sync_Offset_Parms = ^mci_Sync_Offset_Parms;
//********************************************************************/
// flags for the MCI_SPIN message */
// 0x00000X00 are reserved for MCI_SPIN flags */
//********************************************************************/
CONST
MCI_SPIN_UP = $00000100;
MCI_SPIN_DOWN = $00000200;
//********************************************************************/
// MCI_STATUS message flags */
// 0x000XXX00 are reserved for MCI_STATUS flags */
// MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
//********************************************************************/
MCI_STATUS_ITEM = $00000100;
MCI_STATUS_START = $00000200;
MCI_STATUS_CONNECTOR = $00000400;
//************************************************/
// General MCI_STATUS item values */
//************************************************/
MCI_STATUS_CURRENT_TRACK = $00000001;
MCI_STATUS_LENGTH = $00000002;
MCI_STATUS_MODE = $00000003;
MCI_STATUS_NUMBER_OF_TRACKS = $00000004;
MCI_STATUS_POSITION = $00000005;
MCI_STATUS_POSITION_IN_TRACK = $00000006;
MCI_STATUS_MEDIA_PRESENT = $00000007;
MCI_STATUS_VOLUME = $00000008;
MCI_STATUS_READY = $00000009;
MCI_STATUS_TIME_FORMAT = $0000000A;
MCI_STATUS_SPEED_FORMAT = $0000000B;
MCI_STATUS_MONITOR = $0000000C;
MCI_STATUS_AUDIO = $0000000D;
MCI_STATUS_VIDEO = $0000000E;
MCI_STATUS_CLIPBOARD = $0000000F;
MCI_STATUS_CAN_PASTE = $00000010;
MCI_STATUS_CAN_REDO = $00000020;
MCI_STATUS_CAN_UNDO = $00000030;
//************************************************/
// ulValue field values for MCI_STATUS_AUDIO */
//************************************************/
MCI_STATUS_AUDIO_ALL = $00000000;
MCI_STATUS_AUDIO_LEFT = $00000001;
MCI_STATUS_AUDIO_RIGHT = $00000002;
//************************************************/
// MCI_STATUS item values for amp/mixer */
//************************************************/
MCI_AMP_STATUS_PITCH = MCI_AMP_ITEM_BASE;
MCI_AMP_STATUS_TREBLE = MCI_AMP_ITEM_BASE+1;
MCI_AMP_STATUS_BASS = MCI_AMP_ITEM_BASE+2;
MCI_AMP_STATUS_BALANCE = MCI_AMP_ITEM_BASE+3;
MCI_AMP_STATUS_GAIN = MCI_AMP_ITEM_BASE+4;
MCI_AMP_STATUS_MONITOR = MCI_AMP_ITEM_BASE+5;
MCI_AMP_STATUS_MID = MCI_AMP_ITEM_BASE+6;
MCI_AMP_STATUS_VOLUME = MCI_STATUS_VOLUME;
MCI_AMP_STATUS_LOUDNESS = MCI_AMP_ITEM_BASE+7;
MCI_AMP_STATUS_CROSSOVER = MCI_AMP_ITEM_BASE+8;
MCI_AMP_STATUS_REVERB = MCI_AMP_ITEM_BASE+9;
MCI_AMP_STATUS_ALC = MCI_AMP_ITEM_BASE+10;
MCI_AMP_STATUS_CHORUS = MCI_AMP_ITEM_BASE+11;
MCI_AMP_STATUS_CUSTOM1 = MCI_AMP_ITEM_BASE+12;
MCI_AMP_STATUS_CUSTOM2 = MCI_AMP_ITEM_BASE+13;
MCI_AMP_STATUS_CUSTOM3 = MCI_AMP_ITEM_BASE+14;
MCI_AMP_STATUS_MUTE = MCI_AMP_ITEM_BASE+15;
MCI_AMP_STATUS_STEREOENHANCE = MCI_AMP_ITEM_BASE+16;
//************************************************/
// MCI_STATUS item values for cd audio */
//************************************************/
MCI_CD_STATUS_TRACK_TYPE = MCI_CD_ITEM_BASE;
MCI_CD_STATUS_TRACK_COPYPERMITTED = MCI_CD_ITEM_BASE+1;
MCI_CD_STATUS_TRACK_CHANNELS = MCI_CD_ITEM_BASE+2;
MCI_CD_STATUS_TRACK_PREEMPHASIS = MCI_CD_ITEM_BASE+3;
//***********************************************/
// return values for CD MCI_STATUS message with */
// MCI_CD_STATUS_TRACK_TYPE set */
//***********************************************/
MCI_CD_TRACK_AUDIO = $00000001;
MCI_CD_TRACK_DATA = $00000002;
MCI_CD_TRACK_OTHER = $00000003;
//************************************************/
// MCI_STATUS item values for CDXA */
//************************************************/
MCI_CDXA_STATUS_CHANNEL = MCI_CDXA_ITEM_BASE;
//***********************************************/
//returned from call for MCI_CDXA_STATUS_CHANNEL*/
//***********************************************/
MCI_CDXA_NONE = $00000000;
//************************************************/
// MCI_STATUS item values for sequencer */
//************************************************/
MCI_SEQ_STATUS_TEMPO = MCI_SEQ_ITEM_BASE;
MCI_SEQ_STATUS_OFFSET = MCI_SEQ_ITEM_BASE+1;
MCI_SEQ_STATUS_DIVTYPE = MCI_SEQ_ITEM_BASE+2;
MCI_SEQ_STATUS_MASTER = MCI_SEQ_ITEM_BASE+3;
MCI_SEQ_STATUS_PORT = MCI_SEQ_ITEM_BASE+4;
MCI_SEQ_STATUS_SLAVE = MCI_SEQ_ITEM_BASE+5;
//*********************************************/
// Return value for current division type */
//*********************************************/
MCI_SEQ_DIV_PPQN = $00000001;
MCI_SEQ_DIV_SMPTE_24 = $00000002;
MCI_SEQ_DIV_SMPTE_25 = $00000003;
MCI_SEQ_DIV_SMPTE_30DROP = $00000004;
MCI_SEQ_DIV_SMPTE_30 = $00000005;
//************************************************/
// MCI_STATUS items for videodisc */
//************************************************/
MCI_VD_STATUS_SPEED = MCI_VD_ITEM_BASE;
MCI_VD_STATUS_FORWARD = MCI_VD_ITEM_BASE+1;
MCI_VD_MEDIA_TYPE = MCI_VD_ITEM_BASE+2;
MCI_VD_STATUS_SIDE = MCI_VD_ITEM_BASE+3;
MCI_VD_STATUS_DISC_SIZE = MCI_VD_ITEM_BASE+4;
//**********************************************/
// return values for videodisc status command */
//**********************************************/
MCI_VD_SPEED_NORMAL = $00000000;
MCI_VD_SPEED_FAST = $00000001;
MCI_VD_SPEED_SLOW = $00000002;
//************************************************/
// MCI_STATUS items for wave audio */
//************************************************/
MCI_WAVE_STATUS_LEVEL = MCI_WAVE_ITEM_BASE;
MCI_WAVE_STATUS_SAMPLESPERSEC = MCI_WAVE_ITEM_BASE+1;
MCI_WAVE_STATUS_AVGBYTESPERSEC = MCI_WAVE_ITEM_BASE+2;
MCI_WAVE_STATUS_BLOCKALIGN = MCI_WAVE_ITEM_BASE+3;
MCI_WAVE_STATUS_FORMATTAG = MCI_WAVE_ITEM_BASE+4;
MCI_WAVE_STATUS_CHANNELS = MCI_WAVE_ITEM_BASE+5;
MCI_WAVE_STATUS_BITSPERSAMPLE = MCI_WAVE_ITEM_BASE+6;
//************************************************/
// Common video MCI_STATUS items */
//************************************************/
MCI_VID_STATUS_hwnd = MCI_VID_ITEM_BASE;
MCI_VID_STATUS_AUDIO_COMPRESSION = MCI_VID_ITEM_BASE+1;
MCI_VID_STATUS_VIDEO_COMPRESSION = MCI_VID_ITEM_BASE+2;
MCI_VID_STATUS_IMAGE_COMPRESSION = MCI_VID_ITEM_BASE+3;
MCI_VID_STATUS_AUDIO_QUALITY = MCI_VID_ITEM_BASE+4;
MCI_VID_STATUS_VIDEO_QUALITY = MCI_VID_ITEM_BASE+5;
MCI_VID_STATUS_IMAGE_QUALITY = MCI_VID_ITEM_BASE+6;
MCI_VID_STATUS_IMAGE_BITSPERPEL = MCI_VID_ITEM_BASE+7;
MCI_VID_STATUS_IMAGE_PELFORMAT = MCI_VID_ITEM_BASE+8;
MCI_VID_STATUS_FORWARD = MCI_VID_ITEM_BASE+9;
MCI_VID_STATUS_NORMAL_RATE = MCI_VID_ITEM_BASE+10;
MCI_VID_STATUS_VIDEO_X_EXTENT = MCI_VID_ITEM_BASE+11;
MCI_VID_STATUS_VIDEO_Y_EXTENT = MCI_VID_ITEM_BASE+12;
MCI_VID_STATUS_IMAGE_X_EXTENT = MCI_VID_ITEM_BASE+13;
MCI_VID_STATUS_IMAGE_Y_EXTENT = MCI_VID_ITEM_BASE+14;
MCI_VID_STATUS_BRIGHTNESS = MCI_VID_ITEM_BASE+15;
MCI_VID_STATUS_CONTRAST = MCI_VID_ITEM_BASE+16;
MCI_VID_STATUS_HUE = MCI_VID_ITEM_BASE+17;
MCI_VID_STATUS_SATURATION = MCI_VID_ITEM_BASE+18;
MCI_VID_STATUS_GREYSCALE = MCI_VID_ITEM_BASE+19;
MCI_VID_STATUS_SHARPNESS = MCI_VID_ITEM_BASE+20;
MCI_VID_STATUS_SPEED = MCI_VID_ITEM_BASE+21;
MCI_VID_STATUS_IMAGE_FILE_FORMAT = MCI_VID_ITEM_BASE+22;
MCI_VID_STATUS_TRANSPARENT_TYPE = MCI_VID_ITEM_BASE+23;
MCI_VID_STATUS_REF_INTERVAL = MCI_VID_ITEM_BASE+24;
MCI_VID_STATUS_MAXDATARATE = MCI_VID_ITEM_BASE+25;
MCI_VID_STATUS_VIDEO_FILE_FORMAT = MCI_VID_ITEM_BASE+26;
//************************************************/
// Status Transparent Type returns */
// MCI_VID_PALETTE */
// MCI_VID_RGB */
// MCI_VID_YUV */
//************************************************/
MCI_VID_STATUS_TRANSPARENT_COLOR = MCI_VID_ITEM_BASE+24;
//************************************************/
// MCI_STATUS items for digital video */
//************************************************/
MCI_DGV_STATUS_hwnd = MCI_VID_STATUS_hwnd;
MCI_DGV_STATUS_AUDIO_COMPRESSION = MCI_VID_STATUS_AUDIO_COMPRESSION;
MCI_DGV_STATUS_VIDEO_COMPRESSION = MCI_VID_STATUS_VIDEO_COMPRESSION;
MCI_DGV_STATUS_IMAGE_COMPRESSION = MCI_VID_STATUS_IMAGE_COMPRESSION;
MCI_DGV_STATUS_AUDIO_QUALITY = MCI_VID_STATUS_AUDIO_QUALITY;
MCI_DGV_STATUS_VIDEO_QUALITY = MCI_VID_STATUS_VIDEO_QUALITY;
MCI_DGV_STATUS_IMAGE_QUALITY = MCI_VID_STATUS_IMAGE_QUALITY;
MCI_DGV_STATUS_IMAGE_BITSPERPEL = MCI_VID_STATUS_IMAGE_BITSPERPEL;
MCI_DGV_STATUS_IMAGE_PELFORMAT = MCI_VID_STATUS_IMAGE_PELFORMAT;
MCI_DGV_STATUS_FORWARD = MCI_VID_STATUS_FORWARD;
MCI_DGV_STATUS_NORMAL_RATE = MCI_VID_STATUS_NORMAL_RATE;
MCI_DGV_STATUS_VIDEO_X_EXTENT = MCI_VID_STATUS_VIDEO_X_EXTENT;
MCI_DGV_STATUS_VIDEO_Y_EXTENT = MCI_VID_STATUS_VIDEO_Y_EXTENT;
MCI_DGV_STATUS_IMAGE_X_EXTENT = MCI_VID_STATUS_IMAGE_X_EXTENT;
MCI_DGV_STATUS_IMAGE_Y_EXTENT = MCI_VID_STATUS_IMAGE_Y_EXTENT;
MCI_DGV_STATUS_BRIGHTNESS = MCI_VID_STATUS_BRIGHTNESS;
MCI_DGV_STATUS_CONTRAST = MCI_VID_STATUS_CONTRAST;
MCI_DGV_STATUS_HUE = MCI_VID_STATUS_HUE;
MCI_DGV_STATUS_SATURATION = MCI_VID_STATUS_SATURATION;
MCI_DGV_STATUS_SPEED = MCI_VID_STATUS_SPEED;
MCI_DGV_STATUS_SHARPNESS = MCI_VID_STATUS_SHARPNESS;
MCI_DGV_STATUS_REF_INTERVAL = MCI_VID_STATUS_REF_INTERVAL;
MCI_DGV_STATUS_MAXDATARATE = MCI_VID_STATUS_MAXDATARATE;
MCI_DGV_STATUS_VIDEO_FILE_FORMAT = MCI_VID_STATUS_VIDEO_FILE_FORMAT;
MCI_DGV_STATUS_CHANNELS = MCI_DGV_ITEM_BASE+13;
MCI_DGV_STATUS_BITSPERSAMPLE = MCI_DGV_ITEM_BASE+14;
MCI_DGV_STATUS_SAMPLESPERSEC = MCI_DGV_ITEM_BASE+15;
MCI_DGV_STATUS_FORMATTAG = MCI_DGV_ITEM_BASE+16;
MCI_DGV_STATUS_BLOCKALIGN = MCI_DGV_ITEM_BASE+17;
MCI_DGV_STATUS_AVGBYTESPERSEC = MCI_DGV_ITEM_BASE+18;
MCI_DGV_STATUS_VIDEO_COMPRESSION_SUBTYPE = MCI_DGV_ITEM_BASE+19;
MCI_DGV_STATUS_VIDEO_RECORD_RATE = MCI_DGV_ITEM_BASE+20;
MCI_DGV_STATUS_VIDEO_RECORD_FRAME_DURATION = MCI_DGV_ITEM_BASE+21;
MCI_DGV_STATUS_RECORD_AUDIO = MCI_DGV_ITEM_BASE+22;
MCI_DGV_STATUS_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+23;
MCI_DGV_STATUS_GRAPHIC_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+23; // MUST BE SAME AS TRANSPARENT COLOR
MCI_DGV_STATUS_hwnd_MONITOR = MCI_DGV_ITEM_BASE+24;
MCI_DGV_STATUS_DROPPED_FRAME_PCT = MCI_DGV_ITEM_BASE+25;
MCI_DGV_STATUS_AUDIOSYNC = MCI_DGV_ITEM_BASE+26;
MCI_DGV_STATUS_AUDIOSYNC_DIRECTION = MCI_DGV_ITEM_BASE+27;
MCI_DGV_STATUS_VIDEO_TRANSPARENT_COLOR = MCI_DGV_ITEM_BASE+28; // MUST BE SAME AS TRANSPARENT COLOR
MCI_DGV_STATUS_TUNER_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
MCI_DGV_STATUS_TUNER_LOW_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
MCI_DGV_STATUS_TUNER_HIGH_TV_CHANNEL = MCI_DGV_ITEM_BASE+29;
MCI_DGV_STATUS_TUNER_REGION = MCI_DGV_ITEM_BASE+30;
MCI_DGV_STATUS_TUNER_FINETUNE = MCI_DGV_ITEM_BASE+31;
MCI_DGV_STATUS_TUNER_FREQUENCY = MCI_DGV_ITEM_BASE+32;
MCI_DGV_STATUS_TUNER_AUDIO_CHANNEL = MCI_DGV_ITEM_BASE+33;
MCI_DGV_STATUS_TUNER_AFC = MCI_DGV_ITEM_BASE+34;
MCI_DGV_STATUS_VALID_SIGNAL = MCI_DGV_ITEM_BASE+35;
//************************************************/
// MCI_STATUS item values for video overlay */
//************************************************/
MCI_OVLY_STATUS_hwnd = MCI_VID_STATUS_hwnd;
MCI_OVLY_STATUS_IMAGE_COMPRESSION = MCI_VID_STATUS_IMAGE_COMPRESSION;
MCI_OVLY_STATUS_IMAGE_BITSPERPEL = MCI_VID_STATUS_IMAGE_BITSPERPEL;
MCI_OVLY_STATUS_IMAGE_PELFORMAT = MCI_VID_STATUS_IMAGE_PELFORMAT;
MCI_OVLY_STATUS_IMAGE_X_EXTENT = MCI_VID_STATUS_IMAGE_X_EXTENT;
MCI_OVLY_STATUS_IMAGE_Y_EXTENT = MCI_VID_STATUS_IMAGE_Y_EXTENT;
MCI_OVLY_STATUS_BRIGHTNESS = MCI_VID_STATUS_BRIGHTNESS;
MCI_OVLY_STATUS_CONTRAST = MCI_VID_STATUS_CONTRAST;
MCI_OVLY_STATUS_HUE = MCI_VID_STATUS_HUE;
MCI_OVLY_STATUS_SATURATION = MCI_VID_STATUS_SATURATION;
MCI_OVLY_STATUS_GREYSCALE = MCI_VID_STATUS_GREYSCALE;
MCI_OVLY_STATUS_IMAGE_QUALITY = MCI_VID_STATUS_IMAGE_QUALITY;
MCI_OVLY_STATUS_SHARPNESS = MCI_VID_STATUS_SHARPNESS;
MCI_OVLY_STATUS_IMAGE_FILE_FORMAT = MCI_VID_STATUS_IMAGE_FILE_FORMAT;
MCI_OVLY_STATUS_TRANSPARENT_TYPE = MCI_VID_STATUS_TRANSPARENT_TYPE;
MCI_OVLY_STATUS_TRANSPARENT_COLOR = MCI_VID_STATUS_TRANSPARENT_COLOR;
//************************************************/
// Status Mode return values */
//************************************************/
MCI_MODE_NOT_READY = $00000001;
MCI_MODE_PAUSE = $00000002;
MCI_MODE_PLAY = $00000003;
MCI_MODE_STOP = $00000004;
MCI_MODE_RECORD = $00000005;
MCI_MODE_SEEK = $00000006;
//************************************************/
// Status Direction return values */
//************************************************/
MCI_FORWARD = $00000000;
MCI_REVERSE = $00000001;
type
mci_Status_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : LongInt; // Return field
ulItem : LongInt; // Item field for STATUS item to query
ulValue : LongInt; // Status value field (this used to be)
// ulTrack but was changed in Rel 1.1
// to extend the status structure.
// See the programming reference on when
// ulValue is used and how...
end;
pmci_Status_Parms = ^mci_Status_Parms;
mci_CDXA_Status_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulReturn : LongInt; // Return field
ulItem : LongInt; // Item field for STATUS item to query
ulValue : LongInt; // Status value field (this used to be)
// ulTrack but was changed in Rel 1.1
// to extend the status structure.
// See the programming reference on when
// ulValue is used and how...
ulChannel : LongInt; // Channel
end;
pmci_CDXA_Status_Parms = ^mci_CDXA_Status_Parms;
//********************************************************************/
// flags and parameter structure for the MCI_STEP message */
// 0x00000X00 are reserved for MCI_STEP flags */
//********************************************************************/
CONST
MCI_STEP_FRAMES = $00000100;
MCI_STEP_REVERSE = $00000200;
type
mci_Step_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulStep : LongInt; // amount to step in current time format
end;
pmci_Step_Parms = ^mci_Step_Parms;
//********************************************************************/
// flags for the MCI_SYSINFO message */
// 0xXXXXXX00 are reserved for MCI_SYSINFO flags */
//********************************************************************/
CONST
MCI_SYSINFO_QUANTITY = $00000100;
MCI_SYSINFO_OPEN = $00000200;
MCI_SYSINFO_NAME = $00000400;
MCI_SYSINFO_INSTALLNAME = $00000800;
MCI_SYSINFO_ITEM = $00001000;
MCI_SYSINFO_INI_LOCK = $00002000;
//*******************************************************/
// Extended SYSINFO functions */
//*******************************************************/
MCI_SYSINFO_INSTALL_DRIVER = $00000001;
MCI_SYSINFO_QUERY_DRIVER = $00000002;
MCI_SYSINFO_DELETE_DRIVER = $00000004;
MCI_SYSINFO_SET_PARAMS = $00000008;
MCI_SYSINFO_QUERY_PARAMS = $00000010;
MCI_SYSINFO_SET_CONNECTORS = $00000020;
MCI_SYSINFO_QUERY_CONNECTORS = $00000040;
MCI_SYSINFO_SET_EXTENSIONS = $00000080;
MCI_SYSINFO_QUERY_EXTENSIONS = $00000100;
MCI_SYSINFO_SET_ALIAS = $00000200;
MCI_SYSINFO_QUERY_NAMES = $00000400;
MCI_SYSINFO_SET_DEFAULT = $00000800;
MCI_SYSINFO_QUERY_DEFAULT = $00001000;
MCI_SYSINFO_SET_TYPES = $00002000;
MCI_SYSINFO_QUERY_TYPES = $00004000;
//*******************************************************/
// Device Flags */
//*******************************************************/
MCI_SYSINFO_DEV_CONTROLLABLE = $00000001;
MCI_SYSINFO_DEV_NONCONTROLLABLE = $00000002;
MCI_SYSINFO_DEVICESETTINGS = $00000004;
//********************************************************************/
// parameter structures for the MCI_SYSINFO message */
//********************************************************************/
TYPE
MaxDevNameChar = array [0..Max_Device_Name-1] of CHAR;
MaxVerNumChar = array [0..Max_Version_Number-1] of CHAR;
MaxProdInfChar = array [0..Max_ProdInfo-1] of CHAR;
MaxPddNameChar = array [0..Max_Pdd_Name-1] of CHAR;
MaxClsShort = array [0..Max_Classes-1] of integer;
MaxClsShort2 = array [0..Max_Classes-1,0..Max_Classes-1] of integer;
MaxDevParmChar = array [0..Max_Dev_Params-1] of CHAR;
mci_SysInfo_Parms = record
hwndDummyCallback : hwnd; // NOTIFY not allowed for SYSINFO
pszReturn : pChar; // Pointer to return buffer
ulRetSize : LongInt; // Return buffer size
ulNumber : LongInt; // Ordinal Number
usDeviceType : Integer; // MCI device type number
usReserved0 : Integer; // Reserved field
ulItem : LongInt; // Used to indicate the MCI_SYSINFO
pSysInfoParm : Pointer; // extended function to perform
end;
pmci_SysInfo_Parms = ^mci_SysInfo_Parms;
mci_SysInfo_LogDevice = packed record
szInstallName : MaxDevNameChar; // Device install name
usDeviceType : Integer; // Device type number
ulDeviceFlag : Longint; // Flag indicating whether device
// device is controllable or not
szVersionNumber : MaxVerNumChar; // INI file version number
szProductInfo : MaxProdInfChar; // Textual product description
szMCDDriver : MaxDevNameChar; // MCI Driver dll name
szVSDDriver : MaxDevNameChar; // VSD dll name
szPDDName : MaxPddNameChar; // Device PDD name
szMCDTable : MaxDevNameChar; // Device type command table
szVSDTable : MaxDevNameChar; // Device specific command table
usShareType : Integer; // Device sharing mode
szResourceName : MaxDevNameChar; // Resource name
usResourceUnits : Integer; // Total resource units available
// for this device
usResourceClasses : Integer; // Number of resource classes for
// this device
ausClassArray : MaxClsShort; // Maximum number of resource
// units for each class
ausValidClassArray : MaxClsShort2; // Valid class combinations
end;
pmci_SysInfo_LogDevice = ^mci_SysInfo_LogDevice;
mci_SysInfo_DevParams = record
szInstallName : MaxDevNameChar; // Device install name
szDevParams : MaxDevParmChar; // Device specific parameters
end;
pmci_SysInfo_DevParams = ^mci_SysInfo_DevParams;
type
Connect = record
usConnectType : Integer; // Connector type
szToInstallName : MaxDevNameChar; // Install name this connector
// is connected to
usToConnectIndex : Integer; // Connector index this connector
// is connected to
end;
pConnect = ^Connect;
MaxCnctCnct = array[0..MAX_CONNECTORS-1] of Connect;
MaxExtChar2 = array[0..MAX_EXTENSIONS-1,0..MAX_EXTENSION_NAME-1] of CHAR;
MaxAliasNameChar = array[0..Max_Alias_Name-1] of Char;
MaxTypeBufChar = array[0..Max_TypeBuffer] of Char;
mci_SysInfo_ConParams = record
szInstallName : MaxDevNameChar; // Device install name
usNumConnectors : Integer; // Number of device connectors
ConnectorList : MaxCnctCnct; // Connector list array
end;
pmci_SysInfo_ConParams = ^mci_SysInfo_ConParams;
mci_SysInfo_Extension = record
szInstallName : MaxDevNameChar; // Device install name
usNumExtensions : Integer; // Number of extensions
szExtension : MaxExtChar2; // Extension name array
end;
pmci_SysInfo_Extension = ^mci_SysInfo_Extension;
mci_SysInfo_Alias = record
szInstallName : MaxDevNameChar; // Device install name
szAliasName : MaxAliasNameChar; // Alias name
end;
pmci_SysInfo_Alias = ^mci_SysInfo_Alias;
mci_SysInfo_DefaultDevice = record
szInstallName : MaxDevNameChar; // Device install name
usDeviceType : Integer; // Device type number
end;
pmci_SysInfo_DefaultDevice = ^mci_SysInfo_DefaultDevice;
mci_SysInfo_Query_Name = record
szInstallName : MaxDevNameChar; // Device install name
szLogicalName : MaxDevNameChar; // Logical device name
szAliasName : MaxAliasNameChar; // Alias name
usDeviceType : Integer; // Device type number
usDeviceOrd : Integer; // Device type ordinal
end;
pmci_SysInfo_Query_Name = ^mci_SysInfo_Query_Name;
mci_SysInfo_Types = record
szInstallName : MaxDevNameChar; // Device install name
szTypes : MaxTypeBufChar; // EA types
end;
pmci_SysInfo_Types = ^mci_SysInfo_Types;
//********************************************************************/
// flags for the MCI_UNFREEZE message */
// 0x00000X00 are reserved for MCI_UNFREEZE flags */
//********************************************************************/
CONST
MCI_OVLY_UNFREEZE_RECT = $00000100;
MCI_OVLY_UNFREEZE_RECT_OUTSIDE = $00000200;
//********************************************************************/
// flags for the MCI_WHERE message */
// 0x0000XX00 are reserved for MCI_WHERE flags */
//********************************************************************/
MCI_VID_WHERE_DESTINATION = $00000100;
MCI_VID_WHERE_SOURCE = $00000200;
MCI_VID_WHERE_WINDOW = $00000400;
MCI_DGV_WHERE_DESTINATION = MCI_VID_WHERE_DESTINATION;
MCI_DGV_WHERE_SOURCE = MCI_VID_WHERE_SOURCE;
MCI_DGV_WHERE_WINDOW = MCI_VID_WHERE_WINDOW;
MCI_DGV_WHERE_ADJUSTED = $00000800;
MCI_OVLY_WHERE_DESTINATION = MCI_VID_WHERE_DESTINATION;
MCI_OVLY_WHERE_SOURCE = MCI_VID_WHERE_SOURCE;
MCI_OVLY_WHERE_WINDOW = MCI_VID_WHERE_WINDOW;
//********************************************************************/
// flags and parameter structure for the MCI_WINDOW message */
// 0x0000XX00 are reserved for MCI_WINDOW flags */
//********************************************************************/
MCI_VID_WINDOW_hwnd = $00000100;
MCI_VID_WINDOW_STATE = $00000200;
MCI_VID_WINDOW_TEXT = $00000400;
MCI_VID_WINDOW_DEFAULT = $00000800;
MCI_DGV_WINDOW_hwnd = MCI_VID_WINDOW_hwnd;
MCI_DGV_WINDOW_STATE = MCI_VID_WINDOW_STATE;
MCI_DGV_WINDOW_TEXT = MCI_VID_WINDOW_TEXT;
MCI_DGV_WINDOW_DEFAULT = MCI_VID_WINDOW_DEFAULT;
MCI_OVLY_WINDOW_hwnd = MCI_VID_WINDOW_hwnd;
MCI_OVLY_WINDOW_STATE = MCI_VID_WINDOW_STATE;
MCI_OVLY_WINDOW_TEXT = MCI_VID_WINDOW_TEXT;
MCI_OVLY_WINDOW_DEFAULT = MCI_VID_WINDOW_DEFAULT;
type
mci_Vid_Window_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
hwndDest : hwnd; // Handle to the client window used for
// the destination of the video image
usCmdShow : Integer; // Specifies how the window is displayed
usReserved1 : Integer; // Reserved
pszText : pChar; // The text to use as the window caption
pszAlias : pChar; // The window alias for the display window
end;
pmci_Vid_Window_Parms = ^mci_Vid_Window_Parms;
mci_dgv_Window_Parms = mci_Vid_Window_Parms;
pmci_dgv_Window_Parms = ^mci_dgv_Window_Parms;
mci_Ovly_Window_Parms = mci_Vid_Window_Parms;
pmci_Ovly_Window_Parms = ^mci_Ovly_Window_Parms;
//********************************************************************/
// flags and parameter structure for the MCI_TUNER message */
//********************************************************************/
CONST
MCI_DGV_AUDIO_CHANNEL = $00010000;
MCI_DGV_TV_CHANNEL = $00020000;
MCI_DGV_FREQUENCY = $00040000;
MCI_DGV_FINETUNE_PLUS = $00080000;
MCI_DGV_FINETUNE_MINUS = $00100000;
MCI_DGV_REGION = $00200000;
MCI_DGV_AFC_ON = $00400000;
MCI_DGV_AFC_OFF = $00800000;
MCI_DGV_POLARIZATION = $00800000;
MCI_DGV_QUERY = $01000000;
type
mci_Dgv_Tuner_Parms = record
hwndCallback : hwnd; // PM window handle for MCI notify message
ulFrequency : LongInt; // Tuner Frequency
ulReserved0 : LongInt; // Reserved 0
ulTVChannel : LongInt; // TV Channel
lFineTune : LongInt; // Fine tuning adjustments.
pszRegion : pChar; // TV Channel Region
ulReserved1 : LongInt; // Reserved 1
ulReserved2 : LongInt; // Reserved 2
end;
pmci_Dgv_Tuner_Parms = ^mci_Dgv_Tuner_Parms;
//********************************************************************/
// */
// MCI system value defines */
// */
//********************************************************************/
CONST
MSV_CLOSEDCAPTION = $0;
MSV_MASTERVOLUME = $1;
MSV_HEADPHONES = $2;
MSV_SPEAKERS = $3;
MSV_WORKPATH = $4;
MSV_SYSQOSVALUE = $5;
MSV_SYSQOSERRORFLAG = $6;
MSV_MAX = $7;
//********************************************************************/
// Playlist defines */
//********************************************************************/
DATA_OPERATION = 0;
BRANCH_OPERATION = 1;
LOOP_OPERATION = 2;
CALL_OPERATION = 3;
RETURN_OPERATION = 4;
EXIT_OPERATION = 5;
NOP_OPERATION = 6;
MESSAGE_OPERATION = 7;
CUEPOINT_OPERATION = 8;
SEMWAIT_OPERATION = 9;
SEMPOST_OPERATION = 10;
//********************************************************************/
// */
// MCI Function prototypes */
// */
//********************************************************************/
function mciSendCommand(usDeviceID: Integer; usMessage: Integer; ulParam1: LongInt;
var Param2; usUserParm: Integer): longint; cdecl;
function mciSendString(pszCommandBuf: pChar; pszReturnString: pChar;
wReturnLength: Integer; hwndCallBack: hwnd; usUserParm: Integer): longInt; cdecl;
function mciGetErrorString(ulError: LongInt; pszBuffer: pChar; usLength: Integer): longint; cdecl;
function mciMakeGroup(var usDeviceGroupID:Integer; usDeviceCount: Integer;
var ausDeviceList: Integer; ulFlags: LongInt; ulMMTime: LongInt): longint; cdecl;
function mciDeleteGroup(usGroupID:Integer): longint; cdecl;
function mciSetSysValue(iSysValue: Integer; var Value): Boolean; cdecl;
function mciQuerySysValue(iSysValue: Integer;var Value): Boolean; cdecl;
function mciGetDeviceID(pszName: pChar): Longint; cdecl;
Implementation
function mSecToMM(Value: Cardinal): mmTime;
begin
If Value > $FFFFFFFF div 3 then
mSecToMM := 0
else
mSecToMM := Value div 3;
end;
function mSecFromMM(Value: mmTime): LongInt;
begin
mSecFromMM := (Value+1) div 3;
end;
function RedBookToMM(Value: Cardinal): mmTime;
begin
RedBookToMM := ( Value and $0000FF ) * 60 * 3000 +
( Value and $00FF00 ) * $100 * 3000 +
( Value and $FF0000 ) * $10000 * 3000 div 75;
end;
function fps24ToMM(Value: Cardinal): mmTime;
begin
fps24toMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
( Value and $0000FF00 ) * $100 * 60 * 3000 +
( Value and $00FF0000 ) * $10000 * 3000 +
( Value and $FF000000 ) * $10000 * 3000 div 24;
end;
function fps25ToMM(Value: Cardinal): mmTime;
begin
fps25ToMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
( Value and $0000FF00 ) * $100 * 60 * 3000 +
( Value and $00FF0000 ) * $10000 * 3000 +
( Value and $FF000000 ) * $10000 * 3000 div 25;
end;
function fps30ToMM(Value: Cardinal): mmTime;
begin
fps30ToMM := ( Value and $000000FF ) * 60 * 60 * 3000 +
( Value and $0000FF00 ) * $100 * 60 * 3000 +
( Value and $00FF0000 ) * $10000 * 3000 +
( Value and $FF000000 ) * $10000 * 3000 div 30;
end;
function HMSToMM(Value: Cardinal): mmTime;
begin
HMSToMM := ( Value and $0000FF ) * 60 * 60 * 3000 +
( Value and $00FF00 ) * $100 * 60 * 3000 +
( Value and $FF0000 ) * $10000 * 3000;
end;
function RedBookFromMM(Value: mmTime): Cardinal;
begin
if Value+20 >= $100*60*3000 then
RedBookFromMM := 0
else
RedBookFromMM := (Value+20) div (60*3000) +
((Value+20) mod ((60*3000) div 3000)) shl 8 +
((Value+20) div ((3000 div 75) mod 75)) shl 16;
end;
function FPS24FromMM(Value: mmTime): Cardinal;
begin
if Value+63 >= $A4CB8000 then // $100*60*60*3000 then
FPS24FromMM := 0
else
FPS24FromMM := ((((Value+63) mod 3000) div (3000 div 24)) shl 24) and $FF000000 +
((((Value+63) div 3000) mod 60) shl 16) and $00FF0000 +
(((((Value+63) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
((((Value+63) div 3000) div 60) div 60) and $000000FF;
end;
function FPS25FromMM(value: mmTime): Cardinal;
begin
if Value+60 >= $A4CB8000 then // $100*60*60*3000
FPS25FromMM := 0
else
FPS25FromMM := ((((Value+60) mod 3000) div (3000 div 25)) shl 24) and $FF000000 +
((((Value+60) div 3000) mod 60) shl 16) and $00FF0000 +
(((((Value+60) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
((((Value+60) div 3000) div 60) div 60) and $000000FF;
end;
function FPS30FromMM(value: mmTime): Cardinal;
begin
if Value+50 >= $A4CB8000 then // $100*60*60*3000
FPS30FromMM := 0
else
FPS30FromMM := ((((Value+50) mod 3000) div (3000 div 30)) shl 24) and $FF000000 +
((((Value+50) div 3000) mod 60) shl 16) and $00FF0000 +
(((((Value+50) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
((((Value+50) div 3000) div 60) div 60) and $000000FF;
end;
function HMSFromMM(value: mmTime): Cardinal;
begin
if Value+50 >= $A4CB8000 then // $100*60*60*3000
HMSFromMM := 0
else
HMSFromMM := (((( Value+50) div 3000) mod 60) shl 16) and $00FF0000 +
(((((Value+50) div 3000) div 60) mod 60) shl 8) and $0000FF00 +
(((( Value+50) div 3000) div 60) div 60) and $000000FF;
end;
function tmsf_track(time: mmTime): Byte;
begin
tmsf_track := byte(time);
end;
function tmsf_minute(time: mmTime): Byte;
begin
tmsf_minute := pbyte(pchar(@time)+1)^;
end;
function tmsf_second(time: mmTime): Byte;
begin
tmsf_second := pbyte(pchar(@time)+2)^;
end;
function tmsf_frame(time: mmTime): Byte;
begin
tmsf_frame := pbyte(pchar(@time)+3)^;
end;
function msf_minute(time: mmTime): Byte;
begin
msf_minute := byte(time);
end;
function msf_second(time: mmTime): Byte;
begin
msf_second := pbyte(pchar(@time)+1)^;
end;
function msf_frame(time: mmTime): Byte;
begin
msf_frame := pbyte(pchar(@time)+2)^;
end;
function uLong_lwlb(var ul): Byte; // Low word low byte
begin
uLong_lwlb := LongInt(ul);
end;
function uLong_lwhb(var ul): Byte; // Low word high byte
begin
uLong_lwhb := pbyte(pchar(@ul)+1)^;
end;
function uLong_hwlb(var ul): Byte; // High word low byte
begin
uLong_hwlb := pbyte(pchar(@ul)+2)^;
end;
function uLong_hwhb(var ul): Byte; // High word high byte
begin
uLong_hwhb := pbyte(pchar(@ul)+3)^;
end;
function uLong_lowd(var ul): Word; // Low word
begin
uLong_lowd:=pWord(pchar(@ul))^;
end;
function uLong_hiwd(var ul): Word; // High word
begin
uLong_hiwd := pWord(pchar(@ul)+Sizeof(Word))^;
end;
function mciSendCommand(usDeviceID: Integer; usMessage: Integer; ulParam1: LongInt;
var Param2; usUserParm: Integer): longint; cdecl; external 'MDM' index 1;
function mciSendString(pszCommandBuf: pChar; pszReturnString: pChar;
wReturnLength: Integer; hwndCallBack: hwnd; usUserParm: Integer): longInt; cdecl; external 'MDM' index 2;
function mciGetErrorString(ulError: LongInt; pszBuffer: pChar; usLength: Integer): longint; cdecl; external 'MDM' index 3;
function mciMakeGroup(var usDeviceGroupID:Integer; usDeviceCount: Integer;
var ausDeviceList: Integer; ulFlags: LongInt; ulMMTime: LongInt): longint; cdecl; external 'MDM' index 12;
function mciDeleteGroup(usGroupID:Integer): longint; cdecl; external 'MDM' index 13;
function mciSetSysValue(iSysValue: Integer; var Value): Boolean; cdecl; external 'MDM' index 10;
function mciQuerySysValue(iSysValue: Integer;var Value): Boolean; cdecl; external 'MDM' index 11;
function mciGetDeviceID(pszName: pChar): Longint; cdecl; external 'MDM' index 16;
End.
{
$Log$
Revision 1.3 2003-02-15 18:44:55 hajny
* mmtk directory corrected to lowercase
Revision 1.1 2003/02/15 16:59:09 hajny
* mmtk directory corrected to lowercase
Revision 1.1 2003/02/09 13:49:06 hajny
+ mmtk added
}