shithub: libsamplerate

Download patch

ref: f87eb660e3f78100be125e6ef38e07539bb0d53f
parent: ca5618deb1a747f3b46f6240a2b232e632c37b0e
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Mon Nov 16 17:19:32 EST 2020

port to Plan 9

--- /dev/null
+++ b/src/mkfile
@@ -1,0 +1,25 @@
+</$objtype/mkfile
+LIB=/$objtype/lib/libsamplerate.a
+
+CFLAGS=$CFLAGS -p -Iplan9 -DHAVE_CONFIG_H
+
+OFILES=\
+	plan9.$O\
+	samplerate.$O\
+	src_linear.$O\
+	src_sinc.$O\
+	src_zoh.$O\
+
+HFILES=\
+	/sys/include/samplerate.h\
+	common.h\
+	fastest_coeffs.h\
+	high_qual_coeffs.h\
+	mid_qual_coeffs.h\
+	samplerate.h\
+	src_config.h\
+
+/sys/include/%.h: %.h
+	cp $stem.h /sys/include/$stem.h
+
+</sys/src/cmd/mksyslib
--- /dev/null
+++ b/src/plan9.c
@@ -1,0 +1,19 @@
+int
+lrintf(float f)
+{
+	int i;
+
+	*((float*)&i) = f + 12582912.0f;
+
+	return (i & 0x7fffff) - 0x400000;
+}
+
+long
+lrint(double d)
+{
+	long long l;
+
+	*((double*)&l) = d + 6755399441055744.0;
+
+	return l;
+}
--- /dev/null
+++ b/src/plan9/config.h
@@ -1,0 +1,17 @@
+#include <u.h>
+#include <libc.h>
+
+#define SIZEOF_INT sizeof(int)
+#define SIZEOF_LONG sizeof(long)
+#define CPU_IS_LITTLE_ENDIAN
+#define PACKAGE "libsamplerate"
+#define VERSION "nein"
+
+#define NULL nil
+#define UNUSED(x) USED(x)
+
+typedef enum { false, true } bool;
+typedef s32int int32_t;
+
+int lrintf(float f);
+long lrint(double d);
--- a/src/samplerate.h
+++ b/src/samplerate.h
@@ -18,6 +18,7 @@
 extern "C" {
 #endif	/* __cplusplus */
 
+#pragma lib "libsamplerate.a"
 
 /* Opaque data type SRC_STATE. */
 typedef struct SRC_STATE_tag SRC_STATE ;
--- a/src/src_linear.c
+++ b/src/src_linear.c
@@ -228,7 +228,7 @@
 
 static void
 linear_reset (SRC_STATE *state)
-{	LINEAR_DATA *priv = NULL ;
+{	LINEAR_DATA *priv ;
 
 	priv = (LINEAR_DATA*) state->private_data ;
 	if (priv == NULL)
@@ -240,7 +240,7 @@
 	return ;
 } /* linear_reset */
 
-SRC_STATE *
+static SRC_STATE *
 linear_copy (SRC_STATE *state)
 {
 	assert (state != NULL) ;
@@ -290,9 +290,7 @@
 				linear->last_value = NULL ;
 			}
 			free (linear) ;
-			linear = NULL ;
 		}
 		free (state) ;
-		state = NULL ;
 	}
 } /* linear_close */
--- a/src/src_sinc.c
+++ b/src/src_sinc.c
@@ -570,7 +570,7 @@
 		output [ch] = (float) (scale * (left [ch] + right [ch])) ;
 } /* calc_output_stereo */
 
-SRC_ERROR
+static SRC_ERROR
 sinc_stereo_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
@@ -726,7 +726,7 @@
 		output [ch] = (float) (scale * (left [ch] + right [ch])) ;
 } /* calc_output_quad */
 
-SRC_ERROR
+static SRC_ERROR
 sinc_quad_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
@@ -881,7 +881,7 @@
 		output [ch] = (float) (scale * (left [ch] + right [ch])) ;
 } /* calc_output_hex */
 
-SRC_ERROR
+static SRC_ERROR
 sinc_hex_vari_process (SRC_STATE *state, SRC_DATA *data)
 {	SINC_FILTER *filter ;
 	double		input_index, src_ratio, count, float_increment, terminate, rem ;
@@ -1143,7 +1143,7 @@
 
 static SRC_ERROR
 prepare_data (SINC_FILTER *filter, int channels, SRC_DATA *data, int half_filter_chan_len)
-{	int len = 0 ;
+{	int len ;
 
 	if (filter->b_real_end >= 0)
 		return SRC_ERR_NO_ERROR ;	/* Should be terminating. Just return. */
@@ -1231,9 +1231,7 @@
 				sinc->buffer = NULL ;
 			}
 			free (sinc) ;
-			sinc = NULL ;
 		}
 		free (state) ;
-		state = NULL ;
 	}
 } /* sinc_close */
--- a/src/src_zoh.c
+++ b/src/src_zoh.c
@@ -279,9 +279,7 @@
 				zoh->last_value = NULL ;
 			}
 			free (zoh) ;
-			zoh = NULL ;
 		}
 		free (state) ;
-		state = NULL ;
 	}
 } /* zoh_close */