⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handlers.c

📁 linux下录音程序
💻 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 + -