ref: 2d5ec4081c7598dbd55945f23676d5b54542f574
parent: 210336f9b78b4089163bc16804a1e76984c6c46d
author: rrt <rrt>
date: Mon Nov 27 12:41:24 EST 2006
Change lengths to st_size_t from st_ssize_t (apart from the sheer logic, it makes the types match fread and fwrite). Remove st_wveread as it was just calling st_rawread. Make PRC header check publically accessible as a function, and use it in auto.c. Fix it to work properly (just check the first 16 bytes). Tidy the auto.c code a little. Remove ability to disable internal GSM library (no need, it's tiny, machine-independent, and doesn't affect the license).
--- a/TODO
+++ b/TODO
@@ -26,8 +26,6 @@
so that you don't have to put 100% in each channel. Similar
for 2->4.
- o Remove FFT code from stat effect and use new FFT.c code.
-
o Modify noiseprof and noisered so that they can read
and write from stdin/out. This would allow to run
them in scripts without intermediate files required.
@@ -85,8 +83,6 @@
o Add a FIFO/buffer to audio drivers to prevent losing audio data.
Perhaps mpg123 could be used as an example.
-
- o Add new PRC format in to auto.c.
o Lots of effects are using "double" to prevent overflow of
st_sample_t math. With ststdint.h we now have a portable way
--- a/configure.in
+++ b/configure.in
@@ -3,20 +3,14 @@
dnl configure.in
dnl
-AC_REVISION(1.9)
+AC_INIT(sox, 12.18.3, [email protected], "sox-12.18.3")
-AC_INIT(sox, 12.18.2, [email protected], "sox-12.18.2")
-
AC_CONFIG_SRCDIR(sox.1)
dnl Parameters to configure
AC_ARG_ENABLE(gsm,
- [ --disable-gsm Disable GSM support],
- enable_gsm=$enableval, enable_gsm=yes)
-
-AC_ARG_ENABLE(gsm,
- [ --disable-external-gsm Disable external GSM support],
+ [ --disable-external-gsm Disable detection of external GSM library],
enable_external_gsm=$enableval, enable_external_gsm=yes)
AC_ARG_ENABLE(alsa_dsp,
@@ -40,7 +34,7 @@
[enable_ogg_vorbis=yes])
AC_ARG_ENABLE(flac,
- [ --disable-flac Disable detection of FLAC],
+ [ --disable-flac Disable detection of FLAC],
[enable_flac=$enableval],
[enable_flac=yes])
@@ -228,36 +222,28 @@
fi
fi
-if test "$enable_gsm" = yes
+if test "$enable_external_gsm" = yes
then
- if test "$enable_external_gsm" = yes
+ AC_CHECK_HEADERS(gsm/gsm.h, found_libgsm=yes)
+
+ if test "$found_libgsm" = yes
then
- AC_CHECK_HEADERS(gsm/gsm.h, found_libgsm=yes)
+ AC_CHECK_LIB(gsm, gsm_create,
+ LIBS="$LIBS -lgsm"
+ GSM_SUPPORT=ext
+ )
+ fi
- if test "$found_libgsm" = yes
- then
- AC_CHECK_LIB(gsm, gsm_create,
- LIBS="$LIBS -lgsm"
- GSM_SUPPORT=ext
- AC_DEFINE([EXTERNAL_GSM], 1,
- [Define if you have libgsm library installed])
- )
- fi
- fi
-
- if test "$GSM_SUPPORT" = 0
- then
- dnl use internal libgsm
- GSM_SUPPORT=1
- fi
- AC_DEFINE([ENABLE_GSM], 1,
- [Define if you want to use internal GSM library])
+ if test "$GSM_SUPPORT" = 0
+ then
+ dnl use internal libgsm
+ GSM_SUPPORT=1
+ fi
fi
AC_SUBST(NEED_OSS)
AC_SUBST(NEED_SUNAU)
AC_SUBST(NEED_ALSA)
-AC_SUBST(GSM_SUPPORT)
AC_SUBST(PLAY_SUPPORT)
dnl Generate output files...
@@ -277,7 +263,6 @@
if test ! -f src/monkey.wav; then cp ${srcdir}/src/monkey.wav src/monkey.wav; fi
echo
-echo "GSM Support....................... $enable_gsm"
echo "ALSA Driver....................... $enable_alsa_dsp"
echo "OSS Driver........................ $enable_oss_dsp"
echo "SUN /dev/audio.................... $enable_sun_audio"
--- a/src/8svx.c
+++ b/src/8svx.c
@@ -22,7 +22,7 @@
FILE *ch[4];
}*svx_t;
-static void svxwriteheader(ft_t, st_ssize_t);
+static void svxwriteheader(ft_t, st_size_t);
/*======================================================================*/
/* 8SVXSTARTREAD */
@@ -213,7 +213,7 @@
/*======================================================================*/
/* 8SVXREAD */
/*======================================================================*/
-st_ssize_t st_svxread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_svxread(ft_t ft, st_sample_t *buf, st_size_t nsamp)
{
unsigned char datum;
int done = 0;
@@ -290,7 +290,7 @@
/* 8SVXWRITE */
/*======================================================================*/
-st_ssize_t st_svxwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_svxwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
svx_t p = (svx_t ) ft->priv;
@@ -356,7 +356,7 @@
/* 8SVXWRITEHEADER */
/*======================================================================*/
#define SVXHEADERSIZE 100
-static void svxwriteheader(ft_t ft, st_ssize_t nsamples)
+static void svxwriteheader(ft_t ft, st_size_t nsamples)
{
int32_t formsize = nsamples + SVXHEADERSIZE - 8;
--- a/src/aiff.c
+++ b/src/aiff.c
@@ -638,7 +638,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_aiffread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_aiffread(ft_t ft, st_sample_t *buf, st_size_t len)
{
aiff_t aiff = (aiff_t ) ft->priv;
st_ssize_t done;
@@ -735,7 +735,7 @@
return(aiffwriteheader(ft, 0x7f000000L / (ft->info.size*ft->info.channels)));
}
-st_ssize_t st_aiffwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_aiffwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
aiff_t aiff = (aiff_t ) ft->priv;
aiff->nsamples += len;
--- a/src/alsa.c
+++ b/src/alsa.c
@@ -29,14 +29,14 @@
static int get_format(ft_t ft, snd_pcm_format_mask_t *fmask, int *fmt);
-extern void st_ub_write_buf(char* buf1, const st_sample_t *buf2, st_ssize_t len, char swap);
-extern void st_sb_write_buf(char *buf1, const st_sample_t *buf2, st_ssize_t len, char swap);
-extern void st_uw_write_buf(char *buf1, const st_sample_t *buf2, st_ssize_t len, char swap);
-extern void st_sw_write_buf(char *buf1, const st_sample_t *buf2, st_ssize_t len, char swap);
-extern void st_ub_read_buf(st_sample_t *buf1, char *buf2, st_ssize_t len, char swap);
-extern void st_sb_read_buf(st_sample_t *buf1, char *buf2, st_ssize_t len, char swap);
-extern void st_uw_read_buf(st_sample_t *buf1, char *buf2, st_ssize_t len, char swap);
-extern void st_sw_read_buf(st_sample_t *buf1, char *buf2, st_ssize_t len, char swap);
+extern void st_ub_write_buf(char* buf1, const st_sample_t *buf2, st_size_t len, char swap);
+extern void st_sb_write_buf(char *buf1, const st_sample_t *buf2, st_size_t len, char swap);
+extern void st_uw_write_buf(char *buf1, const st_sample_t *buf2, st_size_t len, char swap);
+extern void st_sw_write_buf(char *buf1, const st_sample_t *buf2, st_size_t len, char swap);
+extern void st_ub_read_buf(st_sample_t *buf1, char *buf2, st_size_t len, char swap);
+extern void st_sb_read_buf(st_sample_t *buf1, char *buf2, st_size_t len, char swap);
+extern void st_uw_read_buf(st_sample_t *buf1, char *buf2, st_size_t len, char swap);
+extern void st_sw_read_buf(st_sample_t *buf1, char *buf2, st_size_t len, char swap);
int st_alsasetup(ft_t ft, snd_pcm_stream_t mode)
{
@@ -302,12 +302,12 @@
return st_alsasetup(ft, SND_PCM_STREAM_CAPTURE);
}
-st_ssize_t st_alsaread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_alsaread(ft_t ft, st_sample_t *buf, st_size_t nsamp)
{
- st_ssize_t len;
+ st_size_t len;
int err;
alsa_priv_t alsa = (alsa_priv_t)ft->priv;
- void (*read_buf)(st_sample_t *, char *, st_ssize_t, char) = 0;
+ void (*read_buf)(st_sample_t *, char *, st_size_t, char) = 0;
switch(ft->info.size) {
case ST_SIZE_BYTE:
@@ -390,12 +390,12 @@
return st_alsasetup(ft, SND_PCM_STREAM_PLAYBACK);
}
-st_ssize_t st_alsawrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_alsawrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp)
{
- st_ssize_t len;
+ st_size_t len;
int err;
alsa_priv_t alsa = (alsa_priv_t)ft->priv;
- void (*write_buf)(char *, const st_sample_t *, st_ssize_t, char) = 0;
+ void (*write_buf)(char *, const st_sample_t *, st_size_t, char) = 0;
switch(ft->info.size) {
case ST_SIZE_BYTE:
--- a/src/au.c
+++ b/src/au.c
@@ -342,7 +342,7 @@
return (p->in_bits > 0);
}
-st_ssize_t st_auread(ft_t ft, st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_auread(ft_t ft, st_sample_t *buf, st_size_t samp)
{
au_t p = (au_t ) ft->priv;
unsigned char code;
@@ -360,7 +360,7 @@
return done;
}
-st_ssize_t st_auwrite(ft_t ft, const st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_auwrite(ft_t ft, const st_sample_t *buf, st_size_t samp)
{
au_t p = (au_t ) ft->priv;
p->data_size += samp * ft->info.size;
--- a/src/auto.c
+++ b/src/auto.c
@@ -25,13 +25,10 @@
int st_autostartread(ft_t ft)
{
- char *type;
+ char *type = NULL;
char header[20];
- int rc;
- int loop;
+ int rc, loop;
- type = 0;
-
/* Attempt to auto-detect filetype using magic values. Abort loop
* and use file extension if any errors are detected.
*/
@@ -50,9 +47,7 @@
(strncmp(header+1, "ds.", 3) == 0)) ||
((strncmp(header, "sd.", 3) == 0) &&
(header[3] == '\0')))
- {
type = "au";
- }
else if (strncmp(header, "FORM", 4) == 0)
{
/* Need to read more data to see what type of FORM file */
@@ -71,18 +66,14 @@
else if (strncmp(header, "RIFF", 4) == 0)
{
if (st_readbuf(ft, header, 1, 8) == 8)
- {
if (strncmp(header + 4, "WAVE", 4) == 0)
type = "wav";
- }
}
else if (strncmp(header, "Crea", 4) == 0)
{
if (st_readbuf(ft, header, 1, 15) == 15)
- {
if (strncmp(header, "tive Voice File", 15) == 0)
type = "voc";
- }
}
else if (strncmp(header, "SOUN", 4) == 0)
{
@@ -102,72 +93,59 @@
}
}
else if (strncmp(header, "2BIT", 4) == 0)
- {
type = "avr";
- }
else if (strncmp(header, "NIST", 4) == 0)
{
if (st_readbuf(ft, header, 1, 3) == 3)
- {
if (strncmp(header, "_1A", 3) == 0)
type = "sph";
- }
}
else if (strncmp(header, "ALaw", 4) == 0)
{
if (st_readbuf(ft, header, 1, 11) == 11)
- {
if (strncmp(header, "SoundFile**", 11) == 0)
- {
type = "wve";
- }
- }
}
else if (strncmp(header, "Ogg", 3) == 0)
- {
type = "ogg";
- }
else if (strncmp(header, "fLaC", 4) == 0)
- {
type = "flac";
- }
else if ((memcmp(header, "XAI\0", 4) == 0) ||
(memcmp(header, "XAJ\0", 4) == 0) ||
(memcmp(header, "XA\0\0", 4) == 0))
- {
type = "xa";
- }
} /* read 4-byte header */
/* If we didn't find type yet then start looking for file
* formats that the magic header is deeper in the file.
*/
- if (type == 0)
+ if (type == NULL)
{
- loop = 61;
- while (loop--)
- {
+ for (loop = 0; loop < 60; loop++)
if (st_readbuf(ft, header, 1, 1) != 1)
- loop = 0;
- }
+ break;
if (st_readbuf(ft, header, 1, 4) == 4 &&
strncmp(header, "FSSD", 4) == 0)
{
- loop = 63;
- while (loop--)
- {
+ for (loop = 0; loop < 62; loop++)
if (st_readbuf(ft, header, 1, 1) != 1)
- loop = 0;
- }
+ break;
if (st_readbuf(ft, header, 1, 4) == 0 &&
strncmp(header, "HCOM", 4) == 0)
type = "hcom";
}
}
+
st_rewind(ft);
+
+ if (type == NULL) {
+ if (prc_checkheader(ft, header))
+ type = "prc";
+ st_rewind(ft);
+ }
} /* if (seekable) */
- if (type == 0)
+ if (type == NULL)
{
/* Use filename extension to determine audio type. */
@@ -183,7 +161,7 @@
type = NULL;
}
- if(!type)
+ if (type == NULL)
{
st_fail_errno(ft,ST_EFMT, "Could not determine file type.");
return (ST_EOF);
--- a/src/avr.c
+++ b/src/avr.c
@@ -260,7 +260,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_avrwrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_avrwrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp)
{
avr_t avr = (avr_t)ft->priv;
--- a/src/cdr.c
+++ b/src/cdr.c
@@ -78,7 +78,7 @@
* Return number of samples read.
*/
-st_ssize_t st_cdrread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_cdrread(ft_t ft, st_sample_t *buf, st_size_t len)
{
return st_rawread(ft, buf, len);
@@ -121,7 +121,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_cdrwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_cdrwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
cdr_t cdr = (cdr_t) ft->priv;
--- a/src/cvsd.c
+++ b/src/cvsd.c
@@ -237,7 +237,7 @@
/* ---------------------------------------------------------------------- */
-st_ssize_t st_cvsdread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_cvsdread(ft_t ft, st_sample_t *buf, st_size_t nsamp)
{
struct cvsdpriv *p = (struct cvsdpriv *) ft->priv;
int done = 0;
@@ -296,7 +296,7 @@
/* ---------------------------------------------------------------------- */
-st_ssize_t st_cvsdwrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_cvsdwrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp)
{
struct cvsdpriv *p = (struct cvsdpriv *) ft->priv;
int done = 0;
--- a/src/dat.c
+++ b/src/dat.c
@@ -91,7 +91,7 @@
return (ST_SUCCESS);
}
-st_ssize_t st_datread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_datread(ft_t ft, st_sample_t *buf, st_size_t nsamp)
{
char inpstr[LINEWIDTH];
int inpPtr = 0;
@@ -138,7 +138,7 @@
return (done);
}
-st_ssize_t st_datwrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_datwrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp)
{
dat_t dat = (dat_t) ft->priv;
int done = 0;
--- a/src/flac.c
+++ b/src/flac.c
@@ -176,7 +176,7 @@
}
-static st_ssize_t st_format_read(ft_t const format, st_sample_t * sampleBuffer, st_ssize_t const requested)
+static st_ssize_t st_format_read(ft_t const format, st_sample_t * sampleBuffer, st_size_t const requested)
{
Decoder * decoder = (Decoder *) format->priv;
int actual = 0;
@@ -423,7 +423,7 @@
-static st_ssize_t st_format_write(ft_t const format, st_sample_t const * const sampleBuffer, st_ssize_t const len)
+static st_ssize_t st_format_write(ft_t const format, st_sample_t const * const sampleBuffer, st_size_t const len)
{
Encoder * encoder = (Encoder *) format->priv;
unsigned i;
--- a/src/gsm.c
+++ b/src/gsm.c
@@ -28,8 +28,6 @@
#include "st_i.h"
-#if defined(ENABLE_GSM)
-
#if defined(EXTERNAL_GSM)
#include <gsm/gsm.h>
#else
@@ -109,7 +107,7 @@
* Return number of samples read.
*/
-st_ssize_t st_gsmread(ft_t ft, st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_gsmread(ft_t ft, st_sample_t *buf, st_size_t samp)
{
int done = 0;
int r, ch, chans;
@@ -187,7 +185,7 @@
return (ST_SUCCESS);
}
-st_ssize_t st_gsmwrite(ft_t ft, const st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_gsmwrite(ft_t ft, const st_sample_t *buf, st_size_t samp)
{
int done = 0;
struct gsmpriv *p = (struct gsmpriv *) ft->priv;
@@ -261,4 +259,3 @@
{
return &st_gsm_format;
}
-#endif /* ENABLE_GSM */
--- a/src/hcom.c
+++ b/src/hcom.c
@@ -176,7 +176,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_hcomread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_hcomread(ft_t ft, st_sample_t *buf, st_size_t len)
{
register struct readpriv *p = (struct readpriv *) ft->priv;
int done = 0;
@@ -307,7 +307,7 @@
return (ST_SUCCESS);
}
-st_ssize_t st_hcomwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_hcomwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
register struct writepriv *p = (struct writepriv *) ft->priv;
st_sample_t datum;
--- a/src/maud.c
+++ b/src/maud.c
@@ -227,7 +227,7 @@
* Return number of samples read.
*/
-st_ssize_t st_maudread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_maudread(ft_t ft, st_sample_t *buf, st_size_t len)
{
return (st_rawread(ft, buf, len));
}
@@ -284,7 +284,7 @@
return (ST_SUCCESS);
}
-st_ssize_t st_maudwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_maudwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
struct maudstuff * p = (struct maudstuff *) ft->priv;
--- a/src/misc.c
+++ b/src/misc.c
@@ -81,7 +81,7 @@
* Returns number of elements read, not bytes read.
*/
-st_ssize_t st_readbuf(ft_t ft, void *buf, size_t size, st_ssize_t len)
+st_ssize_t st_readbuf(ft_t ft, void *buf, size_t size, st_size_t len)
{
return fread(buf, size, len, ft->fp);
}
@@ -90,7 +90,7 @@
* Returns number of elements writen, not bytes writen.
*/
-st_ssize_t st_writebuf(ft_t ft, void const *buf, size_t size, st_ssize_t len)
+st_ssize_t st_writebuf(ft_t ft, void const *buf, size_t size, st_size_t len)
{
return fwrite(buf, size, len, ft->fp);
}
@@ -140,7 +140,7 @@
/* Read n-char string (and possibly null-terminating).
* Stop reading and null-terminate string if either a 0 or \n is reached.
*/
-int st_reads(ft_t ft, char *c, st_ssize_t len)
+int st_reads(ft_t ft, char *c, st_size_t len)
{
char *sc;
char in;
@@ -357,8 +357,8 @@
/* dummy format routines for do-nothing functions */
int st_format_nothing(ft_t ft) { return(ST_SUCCESS); }
-st_ssize_t st_format_nothing_read_io(ft_t ft, st_sample_t *buf, st_ssize_t len) { return(0); }
-st_ssize_t st_format_nothing_write_io(ft_t ft, const st_sample_t *buf, st_ssize_t len) { return(0); }
+st_ssize_t st_format_nothing_read_io(ft_t ft, st_sample_t *buf, st_size_t len) { return(0); }
+st_ssize_t st_format_nothing_write_io(ft_t ft, const st_sample_t *buf, st_size_t len) { return(0); }
int st_format_nothing_seek(ft_t ft, st_size_t offset) { st_fail_errno(ft, ST_ENOTSUP, "operation not supported"); return(ST_EOF); }
/* dummy effect routine for do-nothing functions */
@@ -439,7 +439,7 @@
/* This was very painful. We need a sine library. */
-void st_sine(int *buf, st_ssize_t len, int max, int depth)
+void st_sine(int *buf, st_size_t len, int max, int depth)
{
st_ssize_t i;
int offset;
@@ -452,7 +452,7 @@
}
}
-void st_triangle(int *buf, st_ssize_t len, int max, int depth)
+void st_triangle(int *buf, st_size_t len, int max, int depth)
{
st_ssize_t i;
int offset;
--- a/src/mp3.c
+++ b/src/mp3.c
@@ -279,7 +279,7 @@
* Place in buf[].
* Return number of samples read.
*/
-st_ssize_t st_mp3read(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_mp3read(ft_t ft, st_sample_t *buf, st_size_t len)
{
struct mp3priv *p = (struct mp3priv *) ft->priv;
st_ssize_t donow,i,done=0;
@@ -365,7 +365,7 @@
return ST_EOF;
}
-st_ssize_t st_mp3read(ft_t ft, st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_mp3read(ft_t ft, st_sample_t *buf, st_size_t samp)
{
st_fail_errno(ft,ST_EOF,"SoX was compiled without MP3 decoding support");
return ST_EOF;
@@ -431,7 +431,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_mp3write(ft_t ft, const st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_mp3write(ft_t ft, const st_sample_t *buf, st_size_t samp)
{
struct mp3priv *p = (struct mp3priv *)ft->priv;
char *mp3buffer;
--- a/src/nulfile.c
+++ b/src/nulfile.c
@@ -29,7 +29,7 @@
return ST_SUCCESS;
}
-st_ssize_t st_nulread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_nulread(ft_t ft, st_sample_t *buf, st_size_t len)
{
/* Reading from null generates silence i.e. (st_sample_t)0. */
memset(buf, 0, sizeof(st_sample_t) * len);
@@ -36,7 +36,7 @@
return len; /* Return number of samples "read". */
}
-st_ssize_t st_nulwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_nulwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
/* Writing to null just discards the samples */
return len; /* Return number of samples "written". */
--- a/src/prc.c
+++ b/src/prc.c
@@ -1,15 +1,27 @@
/*
- * Psion record.app format (format of files needed for Revo,Revo+,Mako in
- * System/Alarms to provide new alarm sounds. Note that the file normally
+ * Psion Record format (format of files used for Revo,Revo+,Mako in
+ * System/Alarms to provide alarm sounds. Note that the file normally
* has no extension, so I've made it .prc for now (Psion ReCord), until
- * somebody can come up with a better one. Also, I have absolutely no idea
- * what the header format is, I just looked at a few files, saw they all
- * had identical headers except for two places where the length words go,
- * so its very likely that most of this is wrong. It has worked for me,
- * however.
+ * somebody can come up with a better one.
* Based (heavily) on the wve.c format file.
* Hacked by Bert van Leeuwen ([email protected])
- */
+ * Header check truncated to first 16 bytes (i.e. EPOC file header)
+ * and other improvements by Reuben Thomas <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, write to the Free Software
+ * Foundation, Fifth Floor, 51 Franklin Street, Boston, MA 02111-1301,
+ * USA. */
#include "st_i.h"
#include "g72x.h"
@@ -18,9 +30,6 @@
#include <errno.h>
#endif
-/* Magic numbers used in Psion audio files */
-#define PSION_PRC_HDRSIZE 72
-
typedef struct prcpriv
{
uint32_t length;
@@ -30,16 +39,19 @@
st_size_t dataStart;
} *prc_t;
-char header[]={
+/* 16 bytes header = 3 UIDs plus checksum, standard Symbian/EPOC file
+ header */
+static const char prc_header[]={
0x37,0x00,0x00,0x10,0x6d,0x00,0x00,0x10,
- 0x7e,0x00,0x00,0x10,0xcf,0xac,0x08,0x55,
- 0x14,0x00,0x00,0x00,0x04,0x52,0x00,0x00,
- 0x10,0x34,0x00,0x00,0x00,0x89,0x00,0x00,
- 0x10,0x25,0x00,0x00,0x00,0x7e,0x00,0x00,
- 0x10,0x2a,0x52,0x65,0x63,0x6f,0x72,0x64,
- 0x2e,0x61,0x70,0x70
+ 0x7e,0x00,0x00,0x10,0xcf,0xac,0x08,0x55
};
+int prc_checkheader(ft_t ft, char *head)
+{
+ st_readbuf(ft, head, 1, sizeof(prc_header));
+ return memcmp(head, prc_header, sizeof(prc_header)) == 0;
+}
+
static void prcwriteheader(ft_t ft);
int st_prcseek(ft_t ft, st_size_t offset)
@@ -48,7 +60,7 @@
st_size_t new_offset, channel_block, alignment;
new_offset = offset * ft->info.size;
- /* Make sure request aligns to a channel block (ie left+right) */
+ /* Make sure request aligns to a channel block (i.e. left+right) */
channel_block = ft->info.channels * ft->info.size;
alignment = new_offset % channel_block;
/* Most common mistaken is to compute something like
@@ -65,7 +77,7 @@
int st_prcstartread(ft_t ft)
{
prc_t p = (prc_t ) ft->priv;
- char head[sizeof(header)];
+ char head[sizeof(prc_header)];
int rc;
uint16_t len;
@@ -84,10 +96,8 @@
}
/* Check the header */
- st_readbuf(ft, head,1, sizeof(header));
- if (memcmp(head, header, sizeof(header))==0) {
- st_debug("Found Psion record.app header");
- }
+ if (prc_checkheader(ft, head))
+ st_debug("Found Psion Record header");
else
{
st_fail_errno(ft,ST_EHDR,"Psion header doesn't start with the correct bytes\nTry the '.al' (A-law raw) file type with '-t al -r 8000 filename'");
@@ -163,12 +173,12 @@
return ST_SUCCESS;
}
-st_ssize_t st_prcread(ft_t ft, st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_prcread(ft_t ft, st_sample_t *buf, st_size_t samp)
{
return st_rawread(ft, buf, samp);
}
-st_ssize_t st_prcwrite(ft_t ft, const st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_prcwrite(ft_t ft, const st_sample_t *buf, st_size_t samp)
{
prc_t p = (prc_t ) ft->priv;
p->length += samp * ft->info.size;
@@ -203,7 +213,7 @@
st_debug("Final length=%d",p->length);
memset(nullbuf,0,14);
- st_writebuf(ft, header, 1, sizeof(header));
+ st_writebuf(ft, prc_header, 1, sizeof(prc_header));
st_writew(ft, p->length);
st_writebuf(ft, nullbuf,1,14);
st_writew(ft, p->length);
--- a/src/raw.c
+++ b/src/raw.c
@@ -140,7 +140,7 @@
return ST_SUCCESS;
}
-void st_ub_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_ub_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -154,7 +154,7 @@
}
}
-void st_sb_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_sb_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -168,7 +168,7 @@
}
}
-void st_ulaw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len,
+void st_ulaw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -183,7 +183,7 @@
}
}
-void st_alaw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len,
+void st_alaw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -198,7 +198,7 @@
}
}
-void st_inv_ulaw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len,
+void st_inv_ulaw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -213,7 +213,7 @@
}
}
-void st_inv_alaw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len,
+void st_inv_alaw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -229,7 +229,7 @@
}
-void st_uw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_uw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -245,7 +245,7 @@
}
}
-void st_sw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_sw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -281,7 +281,7 @@
-void st_u24_read_buf(st_sample_t * buf1, char const * buf2, st_ssize_t len, char const swap)
+void st_u24_read_buf(st_sample_t * buf1, char const * buf2, st_size_t len, char const swap)
{
while (len--)
{
@@ -292,7 +292,7 @@
-void st_s24_read_buf(st_sample_t * buf1, char const * buf2, st_ssize_t len, char const swap)
+void st_s24_read_buf(st_sample_t * buf1, char const * buf2, st_size_t len, char const swap)
{
while (len--)
{
@@ -303,7 +303,7 @@
-void st_udw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_udw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -319,7 +319,7 @@
}
}
-void st_dw_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_dw_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -335,7 +335,7 @@
}
}
-void st_f32_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_f32_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -351,7 +351,7 @@
}
}
-void st_f64_read_buf(st_sample_t *buf1, char const * buf2, st_ssize_t len, char swap)
+void st_f64_read_buf(st_sample_t *buf1, char const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -376,10 +376,10 @@
* functions will cause a loss of data! Need to have sox implement
* a consistent buffering protocol.
*/
-st_ssize_t st_rawread(ft_t ft, st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_rawread(ft_t ft, st_sample_t *buf, st_size_t nsamp)
{
- st_ssize_t len, done = 0;
- void (*read_buf)(st_sample_t *, char const *, st_ssize_t, char) = 0;
+ st_size_t len, done = 0;
+ void (*read_buf)(st_sample_t *, char const *, st_size_t, char) = 0;
size_t i;
if (nsamp < 0)
@@ -537,7 +537,7 @@
return ST_SUCCESS;
}
-void st_ub_write_buf(char* buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_ub_write_buf(char* buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -546,7 +546,7 @@
}
}
-void st_sb_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_sb_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -555,7 +555,7 @@
}
}
-void st_ulaw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len,
+void st_ulaw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -565,7 +565,7 @@
}
}
-void st_alaw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len,
+void st_alaw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -575,7 +575,7 @@
}
}
-void st_inv_ulaw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len,
+void st_inv_ulaw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -585,7 +585,7 @@
}
}
-void st_inv_alaw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len,
+void st_inv_alaw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len,
char swap)
{
while (len)
@@ -595,7 +595,7 @@
}
}
-void st_uw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_uw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -611,7 +611,7 @@
}
}
-void st_sw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_sw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -649,7 +649,7 @@
-void st_u24_write_buf(char * buf1, st_sample_t const * buf2, st_ssize_t len, char const swap)
+void st_u24_write_buf(char * buf1, st_sample_t const * buf2, st_size_t len, char const swap)
{
while (len--)
{
@@ -660,7 +660,7 @@
-void st_s24_write_buf(char * buf1, st_sample_t const * buf2, st_ssize_t len, char const swap)
+void st_s24_write_buf(char * buf1, st_sample_t const * buf2, st_size_t len, char const swap)
{
while (len--)
{
@@ -671,7 +671,7 @@
-void st_udw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_udw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -687,7 +687,7 @@
}
}
-void st_dw_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_dw_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -703,7 +703,7 @@
}
}
-void st_f32_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_f32_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -719,7 +719,7 @@
}
}
-void st_f64_write_buf(char *buf1, st_sample_t const * buf2, st_ssize_t len, char swap)
+void st_f64_write_buf(char *buf1, st_sample_t const * buf2, st_size_t len, char swap)
{
while (len)
{
@@ -754,10 +754,10 @@
* functions will cause a loss of data! Need to have sox implement
* a consistent buffering protocol.
*/
-st_ssize_t st_rawwrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp)
+st_ssize_t st_rawwrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp)
{
- st_ssize_t len, done = 0;
- void (*write_buf)(char *, st_sample_t const *, st_ssize_t, char) = 0;
+ st_size_t len, done = 0;
+ void (*write_buf)(char *, st_sample_t const *, st_size_t, char) = 0;
switch(ft->info.size) {
case ST_SIZE_BYTE:
--- a/src/skel.c
+++ b/src/skel.c
@@ -68,7 +68,7 @@
* Place in buf[].
* Return number of samples read.
*/
-st_ssize_t st_skelread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_skelread(ft_t ft, st_sample_t *buf, st_size_t len)
{
skel_t sk = (skel_t)ft->priv;
int done = 0;
@@ -145,10 +145,10 @@
}
-st_ssize_t st_skelwrite(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_skelwrite(ft_t ft, st_sample_t *buf, st_size_t len)
{
skel_t sk = (skel_t) ft->priv;
- st_ssize_t len = 0;
+ st_size_t len = 0;
switch (ft->info.size)
{
--- a/src/smp.c
+++ b/src/smp.c
@@ -333,7 +333,7 @@
* Place in buf[].
* Return number of samples read.
*/
-st_ssize_t st_smpread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_smpread(ft_t ft, st_sample_t *buf, st_size_t len)
{
smp_t smp = (smp_t) ft->priv;
unsigned short datum;
@@ -397,7 +397,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_smpwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_smpwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
smp_t smp = (smp_t) ft->priv;
register int datum;
--- a/src/sndrtool.c
+++ b/src/sndrtool.c
@@ -200,7 +200,7 @@
/* SNDTWRITE */
/*======================================================================*/
-st_ssize_t st_sndtwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_sndtwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
snd_t p = (snd_t ) ft->priv;
p->nsamples += len;
--- a/src/sphere.c
+++ b/src/sphere.c
@@ -191,7 +191,7 @@
* Return number of samples read.
*/
-st_ssize_t st_sphereread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_sphereread(ft_t ft, st_sample_t *buf, st_size_t len)
{
sphere_t sphere = (sphere_t) ft->priv;
@@ -244,7 +244,7 @@
}
-st_ssize_t st_spherewrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_spherewrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
sphere_t sphere = (sphere_t) ft->priv;
--- a/src/st.h
+++ b/src/st.h
@@ -212,10 +212,10 @@
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);
+ st_ssize_t (*read)(ft_t ft, st_sample_t *buf, st_size_t len);
int (*stopread)(ft_t ft);
int (*startwrite)(ft_t ft);
- st_ssize_t (*write)(ft_t ft, const st_sample_t *buf, st_ssize_t len);
+ st_ssize_t (*write)(ft_t ft, const st_sample_t *buf, st_size_t len);
int (*stopwrite)(ft_t ft);
int (*seek)(ft_t ft, st_size_t offset);
} st_format_t;
@@ -342,8 +342,8 @@
const char *filetype, const char *comment,
const st_instrinfo_t *instr,
const st_loopinfo_t *loops);
-extern st_ssize_t st_read(ft_t ft, st_sample_t *buf, st_ssize_t len);
-extern st_ssize_t st_write(ft_t ft, const st_sample_t *buf, st_ssize_t len);
+extern st_ssize_t st_read(ft_t ft, st_sample_t *buf, st_size_t len);
+extern st_ssize_t st_write(ft_t ft, const st_sample_t *buf, st_size_t len);
extern int st_close(ft_t ft);
#define ST_SEEK_SET 0
--- a/src/st_i.h
+++ b/src/st_i.h
@@ -38,8 +38,8 @@
#endif
/* declared in misc.c */
-void st_sine(int *buf, st_ssize_t len, int max, int depth);
-void st_triangle(int *buf, st_ssize_t len, int max, int depth);
+void st_sine(int *buf, st_size_t len, int max, int depth);
+void st_triangle(int *buf, st_size_t len, int max, int depth);
st_sample_t st_gcd(st_sample_t a, st_sample_t b) REGPARM(2);
st_sample_t st_lcm(st_sample_t a, st_sample_t b) REGPARM(2);
@@ -66,9 +66,9 @@
* possible byte swapping.
*/
/* declared in misc.c */
-st_ssize_t st_readbuf(ft_t ft, void *buf, size_t size, st_ssize_t len);
-st_ssize_t st_writebuf(ft_t ft, void const *buf, size_t size, st_ssize_t len);
-int st_reads(ft_t ft, char *c, st_ssize_t len);
+st_ssize_t st_readbuf(ft_t ft, void *buf, size_t size, st_size_t len);
+st_ssize_t st_writebuf(ft_t ft, void const *buf, size_t size, st_size_t len);
+int st_reads(ft_t ft, char *c, st_size_t len);
int st_writes(ft_t ft, char *c);
int st_readb(ft_t ft, uint8_t *ub);
int st_writeb(ft_t ft, uint8_t ub);
@@ -164,6 +164,9 @@
*=============================================================================
*/
+/* Psion record header check, defined in prc.c */
+int prc_checkheader(ft_t ft, char *head);
+
typedef const st_format_t *(*st_format_fn_t)(void);
extern st_format_fn_t st_format_fns[];
@@ -228,10 +231,10 @@
/* 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);
+st_ssize_t st_rawread(ft_t ft, st_sample_t *buf, st_size_t nsamp);
int st_rawstopread(ft_t ft);
int st_rawstartwrite(ft_t ft);
-st_ssize_t st_rawwrite(ft_t ft, const st_sample_t *buf, st_ssize_t nsamp);
+st_ssize_t st_rawwrite(ft_t ft, const st_sample_t *buf, st_size_t nsamp);
int st_rawstopwrite(ft_t ft);
int st_rawseek(ft_t ft, st_size_t offset);
@@ -239,8 +242,8 @@
* 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_read_io(ft_t ft, st_sample_t *buf, st_ssize_t len);
-st_ssize_t st_format_nothing_write_io(ft_t ft, const st_sample_t *buf, st_ssize_t len);
+st_ssize_t st_format_nothing_read_io(ft_t ft, st_sample_t *buf, st_size_t len);
+st_ssize_t st_format_nothing_write_io(ft_t ft, const st_sample_t *buf, st_size_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);
--- a/src/stio.c
+++ b/src/stio.c
@@ -325,12 +325,12 @@
return st_open_write_instr(path, info, filetype, comment, NULL, NULL);
}
-st_ssize_t st_read(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_read(ft_t ft, st_sample_t *buf, st_size_t len)
{
return (*ft->h->read)(ft, buf, len);
}
-st_ssize_t st_write(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_write(ft_t ft, const st_sample_t *buf, st_size_t len)
{
return (*ft->h->write)(ft, buf, len);
}
--- a/src/tx16w.c
+++ b/src/tx16w.c
@@ -186,7 +186,7 @@
* Return number of samples read.
*/
-st_ssize_t st_txwread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_txwread(ft_t ft, st_sample_t *buf, st_size_t len)
{
txw_t sk = (txw_t) ft->priv;
int done = 0;
@@ -276,7 +276,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_txwwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_txwwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
int i;
unsigned int w1,w2;
--- a/src/voc.c
+++ b/src/voc.c
@@ -317,7 +317,7 @@
* ANN: Major changes here to support multi-part files and files
* that do not have audio in block 9's.
*-----------------------------------------------------------------*/
-st_ssize_t st_vocread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_vocread(ft_t ft, st_sample_t *buf, st_size_t len)
{
vs_t v = (vs_t) ft->priv;
int done = 0;
@@ -466,7 +466,7 @@
/*-----------------------------------------------------------------
* st_vocstartread() -- start reading a VOC file
*-----------------------------------------------------------------*/
-st_ssize_t st_vocwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_vocwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
vs_t v = (vs_t) ft->priv;
unsigned char uc;
--- a/src/vorbis.c
+++ b/src/vorbis.c
@@ -230,7 +230,7 @@
* Return number of samples read.
*/
-st_ssize_t st_vorbisread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_vorbisread(ft_t ft, st_sample_t *buf, st_size_t len)
{
vorbis_t vb = (vorbis_t) ft->priv;
int i;
@@ -399,7 +399,7 @@
return(ST_SUCCESS);
}
-st_ssize_t st_vorbiswrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_vorbiswrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
vorbis_t vb = (vorbis_t) ft->priv;
vorbis_enc_t *ve = vb->vorbis_enc_data;
--- a/src/vox.c
+++ b/src/vox.c
@@ -151,7 +151,7 @@
* Notes :
******************************************************************************/
-st_ssize_t st_voxread (ft_t ft,st_sample_t *buffer,st_ssize_t length)
+st_ssize_t st_voxread (ft_t ft,st_sample_t *buffer,st_size_t length)
{ vox_t state = (vox_t) ft->priv;
int count = 0;
int N;
@@ -267,7 +267,7 @@
* Notes :
******************************************************************************/
-st_ssize_t st_voxwrite (ft_t ft,const st_sample_t *buffer,st_ssize_t length)
+st_ssize_t st_voxwrite (ft_t ft,const st_sample_t *buffer,st_size_t length)
{ vox_t state = (vox_t) ft->priv;
int count = 0;
uint8_t byte = state->store.byte;
--- a/src/wav.c
+++ b/src/wav.c
@@ -282,7 +282,7 @@
free(wav->gsmsample);
}
-st_ssize_t wavgsmread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t wavgsmread(ft_t ft, st_sample_t *buf, st_size_t len)
{
wav_t wav = (wav_t) ft->priv;
int done=0;
@@ -350,7 +350,7 @@
return (ST_SUCCESS);
}
-st_ssize_t wavgsmwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t wavgsmwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
wav_t wav = (wav_t) ft->priv;
int done = 0;
@@ -1102,7 +1102,7 @@
* Return number of samples read.
*/
-st_ssize_t st_wavread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_wavread(ft_t ft, st_sample_t *buf, st_size_t len)
{
wav_t wav = (wav_t) ft->priv;
st_ssize_t done;
@@ -1679,7 +1679,7 @@
return ST_SUCCESS;
}
-st_ssize_t st_wavwrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+st_ssize_t st_wavwrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
wav_t wav = (wav_t) ft->priv;
st_ssize_t total_len = len;
--- a/src/wve.c
+++ b/src/wve.c
@@ -174,13 +174,8 @@
return ST_SUCCESS;
}
-st_ssize_t st_wveread(ft_t ft, st_sample_t *buf, st_ssize_t samp)
+st_ssize_t st_wvewrite(ft_t ft, const st_sample_t *buf, st_size_t samp)
{
- return st_rawread(ft, buf, samp);
-}
-
-st_ssize_t st_wvewrite(ft_t ft, const st_sample_t *buf, st_ssize_t samp)
-{
wve_t p = (wve_t ) ft->priv;
p->length += samp * ft->info.size;
return st_rawwrite(ft, buf, samp);
@@ -243,7 +238,7 @@
NULL,
ST_FILE_SEEK,
st_wvestartread,
- st_wveread,
+ st_rawread,
st_rawstopread,
st_wvestartwrite,
st_wvewrite,
--- a/src/xa.c
+++ b/src/xa.c
@@ -210,7 +210,7 @@
* Read up to len samples from a file, converted to signed longs.
* Return the number of samples read.
*/
-static st_ssize_t st_xaread(ft_t ft, st_sample_t *buf, st_ssize_t len)
+static st_ssize_t st_xaread(ft_t ft, st_sample_t *buf, st_size_t len)
{
xa_t xa = (xa_t) ft->priv;
st_ssize_t done;
@@ -312,7 +312,7 @@
return ST_EOF;
}
-static st_ssize_t st_xawrite(ft_t ft, const st_sample_t *buf, st_ssize_t len)
+static st_ssize_t st_xawrite(ft_t ft, const st_sample_t *buf, st_size_t len)
{
st_fail_errno(ft, ST_ENOTSUP, ".XA writing not supported");
return ST_EOF;