| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617 |
- {========================================================================}
- {= (c) 1995-98 SwiftSoft Ronald Dittrich =}
- {========================================================================}
- {= All Rights Reserved =}
- {========================================================================}
- {= D 01099 Dresden = Fax.: +49 (0)351-8037944 =}
- {= Loewenstr.7a = info@swiftsoft.de =}
- {========================================================================}
- {= Actual versions on http://www.swiftsoft.de/mmtools.html =}
- {========================================================================}
- {= This code is for reference purposes only and may not be copied or =}
- {= distributed in any format electronic or otherwise except one copy =}
- {= for backup purposes. =}
- {= =}
- {= No Delphi Component Kit or Component individually or in a collection=}
- {= subclassed or otherwise from the code in this unit, or associated =}
- {= .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed =}
- {= without express permission from SwiftSoft. =}
- {= =}
- {= For more licence informations please refer to the associated =}
- {= HelpFile. =}
- {========================================================================}
- {= $Date: 26.03.98 - 18:28:09 $ =}
- {========================================================================}
- unit MMPCXTol;
- interface
- uses Windows;
- (*****************************************************************************)
- (* *)
- (* COPYRIGHT 1996 DIGIGRAM. ALL RIGHTS RESERVED. *)
- (* *)
- (* DIGIGRAM *)
- (* *)
- (*****************************************************************************)
- (* *)
- (* PcxTools.h *)
- (* *)
- (* Project : PCXTools *)
- (* *)
- (* File description : All external defines for using PcxTools.DLL *)
- (* *)
- (* Author : TL *)
- (* *)
- (* Creation date : 25/09/96 *)
- (* Last modification : 25/09/96 *)
- (*****************************************************************************)
- (*****************************************************************************)
- (* Constant definitions - PCXDEF_E.H - *)
- (*****************************************************************************)
- (* General types *)
- type
- FLOAT = SINGLE;
- PFLOAT = ^FLOAT;
- PPIPE_TYPE = ^TPIPE_TYPE;
- TPIPE_TYPE = DWORD;
- PSTREAM_TYPE = ^TSTREAM_TYPE;
- TSTREAM_TYPE = DWORD;
- POFFLINE_TYPE = ^TOFFLINE_TYPE;
- TOFFLINE_TYPE = DWORD;
- BOOL = LONGBOOL;
- (* General constants *)
- const
- MAX_STEREO_OUTAUDIO_BOARD = 12;
- MAX_STEREO_INAUDIO_BOARD = 12;
- SIZE_MAX_APP_NAME = 15;
- // ****************************
- // Time units for PCXAudio.dll
- // ***************************
- MS_UNIT = 0;
- SAMPLE_UNIT = 1;
- BYTES_UNIT = 2;
- FRAME_UNIT = 3;
- // ****************************
- // BoardType definitions values
- // --
- // For PCX API interface, see :
- // CARD_FEATURES_INFO
- // ****************************
- PCX_NO_PRESENT = 0;
- PCX9 = 1;
- PCX11 = 2;
- PCX20 = 3;
- PCX80 = 4;
- PCX11PLUS = 5;
- PCXPOCKET = 15;
- PCXPOCKET_AD = 16;
- PCX801 = 20;
- PCX800 = 22;
- PCX440 = 24;
- // ****************************
- // BusType definitions values
- // --
- // For PCX API interface, see :
- // CARD_FEATURES_INFO
- // ****************************
- ISABUS = 1;
- PCIBUS = 2;
- PCCARDBUS = 3;
- // ****************************
- // Address range masks
- // --
- // For PCX API interface, see :
- // CARD_FEATURES_INFO
- // ****************************
- BOARD_ADDRESS_MASK = $FFFFFFFE;
- BOARD_ADDRESS_SPACE_MASK = $00000001;
- BOARD_ADDRESS_MEM_SPACE = $00;
- BOARD_ADDRESS_IO_SPACE = $01;
- // ****************************
- // PipeAttributes definitions bits
- // --
- // For PCX API interface, see :
- // PIPE_DECL_INFO
- // *******************************
- PIPE_OUT = $00;
- PIPE_IN = $01;
- PIPE_OFFLINE = $02;
- PIPE_ONLINE = $00;
- // ****************************
- // AudioAttributes definitions bits
- // --
- // For PCX API interface, see :
- // AUDIO_DECL_INFO
- // ********************************
- AUDIO_PHYSICAL = $01;
- AUDIO_VIRTUAL = $00;
- AUDIO_OUT = $00;
- AUDIO_IN = $02;
- // ****************************
- // ApplicationAttributes definitions bits
- // --
- // For PCX API interface, see :
- // APP_DECL_INFO
- // **************************************
- APP_PRIVATE = $01;
- APP_PUBLIC = $00;
- // ****************************
- // StreamFormats definitions bits
- // --
- // For PCX API interface, see :
- // sdFormat in STREAM_DECL_INFO
- // dtlPlayFormats/dtlRecordFormats in DSP_TO_LOAD_INFO
- // *******************************************************
- STREAM_FMT_MPEGI = $00000020;
- STREAM_FMT_MPEGII = $00000040;
- STREAM_FMT_LIN_8 = $00000080;
- STREAM_FMT_LIN_16 = $00000100;
- STREAM_FMT_LIN_24 = $00000200;
- STREAM_FMT_CELP = $00000400;
- // ****************************
- // Mute values
- // ***********
- MUTE_ON = 1;
- MUTE_OFF = 0;
- // ****************************
- // Level values
- // ************
- MAX_DIGITAL_LEVEL : FLOAT = + 18.0;
- MAX_ANALOG_LEVEL : FLOAT = + 0.0;
- LEVEL_0DB : FLOAT = 0.0;
- LEVEL_NEGATIVE_INFINITY : FLOAT = -110.0;
- // ****************************
- // No object specified
- // ********************
- NO_PIPE = $00000000;
- NO_STREAM = $00000000;
- // ****************************
- // Values that describe physical audio features
- // --
- // For PCX API interface, see :
- // ciPhysicalOutFeature/ciPhysicalInFeature in CARD_FEATURES_INFO
- // ipspADSelect in IN_PIPE_SET_PARAM_INFO
- // *******************************************************************
- // Values used for both inputs and outputs
- // --
- AUDIO_ANALOG_PRESENT_MASK = $01;
- AUDIO_LEVEL_PRESENT_MASK = $10;
- // --
- // Additional values used for outputs only
- // --
- AUDIO_DIGITAL_PRESENT_MASK = $02;
- // --
- // Additional values used for inputs only
- // --
- AUDIO_DIGITAL_SYNCHRO_PRESENT_MASK = $02;
- AUDIO_DIGITAL_DATA_PRESENT_MASK = $04;
- AUDIO_ANALOG_MICRO_PRESENT_MASK = $08;
- // Source selector values for sound data input
- // --
- // For PCX API interface, see :
- // ipspADSelect in IN_PIPE_SET_PARAM_INFO
- // ********************************************
- DATA_FROM_NO_INPUT = 0;
- DATA_FROM_DIGITAL_SYNCHRO = AUDIO_DIGITAL_SYNCHRO_PRESENT_MASK;
- DATA_FROM_DIGITAL_DATA = AUDIO_DIGITAL_DATA_PRESENT_MASK;
- DATA_FROM_ANALOG = AUDIO_ANALOG_PRESENT_MASK;
- DATA_FROM_MICRO = AUDIO_ANALOG_MICRO_PRESENT_MASK;
- // Values for uer type of a pipe
- // --
- // For PCX API interface, see :
- // opspUer in OUT_PIPE_SET_PARAMETER_INFO
- // uiMode in UER_INFO
- // ******************************************
- UER_NO_MODE = 0;
- UER_MODE_UNKNOWN = 0;
- UER_PROFESSIONAL = 1;
- UER_CONSUMER = 2;
- // Values for presence of uer data
- // --
- // For PCX API interface, see :
- // uiData in UER_INFO
- // *******************************
- UER_DATA_UNKNOWN = 0;
- UER_NO_DATA = 1;
- UER_DATA_PRESENT = 2;
- (*****************************************************************************)
- (* Constant declarations - PCXTools.h - *)
- (*****************************************************************************)
- const
- MIN_VERSION = 3;
- MIN_RELEASE = 40;
- // Version states
- OFFICIAL_VERSION = 0;
- BETA_VERSION = 1;
- ALPHA_VERSION = 2;
- // General constants
- MAX_BOARD = 8;
- MAX_PCX_HANDLE = 32;
- MAX_INPIPE = 32;
- MAX_OUTPIPE = 32;
- MAX_AUDIO_PIPE = 2;
- MAX_STREAM_PIPE = 24;
- MAX_PCXTOOLS_USERS = 8;
- // Channels type
- CHANNEL_OUT = 0;
- CHANNEL_IN = 1;
- // Automatic allocation of the channel
- AUTOMATIC_ALLOCATION = 0;
- // Old Pcx cards
- BOARD_PCX3 = 250;
- BOARD_PCX5 = 251;
- BOARD_PCX7 = 252;
- // All stream format
- STREAM_FMT_ALL = (STREAM_FMT_MPEGI or STREAM_FMT_MPEGII or
- STREAM_FMT_LIN_8 or STREAM_FMT_LIN_16);
- // Mono / stereo modes
- MONO = 1;
- STEREO = 2;
- // Output channel and level type
- ANALOG_TYPE = 0;
- DIGITAL_TYPE = 1;
- NO_DEFINED_TYPE = 2;
- // Sound's analog source
- SOURCE_LINE = 0;
- SOURCE_MIC = 1;
- // Channel's state
- IO_FREE = 0;
- IO_PRIVATE = 1;
- IO_PUBLIC = 2;
- // Frequency unknown
- CLOCK_FREQ_UNKNOWN = 1;
- // Special pipe's clocks
- CLOCK_DIGITAL = 0;
- CLOCK_FIRST = 1;
- CLOCK_LAST = 2;
- CLOCK_LAST_SAFE = 3;
- CLOCK_NO = 4;
- CLOCK_DIGITAL_SYNCHRO = 5;
- // Doesn't change the level
- LEVEL_NO_CHANGE : FLOAT = -1999.0;
- // Sides
- SIDE_LEFT = 0;
- SIDE_RIGHT = 1;
- // Pipe states
- PIPE_NOT_ALLOCATED = 0;
- PIPE_STOPPED = 1;
- PIPE_STARTED = 2;
- PIPE_BUSY = 3;
- PIPE_UNDERRUN = 4;
- PIPE_PAUSED = 5;
- // 8 first stream's numbers
- STREAM_1 = $0001;
- STREAM_2 = $0002;
- STREAM_3 = $0004;
- STREAM_4 = $0008;
- STREAM_5 = $0010;
- STREAM_6 = $0020;
- STREAM_7 = $0040;
- STREAM_8 = $0080;
- // Stream states
- STREAM_NOT_AVAILABLE = 0;
- STREAM_FREE = 1;
- STREAM_INITIALIZED = 2;
- STREAM_BUSY = 3;
- STREAM_UNDERRUN = 4;
- STREAM_PAUSED = 5;
- // Defines used for Play functions
- // -------------------------------
- // Start condition
- ASAP = 0; // As Soon As Possible
- ONSTART = 1; // On Start
- ASAEOF = 2; // As Soon As End Of (previous) File
- STREAMBEGINREF = 3; // Start depending on another stream time starting at begining
- STREAMENDREF = 4; // Start depending on another stream time from end of play
- PIPEREF = 5; // Start depending on the pipe time
- AFTER_CURRENT = 6; // Like ASAEOF but flush the current waiting list of files
- TIME_UNIT = 10;
- // Loop
- INFINITE_LOOP = -1;
- NO_LOOP = 0;
- // End position for play
- PLAY_ALL_FILE = 0;
- RECORD_UNTIL_STOP = 0;
- // Record mode
- RECORD_MODE_SAFE = 0;
- RECORD_MODE_ERASE = 1;
- // Level curves types
- CURVE_LINEAR = 0;
- // Sound's format infos
- // --------------------
- // Extra infos if pipe is stereo
- STEREO_NORMAL = 0;
- STEREO_DUAL_CHANNEL = 1;
- STEREO_JOINT = 2;
- // Compression formats
- MPEG_FMT = 1;
- PCM_8BITS_FMT = 8;
- PCM_16BITS_FMT = 16;
- PCM_24BITS_FMT = 24;
- // Layer
- LAYER_1 = 1;
- LAYER_2 = 2;
- // Linear format type
- LIN_INTEL = 1;
- LIN_MOTOROLA = 2;
- // File Type
- RAW_TYPE = 0;
- WAV_TYPE = 1;
- MUSIFILE_TYPE = 2;
- // Ancillary data
- NO_ANCILLARY_DATA = 0;
- ENERGY_DATA = 1;
- // Padding bit
- NO_PADDING_BIT = 0;
- WITH_PADDING_BIT = 1;
- // Frequency set by digital input
- DIGITAL_FREQUENCY = 0;
- // Energy default resolution
- NRJ_DEFAULT_RESOLUTION = $FFFFFFFF;
- // Energy format
- NRJ_RAW_8BITS = 0;
- NRJ_RAW_16BITS = 1;
- // Effects
- // -------
- // Speed maximum for TOOLPipeSpeed
- MAX_SPEED = 700;
- // Noise reduction type
- NOISE_LOW = 0;
- NOISE_MEDIUM = 1;
- NOISE_HI = 2;
- // Misc
- // ----
- // Event type
- TELL_ERROR_RUNTIME = 0;
- TELL_BEFORE_END_STREAM = 1;
- TELL_BEGIN_FILE = 2;
- TELL_CLOSE_FILE = 3;
- TELL_END_FILE = 4;
- TELL_SEND_MORE_LEVELS = 5;
- TELL_RELEASE_PIPE = 6;
- TELL_ADD_CARD = 7;
- TELL_REMOVE_CARD = 8;
- // Errors
- // ------
- // Bits masks
- // **********
- ERROR_MASK = $8000;
- SOURCE_MASK = $7800;
- E_SOURCE_BOARD = $4000;
- E_SOURCE_DRV = $2000;
- E_SOURCE_API = $1000;
- // Error tools
- E_SOURCE_TOOLS = $0800;
- // Error pcxaudio
- E_SOURCE_AUDIO = $1800;
- E_SOURCE_USER = $7800;
- CLASS_MASK = $0700;
- CODE_MASK = $00FF;
- E_CLASS_GENERAL = $0000;
- E_CLASS_INVALID_CMD = $0100;
- E_CLASS_INVALID_STD_OBJECT = $0200;
- E_CLASS_RSRC_IMPOSSIBLE = $0300;
- E_CLASS_WRONG_CONTEXT = $0400;
- E_CLASS_BAD_SPECIFIC_PARAMETER = $0500;
- E_CLASS_REAL_TIME_ERROR = $0600;
- E_CLASS_FREE = $0700;
- // General errors
- EU_G = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_GENERAL;
- EU_FUNCTION_NOT_YET_AVAILABLE = $01 or EU_G;
- EU_REGISTER_TWICE = $02 or EU_G;
- EU_CANT_GET_WINDOW_HANDLE = $03 or EU_G;
- EU_UNREGISTER_IMPOSSIBLE = $04 or EU_G;
- EU_DSP_ALREADY_USED = $05 or EU_G;
- EU_CANT_ACCESS_SOUND_FILE = $06 or EU_G;
- EU_ERROR_GET_FILE_INFO = $07 or EU_G;
- EU_STOP_STREAM_TIME_OUT = $08 or EU_G;
- EU_MUTEX_TIMEOUT = $09 or EU_G;
- EU_DIGITAL_NOT_AVAILABLE = $0A or EU_G;
- EU_DSP_NOT_DOWNLOADED = $0B or EU_G;
- EU_PLUGIN_DLL_NOT_FOUND = $0C or EU_G;
- EU_DRIVER_NOT_INSTALLED = $0D or EU_G;
- EU_DRIVER_NOT_PRESENT = $0E or EU_G;
- EU_API_DLL_NOT_FOUND = $0F or EU_G;
- EU_CANT_LOAD_API_DLL = $10 or EU_G;
- EU_AUDIO_DLL_NOT_FOUND = $11 or EU_G;
- EU_CANT_LOAD_AUDIO_DLL = $12 or EU_G;
- EU_CANT_ACCESS_ENERGY_FILE = $13 or EU_G;
- EU_TOOLS_DLL_NOT_FOUND = $14 or EU_G;
- EU_G_LAST = $15;
- // Invalid command errors
- EU_IC = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_INVALID_CMD;
- EU_IC_LAST = $01;
- // Invalid standard object errors
- EU_ISO = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_INVALID_STD_OBJECT;
- EU_UNKNOWN_BOARD = $01 or EU_ISO;
- EU_INVALID_PIPE = $02 or EU_ISO;
- EU_INVALID_STREAM = $03 or EU_ISO;
- EU_STREAM_NOT_READY = $04 or EU_ISO;
- EU_INVALID_SOUND_FILE = $05 or EU_ISO;
- EU_CANT_SAVE_RECORD_BUFFER = $06 or EU_ISO;
- EU_PCM_HEADER_NOT_SUPPORTED = $07 or EU_ISO;
- EU_DSP_CANT_BE_LOCATED = $08 or EU_ISO;
- EU_DSP_CANT_DO_IT = $09 or EU_ISO;
- EU_INVALID_BUFFER = $0A or EU_ISO;
- EU_FREE_FORMAT_NOT_SUPPORTED = $0B or EU_ISO;
- EU_UNKNOWN_ANCILLARY_DATA = $0C or EU_ISO;
- EU_SOUND_FILE_TOO_SMALL = $0D or EU_ISO;
- EU_ISO_LAST = $0E;
- // Impossible to allocate the ressource
- EU_RI = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_RSRC_IMPOSSIBLE;
- EU_CANT_CREATE_THREAD = $01 or EU_RI;
- EU_CANT_CREATE_EVENT = $02 or EU_RI;
- EU_CANT_ALLOCATE_BUFFER = $03 or EU_RI;
- EU_CHANNEL_ALREADY_USED = $04 or EU_RI;
- EU_CHANNEL_NOT_PRESENT = $05 or EU_RI;
- EU_NOT_ENOUGH_CHANNEL = $06 or EU_RI;
- EU_NOT_ENOUGH_MEMORY = $07 or EU_RI;
- EU_NOT_ENOUGH_SPACE_ON_DISK = $08 or EU_RI;
- EU_CANT_WRITE_ON_DISK = $09 or EU_RI;
- EU_CANT_CREATE_SOUND_FILE = $0A or EU_RI;
- EU_CANT_CREATE_ENERGY_FILE = $0B or EU_RI;
- EU_NOT_ENOUGH_PIPE_NOTIFICATION= $0C or EU_RI;
- EU_RI_LAST = $0D;
- // Fonction called in a bad context
- EU_BC = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_WRONG_CONTEXT;
- EU_CANT_CHANGE_FREQ = $01 or EU_BC;
- EU_CANT_CHANGE_FREQ_PLAYING = $02 or EU_BC;
- EU_FREQUENCY_NOT_SET = $03 or EU_BC;
- EU_STREAM_NOT_RUNNING = $04 or EU_BC;
- EU_BOARD_HAVE_NO_INPUT = $05 or EU_BC;
- EU_MUST_SET_RECORD_FMT_FIRST = $06 or EU_BC;
- EU_IMP_WITH_NOT_HOMOGENEOUS_FILE = $07 or EU_BC;
- EU_BOARD_HAVE_NO_ANALOG_OUTPUT = $08 or EU_BC;
- EU_IMP_IN_SCRUB_MODE = $09 or EU_BC;
- EU_IMP_WITHOUT_SCRUB_MODE = $0A or EU_BC;
- EU_LINEAR_NOT_SUPPORTED = $0B or EU_BC;
- EU_BC_LAST = $0C;
- // Parameter wrong
- EU_BSP = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_BAD_SPECIFIC_PARAMETER;
- EU_INCORRECT_PARAMETER_1 = $01 or EU_BSP;
- EU_INCORRECT_PARAMETER_2 = $02 or EU_BSP;
- EU_INCORRECT_PARAMETER_3 = $03 or EU_BSP;
- EU_INCORRECT_PARAMETER_4 = $04 or EU_BSP;
- EU_INCORRECT_PARAMETER_5 = $05 or EU_BSP;
- EU_INCORRECT_PARAMETER_6 = $06 or EU_BSP;
- EU_INCORRECT_PARAMETER_7 = $07 or EU_BSP;
- EU_INCORRECT_PARAMETER_8 = $08 or EU_BSP;
- EU_INCORRECT_PARAMETER_9 = $09 or EU_BSP;
- EU_INCORRECT_PARAMETER_10 = $0A or EU_BSP;
- EU_INCORRECT_PARAMETERS = $0B or EU_BSP;
- EU_CANT_CREATE_HEADER = $0C or EU_BSP;
- EU_FILE_POSITION_TOO_HIGH = $0D or EU_BSP;
- EU_INCOMPATIBLE_SOUND_FORMAT = $0E or EU_BSP;
- EU_INVALID_FREQUENCY = $0F or EU_BSP;
- EU_UNAVAILABLE_FREQUENCY = $10 or EU_BSP;
- EU_INVALID_MODE = $11 or EU_BSP;
- EU_UNAVAILABLE_MODE = $12 or EU_BSP;
- EU_INVALID_FILE_FORMAT = $13 or EU_BSP;
- EU_UNAVAILABLE_BITRATE = $14 or EU_BSP;
- EU_EVENT_NOT_FOUND = $15 or EU_BSP;
- EU_BSP_LAST = $16;
- // Realtime errors
- EU_RT = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_REAL_TIME_ERROR;
- EU_BUFFERS_IN_DRIVER = $01 or EU_RT;
- EU_RECORD_ABORTED = $02 or EU_RT;
- EU_PIPE_TIME_NOTIFY_NO_REASON = $03 or EU_RT;
- EU_RT_LAST = $04;
- // Free-class errors
- EU_FC = E_SOURCE_TOOLS or ERROR_MASK or E_CLASS_FREE;
- EU_FC_LAST = $01;
- // Warnings
- // --------
- WU_UNREGISTER_UNKNOWN_APP = $01 or E_SOURCE_TOOLS;
- WU_SAMPLES_TRUNCATED = $02 or E_SOURCE_TOOLS;
- WU_START_POSITION_MOVED = $03 or E_SOURCE_TOOLS;
- WU_HEADER_NOT_FOUND = $04 or E_SOURCE_TOOLS;
- WU_NOT_ENOUGH_SPACE = $05 or E_SOURCE_TOOLS;
- WU_NO_MORE_EVENT = $06 or E_SOURCE_TOOLS;
- WU_END_POS_TOO_FAR = $07 or E_SOURCE_TOOLS;
- WU_INVALID_OFFLINE_HANDLE = $08 or E_SOURCE_TOOLS;
- WU_LAST = $09;
- (****************)
- (* Declarations *)
- (****************)
- end.
|