📄 mss.h
字号:
void FAR *dest,
U32 operation,
U32 big_endian_output);
#else
typedef void (AILCALL FAR *MIXER_COPY) (void const FAR *src,
S32 src_len,
void FAR *dest,
U32 operation,
U32 MMX_available);
#endif
#else
//
// Initialize mixer
//
// No other mixer functions may be called outside a MIXER_startup() /
// MIXER_shutdown() pair, except for the standard RIB function
// PROVIDER_query_attribute(). All provider attributes must be accessible
// without starting up the module.
//
typedef void (AILCALL FAR *MIXER_STARTUP)(void);
//
// Shut down mixer
//
typedef void (AILCALL FAR *MIXER_SHUTDOWN)(void);
//
// Flush mixer buffer
//
typedef void (AILCALL FAR *MIXER_FLUSH) (S32 FAR *dest,
S32 len,
U32 MMX_available);
//
// Perform audio mixing operation
//
typedef void (AILCALL FAR *MIXER_MERGE) (U32 src_sel,
U32 dest_sel,
U32 FAR *src_fract,
U32 FAR *src_offset,
U32 FAR *dest_offset,
U32 src_end_offset,
U32 dest_end_offset,
S32 FAR *left_val,
S32 FAR *right_val,
S32 playback_ratio,
S32 scale_both,
U32 operation);
//
// Translate mixer buffer contents to final output format
//
typedef void (AILCALL FAR *MIXER_COPY) (void const FAR *src,
S32 src_len,
void FAR *dest,
U32 operation,
U32 MMX_available);
#endif
//
// Type definitions
//
struct _DIG_DRIVER;
struct _MDI_DRIVER;
typedef struct _DIG_DRIVER FAR * HDIGDRIVER; // Handle to digital driver
typedef struct _MDI_DRIVER FAR * HMDIDRIVER; // Handle to XMIDI driver
typedef struct _SAMPLE FAR * HSAMPLE; // Handle to sample
typedef struct _SEQUENCE FAR * HSEQUENCE; // Handle to sequence
typedef S32 HTIMER; // Handle to timer
#ifdef IS_DOS
//
// Type definitions
//
typedef struct // I/O parameters structure
{
S16 IO;
S16 IRQ;
S16 DMA_8_bit;
S16 DMA_16_bit;
S32 IO_reserved[4];
}
IO_PARMS;
typedef struct // Standard MSS 3.X VDI driver header
{
S8 ID[8]; // "AIL3xxx" ID string, followed by ^Z
U32 driver_version;
REALFAR common_IO_configurations;
U16 num_IO_configurations;
REALFAR environment_string;
IO_PARMS IO;
S16 service_rate;
U16 busy;
U16 driver_num; // Driver number
U16 this_ISR; // Offset of INT 66H dispatcher
REALFAR prev_ISR; // Pointer to previous INT 66H ISR
S8 scratch[128]; // Shared scratch workspace
S8 dev_name[80]; // Device name (VDI version >= 1.12 only)
}
VDI_HDR;
typedef struct
{
U16 minimum_physical_sample_rate;
U16 nominal_physical_sample_rate;
U16 maximum_physical_sample_rate;
U16 minimum_DMA_half_buffer_size;
U16 maximum_DMA_half_buffer_size;
U32 flags;
}
DIG_MODE;
typedef struct
{
U8 format_supported[16];
DIG_MODE format_data[16];
}
DIG_DDT;
typedef struct
{
REALFAR DMA_buffer_A;
REALFAR DMA_buffer_B;
S16 active_buffer;
}
DIG_DST;
typedef struct
{
REALFAR library_environment;
REALFAR GTL_suffix;
U16 num_voices;
U16 max_melodic_channel;
U16 min_melodic_channel;
U16 percussion_channel;
}
MDI_DDT;
typedef struct
{
S8 library_directory[128];
S8 GTL_filename[128];
S8 MIDI_data[512];
}
MDI_DST;
typedef struct // Initialization file structure
{
char device_name[128]; // Device name
char driver_name[128]; // Driver filename
IO_PARMS IO; // I/O parameters for driver
}
AIL_INI;
typedef struct // Handle to driver
{
REALFAR seg; // Seg:off pointer to driver (off=0)
U32 sel; // Selector for driver (off=0)
void *buf; // Protected-mode pointer to driver
U32 size; // Size of driver image
VDI_HDR *VHDR; // Pointer to driver header (same as buf)
S32 type; // AIL3DIG or AIL3MDI (see below)
S32 initialized; // 1 if hardware successfully init'd, else 0
S32 PM_ISR; // -1 if no PM ISR hooked, else IRQ #
HTIMER server; // DRV_SERVE periodic timer, if requested
// Vector to high-level destructor, if any
void (AILCALL *destructor)(HDIGDRIVER);
// High-level descriptor (DIG_ or MDI_DRIVER)
void *descriptor;
}
AIL_DRIVER;
typedef struct // VDI interface register structure
{
S16 AX;
S16 BX;
S16 CX;
S16 DX;
S16 SI;
S16 DI;
}
VDI_CALL;
#endif
//
// Function pointer types
//
typedef void (AILCALLBACK FAR* AILINCB) (void const FAR *data, S32 len, U32 user_data);
typedef void (AILCALLBACK FAR* AILTIMERCB) (U32 user);
typedef void (AILCALLBACK FAR* AILSAMPLECB) (HSAMPLE sample);
typedef S32 (AILCALLBACK FAR* AILEVENTCB) (HMDIDRIVER hmi,HSEQUENCE seq,S32 status,S32 data_1,S32 data_2);
typedef S32 (AILCALLBACK FAR* AILTIMBRECB) (HMDIDRIVER hmi,S32 bank,S32 patch);
typedef S32 (AILCALLBACK FAR* AILPREFIXCB) (HSEQUENCE seq,S32 log,S32 data);
typedef void (AILCALLBACK FAR* AILTRIGGERCB) (HSEQUENCE seq,S32 log,S32 data);
typedef void (AILCALLBACK FAR* AILBEATCB) (HMDIDRIVER hmi,HSEQUENCE seq,S32 beat,S32 measure);
typedef void (AILCALLBACK FAR* AILSEQUENCECB) (HSEQUENCE seq);
//
// Handle to sample and driver being managed by pipeline filter
//
typedef S32 HSAMPLESTATE;
typedef S32 HDRIVERSTATE;
//
// Digital pipeline stages
//
// These are the points at which external modules may be installed into
// a given HSAMPLE or HDIGDRIVER's processing pipeline
//
typedef enum
{
DP_ASI_DECODER=0, // Must be "ASI codec stream" provider
DP_FILTER, // Must be "MSS pipeline filter" provider
DP_MERGE, // Must be "MSS mixer" provider
N_SAMPLE_STAGES, // Placeholder for end of list (= # of valid stages)
SAMPLE_ALL_STAGES // Used to signify all pipeline stages, for shutdown
}
SAMPLESTAGE;
typedef enum
{
DP_FLUSH = 0, // Must be "MSS mixer" provider
DP_DEFAULT_FILTER, // Must be "MSS pipeline filter" provider (sets the default)
DP_DEFAULT_MERGE, // Must be "MSS mixer" provider (sets the default)
DP_COPY, // Must be "MSS mixer" provider
N_DIGDRV_STAGES, // Placeholder for end of list (= # of valid stages)
DIGDRV_ALL_STAGES // Used to signify all pipeline stages, for shutdown
}
DIGDRVSTAGE;
typedef struct
{
ASI_STREAM_OPEN ASI_stream_open;
ASI_STREAM_PROCESS ASI_stream_process;
ASI_STREAM_SEEK ASI_stream_seek;
ASI_STREAM_CLOSE ASI_stream_close;
ASI_STREAM_ATTRIBUTE ASI_stream_attribute;
ASI_STREAM_SET_PREFERENCE ASI_stream_set_preference;
HATTRIB INPUT_BIT_RATE;
HATTRIB INPUT_SAMPLE_RATE;
HATTRIB INPUT_BITS;
HATTRIB INPUT_CHANNELS;
HATTRIB OUTPUT_BIT_RATE;
HATTRIB OUTPUT_SAMPLE_RATE;
HATTRIB OUTPUT_BITS;
HATTRIB OUTPUT_CHANNELS;
HATTRIB POSITION;
HATTRIB PERCENT_DONE;
HATTRIB MIN_INPUT_BLOCK_SIZE;
HATTRIB RAW_RATE;
HATTRIB RAW_BITS;
HATTRIB RAW_CHANNELS;
HATTRIB REQUESTED_RATE;
HATTRIB REQUESTED_BITS;
HATTRIB REQUESTED_CHANS;
HASISTREAM stream;
}
ASISTAGE;
typedef struct
{
MIXER_FLUSH MSS_mixer_flush;
MIXER_MERGE MSS_mixer_merge;
MIXER_COPY MSS_mixer_copy;
}
MIXSTAGE;
typedef struct
{
struct _FLTPROVIDER FAR *provider;
HSAMPLESTATE sample_state;
}
FLTSTAGE;
typedef struct
{
S32 active; // Pass-through if 0, active if 1
HPROVIDER provider;
union
{
ASISTAGE ASI;
MIXSTAGE MIX;
FLTSTAGE FLT;
}
TYPE;
}
DPINFO;
//
// Other data types
//
typedef struct _AIL_INPUT_INFO // Input descriptor type
{
U32 device_ID; // DS LPGUID or wave device ID
U32 hardware_format; // e.g., DIG_F_STEREO_16
U32 hardware_rate; // e.g., 22050
AILINCB callback; // Callback function to receive incoming data
S32 buffer_size; // Maximum # of bytes to be passed to callback (-1 to use DIG_INPUT_LATENCY)
U32 user_data; // this is a user defined value
}
AIL_INPUT_INFO;
typedef struct _AILTIMER // Timer instance
{
U32 status;
AILTIMERCB callback;
U32 user;
S32 elapsed;
S32 value;
S32 callingCT; // Calling EXE's task number (16 bit only)
S32 callingDS; // Calling EXE's DS (used in 16 bit only)
} AILTIMERSTR;
typedef struct _ADPCMDATATAG
{
U32 blocksize;
U32 extrasamples;
U32 blockleft;
U32 step;
U32 savesrc;
U32 sample;
U32 destend;
U32 srcend;
U32 samplesL;
U32 samplesR;
U16 moresamples[16];
} ADPCMDATA;
typedef struct LOWPASS_CONSTANT_INFO
{
S32 A;
S32 B0, B1;
} LOWPASS_CONSTANT_INFO;
typedef struct LOWPASS_UPDATED_INFO
{
S32 XL0, XL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -