home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mmpm21tk.zip
/
TK
/
H
/
AUDIO.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-03-29
|
16KB
|
457 lines
/****************************************************************************/
/* */
/* Module Name: AUDIO.H */
/* */
/* OS/2 2.0 Multimedia Extensions Audio Structures and definitions. */
/* */
/* Copyright (c) International Business Machines Corporation 1991, 1992 */
/* All Rights Reserved */
/* */
/****************************************************************************/
/*-------------------------------------------------------------------------*
* AUDIODD version level
*-------------------------------------------------------------------------*/
#define CURRENT_VERSION 0x01020000
/*-------------------------------------------------------------------------*
* ACPA control definitions
*-------------------------------------------------------------------------*/
#define AUDIO_IOCTL_CAT 0x80
#define AUDIO_INIT 0x40
#define AUDIO_STATUS 0x41
#define AUDIO_CONTROL 0x42
#define AUDIO_BUFFER 0x43
#define AUDIO_LOAD 0x44
#define AUDIO_WAIT 0x45
#define AUDIO_HPI 0x46
/*-------------------------------------------------------------------------*
* AUDIO_INIT declarations and defines
*-------------------------------------------------------------------------*/
#define LOAD_PATH 260
/* Values for AUDIO_INIT.sMode */
#define ADPCM 1 /* AVC type ADPCM */
#define PCM 2 /* Pulse Coded Modulation */
#define MU_LAW 3 /* mu-law */
#define MIDI 4 /* MIDI data */
#define A_LAW 5 /* a-law */
#define SOURCE_MIX 6 /* External audio source */
#define SPV2 7 /* Speech Viewer/2 */
#define ADPCMXA 8 /* XA CD ROM */
#define SPV2BCPCM 25 /* Speech Viewer/2 */
#define SPV2PCM 26
#define SPV2NONE 27
#define IDLE 999
#define CLAIM_HDWR 32000 /* Serialize access to hardware */
/* Values for AUDIO_INIT.ulFlags */
#define FIXED 0x00000001l /* Fixed length data */
#define LEFT_ALIGNED 0x00000002l /* Left align bits on byte bndry */
#define RIGHT_ALIGNED 0x00000004l /* Right align bits on byte bndry*/
#define TWOS_COMPLEMENT 0x00000008l /* 2's complement data */
#define SIGNED 0x00000010l /* Signed data */
#define BIG_ENDIAN 0x00000020l /* MSB's first (motorola format) */
#define PITCH 0x00100000l /* Pitch control is supported */
#define INPUT 0x00200000l /* Input select is supported */
#define OUTPUT 0x00400000l /* Output select is supported */
#define MONITOR 0x00800000l /* Monitor is supported */
#define VOLUME 0x01000000l /* Volume control is supported */
#define VOLUME_DELAY 0x02000000l /* Volume delay is supported */
#define BALANCE 0x04000000l /* Balance control is supported */
#define BALANCE_DELAY 0x08000000l /* Balance delay is supported */
#define TREBLE 0x10000000l /* Treble control is supported */
#define BASS 0x20000000l /* Bass control supported */
#define BESTFIT_PROVIDED 0x40000000l /* bestfit returned */
#define LOAD_CODE 0x80000000l /* DSP load needed */
/* Values for AUDIO_INIT.ulOperation */
#define OPERATION_PLAY 1
#define OPERATION_RECORD 2
#define PLAY_AND_RECORD 3
#define ANALYSIS 6 /* Speech Viewer/2 */
#define DISTANCE 7 /* Speech Viewer/2 */
#define MIGRATION 8 /* Speech Viewer/2 */
/* Values for AUDIO_INIT.sReturnCode */
#define NO_PLAY 1
#define NO_RECORD 2
#define NO_RECORD_AND_PLAY 3
#define INVALID_REQUEST 4
#define CONFLICT 5
#define OVERLOADED 6
#define DOWNLEVEL_DD 7 /* DD is down level from appl. */
#define DSP_LOAD_PENDING_ON_OTHER_TRK 8 /* Other trk hasn't loaded dsp */
#define AUDIO_IGNORE -1
/* Values for AUDIO_INIT.sDeviceID */
#define MINIDD 0
#define ACPA 1
#define MACPA 2
#define MPU401 3
#define SOUND_BLASTER 4
#define IMF 5
#define PS1 6
#define PAS16 7
/* XLATOFF */
#pragma pack(1)
/* XLATON */
/* AUDIO_INIT structure declaration */
typedef struct _init { /* init */
LONG lSRate;
LONG lBitsPerSRate;
LONG lBsize;
SHORT sMode;
SHORT sChannels;
LONG lResolution;
CHAR abLoadPath[LOAD_PATH];
ULONG ulFlags;
ULONG ulOperation;
SHORT sReturnCode;
SHORT sSlotNumber;
SHORT sDeviceID;
VOID FAR *pvReserved; /* MMPM2 uses this to pass back sysfilenum */
ULONG ulVersionLevel;
} MCI_AUDIO_INIT;
typedef MCI_AUDIO_INIT FAR *LPMCI_AUDIO_INIT;
/*-------------------------------------------------------------------------*
* AUDIO_DEVID declarations and defines
*-------------------------------------------------------------------------*/
typedef struct _MCI_AUDIO_DEVID { /* devid */
ULONG ulDevType;
ULONG ulDevNum;
} MCI_AUDIO_DEVID;
typedef MCI_AUDIO_DEVID FAR *LPMCI_AUDIO_DEVID;
/* Input devices */
#define NULL_INPUT 0
#define STEREO_LINE_INPUT 1
#define LEFT_LINE_INPUT 2
#define RIGHT_LINE_INPUT 3
#define MIC_INPUT 4
#define BOOSTED_MIC_INPUT 5
#define PHONE_LINE_INPUT 6
#define HANDSET_INPUT 7
#define SYNTH_INPUT 8
#define DIGITAL_PHONE_LINE_INPUT 9
#define DIGITAL_HANDSET_INPUT 10
#define MIDI_IN_PORT 11
#define LOOPBACK 11
#define DEFAULT_INPUT 0XFFFFFFFF
/* Output devices */
#define NULL_OUTPUT 0
#define STEREO_LINE_OUTPUT 1
#define LEFT_LINE_OUTPUT 2
#define RIGHT_LINE_OUTPUT 3
#define SPEAKER_OUTPUT 4
#define HEADSET_OUTPUT 5
#define PHONE_LINE_OUTPUT 6
#define HANDSET_OUTPUT 7
#define SYNTH_OUTPUT 8
#define DIGITAL_PHONE_LINE_OUTPUT 9
#define DIGITAL_HANDSET_OUTPUT 10
#define MIDI_OUT_PORT 11
#define DEFAULT_OUTPUT 0XFFFFFFFF
/* Defined values for DevNum */
#define DEFAULT_DEVICE 0
#define DEVICE_1 1
#define DEVICE_2 2
/*-------------------------------------------------------------------------*
* AUDIO_CHANGE declarations and defines
*-------------------------------------------------------------------------*/
/* Values for AUDIO_CHANGE.lMonitor */
#define MONITOR_OFF 0
#define MONITOR_UNCOMPRESSED 1
#define MONITOR_COMPRESSED 2
/* Values for AUDIO_CHANGE.lInput */
#define HIGH_GAIN_MIC 0
#define LINE_1 1
#define LINE_2 2
#define LINES_1AND2 3
#define LOW_GAIN_MIC 4
#define ALL_LINES 0xFFFF
#define INPUTS_LISTED 0x5555
/* Values for AUDIO_CHANGE.lOutput */
#define EXTERNAL_SPEAKER 1
#define INTERNAL_SPEAKER 2
#define OUTPUT_1 4
#define OUTPUTS_LISTED 0x5555
/* AUDIO_CHANGE structure declaration */
typedef struct _MCI_AUDIO_CHANGE { /* chang */
VOID FAR *pvDevInfo;
LONG lInput;
LONG lOutput;
LONG lMonitor;
LONG lVolume;
LONG lVolumeDelay;
LONG lBalance;
LONG lBalanceDelay;
LONG lTreble;
LONG lBass;
LONG lPitch;
MCI_AUDIO_DEVID rInputList[8];
MCI_AUDIO_DEVID rOutputList[8];
LPMCI_AUDIO_DEVID prMoreInputs;
LPMCI_AUDIO_DEVID prMoreOutputs;
LONG lGain;
VOID FAR *pvModeInfo;
} MCI_AUDIO_CHANGE;
typedef MCI_AUDIO_CHANGE FAR *LPMCI_AUDIO_CHANGE;
typedef struct _mode_info { /* mode_info */
SHORT sTempo;
SHORT sCPQN;
SHORT sMidiSwitches;
SHORT sReserved[5];
} MIDI_INFO;
/*************************************************************************
* MIDI Switches
***************************************************************************/
#define MIDI_THRU_THRU 0
#define MIDI_THRU_OUT 1
/*-------------------------------------------------------------------------*
* AUDIO_STATUS declarations and defines
*-------------------------------------------------------------------------*/
/* Values for AUDIO_STATUS.ulOperation */
#define STOPPED 0
#define PLAYING 1
#define RECORDING 2
#define PLAYING_AND_RECORDING 3
#define UNITIALIZED 0xFFFFFFFF
/* AUDIO_STATUS structure declaration */
typedef struct _status { /* status */
LONG lSRate;
LONG lBitsPerSRate;
LONG lBsize;
SHORT sMode;
SHORT sChannels;
ULONG ulFlags;
ULONG ulOperation;
MCI_AUDIO_CHANGE rAudioChange;
} MCI_AUDIO_STATUS;
typedef MCI_AUDIO_STATUS FAR *LPMCI_AUDIO_STATUS;
/*-------------------------------------------------------------------------*
* AUDIO_CONTROL declarations and defines
*-------------------------------------------------------------------------*/
/* Values for AUDIO_CONTROL.usIOCtlRequest */
#define AUDIO_CHANGE 0
#define AUDIO_START 1
#define AUDIO_STOP 2
#define AUDIO_PAUSE 3
#define AUDIO_RESUME 4
/* Values for AUDIO_CONTROL.sReturnCode */
#define AC_UNINITED 1 /* Device must be init'ed or loaded first */
#define FULL_QUEUE 2 /* Maximum # requests exceeded */
#define AC_UNPAUSED 3 /* Resume issued, but dev not paused */
#define INVALID_REQUEST 4 /* bad audio_control.ioctl_request */
#define AC_UNSTARTED 5 /* Device must be started first */
#define INVALID_INPUT_LIST 7 /* invalid change.input_list entry */
#define INVALID_OUTPUT_LIST 8 /* invalid change.output_list entry */
/* AUDIO_CONTROL structure declaration */
typedef struct _contr { /* contr */
USHORT usIOCtlRequest;
VOID FAR *pbRequestInfo;
ULONG ulPosition;
SHORT sReturnCode;
} MCI_AUDIO_CONTROL;
typedef MCI_AUDIO_CONTROL FAR *LPMCI_AUDIO_CONTROL;
/*-------------------------------------------------------------------------*
* AUDIO_BUFFER declarations and defines
*-------------------------------------------------------------------------*/
/* Values for AUDIO_BUFFER.ulFlags */
#define AUDIO_UNDERRUN 1
#define AUDIO_OVERRUN 2
/* Values for AUDIO_BUFFER.ulPositionType */
#define POS_MSECS 0
#define MIDI_CLOCKS 1
#define SMPTE_24 24
#define SMPTE_25 25
#define SMPTE_30DF 29
#define SMPTE_30 30
typedef struct _buffer { /* buffer */
ULONG ulFlags;
ULONG ulReadBufSize;
ULONG ulWriteBufSize;
ULONG ulReadBufTime;
ULONG ulWriteBufTime;
ULONG ulReadBufMax;
ULONG ulWriteBufMax;
ULONG ulPosition;
ULONG ulPositionType;
LONG lReadBufCap;
LONG lWriteBufCap;
LONG lRequestBufCap;
} MCI_AUDIO_BUFFER;
typedef MCI_AUDIO_BUFFER FAR *LPMCI_AUDIO_BUFFER;
/*-------------------------------------------------------------------------*
* AUDIO_LOAD declarations and defines
*-------------------------------------------------------------------------*/
/* Values for AUDIO_LOAD.ulFlags */
#define LOAD_START 0x01
#define LOAD_END 0x02
#define LOAD_32BIT 0x10
typedef struct _load { /* load */
CHAR FAR *pbBuffer;
ULONG ulSize;
ULONG ulFlags;
} MCI_AUDIO_LOAD;
typedef MCI_AUDIO_LOAD FAR *LPMCI_AUDIO_LOAD;
/*-------------------------------------------------------------------------*
* Track info declarations and defines
*-------------------------------------------------------------------------*/
/* Track Info structure declaration */
typedef struct _info { /* info */
USHORT usMasterVolume;
USHORT usDitherPct; /* Percent of a bit dither during record */
USHORT usMasterVolumeDelay;
USHORT usMasterBalance;
USHORT usMasterBalanceDelay;
} MCI_TRACK_INFO;
typedef MCI_TRACK_INFO FAR *LPMCI_TRACK_INFO;
/*-------------------------------------------------------------------------*
* IOBUFFER declarations and defines
*-------------------------------------------------------------------------*/
#define STARTED 1
#define PAUSED 2
typedef struct _MCI_AUDIO_IOBUFFER { /* iobuffer */
ULONG lSize;
CHAR FAR *pHead;
CHAR FAR *pTail;
LONG lCount;
ULONG ulPosition;
LONG lDelay;
USHORT usRunFlags;
USHORT usSelInc;
CHAR FAR *pBuffer;
} MCI_AUDIO_IOBUFFER;
typedef MCI_AUDIO_IOBUFFER FAR *LPMCI_AUDIO_IOBUFFER;
/*-------------------------------------------------------------------------*
* AUDIO_HPI declarations and defines
*-------------------------------------------------------------------------*/
#define CBXMIT 1
#define CBREC 2
#define CRTIMER 4
#define EP_OPEN 0
#define EP_CLOSE 1
#define EP_READ 2
#define EP_WRITE 3
#define EP_INIT 4
#define EP_STATUS 5
#define EP_CONTROL 6
#define EP_BUFFER 7
#define EP_LOAD 8
#define EP_WAIT 9
typedef struct _hpi { /* hpi */
VOID (FAR *pvEntry)();
VOID (FAR *pvCallBack)();
LPMCI_AUDIO_IOBUFFER prXBuff;
LPMCI_AUDIO_IOBUFFER prRBuff;
USHORT usFlags;
} MCI_AUDIO_HPI;
typedef MCI_AUDIO_HPI FAR *LPMCI_AUDIO_HPI;
/**************************/
/* AUDIO_UPDATE Structure */
/**************************/
typedef struct _audio_update { /* update */
CHAR iobuf_type; /* 0 - XMITIO, 1 - RECIO to be updated */
CHAR FAR *buffer_address; /* address to buffer to be added to array */
ULONG buffer_length; /* length of buffer to be added */
USHORT rc; /* return code */
void FAR *reserved; /* future use */
};
typedef struct audio_update FAR *UPDATE;
/* audio_update.iobuf_type definitions */
#define XMIT_IOBUF 0
#define REC_IOBUF 1
/* audio_update.rc definitions */
#define MAX_NUM_BUFFERS_REACHED 9
#define UPDATE_GENERAL_FAILURE 10
#define INVALID_BUFFER_LENGTH 11
/* XLATOFF */
#pragma pack()
/* XLATON */