📄 handlers.c
字号:
/* * Originally created: July 5, 1991 * Copyright 1991 Lance Norskog And Sundry Contributors * This source code is freely redistributable and may be used for * any purpose. This copyright notice must be maintained. * Lance Norskog And Sundry Contributors are not responsible for * the consequences of using this software. */#include "st.h"/* * Sound Tools file format and effect tables. *//* File format handlers. */char *aiffnames[] = { "aiff", "aif", (char *) 0};extern void aiffstartread();extern LONG aiffread();extern void aiffstopread();extern void aiffstartwrite();extern void aiffwrite();extern void aiffstopwrite();char *alnames[] = { "al", (char *) 0};extern void alstartread();extern void alstartwrite();char *aunames[] = { "au",#ifdef NeXT "snd",#endif (char *) 0};extern void austartread();extern LONG auread();extern void austartwrite();extern void auwrite();extern void austopwrite();char *autonames[] = { "auto", (char *) 0,};extern void autostartread();extern void autostartwrite();char *cdrnames[] = { "cdr", (char *) 0};extern void cdrstartread();extern LONG cdrread();extern void cdrstopread();extern void cdrstartwrite();extern void cdrwrite();extern void cdrstopwrite();char *cvsdnames[] = { "cvs", "cvsd", (char *)0};extern void cvsdstartread();extern LONG cvsdread();extern void cvsdstopread();extern void cvsdstartwrite();extern void cvsdwrite();extern void cvsdstopwrite();char *datnames[] = { "dat", (char *) 0};extern void datstartread();extern LONG datread();extern void datstartwrite();extern void datwrite();char *dvmsnames[] = { "vms", "dvms", (char *)0};extern void dvmsstartread();extern void dvmsstartwrite();extern void dvmsstopwrite();#ifdef HAS_GSMchar *gsmnames[] = { "gsm", (char *) 0};extern void gsmstartread();extern LONG gsmread();extern void gsmstopread();extern void gsmstartwrite();extern void gsmwrite();extern void gsmstopwrite();#endifchar *hcomnames[] = { "hcom", (char *) 0};extern void hcomstartread();extern LONG hcomread();extern void hcomstopread();extern void hcomstartwrite();extern void hcomwrite();extern void hcomstopwrite();char *maudnames[] = { "maud", (char *) 0,};extern void maudstartread();extern LONG maudread();extern void maudstopread();extern void maudwrite();extern void maudstartwrite();extern void maudstopwrite();#if defined(OSS_PLAYER)char *ossdspnames[] = { "ossdsp", (char *) 0};extern void ossdspstartread();extern LONG ossdspread();extern void ossdspstopread();extern void ossdspstartwrite();extern void ossdspwrite();extern void ossdspstopwrite();#endifchar *rawnames[] = { "raw", (char *) 0};extern void rawstartread();extern LONG rawread();extern void rawstartwrite();extern void rawwrite();extern void rawstopwrite();#if defined(BLASTER) || defined(SBLAST)char *sbdspnames[] = { "sbdsp", (char *) 0};extern void sbdspstartread();extern LONG sbdspread();extern void sbdspstopread();extern void sbdspstartwrite();extern void sbdspwrite();extern void sbdspstopwrite();#endifchar *sbnames[] = { "sb", (char *) 0};extern void sbstartread();extern void sbstartwrite();char *sfnames[] = { "sf", (char *) 0};extern void sfstartread();extern void sfstartwrite();char *smpnames[] = { "smp", (char *) 0,};extern void smpstartread();extern LONG smpread();extern void smpwrite();extern void smpstartwrite();extern void smpstopwrite();char *sndrnames[] = { "sndr", (char *) 0};extern void sndrstartwrite();char *sndtnames[] = { "sndt",#ifdef DOS "snd",#endif (char *) 0}; extern void sndtstartread();extern void sndtstartwrite();extern void sndtwrite();extern void sndtstopwrite();#if defined(SUNAUDIO_PLAYER)char *sunnames[] = { "sunau", (char *) 0};extern void sunstartread();extern LONG sunread();extern void sunstopread();extern void sunstartwrite();extern void sunwrite();extern void sunstopwrite();#endifchar *svxnames[] = { "8svx", (char *) 0};extern void svxstartread();extern LONG svxread();extern void svxstopread();extern void svxstartwrite();extern void svxwrite();extern void svxstopwrite();char *swnames[] = { "sw", (char *) 0};extern void swstartread();extern void swstartwrite();char *txwnames[] = { "txw", (char *)0};extern void txwstartread();extern LONG txwread();extern void txwstopread();extern void txwstartwrite();extern void txwwrite();extern void txwstopwrite();char *ubnames[] = { "ub", "sou", "fssd",#ifdef MAC "snd",#endif (char *) 0};extern void ubstartread();extern void ubstartwrite();char *ulnames[] = { "ul", (char *) 0};extern void ulstartread();extern void ulstartwrite();char *uwnames[] = { "uw", (char *) 0};extern void uwstartread();extern void uwstartwrite();char *vocnames[] = { "voc", (char *) 0};extern void vocstartread();extern LONG vocread();extern void vocstopread();extern void vocstartwrite();extern void vocwrite();extern void vocstopwrite();char *wavnames[] = { "wav", (char *) 0};extern void wavstartread();extern LONG wavread();extern void wavstartwrite();extern void wavwrite();extern void wavstopwrite();char *wvenames[] = { "wve", (char *) 0};extern void wvestartread();extern LONG wveread();extern void wvestartwrite();extern void wvewrite();extern void wvestopwrite();extern void nothing();extern LONG nothing_success();EXPORT format_t formats[] = { {aiffnames, FILE_STEREO, aiffstartread, aiffread, aiffstopread, /* SGI/Apple AIFF */ aiffstartwrite, aiffwrite, aiffstopwrite}, {alnames, FILE_STEREO, alstartread, rawread, nothing, /* a-law byte raw */ alstartwrite, rawwrite, nothing}, {aunames, FILE_STEREO, austartread, auread, nothing, /* SPARC .AU w/header */ austartwrite, auwrite, austopwrite}, {autonames, FILE_STEREO, autostartread, nothing_success, nothing,/* Guess from header */ autostartwrite, nothing, nothing}, /* patched run time */ {cdrnames, FILE_STEREO, cdrstartread, cdrread, cdrstopread, /* CD-R format */ cdrstartwrite, cdrwrite, cdrstopwrite}, {cvsdnames, 0, cvsdstartread, cvsdread, cvsdstopread, /* Cont. Variable */ cvsdstartwrite, cvsdwrite, cvsdstopwrite}, /* Slope Delta */ {datnames, 0, datstartread, datread, nothing, /* Text data samples */ datstartwrite, datwrite, nothing}, {dvmsnames, 0, dvmsstartread, cvsdread, cvsdstopread, /* Cont. Variable */ dvmsstartwrite, cvsdwrite, dvmsstopwrite}, /* Slope Delta */#ifdef HAS_GSM {gsmnames, 0, gsmstartread, gsmread, gsmstopread, /* GSM 06.10 */ gsmstartwrite, gsmwrite, gsmstopwrite},#endif {hcomnames, 0, hcomstartread, hcomread, hcomstopread, /* Mac FSSD/HCOM */ hcomstartwrite, hcomwrite, hcomstopwrite}, {maudnames, FILE_STEREO, /* Amiga MAUD */ maudstartread, maudread, maudstopread, maudstartwrite, maudwrite, maudstopwrite},#if defined(OSS_PLAYER) /* OSS player. */ {ossdspnames, FILE_STEREO, ossdspstartread, ossdspread, ossdspstopread, /* /dev/dsp */ ossdspstartwrite, ossdspwrite, ossdspstopwrite},#endif {rawnames, FILE_STEREO, rawstartread, rawread, nothing, /* Raw format */ rawstartwrite, rawwrite, nothing},#if defined(BLASTER) || defined(SBLAST) /* 386 Unix sound blaster player. */ {sbdspnames, FILE_STEREO, sbdspstartread, sbdspread, sbdspstopread, /* /dev/sbdsp */ sbdspstartwrite, sbdspwrite, sbdspstopwrite}, #endif {sbnames, FILE_STEREO, sbstartread, rawread, nothing, /* signed byte raw */ sbstartwrite, rawwrite, nothing}, {sfnames, FILE_STEREO, sfstartread, rawread, nothing, /* IRCAM Sound File */ sfstartwrite, rawwrite, nothing}, /* Relies on raw */ {smpnames, FILE_STEREO | FILE_LOOPS, smpstartread, smpread, nothing, /* SampleVision sound */ smpstartwrite, smpwrite, smpstopwrite}, /* Turtle Beach */ {sndrnames, FILE_STEREO, sndtstartread, rawread, nothing, /* Sounder Sound File */ sndrstartwrite, rawwrite, nothing}, {sndtnames, FILE_STEREO, sndtstartread, rawread, nothing, /* Sndtool Sound File */ sndtstartwrite, sndtwrite, sndtstopwrite},#if defined(SUNAUDIO_PLAYER) /* Sun /dev/audio player. */ {sunnames, FILE_STEREO, sunstartread, sunread, sunstopread, /* /dev/audio */ sunstartwrite, sunwrite, sunstopwrite},#endif {svxnames, FILE_STEREO, svxstartread, svxread, svxstopread, /* Amiga 8SVX */ svxstartwrite, svxwrite, svxstopwrite}, {swnames, FILE_STEREO, swstartread, rawread, nothing, /* signed word raw */ swstartwrite, rawwrite, nothing}, {txwnames, 0, txwstartread, txwread, txwstopread, /* Yamaha TX16W and */ txwstartwrite, txwwrite, txwstopwrite}, /* SY99 waves */ {ubnames, FILE_STEREO, ubstartread, rawread, nothing, /* unsigned byte raw */ ubstartwrite, rawwrite, nothing}, {ulnames, FILE_STEREO, ulstartread, rawread, nothing, /* u-law byte raw */ ulstartwrite, rawwrite, nothing}, {uwnames, FILE_STEREO, uwstartread, rawread, nothing, /* unsigned word raw */ uwstartwrite, rawwrite, nothing}, {vocnames, FILE_STEREO, vocstartread, vocread, vocstopread, /* Sound Blaster .VOC */ vocstartwrite, vocwrite, vocstopwrite}, {wavnames, FILE_STEREO, wavstartread, wavread, nothing, /* Microsoft .wav */ wavstartwrite, wavwrite, wavstopwrite}, {wvenames, 0, wvestartread, wveread, nothing, /* Psion .wve */ wvestartwrite, wvewrite, wvestopwrite}, {0, 0, 0, 0, 0, 0, 0, 0}};/* Effects handlers. */extern void null_drain(); /* dummy drain routine */extern void avg_getopts();extern void avg_start();extern void avg_flow();extern void avg_stop();extern void band_getopts();extern void band_start();extern void band_flow();extern void band_stop();extern void chorus_getopts();extern void chorus_start();extern void chorus_flow();extern void chorus_drain();extern void chorus_stop();extern void copy_getopts();extern void copy_start();extern void copy_flow();extern void copy_stop();extern void cut_getopts();extern void cut_start();extern void cut_flow();extern void cut_stop();extern void deemph_getopts();extern void deemph_start();extern void deemph_flow();extern void deemph_stop();#ifdef USE_DYNextern void dyn_getopts();extern void dyn_start();extern void dyn_flow();extern void dyn_stop();#endifextern void echo_getopts();extern void echo_start();extern void echo_flow();extern void echo_drain();extern void echo_stop();extern void echos_getopts();extern void echos_start();extern void echos_flow();extern void echos_drain();extern void echos_stop();extern void flanger_getopts();extern void flanger_start();extern void flanger_flow();extern void flanger_drain();extern void flanger_stop();extern void highp_getopts();extern void highp_start();extern void highp_flow();extern void highp_stop();extern void lowp_getopts();extern void lowp_start();extern void lowp_flow();extern void lowp_stop();extern void map_getopts();extern void map_start();extern void map_flow();extern void mask_getopts();extern void mask_flow();extern void phaser_getopts();extern void phaser_start();extern void phaser_flow();extern void phaser_drain();extern void phaser_stop();extern void pick_getopts();extern void pick_start();extern void pick_flow();extern void pick_stop();extern void poly_getopts();extern void poly_start();extern void poly_flow();extern void poly_drain();extern void poly_stop();extern void split_getopts();extern void split_start();extern void split_flow();extern void split_stop();extern void stat_getopts();extern void stat_start();extern void stat_flow();extern void stat_stop();extern void rate_getopts();extern void rate_start();extern void rate_flow();extern void rate_stop();extern void resample_getopts();extern void resample_start();extern void resample_flow();extern void resample_drain();extern void resample_stop();extern void reverb_getopts();extern void reverb_start();extern void reverb_flow();extern void reverb_drain();extern void reverb_stop();extern void reverse_getopts();extern void reverse_start();extern void reverse_flow();extern void reverse_drain();extern void reverse_stop();extern void vibro_getopts();extern void vibro_start();extern void vibro_flow();extern void vibro_stop();/* * EFF_CHAN means that the number of channels can change. * EFF_RATE means that the sample rate can change. * The first effect which can handle a data rate change, stereo->mono, etc. * is the default handler for that problem. * * EFF_MCHAN just means that the effect is coded for multiple channels. */EXPORT effect_t effects[] = { {"null", 0, /* stand-in, never gets called */ nothing, nothing, nothing, null_drain, nothing}, {"avg", EFF_CHAN | EFF_MCHAN, avg_getopts, avg_start, avg_flow, null_drain, avg_stop}, {"band", 0, band_getopts, band_start, band_flow, null_drain, band_stop}, {"chorus", 0, chorus_getopts, chorus_start, chorus_flow, chorus_drain, chorus_stop}, {"copy", EFF_MCHAN, copy_getopts, copy_start, copy_flow, null_drain, nothing}, {"cut", EFF_MCHAN, cut_getopts, cut_start, cut_flow, null_drain, nothing}, {"deemph", EFF_MCHAN, deemph_getopts, deemph_start, deemph_flow, null_drain, deemph_stop},#ifdef USE_DYN {"dyn", 0, dyn_getopts, dyn_start, dyn_flow, null_drain, dyn_stop},#endif {"echo", 0, echo_getopts, echo_start, echo_flow, echo_drain, echo_stop}, {"echos", 0, echos_getopts, echos_start, echos_flow, echos_drain, echos_stop}, {"flanger", 0, flanger_getopts, flanger_start, flanger_flow, flanger_drain, flanger_stop}, {"highp", 0, highp_getopts, highp_start, highp_flow, null_drain,highp_stop}, {"lowp", 0, lowp_getopts, lowp_start, lowp_flow, null_drain, lowp_stop}, {"map", EFF_REPORT, map_getopts, map_start, map_flow, null_drain, nothing}, {"mask", EFF_MCHAN, mask_getopts, nothing, mask_flow, null_drain, nothing}, {"phaser", 0, phaser_getopts, phaser_start, phaser_flow, phaser_drain, phaser_stop}, {"pick", EFF_CHAN | EFF_MCHAN, pick_getopts, pick_start, pick_flow, null_drain, pick_stop}, {"polyphase", EFF_RATE, poly_getopts, poly_start, poly_flow, poly_drain, poly_stop}, {"rate", EFF_RATE, rate_getopts, rate_start, rate_flow, null_drain, nothing}, {"resample", EFF_RATE, resample_getopts, resample_start, resample_flow, resample_drain, resample_stop}, {"reverb", 0, reverb_getopts, reverb_start, reverb_flow, reverb_drain, reverb_stop}, {"reverse", 0, reverse_getopts, reverse_start, reverse_flow, reverse_drain, reverse_stop}, {"split", EFF_CHAN | EFF_MCHAN, split_getopts, split_start, split_flow, null_drain,split_stop}, {"stat", EFF_MCHAN | EFF_REPORT | EFF_RATE | EFF_CHAN, stat_getopts, stat_start, stat_flow, null_drain, stat_stop}, {"vibro", 0, vibro_getopts, vibro_start, vibro_flow, null_drain, nothing}, {0, 0, 0, 0, 0, 0, 0}};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -