ftp.nice.ch/pub/next/unix/audio/sox.12.12.NIHS.bs.tar.gz#/sox.12.12.NIHS.bs/src/handlers.c

This is handlers.c in view mode; [Download] [Up]

/*
 * 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 *rawnames[] = {
	"raw",
	(char *) 0
};
extern rawstartread(), rawread();
extern rawstartwrite(), rawwrite(), rawstopwrite();

/*
char *raw2names[] = {
	"raw2",
	(char *) 0
};
extern raw2write();
*/

char *cdrnames[] = {
	"cdr",
	(char *) 0
};
extern cdrstartread(), cdrread(), cdrstopread();
extern cdrstartwrite(), cdrwrite(), cdrstopwrite();

char *vocnames[] = {
	"voc",
	(char *) 0
};
extern vocstartread(), vocread(), vocstopread();
extern vocstartwrite(), vocwrite(), vocstopwrite();

char *aunames[] = {
	"au",
#ifdef	NeXT
	"snd",
#endif
	(char *) 0
};
extern austartread();
extern austartwrite(), auread(), auwrite(), austopwrite();

char *wvenames[] = {
      "wve",
      (char *) 0
};
extern wvestartread();
extern wvestartwrite(), wveread(), wvewrite(), wvestopwrite();


char *aiffnames[] = {
	"aiff",
	"aif",
	(char *) 0
};
extern aiffstartread(), aiffread(), aiffstopread();
extern aiffstartwrite(), aiffwrite(), aiffstopwrite();

char *svxnames[] = {
	"8svx",
	(char *) 0
};
extern svxstartread(), svxread(), svxstopread();
extern svxstartwrite(), svxwrite(), svxstopwrite();

char *hcomnames[] = {
	"hcom",
	(char *) 0
};
extern hcomstartread(), hcomread(), hcomstopread();
extern hcomstartwrite(), hcomwrite(), hcomstopwrite();

char *sndtnames[] = {
	"sndt",
#ifdef	DOS
	"snd",
#endif
	(char *) 0
}; 
extern sndtstartread();
extern sndtstartwrite(), sndtwrite(), sndtstopwrite();

char *sndrnames[] = {
	"sndr",
	(char *) 0
};
extern sndrstartwrite();

char *ubnames[] = {
	"ub",
	"sou",
	"fssd",
#ifdef	MAC
	"snd",
#endif
	(char *) 0
};
extern ubstartread();
extern ubstartwrite();

char *sbnames[] = {
	"sb",
	(char *) 0
};
extern sbstartread();
extern sbstartwrite();

char *uwnames[] = {
	"uw",
	(char *) 0
};
extern uwstartread();
extern uwstartwrite();

char *swnames[] = {
	"sw",
	(char *) 0
};
extern swstartread();
extern swstartwrite();

char *ulnames[] = {
	"ul",
	(char *) 0
};
extern ulstartread();
extern ulstartwrite();


char *alnames[] = {
	"al",
	(char *) 0
};
extern alstartread();
extern alstartwrite();


char *sfnames[] = {
	"sf",
	(char *) 0
};
extern sfstartread();
extern sfstartwrite();

char *wavnames[] = {
	"wav",
	(char *) 0
};
extern wavstartread(), wavread();
extern wavstartwrite(), wavwrite(), wavstopwrite();

#if	defined(BLASTER) || defined(SBLAST) || defined(LINUXSOUND)
char *sbdspnames[] = {
	"sbdsp",
	(char *) 0
};
extern sbdspstartread(), sbdspread(), sbdspstopread();
extern sbdspstartwrite(), sbdspwrite(), sbdspstopwrite();
#endif

char *smpnames[] = {
	"smp",
	(char *) 0,
};

extern smpstartread(), smpread(), smpwrite();
extern smpstartwrite(), smpstopwrite();

char *maudnames[] = {
        "maud",
        (char *) 0,
};
extern maudstartread(), maudstopread(), maudread(), maudwrite();
extern maudstartwrite(), maudstopwrite();

char *autonames[] = {
	"auto",
	(char *) 0,
};

extern autostartread();
extern autostartwrite();

char *datnames[] = {
	"dat",
	(char *) 0
};
extern datstartread(), datread();
extern datstartwrite(), datwrite(), datstopwrite();

extern nothing();

EXPORT format_t formats[] = {
	{autonames, FILE_STEREO,
		autostartread, nothing, nothing,	/* Guess from header */
		autostartwrite, nothing, nothing},	/* patched run time */
	{smpnames, FILE_STEREO | FILE_LOOPS,
		smpstartread, smpread, nothing,	/* SampleVision sound */
		smpstartwrite, smpwrite, smpstopwrite},	/* Turtle Beach */
	{rawnames, FILE_STEREO,
		rawstartread, rawread, nothing, 	/* Raw format */
		rawstartwrite, rawwrite, nothing},
	/* Raw format that does mono->stereo automatically */
/*
	{raw2names, FILE_STEREO,
		rawstartread, rawread, nothing, 	
		rawstartwrite, raw2write, nothing},
*/
	{cdrnames, FILE_STEREO,
		cdrstartread, cdrread, cdrstopread,  /* CD-R format */
		cdrstartwrite, cdrwrite, cdrstopwrite},
	{vocnames, FILE_STEREO,
		vocstartread, vocread, vocstopread,  /* Sound Blaster .VOC */
		vocstartwrite, vocwrite, vocstopwrite},
	{aunames, FILE_STEREO,
		austartread, auread, nothing, 	/* SPARC .AU w/header */
		austartwrite, auwrite, austopwrite},	
	{wvenames, 0,       			/* Psion .wve */
		wvestartread, wveread, nothing,
		wvestartwrite, wvewrite, wvestopwrite},
	{ubnames, FILE_STEREO,
		ubstartread, rawread, nothing, 	/* unsigned byte raw */
		ubstartwrite, rawwrite, nothing},	/* Relies on raw */
	{sbnames, FILE_STEREO,
		sbstartread, rawread, nothing, 	/* signed byte raw */
		sbstartwrite, rawwrite, nothing},	
	{uwnames, FILE_STEREO,
		uwstartread, rawread, nothing, 	/* unsigned word raw */
		uwstartwrite, rawwrite, nothing},	
	{swnames, FILE_STEREO,
		swstartread, rawread, nothing, 	/* signed word raw */
		swstartwrite, rawwrite, nothing},
	{ulnames, FILE_STEREO,
		ulstartread, rawread, nothing, 	/* u-law byte raw */
		ulstartwrite, rawwrite, nothing},	
	{alnames, FILE_STEREO,
		alstartread, rawread, nothing, 	/* a-law byte raw */
		alstartwrite, rawwrite, nothing},	
	{aiffnames, FILE_STEREO,
		aiffstartread, aiffread, aiffstopread,    /* SGI/Apple AIFF */
		aiffstartwrite, aiffwrite, aiffstopwrite},
	{svxnames, FILE_STEREO,
		svxstartread, svxread, svxstopread,      /* Amiga 8SVX */
		svxstartwrite, svxwrite, svxstopwrite},
        {maudnames, FILE_STEREO,     			/* Amiga MAUD */
		maudstartread, maudread, maudstopread,
		maudstartwrite, maudwrite, maudstopwrite},
	{hcomnames, 0,
		hcomstartread, hcomread, hcomstopread, /* Mac FSSD/HCOM */
		hcomstartwrite, hcomwrite, hcomstopwrite},
	{sfnames, FILE_STEREO,
		sfstartread, rawread, nothing, 	/* IRCAM Sound File */
		sfstartwrite, rawwrite, nothing},	/* Relies on raw */
	{sndtnames, FILE_STEREO,
		sndtstartread, rawread, nothing,    /* Sndtool Sound File */
		sndtstartwrite, sndtwrite, sndtstopwrite},
	{sndrnames, FILE_STEREO,
		sndtstartread, rawread, nothing,    /* Sounder Sound File */
		sndrstartwrite, rawwrite, nothing},
	{wavnames, FILE_STEREO,
		wavstartread, wavread, nothing, 	/* Windows 3.0 .wav */
		wavstartwrite, wavwrite, wavstopwrite},	
#if	defined(BLASTER) || defined(SBLAST) || defined(LINUXSOUND)
	/* 386 Unix sound blaster players.  No more of these, please! */
	{sbdspnames, FILE_STEREO,
		sbdspstartread, sbdspread, sbdspstopread, 	/* /dev/sbdsp */
		sbdspstartwrite, sbdspwrite, sbdspstopwrite},	
#endif
	{datnames, 0,
		datstartread, datread, nothing, 	/* Text data samples */
		datstartwrite, datwrite, nothing},
	0
};

/* Effects handlers. */

extern null_drain();		/* dummy drain routine */

extern copy_getopts(), copy_start(), copy_flow(), copy_stop();
extern avg_getopts(), avg_start(), avg_flow(), avg_stop();
extern pred_getopts(), pred_start(), pred_flow(), pred_stop();
extern stat_getopts(), stat_start(), stat_flow(), stat_stop();
extern vibro_getopts(), vibro_start(), vibro_flow(), vibro_stop();
extern band_getopts(), band_start(), band_flow(), band_stop();
extern lowp_getopts(), lowp_start(), lowp_flow(), lowp_stop();
extern highp_getopts(), highp_start(), highp_flow(), highp_stop();
#ifdef	USE_DYN
extern dyn_getopts(), dyn_start(), dyn_flow(), dyn_stop();
#endif
extern echo_getopts(), echo_start(), echo_flow(), echo_drain(), echo_stop();
extern rate_getopts(), rate_start(), rate_flow(), rate_stop();
/*
extern down_getopts(), down_start(), down_flow(), down_stop();
*/
extern reverse_getopts(), reverse_start(), 
       reverse_flow(), reverse_drain(), reverse_stop();
extern map_getopts(), map_start(), map_flow();
extern cut_getopts(), cut_start(), cut_flow(), cut_stop();
extern split_getopts(), split_start(), split_flow(), split_stop();
extern pick_getopts(), pick_start(), pick_flow(), pick_stop();
extern resample_getopts(), resample_start(), resample_flow(), 
       resample_drain(), resample_stop();
extern mask_getopts(), mask_flow();

/*
 * 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},
	{"copy", EFF_MCHAN, 
		copy_getopts, copy_start, copy_flow, null_drain, nothing},
	{"avg", EFF_CHAN | EFF_MCHAN, 
		avg_getopts, avg_start, avg_flow, null_drain, avg_stop},
	{"split", EFF_CHAN | EFF_MCHAN, 
		split_getopts, split_start, split_flow, null_drain,split_stop},
	{"pick", EFF_CHAN | EFF_MCHAN, 
		pick_getopts, pick_start, pick_flow, null_drain, pick_stop},
	{"pred", 0,
		pred_getopts, pred_start, pred_flow, null_drain, pred_stop},
	{"stat", EFF_MCHAN | EFF_REPORT, 
		stat_getopts, stat_start, stat_flow, null_drain, stat_stop},
	{"vibro", 0, 
		vibro_getopts, vibro_start, vibro_flow, null_drain, nothing},
	{"echo", 0, 
		echo_getopts, echo_start, echo_flow, echo_drain, echo_stop},
	{"band", 0, 
		band_getopts, band_start, band_flow, null_drain, band_stop},
	{"lowp", 0, 
		lowp_getopts, lowp_start, lowp_flow, null_drain, lowp_stop},
	{"highp", 0, 
		highp_getopts, highp_start, highp_flow, null_drain,highp_stop},
#ifdef	USE_DYN
	{"dyn", 0, 
		dyn_getopts, dyn_start, dyn_flow, null_drain, dyn_stop},
#endif
	{"rate", EFF_RATE, 
		rate_getopts, rate_start, rate_flow, null_drain, nothing},
	/* fast sub-sampled downconverter.  doesn't quite work.
	{"down", EFF_RATE, 
		down_getopts, down_start, down_flow, null_drain, nothing}, */
	/* the good one! */
	{"resample", EFF_RATE, 
		resample_getopts, resample_start, resample_flow, 
		resample_drain, resample_stop},
	{"reverse", 0, 
		reverse_getopts, reverse_start, 
		reverse_flow, reverse_drain, reverse_stop},
	{"map", EFF_REPORT, 
		map_getopts, map_start, map_flow, null_drain, nothing},
	{"cut", EFF_MCHAN, 
		cut_getopts, cut_start, cut_flow, null_drain, nothing},
	{"mask", EFF_MCHAN, 
		mask_getopts, nothing, mask_flow, null_drain, nothing},
	0
};

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.