shithub: sox

Download patch

ref: 5fd2e6c5adf521b2875f69a08b6b3a62a235bd03
parent: 30c4f1c78e050abff9443e048b95c16060f42063
author: cbagwell <cbagwell>
date: Thu Mar 1 17:58:09 EST 2001

Commiting new nul file.

--- /dev/null
+++ b/nul.c
@@ -1,0 +1,136 @@
+/*
+ * July 5, 1991
+ * Copyright 1991 Lance Norskog And Sundry Contributors
+ * This source code is freely redistributable and may be used for
+ * any purpose.  This copyright notice must be maintained. 
+ * Lance Norskog And Sundry Contributors are not responsible for 
+ * the consequences of using this software.
+ */
+
+/*
+ * Sound Tools nul file format driver.
+ * Written by Carsten Borchardt 
+ * The author is not responsible for the consequences 
+ * of using this software
+ *
+ */
+
+#include <math.h>
+#include "st.h"
+
+/* Private data for nul file */
+typedef struct nulstuff {
+	int	rest;			/* bytes remaining in current block */
+    unsigned long readsamples;
+    unsigned long writesamples;
+} *nul_t;
+
+/*
+ * Do anything required before you start reading samples.
+ * Read file header. 
+ *	Find out sampling rate, 
+ *	size and encoding of samples, 
+ *	mono/stereo/quad.
+ */
+int st_nulstartread(ft) 
+ft_t ft;
+{
+	nul_t sk = (nul_t) ft->priv;
+	/* no samples read yet */
+	sk->readsamples=0;
+
+	/* if no input rate is given as parameter, switch to 
+	 * default parameter
+	 */
+	if(ft->info.rate == 0){
+	    /* input rate not set, switch to default */
+	    ft->info.rate = 44100;
+	    ft->info.size = ST_SIZE_WORD;
+	    ft->info.encoding = ST_ENCODING_SIGN2;
+	    ft->info.channels = 2;
+	}
+	ft->comment = "nul file";
+	
+	/* only SIGINT will stop us from reading nul data.. 
+	 *
+	 */
+	sigintreg(ft);	/* Prepare to catch SIGINT */
+
+	return (ST_SUCCESS);
+}
+
+/*
+ * Read up to len samples, we read always '0'
+ * Convert to signed longs.
+ * Place in buf[].
+ * Return number of samples read.
+ */
+
+LONG st_nulread(ft, buf, len) 
+ft_t ft;
+LONG *buf, len;
+{
+	nul_t sk = (nul_t) ft->priv;
+	int done = 0;
+	LONG l;
+	for(; done < len; done++) {
+	    if (ft->file.eof)
+		break;
+	    l = 0; /* nul samples are always 0 */
+	    sk->readsamples++;
+	    *buf++ = l;
+	}
+	return done;
+}
+
+/*
+ * Do anything required when you stop reading samples.  
+ * Don't close input file! 
+ * .. nothing to be done
+ */
+int st_nulstopread(ft) 
+ft_t ft;
+{ 
+    return (ST_SUCCESS);
+}
+
+int st_nulstartwrite(ft) 
+ft_t ft;
+{
+	nul_t sk = (nul_t) ft->priv;
+	sk->writesamples=0;
+	return(ST_SUCCESS);
+	
+}
+
+LONG st_nulwrite(ft, buf, len) 
+ft_t ft;
+LONG *buf, len;
+{
+	nul_t sk = (nul_t) ft->priv;
+	while(len--)
+	    sk->writesamples++;
+	st_writeb(ft, (*buf++ >> 24) ^ 0x80);
+	return (ST_SUCCESS);
+	
+}
+
+int st_nulstopwrite(ft) 
+ft_t ft;
+{
+    /* nothing to do */
+    return (ST_SUCCESS);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+