ref: fdc0a5eee1370b1d757bcf4753d619467d124705
parent: 7ef285353e8a75f0709962e31f00bfc2dc1e88e6
author: cbagwell <cbagwell>
date: Sun May 14 23:15:26 EDT 2006
Changed way handler prototypes are exported.
--- a/src/8svx.c
+++ b/src/8svx.c
@@ -389,3 +389,22 @@
st_writes(ft, "BODY");
st_writedw(ft, nsamples); /* samples in file */
}
+
+/* Amiga 8SVX */
+static char *svxnames[] = {
+ "8svx",
+ NULL
+};
+
+st_format_t st_svx_format = {
+ svxnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_svxstartread,
+ st_svxread,
+ st_svxstopread,
+ st_svxstartwrite,
+ st_svxwrite,
+ st_svxstopwrite,
+ st_format_nothing_seek
+};
--- a/src/aiff.c
+++ b/src/aiff.c
@@ -1100,3 +1100,23 @@
else
return f;
}
+
+
+static char *aiffnames[] = {
+ "aiff",
+ "aif",
+ NULL
+};
+
+st_format_t st_aiff_format = {
+ aiffnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_LOOPS | ST_FILE_SEEK,
+ st_aiffstartread,
+ st_aiffread,
+ st_aiffstopread,
+ st_aiffstartwrite,
+ st_aiffwrite,
+ st_aiffstopwrite,
+ st_aiffseek
+};
--- a/src/alsa.c
+++ b/src/alsa.c
@@ -631,4 +631,22 @@
return 0;
}
+/* /dev/snd/pcmXX */
+static char *alsanames[] = {
+ "alsa",
+ NULL
+};
+
+st_format_t st_alsa_format = {
+ alsanames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_NOSTDIO,
+ st_alsastartread,
+ st_alsaread,
+ st_alsastopread,
+ st_alsastartwrite,
+ st_alsawrite,
+ st_alsastopwrite,
+ st_format_nothing_seek
+};
#endif /* HAVE_ALSA */
--- a/src/au.c
+++ b/src/au.c
@@ -462,3 +462,22 @@
st_writeb(ft, 0);
}
+/* SPARC .au w/header */
+static char *aunames[] = {
+ "au",
+ "snd",
+ NULL
+};
+
+st_format_t st_au_format = {
+ aunames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_austartread,
+ st_auread,
+ st_rawstopread,
+ st_austartwrite,
+ st_auwrite,
+ st_austopwrite,
+ st_auseek
+};
--- a/src/auto.c
+++ b/src/auto.c
@@ -196,3 +196,21 @@
st_fail_errno(ft,ST_EFMT,"Type AUTO can only be used for input!");
return(ST_EOF);
}
+
+static char *autonames[] = {
+ "auto",
+ NULL
+};
+
+st_format_t st_auto_format = {
+ autonames,
+ NULL,
+ ST_FILE_STEREO,
+ st_autostartread,
+ st_format_nothing_io,
+ st_format_nothing,
+ st_autostartwrite,
+ st_format_nothing_io,
+ st_format_nothing,
+ st_format_nothing_seek
+};
--- a/src/avg.c
+++ b/src/avg.c
@@ -547,3 +547,24 @@
return (ST_SUCCESS); /* nothing to do */
}
+st_effect_t st_avg_effect = {
+ "avg",
+ NULL,
+ ST_EFF_MCHAN | ST_EFF_CHAN,
+ st_avg_getopts,
+ st_avg_start,
+ st_avg_flow,
+ st_effect_nothing_drain,
+ st_avg_stop
+};
+
+st_effect_t st_pick_effect = {
+ "pick",
+ NULL,
+ ST_EFF_MCHAN | ST_EFF_CHAN,
+ st_avg_getopts,
+ st_avg_start,
+ st_avg_flow,
+ st_effect_nothing_drain,
+ st_avg_stop
+};
--- a/src/avr.c
+++ b/src/avr.c
@@ -290,3 +290,21 @@
return(ST_SUCCESS);
}
+
+static char *avrnames[] = {
+ "avr",
+ NULL
+};
+
+st_format_t st_avr_format = {
+ avrnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_avrstartread,
+ st_rawread,
+ st_format_nothing,
+ st_avrstartwrite,
+ st_avrwrite,
+ st_avrstopwrite,
+ st_format_nothing_seek
+};
--- a/src/band.c
+++ b/src/band.c
@@ -144,3 +144,13 @@
return (ST_SUCCESS); /* nothing to do */
}
+st_effect_t st_band_effect = {
+ "band",
+ NULL,
+ 0,
+ st_band_getopts,
+ st_band_start,
+ st_band_flow,
+ st_effect_nothing_drain,
+ st_band_stop
+};
--- a/src/bandpass.c
+++ b/src/bandpass.c
@@ -76,3 +76,14 @@
butterworth->b [1] = (c - 1.0) * butterworth->a[0];
return (ST_SUCCESS);
}
+
+st_effect_t st_bandpass_effect = {
+ "bandpass",
+ NULL,
+ 0,
+ st_bandpass_getopts,
+ st_bandpass_start,
+ st_butterworth_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/breject.c
+++ b/src/breject.c
@@ -76,3 +76,14 @@
butterworth->b [1] = (1.0 - c) * butterworth->a[0];
return (ST_SUCCESS);
}
+
+st_effect_t st_bandreject_effect = {
+ "bandreject",
+ NULL,
+ 0,
+ st_bandreject_getopts,
+ st_bandreject_start,
+ st_butterworth_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/cdr.c
+++ b/src/cdr.c
@@ -159,3 +159,21 @@
}
return(ST_SUCCESS);
}
+
+static char *cdrnames[] = {
+ "cdr",
+ NULL
+};
+
+st_format_t st_cdr_format = {
+ cdrnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_cdrstartread,
+ st_cdrread,
+ st_cdrstopread,
+ st_cdrstartwrite,
+ st_cdrwrite,
+ st_cdrstopwrite,
+ st_rawseek
+};
--- a/src/chorus.c
+++ b/src/chorus.c
@@ -348,3 +348,14 @@
}
return (ST_SUCCESS);
}
+
+st_effect_t st_chorus_effect = {
+ "chorus",
+ NULL,
+ 0,
+ st_chorus_getopts,
+ st_chorus_start,
+ st_chorus_flow,
+ st_chorus_drain,
+ st_chorus_stop
+};
--- a/src/compand.c
+++ b/src/compand.c
@@ -409,3 +409,14 @@
return (ST_SUCCESS);
}
+
+st_effect_t st_compand_effect = {
+ "compand",
+ NULL,
+ ST_EFF_MCHAN,
+ st_compand_getopts,
+ st_compand_start,
+ st_compand_flow,
+ st_compand_drain,
+ st_compand_stop
+};
--- a/src/copy.c
+++ b/src/copy.c
@@ -63,3 +63,14 @@
/* nothing to do */
return (ST_SUCCESS);
}
+
+st_effect_t st_copy_effect = {
+ "copy",
+ NULL,
+ ST_EFF_MCHAN,
+ st_copy_getopts,
+ st_copy_start,
+ st_copy_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/cvsd.c
+++ b/src/cvsd.c
@@ -668,3 +668,43 @@
}
/* ---------------------------------------------------------------------- */
+
+/* Cont. Variable Slope Delta */
+static char *cvsdnames[] = {
+ "cvs",
+ "cvsd",
+ NULL
+};
+
+st_format_t st_cvsd_format = {
+ cvsdnames,
+ NULL,
+ 0,
+ st_cvsdstartread,
+ st_cvsdread,
+ st_cvsdstopread,
+ st_cvsdstartwrite,
+ st_cvsdwrite,
+ st_cvsdstopwrite,
+ st_format_nothing_seek
+};
+
+/* Cont. Variable Solot Delta */
+static char *dvmsnames[] = {
+ "vms",
+ "dvms",
+ NULL
+};
+
+st_format_t st_dvms_format = {
+ dvmsnames,
+ NULL,
+ 0,
+ st_dvmsstartread,
+ st_cvsdread,
+ st_cvsdstopread,
+ st_dvmsstartwrite,
+ st_cvsdwrite,
+ st_dvmsstopwrite,
+ st_format_nothing_seek
+};
--- a/src/dat.c
+++ b/src/dat.c
@@ -175,3 +175,21 @@
return done;
}
+/* Text data samples */
+static char *datnames[] = {
+ "dat",
+ NULL
+};
+
+st_format_t st_dat_format = {
+ datnames,
+ NULL,
+ 0,
+ st_datstartread,
+ st_datread,
+ st_format_nothing,
+ st_datstartwrite,
+ st_datwrite,
+ st_format_nothing,
+ st_format_nothing_seek
+};
--- a/src/dcshift.c
+++ b/src/dcshift.c
@@ -212,3 +212,14 @@
}
return ST_SUCCESS;
}
+
+st_effect_t st_dcshift_effect = {
+ "dcshift",
+ NULL,
+ ST_EFF_MCHAN,
+ st_dcshift_getopts,
+ st_dcshift_start,
+ st_dcshift_flow,
+ st_effect_nothing_drain,
+ st_dcshift_stop
+};
--- a/src/deemphas.c
+++ b/src/deemphas.c
@@ -202,3 +202,14 @@
/* nothing to do */
return (ST_SUCCESS);
}
+
+st_effect_t st_deemph_effect = {
+ "deemph",
+ NULL,
+ ST_EFF_MCHAN,
+ st_deemph_getopts,
+ st_deemph_start,
+ st_deemph_flow,
+ st_effect_nothing_drain,
+ st_deemph_stop
+};
--- a/src/earwax.c
+++ b/src/earwax.c
@@ -184,3 +184,14 @@
return (ST_SUCCESS);
}
+
+st_effect_t st_earwax_effect = {
+ "earwax",
+ NULL,
+ ST_EFF_MCHAN,
+ st_earwax_getopts,
+ st_earwax_start,
+ st_earwax_flow,
+ st_earwax_drain,
+ st_earwax_stop
+};
--- a/src/echo.c
+++ b/src/echo.c
@@ -268,3 +268,14 @@
echo->delay_buf = (double *) -1; /* guaranteed core dump */
return (ST_SUCCESS);
}
+
+st_effect_t st_echo_effect = {
+ "echo",
+ NULL,
+ 0,
+ st_echo_getopts,
+ st_echo_start,
+ st_echo_flow,
+ st_echo_drain,
+ st_echo_stop
+};
--- a/src/echos.c
+++ b/src/echos.c
@@ -273,3 +273,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_echos_effect = {
+ "echos",
+ NULL,
+ 0,
+ st_echos_getopts,
+ st_echos_start,
+ st_echos_flow,
+ st_echos_drain,
+ st_echos_stop
+};
--- a/src/fade.c
+++ b/src/fade.c
@@ -399,3 +399,14 @@
return retval;
}
+
+st_effect_t st_fade_effect = {
+ "fade",
+ NULL,
+ ST_EFF_MCHAN,
+ st_fade_getopts,
+ st_fade_start,
+ st_fade_flow,
+ st_fade_drain,
+ st_fade_stop
+};
--- a/src/filter.c
+++ b/src/filter.c
@@ -314,3 +314,14 @@
X++;
}
}
+
+st_effect_t st_filter_effect = {
+ "filter",
+ NULL,
+ 0,
+ st_filter_getopts,
+ st_filter_start,
+ st_filter_flow,
+ st_filter_drain,
+ st_filter_stop
+};
--- a/src/flanger.c
+++ b/src/flanger.c
@@ -286,3 +286,14 @@
flanger->lookup_tab = (int *) -1; /* guaranteed core dump */
return (ST_SUCCESS);
}
+
+st_effect_t st_flanger_effect = {
+ "flanger",
+ NULL,
+ 0,
+ st_flanger_getopts,
+ st_flanger_start,
+ st_flanger_flow,
+ st_flanger_drain,
+ st_flanger_stop
+};
--- a/src/gsm.c
+++ b/src/gsm.c
@@ -232,4 +232,23 @@
return st_gsmstopread(ft); /* destroy handles and free buffers */
}
+
+/* GSM 06.10 */
+static char *gsmnames[] = {
+ "gsm",
+ NULL
+};
+
+st_format_t st_gsm_format = {
+ gsmnames,
+ NULL,
+ 0,
+ st_gsmstartread,
+ st_gsmread,
+ st_gsmstopread,
+ st_gsmstartwrite,
+ st_gsmwrite,
+ st_gsmstopwrite,
+ st_format_nothing_seek
+};
#endif /* ENABLE_GSM */
--- a/src/handlers.c
+++ b/src/handlers.c
@@ -14,388 +14,67 @@
* Sound Tools file format and effect tables.
*/
-/* File format handlers. */
-
-/* SGI/Apple AIFF */
-static char *aiffnames[] = {
- "aiff",
- "aif",
- (char *) 0
+st_format_t st_terminator_format =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
-/* a-law byte raw */
-static char *alnames[] = {
- "al",
- (char *) 0
-};
-
+/* File format handlers. */
+st_format_t *st_formats[] = {
+ &st_aiff_format,
+ &st_al_format,
#if defined(HAVE_ALSA)
-/* /dev/snd/pcmXX */
-static char *alsanames[] = {
- "alsa",
- (char *) 0
-};
+ &st_alsa_format,
#endif
-
-/* SPARC .au w/header */
-static char *aunames[] = {
- "au",
- "snd",
- (char *) 0
-};
-
-static char *autonames[] = {
- "auto",
- (char *) 0
-};
-
-static char *avrnames[] = {
- "avr",
- (char *) 0
-};
-
-static char *cdrnames[] = {
- "cdr",
- (char *) 0
-};
-
-/* Cont. Variable Slope Delta */
-static char *cvsdnames[] = {
- "cvs",
- "cvsd",
- (char *)0
-};
-
-/* Text data samples */
-static char *datnames[] = {
- "dat",
- (char *) 0
-};
-
-/* Cont. Variable Solot Delta */
-static char *dvmsnames[] = {
- "vms",
- "dvms",
- (char *)0
-};
-
+ &st_au_format,
+ &st_auto_format,
+ &st_avr_format,
+ &st_cdr_format,
+ &st_cvsd_format,
+ &st_dat_format,
+ &st_dvms_format,
#ifdef ENABLE_GSM
-/* GSM 06.10 */
-static char *gsmnames[] = {
- "gsm",
- (char *) 0
-};
+ &st_gsm_format,
#endif
-
-/* Mac FSSD/HCOM */
-static char *hcomnames[] = {
- "hcom",
- (char *) 0
-};
-
-/* inverse a-law byte raw */
-static char *lanames[] = {
- "la",
- (char *) 0
-};
-
-/* inverse u-law byte raw */
-static char *lunames[] = {
- "lu",
- (char *) 0
-};
-
-/* Amiga MAUD */
-static char *maudnames[] = {
- "maud",
- (char *) 0,
-};
-
+ &st_hcom_format,
+ &st_la_format,
+ &st_lu_format,
+ &st_maud_format,
#if defined(HAVE_LIBMAD) || defined(HAVE_LAME)
-/* MP3 */
-static char *mp3names[] = {
- "mp3",
- "mp2",
- (char *) 0,
-};
+ &st_mp3_format,
#endif
-
-static char *nulnames[] = {
- "nul",
- (char *) 0,
-};
-
+ &st_nul_format,
#if defined(HAVE_OSS)
-/* OSS /dev/dsp player */
-static char *ossdspnames[] = {
- "ossdsp",
- (char *) 0
-};
+ &st_ossdsp_format,
#endif
-
-/* Psion .prc */
-static char *prcnames[] = {
- "prc",
- (char *) 0
-};
-
-static char *rawnames[] = {
- "raw",
- (char *) 0
-};
-
-/* raw prototypes are defined in st.h since they are used globally. */
-
-static char *sbnames[] = {
- "sb",
- (char *) 0
-};
-
-/* IRCAM Sound File */
-static char *sfnames[] = {
- "sf",
- (char *) 0
-};
-
-static char *slnames[] = {
- "sl",
- (char *) 0,
-};
-
-/* SampleVision sound */
-static char *smpnames[] = {
- "smp",
- (char *) 0,
-};
-
-/* Sndtool Sound File */
-static char *sndtnames[] = {
- "sndt",
- (char *) 0
-};
-
-/* NIST Sphere File */
-static char *spherenames[] = {
- "sph",
- (char *) 0
-};
-
+ &st_prc_format,
+ &st_raw_format,
+ &st_sb_format,
+ &st_sf_format,
+ &st_sl_format,
+ &st_smp_format,
+ &st_snd_format,
+ &st_sphere_format,
#if defined(HAVE_SUNAUDIO)
-/* Sun /dev/audio player */
-static char *sunnames[] = {
- "sunau",
- (char *) 0
-};
+ &st_sun_format,
#endif
-
-/* Amiga 8SVX */
-static char *svxnames[] = {
- "8svx",
- (char *) 0
-};
-
-static char *swnames[] = {
- "sw",
- (char *) 0
-};
-
-/* Yamaha TX16W and SY99 waves */
-static char *txwnames[] = {
- "txw",
- (char *)0
-};
-
-static char *ubnames[] = {
- "ub",
- "sou",
- "fssd",
- (char *) 0
-};
-
-static char *ulnames[] = {
- "ul",
- (char *) 0
-};
-
-static char *uwnames[] = {
- "uw",
- (char *) 0
-};
-
-/* Sound Blaster .VOC */
-static char *vocnames[] = {
- "voc",
- (char *) 0
-};
-
+ &st_svx_format,
+ &st_sw_format,
+ &st_txw_format,
+ &st_ub_format,
+ &st_ul_format,
+ &st_uw_format,
+ &st_voc_format,
#ifdef HAVE_LIBVORBIS
-/* Ogg Vorbis */
-static char *vorbisnames[] = {
- "vorbis",
- "ogg",
- (char *) 0
-};
+ &st_vorbis_format,
#endif
-
-static char *voxnames[] = {
- "vox",
- (char *) 0
+ &st_vox_format,
+ &st_wav_format,
+ &st_wve_format,
+ &st_terminator_format,
+ NULL
};
-/* Microsoftt RIFF */
-static char *wavnames[] = {
- "wav",
- (char *) 0
-};
-
-/* Psion .wve */
-static char *wvenames[] = {
- "wve",
- (char *) 0
-};
-
-st_format_t st_formats[] = {
- {aiffnames,
- ST_FILE_STEREO | ST_FILE_LOOPS | ST_FILE_SEEK,
- st_aiffstartread, st_aiffread, st_aiffstopread,
- st_aiffstartwrite, st_aiffwrite, st_aiffstopwrite, st_aiffseek},
- {alnames, ST_FILE_STEREO,
- st_alstartread, st_rawread, st_rawstopread,
- st_alstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
-#ifdef HAVE_ALSA
- {alsanames, ST_FILE_STEREO | ST_FILE_NOSTDIO,
- st_alsastartread, st_alsaread, st_alsastopread,
- st_alsastartwrite, st_alsawrite, st_alsastopwrite,
- st_format_nothing_seek},
-#endif
- {aunames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_austartread, st_auread, st_rawstopread,
- st_austartwrite, st_auwrite, st_austopwrite,
- st_auseek},
- {autonames, ST_FILE_STEREO,
- st_autostartread, st_format_nothing_io, st_format_nothing,
- st_autostartwrite, st_format_nothing_io, st_format_nothing,
- st_format_nothing_seek},
- {avrnames, ST_FILE_STEREO,
- st_avrstartread, st_rawread, st_format_nothing,
- st_avrstartwrite, st_avrwrite, st_avrstopwrite,
- st_format_nothing_seek},
- {cdrnames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_cdrstartread, st_cdrread, st_cdrstopread,
- st_cdrstartwrite, st_cdrwrite, st_cdrstopwrite,
- st_rawseek},
- {cvsdnames, 0,
- st_cvsdstartread, st_cvsdread, st_cvsdstopread,
- st_cvsdstartwrite, st_cvsdwrite, st_cvsdstopwrite,
- st_format_nothing_seek},
- {datnames, 0,
- st_datstartread, st_datread, st_format_nothing,
- st_datstartwrite, st_datwrite, st_format_nothing,
- st_format_nothing_seek},
- {dvmsnames, 0,
- st_dvmsstartread, st_cvsdread, st_cvsdstopread,
- st_dvmsstartwrite, st_cvsdwrite, st_dvmsstopwrite, st_format_nothing_seek},
-#ifdef ENABLE_GSM
- {gsmnames, 0,
- st_gsmstartread, st_gsmread, st_gsmstopread,
- st_gsmstartwrite, st_gsmwrite, st_gsmstopwrite, st_format_nothing_seek},
-#endif
- {hcomnames, 0,
- st_hcomstartread, st_hcomread, st_hcomstopread,
- st_hcomstartwrite, st_hcomwrite, st_hcomstopwrite, st_format_nothing_seek},
- {lanames, ST_FILE_STEREO,
- st_lastartread, st_rawread, st_rawstopread,
- st_lastartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {lunames, ST_FILE_STEREO,
- st_lustartread, st_rawread, st_rawstopread,
- st_lustartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {maudnames, ST_FILE_STEREO,
- st_maudstartread, st_maudread, st_maudstopread,
- st_maudstartwrite, st_maudwrite, st_maudstopwrite, st_format_nothing_seek},
-#if defined(HAVE_LIBMAD) || defined(HAVE_LAME)
- {mp3names, ST_FILE_STEREO,
- st_mp3startread, st_mp3read, st_mp3stopread,
- st_mp3startwrite, st_mp3write, st_mp3stopwrite, st_format_nothing_seek},
-#endif
- {nulnames, ST_FILE_STEREO | ST_FILE_NOSTDIO,
- st_nulstartread, st_nulread, st_nulstopread,
- st_nulstartwrite, st_nulwrite, st_nulstopwrite, st_format_nothing_seek},
-#ifdef HAVE_OSS
- {ossdspnames, ST_FILE_STEREO,
- st_ossdspstartread, st_rawread, st_rawstopread,
- st_ossdspstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
-#endif
- {prcnames, ST_FILE_SEEK,
- st_prcstartread, st_prcread, st_rawstopread,
- st_prcstartwrite, st_prcwrite, st_prcstopwrite, st_prcseek},
- {rawnames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_rawstartread, st_rawread, st_rawstopread,
- st_rawstartwrite, st_rawwrite, st_rawstopwrite, st_rawseek},
- {sbnames, ST_FILE_STEREO,
- st_sbstartread, st_rawread, st_rawstopread,
- st_sbstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {sfnames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_sfstartread, st_rawread, st_rawstopread,
- st_sfstartwrite, st_rawwrite, st_rawstopwrite, st_sfseek},
- { slnames, ST_FILE_STEREO,
- st_slstartread, st_rawread, st_rawstopread,
- st_slstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {smpnames, ST_FILE_STEREO | ST_FILE_LOOPS | ST_FILE_SEEK,
- st_smpstartread, st_smpread, st_smpstopread,
- st_smpstartwrite, st_smpwrite, st_smpstopwrite, st_smpseek},
- {sndtnames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_sndtstartread, st_rawread, st_rawstopread,
- st_sndtstartwrite, st_sndtwrite, st_sndtstopwrite, st_sndseek},
- {spherenames, ST_FILE_STEREO,
- st_spherestartread, st_sphereread, st_rawstopread,
- st_spherestartwrite, st_spherewrite, st_spherestopwrite,
- st_format_nothing_seek},
-#ifdef HAVE_SUNAUDIO
- {sunnames, ST_FILE_STEREO,
- st_sunstartread, st_rawread, st_rawstopread,
- st_sunstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
-#endif
- {svxnames, ST_FILE_STEREO,
- st_svxstartread, st_svxread, st_svxstopread,
- st_svxstartwrite, st_svxwrite, st_svxstopwrite, st_format_nothing_seek},
- {swnames, ST_FILE_STEREO,
- st_swstartread, st_rawread, st_rawstopread,
- st_swstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {txwnames, 0,
- st_txwstartread, st_txwread, st_txwstopread,
- st_txwstartwrite, st_txwwrite, st_txwstopwrite, st_format_nothing_seek},
- {ubnames, ST_FILE_STEREO,
- st_ubstartread, st_rawread, st_rawstopread,
- st_ubstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {ulnames, ST_FILE_STEREO,
- st_ulstartread, st_rawread, st_rawstopread,
- st_ulstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {uwnames, ST_FILE_STEREO,
- st_uwstartread, st_rawread, st_rawstopread,
- st_uwstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
- {vocnames, ST_FILE_STEREO,
- st_vocstartread, st_vocread, st_vocstopread,
- st_vocstartwrite, st_vocwrite, st_vocstopwrite, st_format_nothing_seek},
-#ifdef HAVE_LIBVORBIS
- {vorbisnames, ST_FILE_STEREO,
- st_vorbisstartread, st_vorbisread, st_vorbisstopread,
- st_vorbisstartwrite, st_vorbiswrite, st_vorbisstopwrite,
- st_format_nothing_seek},
-#endif
- {voxnames, 0,
- st_voxstartread, st_voxread, st_voxstopread,
- st_voxstartwrite, st_voxwrite, st_voxstopwrite,
- st_format_nothing_seek},
- {wavnames, ST_FILE_STEREO | ST_FILE_SEEK,
- st_wavstartread, st_wavread, st_wavstopread,
- st_wavstartwrite, st_wavwrite, st_wavstopwrite, st_wavseek},
- {wvenames, ST_FILE_SEEK,
- st_wvestartread, st_wveread, st_rawstopread,
- st_wvestartwrite, st_wvewrite, st_wvestopwrite, st_wveseek},
- {0, 0,
- 0, 0, 0, 0, 0, 0, 0}
-};
-
/* Effects handlers. */
/*
@@ -405,134 +84,54 @@
*
*/
-st_effect_t st_effects[] = {
- {"avg", ST_EFF_MCHAN | ST_EFF_CHAN,
- st_avg_getopts, st_avg_start, st_avg_flow,
- st_effect_nothing_drain, st_avg_stop},
- {"band", 0,
- st_band_getopts, st_band_start, st_band_flow,
- st_effect_nothing_drain, st_band_stop},
- {"bandpass", 0,
- st_bandpass_getopts, st_bandpass_start, st_butterworth_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"bandreject", 0,
- st_bandreject_getopts, st_bandreject_start, st_butterworth_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"chorus", 0,
- st_chorus_getopts, st_chorus_start, st_chorus_flow,
- st_chorus_drain, st_chorus_stop},
- {"compand", ST_EFF_MCHAN,
- st_compand_getopts, st_compand_start, st_compand_flow,
- st_compand_drain, st_compand_stop},
- {"copy", ST_EFF_MCHAN,
- st_copy_getopts, st_copy_start, st_copy_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"dcshift", ST_EFF_MCHAN,
- st_dcshift_getopts, st_dcshift_start, st_dcshift_flow,
- st_effect_nothing_drain, st_dcshift_stop},
- {"deemph", ST_EFF_MCHAN,
- st_deemph_getopts, st_deemph_start, st_deemph_flow,
- st_effect_nothing_drain, st_deemph_stop},
- {"earwax", ST_EFF_MCHAN,
- st_earwax_getopts, st_earwax_start, st_earwax_flow,
- st_earwax_drain, st_earwax_stop},
- {"echo", 0,
- st_echo_getopts, st_echo_start, st_echo_flow,
- st_echo_drain, st_echo_stop},
- {"echos", 0,
- st_echos_getopts, st_echos_start, st_echos_flow,
- st_echos_drain, st_echos_stop},
- {"fade", ST_EFF_MCHAN,
- st_fade_getopts, st_fade_start, st_fade_flow,
- st_fade_drain, st_fade_stop},
- { "filter", 0,
- st_filter_getopts, st_filter_start, st_filter_flow,
- st_filter_drain, st_filter_stop},
- {"flanger", 0,
- st_flanger_getopts, st_flanger_start, st_flanger_flow,
- st_flanger_drain, st_flanger_stop},
- {"highp", 0,
- st_highp_getopts, st_highp_start, st_highp_flow,
- st_effect_nothing_drain, st_highp_stop},
- {"highpass", 0,
- st_highpass_getopts, st_highpass_start, st_butterworth_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"lowp", 0,
- st_lowp_getopts, st_lowp_start, st_lowp_flow,
- st_effect_nothing_drain, st_lowp_stop},
- {"lowpass", 0,
- st_lowpass_getopts, st_lowpass_start, st_butterworth_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"mask", ST_EFF_MCHAN,
- st_mask_getopts, st_effect_nothing, st_mask_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"mcompand", ST_EFF_MCHAN,
- st_mcompand_getopts, st_mcompand_start, st_mcompand_flow,
- st_mcompand_drain, st_mcompand_stop},
- {"noiseprof", ST_EFF_MCHAN | ST_EFF_REPORT,
- st_noiseprof_getopts, st_noiseprof_start, st_noiseprof_flow,
- st_noiseprof_drain, st_noiseprof_stop},
- {"noisered", ST_EFF_MCHAN,
- st_noisered_getopts, st_noisered_start, st_noisered_flow,
- st_noisered_drain, st_noisered_stop},
- {"pan", ST_EFF_MCHAN | ST_EFF_CHAN,
- st_pan_getopts, st_pan_start, st_pan_flow,
- st_effect_nothing_drain, st_pan_stop},
- {"phaser", 0,
- st_phaser_getopts, st_phaser_start, st_phaser_flow,
- st_phaser_drain, st_phaser_stop},
- {"pick", ST_EFF_MCHAN | ST_EFF_CHAN,
- st_avg_getopts, st_avg_start, st_avg_flow,
- st_effect_nothing_drain, st_avg_stop},
- {"pitch", 0,
- st_pitch_getopts, st_pitch_start, st_pitch_flow,
- st_pitch_drain, st_pitch_stop},
- {"polyphase", ST_EFF_RATE,
- st_poly_getopts, st_poly_start, st_poly_flow,
- st_poly_drain, st_poly_stop},
- {"rate", ST_EFF_RATE,
- st_rate_getopts, st_rate_start, st_rate_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"repeat", 0,
- st_repeat_getopts, st_repeat_start, st_repeat_flow,
- st_repeat_drain, st_repeat_stop},
- {"resample", ST_EFF_RATE,
- st_resample_getopts, st_resample_start, st_resample_flow,
- st_resample_drain, st_resample_stop},
- {"reverb", 0,
- st_reverb_getopts, st_reverb_start, st_reverb_flow,
- st_reverb_drain, st_reverb_stop},
- {"reverse", 0,
- st_reverse_getopts, st_reverse_start,
- st_reverse_flow, st_reverse_drain, st_reverse_stop},
- {"silence", ST_EFF_MCHAN,
- st_silence_getopts, st_silence_start,
- st_silence_flow, st_silence_drain, st_silence_stop},
- {"speed", 0,
- st_speed_getopts, st_speed_start,
- st_speed_flow, st_speed_drain, st_speed_stop},
- {"stat", ST_EFF_MCHAN | ST_EFF_REPORT,
- st_stat_getopts, st_stat_start, st_stat_flow,
- st_stat_drain, st_stat_stop},
- {"stretch", 0,
- st_stretch_getopts, st_stretch_start, st_stretch_flow,
- st_stretch_drain, st_stretch_stop},
- {"swap", ST_EFF_MCHAN,
- st_swap_getopts, st_swap_start, st_swap_flow,
- st_swap_drain, st_swap_stop},
- {"synth", ST_EFF_MCHAN,
- st_synth_getopts, st_synth_start, st_synth_flow,
- st_synth_drain, st_synth_stop},
- {"trim", ST_EFF_MCHAN,
- st_trim_getopts, st_trim_start, st_trim_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"vibro", 0,
- st_vibro_getopts, st_vibro_start, st_vibro_flow,
- st_effect_nothing_drain, st_effect_nothing},
- {"vol", ST_EFF_MCHAN,
- st_vol_getopts, st_vol_start, st_vol_flow,
- st_effect_nothing_drain, st_vol_stop},
- {0, 0, 0, 0, 0, 0, 0}
+st_effect_t st_terminator_effect =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0
};
-
+st_effect_t *st_effects[] = {
+ &st_avg_effect,
+ &st_band_effect,
+ &st_bandpass_effect,
+ &st_bandreject_effect,
+ &st_chorus_effect,
+ &st_compand_effect,
+ &st_copy_effect,
+ &st_dcshift_effect,
+ &st_deemph_effect,
+ &st_earwax_effect,
+ &st_echo_effect,
+ &st_echos_effect,
+ &st_fade_effect,
+ &st_filter_effect,
+ &st_flanger_effect,
+ &st_highp_effect,
+ &st_highpass_effect,
+ &st_lowp_effect,
+ &st_lowpass_effect,
+ &st_mask_effect,
+ &st_mcompand_effect,
+ &st_noiseprof_effect,
+ &st_noisered_effect,
+ &st_pan_effect,
+ &st_phaser_effect,
+ &st_pick_effect,
+ &st_pitch_effect,
+ &st_polyphase_effect,
+ &st_rate_effect,
+ &st_repeat_effect,
+ &st_resample_effect,
+ &st_reverb_effect,
+ &st_reverse_effect,
+ &st_silence_effect,
+ &st_speed_effect,
+ &st_stat_effect,
+ &st_stretch_effect,
+ &st_swap_effect,
+ &st_synth_effect,
+ &st_trim_effect,
+ &st_vibro_effect,
+ &st_vol_effect,
+ &st_terminator_effect,
+ NULL
+};
--- a/src/hcom.c
+++ b/src/hcom.c
@@ -571,3 +571,22 @@
return (ST_SUCCESS);
}
+
+/* Mac FSSD/HCOM */
+static char *hcomnames[] = {
+ "hcom",
+ NULL
+};
+
+st_format_t st_hcom_format = {
+ hcomnames,
+ NULL,
+ 0,
+ st_hcomstartread,
+ st_hcomread,
+ st_hcomstopread,
+ st_hcomstartwrite,
+ st_hcomwrite,
+ st_hcomstopwrite,
+ st_format_nothing_seek
+};
--- a/src/highp.c
+++ b/src/highp.c
@@ -113,3 +113,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_highp_effect = {
+ "highp",
+ NULL,
+ 0,
+ st_highp_getopts,
+ st_highp_start,
+ st_highp_flow,
+ st_effect_nothing_drain,
+ st_highp_stop
+};
--- a/src/highpass.c
+++ b/src/highpass.c
@@ -72,3 +72,14 @@
butterworth->b [1] = (1.0 - sqrt(2.0) * c + c * c) * butterworth->a [0];
return (ST_SUCCESS);
}
+
+st_effect_t st_highpass_effect = {
+ "highpass",
+ NULL,
+ 0,
+ st_highpass_getopts,
+ st_highpass_start,
+ st_butterworth_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/lowp.c
+++ b/src/lowp.c
@@ -106,3 +106,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_lowp_effect = {
+ "lowp",
+ NULL,
+ 0,
+ st_lowp_getopts,
+ st_lowp_start,
+ st_lowp_flow,
+ st_effect_nothing_drain,
+ st_lowp_stop
+};
--- a/src/lowpass.c
+++ b/src/lowpass.c
@@ -57,3 +57,14 @@
butterworth->b [1] = (1.0 - sqrt(2.0) * c + c * c) * butterworth->a [0];
return (ST_SUCCESS);
}
+
+st_effect_t st_lowpass_effect = {
+ "lowpass",
+ NULL,
+ 0,
+ st_lowpass_getopts,
+ st_lowpass_start,
+ st_butterworth_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/mask.c
+++ b/src/mask.c
@@ -96,3 +96,14 @@
*osamp = done;
return (ST_SUCCESS);
}
+
+st_effect_t st_mask_effect = {
+ "mask",
+ NULL,
+ ST_EFF_MCHAN,
+ st_mask_getopts,
+ st_effect_nothing,
+ st_mask_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/maud.c
+++ b/src/maud.c
@@ -387,3 +387,22 @@
st_writes(ft, "MDAT");
st_writedw(ft, p->nsamples * ft->info.size ); /* samples in file */
}
+
+/* Amiga MAUD */
+static char *maudnames[] = {
+ "maud",
+ NULL,
+};
+
+st_format_t st_maud_format = {
+ maudnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_maudstartread,
+ st_maudread,
+ st_maudstopread,
+ st_maudstartwrite,
+ st_maudwrite,
+ st_maudstopwrite,
+ st_format_nothing_seek
+};
--- a/src/mcompand.c
+++ b/src/mcompand.c
@@ -711,3 +711,14 @@
return (ST_SUCCESS);
}
+
+st_effect_t st_mcompand_effect = {
+ "mcompand",
+ NULL,
+ ST_EFF_MCHAN,
+ st_mcompand_getopts,
+ st_mcompand_start,
+ st_mcompand_flow,
+ st_mcompand_drain,
+ st_mcompand_stop
+};
--- a/src/mp3.c
+++ b/src/mp3.c
@@ -520,4 +520,24 @@
return ST_EOF;
}
#endif /* HAVE_LAME */
+
+/* MP3 */
+static char *mp3names[] = {
+ "mp3",
+ "mp2",
+ NULL,
+};
+
+st_format_t st_mp3_format = {
+ mp3names,
+ NULL,
+ ST_FILE_STEREO,
+ st_mp3startread,
+ st_mp3read,
+ st_mp3stopread,
+ st_mp3startwrite,
+ st_mp3write,
+ st_mp3stopwrite,
+ st_format_nothing_seek
+};
#endif
--- a/src/noiseprof.c
+++ b/src/noiseprof.c
@@ -209,6 +209,17 @@
return (ST_SUCCESS);
}
+st_effect_t st_noiseprof_effect = {
+ "noiseprof",
+ NULL,
+ ST_EFF_MCHAN | ST_EFF_REPORT,
+ st_noiseprof_getopts,
+ st_noiseprof_start,
+ st_noiseprof_flow,
+ st_noiseprof_drain,
+ st_noiseprof_stop
+};
+
/* For Emacs:
Local Variables:
c-basic-offset: 4
--- a/src/noisered.c
+++ b/src/noisered.c
@@ -343,6 +343,17 @@
return (ST_SUCCESS);
}
+st_effect_t st_noisered_effect = {
+ "noisered",
+ NULL,
+ ST_EFF_MCHAN,
+ st_noisered_getopts,
+ st_noisered_start,
+ st_noisered_flow,
+ st_noisered_drain,
+ st_noisered_stop
+};
+
/* For Emacs:
Local Variables:
c-basic-offset: 4
--- a/src/nulfile.c
+++ b/src/nulfile.c
@@ -109,15 +109,20 @@
return (ST_SUCCESS);
}
+static char *nulnames[] = {
+ "nul",
+ NULL,
+};
-
-
-
-
-
-
-
-
-
-
-
+st_format_t st_nul_format = {
+ nulnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_NOSTDIO,
+ st_nulstartread,
+ st_nulread,
+ st_nulstopread,
+ st_nulstartwrite,
+ st_nulwrite,
+ st_nulstopwrite,
+ st_format_nothing_seek
+};
--- a/src/oss.c
+++ b/src/oss.c
@@ -215,4 +215,23 @@
{
return ossdspinit(ft);
}
+
+/* OSS /dev/dsp player */
+static char *ossdspnames[] = {
+ "ossdsp",
+ NULL
+};
+
+st_format_t st_ossdsp_format = {
+ ossdspnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_ossdspstartread,
+ st_rawread,
+ st_rawstopread,
+ st_ossdspstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
#endif
--- a/src/pan.c
+++ b/src/pan.c
@@ -448,3 +448,14 @@
}
return ST_SUCCESS;
}
+
+st_effect_t st_pan_effect = {
+ "pan",
+ NULL,
+ ST_EFF_MCHAN | ST_EFF_CHAN,
+ st_pan_getopts,
+ st_pan_start,
+ st_pan_flow,
+ st_effect_nothing_drain,
+ st_pan_stop
+};
--- a/src/phaser.c
+++ b/src/phaser.c
@@ -277,3 +277,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_phaser_effect = {
+ "phaser",
+ NULL,
+ 0,
+ st_phaser_getopts,
+ st_phaser_start,
+ st_phaser_flow,
+ st_phaser_drain,
+ st_phaser_stop
+};
--- a/src/pitch.c
+++ b/src/pitch.c
@@ -617,3 +617,14 @@
return ST_SUCCESS;
}
+
+st_effect_t st_pitch_effect = {
+ "pitch",
+ NULL,
+ 0,
+ st_pitch_getopts,
+ st_pitch_start,
+ st_pitch_flow,
+ st_pitch_drain,
+ st_pitch_stop
+};
--- a/src/polyphas.c
+++ b/src/polyphas.c
@@ -664,3 +664,14 @@
}
return (ST_SUCCESS);
}
+
+st_effect_t st_polyphase_effect = {
+ "polyphase",
+ NULL,
+ ST_EFF_RATE,
+ st_poly_getopts,
+ st_poly_start,
+ st_poly_flow,
+ st_poly_drain,
+ st_poly_stop
+};
--- a/src/prc.c
+++ b/src/prc.c
@@ -209,3 +209,22 @@
st_writew(ft, p->length);
st_writebuf(ft, nullbuf,1,2);
}
+
+/* Psion .prc */
+static char *prcnames[] = {
+ "prc",
+ NULL
+};
+
+st_format_t st_prc_format = {
+ prcnames,
+ NULL,
+ ST_FILE_SEEK,
+ st_prcstartread,
+ st_prcread,
+ st_rawstopread,
+ st_prcstartwrite,
+ st_prcwrite,
+ st_prcstopwrite,
+ st_prcseek
+};
--- a/src/rate.c
+++ b/src/rate.c
@@ -336,3 +336,14 @@
return (ST_SUCCESS);
}
#endif /* USE_OLD_RATE */
+
+st_effect_t st_rate_effect = {
+ "rate",
+ NULL,
+ ST_EFF_RATE,
+ st_rate_getopts,
+ st_rate_start,
+ st_rate_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/raw.c
+++ b/src/raw.c
@@ -821,3 +821,188 @@
if (ft->info.channels == -1)
ft->info.channels = 1;
}
+
+static char *rawnames[] = {
+ "raw",
+ NULL
+};
+
+st_format_t st_raw_format = {
+ rawnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_rawstartread,
+ st_rawread,
+ st_rawstopread,
+ st_rawstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_rawseek
+};
+
+/* a-law byte raw */
+static char *alnames[] = {
+ "al",
+ NULL
+};
+
+st_format_t st_al_format = {
+ alnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_alstartread,
+ st_rawread,
+ st_rawstopread,
+ st_alstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+/* inverse a-law byte raw */
+static char *lanames[] = {
+ "la",
+ NULL
+};
+
+st_format_t st_la_format = {
+ lanames,
+ NULL,
+ ST_FILE_STEREO,
+ st_lastartread,
+ st_rawread,
+ st_rawstopread,
+ st_lastartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+/* inverse u-law byte raw */
+static char *lunames[] = {
+ "lu",
+ NULL
+};
+
+st_format_t st_lu_format = {
+ lunames,
+ NULL,
+ ST_FILE_STEREO,
+ st_lustartread,
+ st_rawread,
+ st_rawstopread,
+ st_lustartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *sbnames[] = {
+ "sb",
+ NULL
+};
+
+st_format_t st_sb_format = {
+ sbnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_sbstartread,
+ st_rawread,
+ st_rawstopread,
+ st_sbstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *slnames[] = {
+ "sl",
+ NULL,
+};
+
+st_format_t st_sl_format = {
+ slnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_slstartread,
+ st_rawread,
+ st_rawstopread,
+ st_slstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *swnames[] = {
+ "sw",
+ NULL
+};
+
+st_format_t st_sw_format = {
+ swnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_swstartread,
+ st_rawread,
+ st_rawstopread,
+ st_swstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *ubnames[] = {
+ "ub",
+ "sou",
+ "fssd",
+ NULL
+};
+
+st_format_t st_ub_format = {
+ ubnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_ubstartread,
+ st_rawread,
+ st_rawstopread,
+ st_ubstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *ulnames[] = {
+ "ul",
+ NULL
+};
+
+st_format_t st_ul_format = {
+ ulnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_ulstartread,
+ st_rawread,
+ st_rawstopread,
+ st_ulstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
+
+static char *uwnames[] = {
+ "uw",
+ NULL
+};
+
+st_format_t st_uw_format = {
+ uwnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_uwstartread,
+ st_rawread,
+ st_rawstopread,
+ st_uwstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
--- a/src/repeat.c
+++ b/src/repeat.c
@@ -195,3 +195,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_repeat_effect = {
+ "repeat",
+ NULL,
+ 0,
+ st_repeat_getopts,
+ st_repeat_start,
+ st_repeat_flow,
+ st_repeat_drain,
+ st_repeat_stop
+};
--- a/src/resample.c
+++ b/src/resample.c
@@ -709,3 +709,14 @@
}
}
}
+
+st_effect_t st_resample_effect = {
+ "resample",
+ NULL,
+ ST_EFF_RATE,
+ st_resample_getopts,
+ st_resample_start,
+ st_resample_flow,
+ st_resample_drain,
+ st_resample_stop
+};
--- a/src/reverb.c
+++ b/src/reverb.c
@@ -286,3 +286,14 @@
reverb->reverbbuf = (float *) -1; /* guaranteed core dump */
return (ST_SUCCESS);
}
+
+st_effect_t st_reverb_effect = {
+ "reverb",
+ NULL,
+ 0,
+ st_reverb_getopts,
+ st_reverb_start,
+ st_reverb_flow,
+ st_reverb_drain,
+ st_reverb_stop
+};
--- a/src/reverse.c
+++ b/src/reverse.c
@@ -142,3 +142,14 @@
fclose(reverse->fp);
return (ST_SUCCESS);
}
+
+st_effect_t st_reverse_effect = {
+ "reverse",
+ NULL,
+ 0,
+ st_reverse_getopts,
+ st_reverse_start,
+ st_reverse_flow,
+ st_reverse_drain,
+ st_reverse_stop
+};
--- a/src/sf.c
+++ b/src/sf.c
@@ -222,3 +222,21 @@
}
/* Read and write are supplied by raw.c */
+/* IRCAM Sound File */
+static char *sfnames[] = {
+ "sf",
+ NULL
+};
+
+st_format_t st_sf_format = {
+ sfnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_sfstartread,
+ st_rawread,
+ st_rawstopread,
+ st_sfstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_sfseek
+};
--- a/src/silence.c
+++ b/src/silence.c
@@ -695,3 +695,14 @@
free(silence->stop_holdoff);
return(ST_SUCCESS);
}
+
+st_effect_t st_silence_effect = {
+ "silence",
+ NULL,
+ ST_EFF_MCHAN,
+ st_silence_getopts,
+ st_silence_start,
+ st_silence_flow,
+ st_silence_drain,
+ st_silence_stop
+};
--- a/src/smp.c
+++ b/src/smp.c
@@ -430,3 +430,22 @@
return(ST_SUCCESS);
}
+
+/* SampleVision sound */
+static char *smpnames[] = {
+ "smp",
+ NULL,
+};
+
+st_format_t st_smp_format = {
+ smpnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_LOOPS | ST_FILE_SEEK,
+ st_smpstartread,
+ st_smpread,
+ st_smpstopread,
+ st_smpstartwrite,
+ st_smpwrite,
+ st_smpstopwrite,
+ st_smpseek
+};
--- a/src/sndrtool.c
+++ b/src/sndrtool.c
@@ -256,3 +256,21 @@
st_writebuf(ft, name_buf, 1, 96);
}
+/* Sndtool Sound File */
+static char *sndtnames[] = {
+ "sndt",
+ NULL
+};
+
+st_format_t st_snd_format = {
+ sndtnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_sndtstartread,
+ st_rawread,
+ st_rawstopread,
+ st_sndtstartwrite,
+ st_sndtwrite,
+ st_sndtstopwrite,
+ st_sndseek
+};
--- a/src/sox.c
+++ b/src/sox.c
@@ -806,8 +806,8 @@
{
int i1;
fprintf(stderr, "%s: Known effects: ",myname);
- for (i1 = 0; st_effects[i1].name; i1++)
- fprintf(stderr, "%s ", st_effects[i1].name);
+ for (i1 = 0; st_effects[i1]->name; i1++)
+ fprintf(stderr, "%s ", st_effects[i1]->name);
fprintf(stderr, "\n\n");
st_fail("Effect '%s' is not known!", argv[optind]);
}
@@ -1591,14 +1591,14 @@
fprintf(stderr,"gopts: -e -h -p -q -S -V\n\n");
fprintf(stderr,"fopts: -r rate -c channels -s/-u/-U/-A/-a/-i/-g/-f -b/-w/-l/-d -v volume -x\n\n");
fprintf(stderr, "effect: ");
- for (i = 0; st_effects[i].name != NULL; i++) {
- fprintf(stderr, "%s ", st_effects[i].name);
+ for (i = 0; st_effects[i]->name != NULL; i++) {
+ fprintf(stderr, "%s ", st_effects[i]->name);
}
fprintf(stderr, "\n\neffopts: depends on effect\n\n");
fprintf(stderr, "Supported file formats: ");
- for (i = 0; st_formats[i].names != NULL; i++) {
+ for (i = 0; st_formats[i]->names != NULL; i++) {
/* only print the first name */
- fprintf(stderr, "%s ", st_formats[i].names[0]);
+ fprintf(stderr, "%s ", st_formats[i]->names[0]);
}
fputc('\n', stderr);
}
--- a/src/speed.c
+++ b/src/speed.c
@@ -301,3 +301,14 @@
return ST_SUCCESS;
}
+
+st_effect_t st_speed_effect = {
+ "speed",
+ NULL,
+ 0,
+ st_speed_getopts,
+ st_speed_start,
+ st_speed_flow,
+ st_speed_drain,
+ st_speed_stop
+};
--- a/src/sphere.c
+++ b/src/sphere.c
@@ -308,3 +308,22 @@
return (ST_SUCCESS);
}
+
+/* NIST Sphere File */
+static char *spherenames[] = {
+ "sph",
+ NULL
+};
+
+st_format_t st_sphere_format = {
+ spherenames,
+ NULL,
+ ST_FILE_STEREO,
+ st_spherestartread,
+ st_sphereread,
+ st_rawstopread,
+ st_spherestartwrite,
+ st_spherewrite,
+ st_spherestopwrite,
+ st_format_nothing_seek
+};
--- a/src/st.h
+++ b/src/st.h
@@ -166,6 +166,7 @@
typedef struct st_format {
char **names;
+ char *usage;
unsigned int flags;
int (*startread)(ft_t ft);
st_ssize_t (*read)(ft_t ft, st_sample_t *buf, st_ssize_t len);
@@ -203,7 +204,7 @@
char priv[ST_MAX_FILE_PRIVSIZE]; /* format's private data area */
};
-extern st_format_t st_formats[];
+extern st_format_t *st_formats[];
/* file flags field */
#define ST_FILE_STEREO 1 /* does file format support stereo? */
@@ -258,6 +259,7 @@
typedef struct
{
char *name; /* effect name */
+ char *usage;
unsigned int flags;
int (*getopts)(eff_t effp, int argc, char **argv);
@@ -286,7 +288,7 @@
char priv[ST_MAX_EFFECT_PRIVSIZE]; /* private area for effect */
};
-extern st_effect_t st_effects[]; /* declared in handlers.c */
+extern st_effect_t *st_effects[]; /* declared in handlers.c */
extern ft_t st_open_read(const char *path, const st_signalinfo_t *info,
const char *filetype);
--- a/src/st_i.h
+++ b/src/st_i.h
@@ -147,128 +147,57 @@
*=============================================================================
*/
-/* The following functions can be used to simply return success if
- * a file handler or effect doesn't need to do anything special
- */
-int st_format_nothing(ft_t ft);
-st_ssize_t st_format_nothing_io(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_format_nothing_seek(ft_t ft, st_size_t offset);
-int st_effect_nothing(eff_t effp);
-int st_effect_nothing_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-
-int st_aiffstartread(ft_t ft);
-st_ssize_t st_aiffread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_aiffstopread(ft_t ft);
-int st_aiffstartwrite(ft_t ft);
-st_ssize_t st_aiffwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_aiffstopwrite(ft_t ft);
-int st_aiffseek(ft_t ft, st_size_t offset);
-
-int st_alstartread(ft_t ft);
-int st_alstartwrite(ft_t ft);
-
+st_format_t st_svx_format;
+st_format_t st_aiff_format;
#ifdef HAVE_ALSA
-int st_alsastartread(ft_t ft);
-st_ssize_t st_alsaread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_alsastopread(ft_t ft);
-int st_alsastartwrite(ft_t ft);
-st_ssize_t st_alsawrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_alsastopwrite(ft_t ft);
+st_format_t st_alsa_format;
#endif
-
-int st_austartread(ft_t ft);
-st_ssize_t st_auread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_austartwrite(ft_t ft);
-st_ssize_t st_auwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_austopwrite(ft_t ft);
-int st_auseek(ft_t ft, st_size_t offset);
-
-int st_autostartread(ft_t ft);
-int st_autostartwrite(ft_t ft);
-
-int st_avrstartread(ft_t ft);
-int st_avrstartwrite(ft_t ft);
-st_ssize_t st_avrwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_avrstopwrite(ft_t ft);
-
-int st_cdrstartread(ft_t ft);
-st_ssize_t st_cdrread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_cdrstopread(ft_t ft);
-int st_cdrstartwrite(ft_t ft);
-st_ssize_t st_cdrwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_cdrstopwrite(ft_t ft);
-
-int st_cvsdstartread(ft_t ft);
-st_ssize_t st_cvsdread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_cvsdstopread(ft_t ft);
-int st_cvsdstartwrite(ft_t ft);
-st_ssize_t st_cvsdwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_cvsdstopwrite(ft_t ft);
-
-int st_datstartread(ft_t ft);
-st_ssize_t st_datread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_datstartwrite(ft_t ft);
-st_ssize_t st_datwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-
-int st_dvmsstartread(ft_t ft);
-int st_dvmsstartwrite(ft_t ft);
-int st_dvmsstopwrite(ft_t ft);
-
+st_format_t st_au_format;
+st_format_t st_auto_format;
+st_format_t st_avr_format;
+st_format_t st_cdr_format;
+st_format_t st_cvsd_format;
+st_format_t st_dvms_format;
+st_format_t st_dat_format;
#ifdef ENABLE_GSM
-int st_gsmstartread(ft_t ft);
-st_ssize_t st_gsmread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_gsmstopread(ft_t ft);
-int st_gsmstartwrite(ft_t ft);
-st_ssize_t st_gsmwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_gsmstopwrite(ft_t ft);
+st_format_t st_gsm_format;
#endif
-
-int st_hcomstartread(ft_t ft);
-st_ssize_t st_hcomread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_hcomstopread(ft_t ft);
-int st_hcomstartwrite(ft_t ft);
-st_ssize_t st_hcomwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_hcomstopwrite(ft_t ft);
-
-int st_lastartread(ft_t ft);
-int st_lastartwrite(ft_t ft);
-
-int st_lustartread(ft_t ft);
-int st_lustartwrite(ft_t ft);
-
-int st_maudstartread(ft_t ft);
-st_ssize_t st_maudread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_maudstopread(ft_t ft);
-st_ssize_t st_maudwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_maudstartwrite(ft_t ft);
-int st_maudstopwrite(ft_t ft);
-
-int st_mp3startread(ft_t ft);
-st_ssize_t st_mp3read(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_mp3stopread(ft_t ft);
-st_ssize_t st_mp3write(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_mp3startwrite(ft_t ft);
-int st_mp3stopwrite(ft_t ft);
-
-int st_nulstartread(ft_t ft);
-st_ssize_t st_nulread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_nulstopread(ft_t ft);
-int st_nulstartwrite(ft_t ft);
-st_ssize_t st_nulwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_nulstopwrite(ft_t ft);
-
+st_format_t st_hcom_format;
+st_format_t st_maud_format;
+st_format_t st_mp3_format;
+st_format_t st_nul_format;
#ifdef HAVE_OSS
-int st_ossdspstartread(ft_t ft);
-int st_ossdspstartwrite(ft_t ft);
+st_format_t st_ossdsp_format;
#endif
+st_format_t st_prc_format;
+st_format_t st_raw_format;
+st_format_t st_al_format;
+st_format_t st_la_format;
+st_format_t st_lu_format;
+st_format_t st_sb_format;
+st_format_t st_sl_format;
+st_format_t st_sw_format;
+st_format_t st_ub_format;
+st_format_t st_ul_format;
+st_format_t st_uw_format;
+st_format_t st_sf_format;
+st_format_t st_smp_format;
+st_format_t st_snd_format;
+st_format_t st_sphere_format;
+#ifdef HAVE_SUNAUDIO
+st_format_t st_sun_format;
+#endif
+st_format_t st_txw_format;
+st_format_t st_voc_format;
+#ifdef HAVE_LIBVORBIS
+st_format_t st_vorbis_format;
+#endif
+st_format_t st_vox_format;
+st_format_t st_wav_format;
+st_format_t st_wve_format;
-int st_prcstartread(ft_t ft);
-st_ssize_t st_prcread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_prcstartwrite(ft_t ft);
-st_ssize_t st_prcwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_prcstopwrite(ft_t ft);
-int st_prcseek(ft_t ft, st_size_t offset);
-
+/* Raw I/O
+ */
int st_rawstartread(ft_t ft);
st_ssize_t st_rawread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp);
int st_rawstopread(ft_t ft);
@@ -277,365 +206,67 @@
int st_rawstopwrite(ft_t ft);
int st_rawseek(ft_t ft, st_size_t offset);
-int st_sbstartread(ft_t ft);
-int st_sbstartwrite(ft_t ft);
+/* The following functions can be used to simply return success if
+ * a file handler or effect doesn't need to do anything special
+ */
+int st_format_nothing(ft_t ft);
+st_ssize_t st_format_nothing_io(ft_t ft, st_sample_t *buf, st_ssize_t len);
+int st_format_nothing_seek(ft_t ft, st_size_t offset);
+int st_effect_nothing(eff_t effp);
+int st_effect_nothing_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_sfstartread(ft_t ft);
-int st_sfstartwrite(ft_t ft);
-int st_sfseek(ft_t ft, st_size_t offset);
-
-int st_slstartread(ft_t ft);
-int st_slstartwrite(ft_t ft);
-
-int st_smpstartread(ft_t ft);
-st_ssize_t st_smpread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_smpstopread(ft_t ft);
-int st_smpstartwrite(ft_t ft);
-st_ssize_t st_smpwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_smpstopwrite(ft_t ft);
-int st_smpseek(ft_t ft, st_size_t offset);
-
-int st_sndtstartread(ft_t ft);
-int st_sndtstartwrite(ft_t ft);
-st_ssize_t st_sndtwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_sndtstopwrite(ft_t ft);
-int st_sndseek(ft_t ft, st_size_t offset);
-
-int st_spherestartread(ft_t ft);
-st_ssize_t st_sphereread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_spherestartwrite(ft_t ft);
-st_ssize_t st_spherewrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_spherestopwrite(ft_t ft);
-
-#ifdef HAVE_SUNAUDIO
-int st_sunstartread(ft_t ft);
-int st_sunstartwrite(ft_t ft);
-#endif
-
-int st_svxstartread(ft_t ft);
-st_ssize_t st_svxread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_svxstopread(ft_t ft);
-int st_svxstartwrite(ft_t ft);
-st_ssize_t st_svxwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_svxstopwrite(ft_t ft);
-
-int st_swstartread(ft_t ft);
-int st_swstartwrite(ft_t ft);
-
-int st_txwstartread(ft_t ft);
-st_ssize_t st_txwread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_txwstopread(ft_t ft);
-int st_txwstartwrite(ft_t ft);
-st_ssize_t st_txwwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_txwstopwrite(ft_t ft);
-
-int st_ubstartread(ft_t ft);
-int st_ubstartwrite(ft_t ft);
-
-int st_ulstartread(ft_t ft);
-int st_ulstartwrite(ft_t ft);
-
-int st_uwstartread(ft_t ft);
-int st_uwstartwrite(ft_t ft);
-
-int st_vocstartread(ft_t ft);
-st_ssize_t st_vocread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_vocstopread(ft_t ft);
-int st_vocstartwrite(ft_t ft);
-st_ssize_t st_vocwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_vocstopwrite(ft_t ft);
-
-#ifdef HAVE_LIBVORBIS
-int st_vorbisstartread(ft_t ft);
-st_ssize_t st_vorbisread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_vorbisstopread(ft_t ft);
-int st_vorbisstartwrite(ft_t ft);
-st_ssize_t st_vorbiswrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_vorbisstopwrite(ft_t ft);
-#endif
-
-int st_voxstartread(ft_t ft);
-st_ssize_t st_voxread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_voxstopread(ft_t ft);
-int st_voxstartwrite(ft_t ft);
-st_ssize_t st_voxwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_voxstopwrite(ft_t ft);
-
-int st_wavstartread(ft_t ft);
-st_ssize_t st_wavread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_wavstopread(ft_t ft);
-int st_wavstartwrite(ft_t ft);
-st_ssize_t st_wavwrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_wavstopwrite(ft_t ft);
-int st_wavseek(ft_t ft, st_size_t offset);
-
-int st_wvestartread(ft_t ft);
-st_ssize_t st_wveread(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_wvestartwrite(ft_t ft);
-st_ssize_t st_wvewrite(ft_t ft, st_sample_t *buf, st_ssize_t len);
-int st_wvestopwrite(ft_t ft);
-int st_wveseek(ft_t ft, st_size_t offset);
-
/*=============================================================================
* Effects
*=============================================================================
*/
-int st_avg_getopts(eff_t effp, int argc, char **argv);
-int st_avg_start(eff_t effp);
-int st_avg_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_avg_stop(eff_t effp);
-int st_band_getopts(eff_t effp, int argc, char **argv);
-int st_band_start(eff_t effp);
-int st_band_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_band_stop(eff_t effp);
-int st_bandpass_getopts(eff_t effp, int argc, char **argv);
-int st_bandpass_start(eff_t effp);
+st_effect_t st_avg_effect;
+st_effect_t st_pick_effect;
+st_effect_t st_band_effect;
+st_effect_t st_bandpass_effect;
+st_effect_t st_bandreject_effect;
+st_effect_t st_chorus_effect;
+st_effect_t st_compand_effect;
+st_effect_t st_copy_effect;
+st_effect_t st_dcshift_effect;
+st_effect_t st_deemph_effect;
+st_effect_t st_earwax_effect;
+st_effect_t st_echo_effect;
+st_effect_t st_echos_effect;
+st_effect_t st_fade_effect;
+st_effect_t st_filter_effect;
+st_effect_t st_flanger_effect;
+st_effect_t st_highp_effect;
+st_effect_t st_highpass_effect;
+st_effect_t st_lowp_effect;
+st_effect_t st_lowpass_effect;
+st_effect_t st_mask_effect;
+st_effect_t st_mcompand_effect;
+st_effect_t st_noiseprof_effect;
+st_effect_t st_noisered_effect;
+st_effect_t st_pan_effect;
+st_effect_t st_phaser_effect;
+st_effect_t st_pitch_effect;
+st_effect_t st_polyphase_effect;
+st_effect_t st_rate_effect;
+st_effect_t st_repeat_effect;
+st_effect_t st_resample_effect;
+st_effect_t st_reverb_effect;
+st_effect_t st_reverse_effect;
+st_effect_t st_silence_effect;
+st_effect_t st_speed_effect;
+st_effect_t st_stat_effect;
+st_effect_t st_stretch_effect;
+st_effect_t st_swap_effect;
+st_effect_t st_synth_effect;
+st_effect_t st_trim_effect;
+st_effect_t st_vibro_effect;
+st_effect_t st_vol_effect;
-int st_bandreject_getopts(eff_t effp, int argc, char **argv);
-int st_bandreject_start(eff_t effp);
-
-int st_chorus_getopts(eff_t effp, int argc, char **argv);
-int st_chorus_start(eff_t effp);
-int st_chorus_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_chorus_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_chorus_stop(eff_t effp);
-
-int st_compand_getopts(eff_t effp, int argc, char **argv);
-int st_compand_start(eff_t effp);
-int st_compand_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_compand_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_compand_stop(eff_t effp);
-
-int st_copy_getopts(eff_t effp, int argc, char **argv);
-int st_copy_start(eff_t effp);
-int st_copy_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_copy_stop(eff_t effp);
-
-int st_dcshift_getopts(eff_t effp, int argc, char **argv);
-int st_dcshift_start(eff_t effp);
-int st_dcshift_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_dcshift_stop(eff_t effp);
-
-int st_deemph_getopts(eff_t effp, int argc, char **argv);
-int st_deemph_start(eff_t effp);
-int st_deemph_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_deemph_stop(eff_t effp);
-
-int st_earwax_getopts(eff_t effp, int argc, char **argv);
-int st_earwax_start(eff_t effp);
-int st_earwax_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_earwax_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_earwax_stop(eff_t effp);
-
-int st_echo_getopts(eff_t effp, int argc, char **argv);
-int st_echo_start(eff_t effp);
-int st_echo_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_echo_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_echo_stop(eff_t effp);
-
-int st_echos_getopts(eff_t effp, int argc, char **argv);
-int st_echos_start(eff_t effp);
-int st_echos_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_echos_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_echos_stop(eff_t effp);
-
-int st_fade_getopts(eff_t effp, int argc, char **argv);
-int st_fade_start(eff_t effp);
-int st_fade_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_fade_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_fade_stop(eff_t effp);
-
-int st_filter_getopts(eff_t effp, int argc, char **argv);
-int st_filter_start(eff_t effp);
-int st_filter_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_filter_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_filter_stop(eff_t effp);
-
-int st_flanger_getopts(eff_t effp, int argc, char **argv);
-int st_flanger_start(eff_t effp);
-int st_flanger_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_flanger_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_flanger_stop(eff_t effp);
-
-int st_highp_getopts(eff_t effp, int argc, char **argv);
-int st_highp_start(eff_t effp);
-int st_highp_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_highp_stop(eff_t effp);
-
-int st_highpass_getopts(eff_t effp, int argc, char **argv);
-int st_highpass_start(eff_t effp);
-
-int st_lowp_getopts(eff_t effp, int argc, char **argv);
-int st_lowp_start(eff_t effp);
-int st_lowp_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_lowp_stop(eff_t effp);
-
-int st_lowpass_getopts(eff_t effp, int argc, char **argv);
-int st_lowpass_start(eff_t effp);
-
-int st_mask_getopts(eff_t effp, int argc, char **argv);
-int st_mask_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-
-int st_mcompand_getopts(eff_t effp, int argc, char **argv);
-int st_mcompand_start(eff_t effp);
-int st_mcompand_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_mcompand_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_mcompand_stop(eff_t effp);
-
-int st_noiseprof_getopts(eff_t effp, int argc, char **argv);
-int st_noiseprof_start(eff_t effp);
-int st_noiseprof_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_noiseprof_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_noiseprof_stop(eff_t effp);
-
-int st_noisered_getopts(eff_t effp, int argc, char **argv);
-int st_noisered_start(eff_t effp);
-int st_noisered_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_noisered_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_noisered_stop(eff_t effp);
-
-int st_pan_getopts(eff_t effp, int argc, char **argv);
-int st_pan_start(eff_t effp);
-int st_pan_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_pan_stop(eff_t effp);
-
-int st_phaser_getopts(eff_t effp, int argc, char **argv);
-int st_phaser_start(eff_t effp);
-int st_phaser_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_phaser_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_phaser_stop(eff_t effp);
-
-int st_pitch_getopts(eff_t effp, int argc, char **argv);
-int st_pitch_start(eff_t effp);
-int st_pitch_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_pitch_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_pitch_stop(eff_t effp);
-
-int st_poly_getopts(eff_t effp, int argc, char **argv);
-int st_poly_start(eff_t effp);
-int st_poly_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_poly_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_poly_stop(eff_t effp);
-
-int st_rate_getopts(eff_t effp, int argc, char **argv);
-int st_rate_start(eff_t effp);
-int st_rate_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_rate_stop(eff_t effp);
-
-int st_repeat_getopts(eff_t effp, int argc, char **argv);
-int st_repeat_start(eff_t effp);
-int st_repeat_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_repeat_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_repeat_stop(eff_t effp);
-
-int st_resample_getopts(eff_t effp, int argc, char **argv);
-int st_resample_start(eff_t effp);
-int st_resample_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_resample_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_resample_stop(eff_t effp);
-
-int st_reverb_getopts(eff_t effp, int argc, char **argv);
-int st_reverb_start(eff_t effp);
-int st_reverb_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_reverb_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_reverb_stop(eff_t effp);
-
-int st_reverse_getopts(eff_t effp, int argc, char **argv);
-int st_reverse_start(eff_t effp);
-int st_reverse_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_reverse_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_reverse_stop(eff_t effp);
-
-int st_silence_getopts(eff_t effp, int argc, char **argv);
-int st_silence_start(eff_t effp);
-int st_silence_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_silence_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_silence_stop(eff_t effp);
-
-int st_speed_getopts(eff_t effp, int argc, char **argv);
-int st_speed_start(eff_t effp);
-int st_speed_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_speed_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_speed_stop(eff_t effp);
-
-int st_stat_getopts(eff_t effp, int argc, char **argv);
-int st_stat_start(eff_t effp);
-int st_stat_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_stat_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_stat_stop(eff_t effp);
-
-int st_stretch_getopts(eff_t effp, int argc, char **argv);
-int st_stretch_start(eff_t effp);
-int st_stretch_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_stretch_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_stretch_stop(eff_t effp);
-
-int st_swap_getopts(eff_t effp, int argc, char **argv);
-int st_swap_start(eff_t effp);
-int st_swap_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_swap_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_swap_stop(eff_t effp);
-
-int st_synth_getopts(eff_t effp, int argc, char **argv);
-int st_synth_start(eff_t effp);
-int st_synth_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_synth_drain(eff_t effp, st_sample_t *obuf, st_size_t *osamp);
-int st_synth_stop(eff_t effp);
-
-int st_trim_getopts(eff_t effp, int argc, char **argv);
-int st_trim_start(eff_t effp);
-int st_trim_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_trim_stop(eff_t effp);
+/* Needed in sox.c
+ */
st_size_t st_trim_get_start(eff_t effp);
void st_trim_clear_start(eff_t effp);
-
-int st_vibro_getopts(eff_t effp, int argc, char **argv);
-int st_vibro_start(eff_t effp);
-int st_vibro_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_vibro_stop(eff_t effp);
-
-int st_vol_getopts(eff_t effp, int argc, char **argv);
-int st_vol_start(eff_t effp);
-int st_vol_flow(eff_t effp, st_sample_t *ibuf, st_sample_t *obuf,
- st_size_t *isamp, st_size_t *osamp);
-int st_vol_stop(eff_t effp);
#ifdef __cplusplus
} /* end of extern "C" */
--- a/src/stat.c
+++ b/src/stat.c
@@ -501,3 +501,14 @@
return ST_SUCCESS;
}
+
+st_effect_t st_stat_effect = {
+ "stat",
+ NULL,
+ ST_EFF_MCHAN | ST_EFF_REPORT,
+ st_stat_getopts,
+ st_stat_start,
+ st_stat_flow,
+ st_stat_drain,
+ st_stat_stop
+};
--- a/src/stretch.c
+++ b/src/stretch.c
@@ -421,3 +421,14 @@
return ST_SUCCESS;
}
+
+st_effect_t st_stretch_effect = {
+ "stretch",
+ NULL,
+ 0,
+ st_stretch_getopts,
+ st_stretch_start,
+ st_stretch_flow,
+ st_stretch_drain,
+ st_stretch_stop
+};
--- a/src/sunaudio.c
+++ b/src/sunaudio.c
@@ -313,4 +313,22 @@
return (ST_SUCCESS);
}
+/* Sun /dev/audio player */
+static char *sunnames[] = {
+ "sunau",
+ NULL
+};
+
+st_format_t st_sun_format = {
+ sunnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_sunstartread,
+ st_rawread,
+ st_rawstopread,
+ st_sunstartwrite,
+ st_rawwrite,
+ st_rawstopwrite,
+ st_format_nothing_seek
+};
#endif
--- a/src/swap.c
+++ b/src/swap.c
@@ -196,3 +196,14 @@
/* nothing to do */
return (ST_SUCCESS);
}
+
+st_effect_t st_swap_effect = {
+ "swap",
+ NULL,
+ ST_EFF_MCHAN,
+ st_swap_getopts,
+ st_swap_start,
+ st_swap_flow,
+ st_swap_drain,
+ st_swap_stop
+};
--- a/src/synth.c
+++ b/src/synth.c
@@ -756,6 +756,17 @@
/* nothing to do */
return (ST_SUCCESS);
}
+
+st_effect_t st_synth_effect = {
+ "synth",
+ NULL,
+ ST_EFF_MCHAN,
+ st_synth_getopts,
+ st_synth_start,
+ st_synth_flow,
+ st_synth_drain,
+ st_synth_stop
+};
/*-------------------------------------------------------------- end of file */
--- a/src/trim.c
+++ b/src/trim.c
@@ -218,3 +218,14 @@
trim_t trim = (trim_t)effp->priv;
trim->start = 0;
}
+
+st_effect_t st_trim_effect = {
+ "trim",
+ NULL,
+ ST_EFF_MCHAN,
+ st_trim_getopts,
+ st_trim_start,
+ st_trim_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/tx16w.c
+++ b/src/tx16w.c
@@ -375,3 +375,22 @@
return(ST_SUCCESS);
}
+
+/* Yamaha TX16W and SY99 waves */
+static char *txwnames[] = {
+ "txw",
+ NULL
+};
+
+st_format_t st_txw_format = {
+ txwnames,
+ NULL,
+ 0,
+ st_txwstartread,
+ st_txwread,
+ st_txwstopread,
+ st_txwstartwrite,
+ st_txwwrite,
+ st_txwstopwrite,
+ st_format_nothing_seek
+};
--- a/src/util.c
+++ b/src/util.c
@@ -140,8 +140,8 @@
"Filetype was not specified");
return(ST_EFMT);
}
- for(i = 0; st_formats[i].names; i++) {
- for(list = st_formats[i].names; *list; list++) {
+ for(i = 0; st_formats[i]->names; i++) {
+ for(list = st_formats[i]->names; *list; list++) {
char *s1 = *list, *s2 = formp->filetype;
if (! strcmpcase(s1, s2))
break; /* not a match */
@@ -149,7 +149,7 @@
if (! *list)
continue;
/* Found it! */
- formp->h = &st_formats[i];
+ formp->h = st_formats[i];
return ST_SUCCESS;
}
st_fail_errno(formp, ST_EFMT, "File type '%s' is not known",
@@ -167,9 +167,9 @@
{
int i, optind;
- for(i = 0; st_effects[i].name; i++)
+ for(i = 0; st_effects[i]->name; i++)
{
- char *s1 = st_effects[i].name, *s2 = argv[0];
+ char *s1 = st_effects[i]->name, *s2 = argv[0];
while(*s1 && *s2 && (tolower(*s1) == tolower(*s2)))
s1++, s2++;
@@ -177,16 +177,16 @@
continue; /* not a match */
/* Found it! */
- effp->name = st_effects[i].name;
- effp->h = &st_effects[i];
+ effp->name = st_effects[i]->name;
+ effp->h = st_effects[i];
optind = 1;
while (optind < argc)
{
- for (i = 0; st_effects[i].name; i++)
+ for (i = 0; st_effects[i]->name; i++)
{
- char *s1 = st_effects[i].name, *s2 = argv[optind];
+ char *s1 = st_effects[i]->name, *s2 = argv[optind];
while (*s1 && *s2 && (tolower(*s1) == tolower(*s2)))
s1++, s2++;
if (*s1 || *s2)
@@ -218,8 +218,8 @@
{
int i;
- for(i = 0; st_effects[i].name; i++) {
- char *s1 = st_effects[i].name, *s2 = effect_name;
+ for(i = 0; st_effects[i]->name; i++) {
+ char *s1 = st_effects[i]->name, *s2 = effect_name;
while(*s1 && *s2 && (tolower(*s1) == tolower(*s2)))
s1++, s2++;
@@ -227,8 +227,8 @@
continue; /* not a match */
/* Found it! */
- effp->name = st_effects[i].name;
- effp->h = &st_effects[i];
+ effp->name = st_effects[i]->name;
+ effp->h = st_effects[i];
return ST_SUCCESS;
}
@@ -245,9 +245,8 @@
{
int i;
- for(i = 0; st_effects[i].name; i++) {
- char *s1 = st_effects[i].name, *s2 = effect_name;
-
+ for(i = 0; st_effects[i]->name; i++) {
+ char *s1 = st_effects[i]->name, *s2 = effect_name;
while(*s1 && *s2 && (tolower(*s1) == tolower(*s2)))
s1++, s2++;
if (*s1 || *s2)
--- a/src/vibro.c
+++ b/src/vibro.c
@@ -136,3 +136,13 @@
return (ST_SUCCESS);
}
+st_effect_t st_vibro_effect = {
+ "vibro",
+ NULL,
+ 0,
+ st_vibro_getopts,
+ st_vibro_start,
+ st_vibro_flow,
+ st_effect_nothing_drain,
+ st_effect_nothing
+};
--- a/src/voc.c
+++ b/src/voc.c
@@ -816,3 +816,22 @@
st_writeb(ft, (int)datum); /* high byte of length */
}
}
+
+/* Sound Blaster .VOC */
+static char *vocnames[] = {
+ "voc",
+ NULL
+};
+
+st_format_t st_voc_format = {
+ vocnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_vocstartread,
+ st_vocread,
+ st_vocstopread,
+ st_vocstartwrite,
+ st_vocwrite,
+ st_vocstopwrite,
+ st_format_nothing_seek
+};
--- a/src/vol.c
+++ b/src/vol.c
@@ -219,3 +219,14 @@
}
return ST_SUCCESS;
}
+
+st_effect_t st_vol_effect = {
+ "vol",
+ NULL,
+ ST_EFF_MCHAN,
+ st_vol_getopts,
+ st_vol_start,
+ st_vol_flow,
+ st_effect_nothing_drain,
+ st_vol_stop
+};
--- a/src/vorbis.c
+++ b/src/vorbis.c
@@ -458,4 +458,23 @@
return (ST_SUCCESS);
}
+static char *vorbisnames[] = {
+ "vorbis",
+ "ogg",
+ NULL
+};
+
+st_format_t st_vorbis_format = {
+ vorbisnames,
+ NULL,
+ ST_FILE_STEREO,
+ st_vorbisstartread,
+ st_vorbisread,
+ st_vorbisstopread,
+ st_vorbisstartwrite,
+ st_vorbiswrite,
+ st_vorbisstopwrite,
+ st_format_nothing_seek
+};
+
#endif /* HAVE_LIBVORBIS */
--- a/src/vox.c
+++ b/src/vox.c
@@ -442,3 +442,20 @@
return (sample);
}
+static char *voxnames[] = {
+ "vox",
+ NULL
+};
+
+st_format_t st_vox_format = {
+ voxnames,
+ NULL,
+ 0,
+ st_voxstartread,
+ st_voxread,
+ st_voxstopread,
+ st_voxstartwrite,
+ st_voxwrite,
+ st_voxstopwrite,
+ st_format_nothing_seek
+};
--- a/src/wav.c
+++ b/src/wav.c
@@ -1778,3 +1778,22 @@
return(ft->st_errno);
}
+
+/* Microsoftt RIFF */
+static char *wavnames[] = {
+ "wav",
+ NULL
+};
+
+st_format_t st_wav_format = {
+ wavnames,
+ NULL,
+ ST_FILE_STEREO | ST_FILE_SEEK,
+ st_wavstartread,
+ st_wavread,
+ st_wavstopread,
+ st_wavstartwrite,
+ st_wavwrite,
+ st_wavstopwrite,
+ st_wavseek
+};
--- a/src/wve.c
+++ b/src/wve.c
@@ -231,3 +231,22 @@
st_writew(ft, zero);
st_writew(ft, zero);
}
+
+/* Psion .wve */
+static char *wvenames[] = {
+ "wve",
+ NULL
+};
+
+st_format_t st_wve_format = {
+ wvenames,
+ NULL,
+ ST_FILE_SEEK,
+ st_wvestartread,
+ st_wveread,
+ st_rawstopread,
+ st_wvestartwrite,
+ st_wvewrite,
+ st_wvestopwrite,
+ st_wveseek
+};