[Freeswitch-svn] [commit] r6704 - freeswitch/trunk/src/mod/formats/mod_shout

Freeswitch SVN anthm at freeswitch.org
Wed Dec 12 15:50:58 EST 2007


Author: anthm
Date: Wed Dec 12 15:50:58 2007
New Revision: 6704

Modified:
   freeswitch/trunk/src/mod/formats/mod_shout/decode_ntom.c
   freeswitch/trunk/src/mod/formats/mod_shout/interface.c
   freeswitch/trunk/src/mod/formats/mod_shout/mpglib.h

Log:
make mpglib more not threadsafe

Modified: freeswitch/trunk/src/mod/formats/mod_shout/decode_ntom.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/decode_ntom.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/decode_ntom.c	Wed Dec 12 15:50:58 2007
@@ -20,12 +20,12 @@
   else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \
   else { *(samples) = sum; }
 
-#define NTOM_MUL (32768)
-static unsigned long ntom_val[2] = { NTOM_MUL >> 1, NTOM_MUL >> 1 };
-static unsigned long ntom_step = NTOM_MUL;
 
+//static unsigned long ntom_val[2] = { NTOM_MUL >> 1, NTOM_MUL >> 1 };
+//static unsigned long ntom_step = NTOM_MUL;
 
-int synth_ntom_set_step(long m, long n)
+
+int synth_ntom_set_step(struct mpstr *mp, long m, long n)
 {
 	if (param.verbose > 1)
 		debug_printf("Init rate converter: %ld->%ld\n", m, n);
@@ -36,14 +36,14 @@
 	}
 
 	n *= NTOM_MUL;
-	ntom_step = n / m;
+	mp->ntom_step = n / m;
 
-	if (ntom_step > 8 * NTOM_MUL) {
+	if (mp->ntom_step > 8 * NTOM_MUL) {
 		debug_printf("%d max. 1:8 conversion allowed!\n", __LINE__);
 		return (1);
 	}
 
-	ntom_val[0] = ntom_val[1] = NTOM_MUL >> 1;
+	mp->ntom_val[0] = mp->ntom_val[1] = NTOM_MUL >> 1;
 
 	return (0);
 
@@ -89,12 +89,12 @@
 		bo--;
 		bo &= 0xf;
 		buf = mp->synth_buffs[0];
-		ntom = ntom_val[1] = ntom_val[0];
+		ntom = mp->ntom_val[1] = mp->ntom_val[0];
 	} else {
 		samples++;
 		out += 2;				/* to compute the right *pnt value */
 		buf = mp->synth_buffs[1];
-		ntom = ntom_val[1];
+		ntom = mp->ntom_val[1];
 	}
 
 	if (bo & 0x1) {
@@ -116,7 +116,7 @@
 		for (j = 16; j; j--, window += 0x10) {
 			real sum;
 
-			ntom += ntom_step;
+			ntom += mp->ntom_step;
 			if (ntom < NTOM_MUL) {
 				window += 16;
 				b0 += 16;
@@ -147,7 +147,7 @@
 			}
 		}
 
-		ntom += ntom_step;
+		ntom += mp->ntom_step;
 		if (ntom >= NTOM_MUL) {
 			real sum;
 			sum = window[0x0] * b0[0x0];
@@ -172,7 +172,7 @@
 		for (j = 15; j; j--, b0 -= 0x20, window -= 0x10) {
 			real sum;
 
-			ntom += ntom_step;
+			ntom += mp->ntom_step;
 			if (ntom < NTOM_MUL) {
 				window -= 16;
 				b0 += 16;
@@ -204,7 +204,7 @@
 		}
 	}
 
-	ntom_val[channel] = ntom;
+	mp->ntom_val[channel] = ntom;
 	*pnt = ((unsigned char *) samples - out);
 
 	return clip;

Modified: freeswitch/trunk/src/mod/formats/mod_shout/interface.c
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/interface.c	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/interface.c	Wed Dec 12 15:50:58 2007
@@ -27,6 +27,9 @@
 	mp->bsnum = 0;
 	mp->synth_bo = 1;
 	mp->outsamplerate = samplerate;
+	mp->ntom_val[0] = NTOM_MUL >> 1;
+	mp->ntom_val[1] = NTOM_MUL >> 1;
+	mp->ntom_step = NTOM_MUL;
 
 	make_decode_tables_scale(mp, outscale);
 
@@ -241,7 +244,7 @@
 				m = n;
 			}
 
-			if (synth_ntom_set_step(n, m))
+			if (synth_ntom_set_step(mp, n, m))
 				return MP3_ERR;
 
 

Modified: freeswitch/trunk/src/mod/formats/mod_shout/mpglib.h
==============================================================================
--- freeswitch/trunk/src/mod/formats/mod_shout/mpglib.h	(original)
+++ freeswitch/trunk/src/mod/formats/mod_shout/mpglib.h	Wed Dec 12 15:50:58 2007
@@ -3,6 +3,7 @@
 #else
 #define debug_printf(fmt,...)
 #endif
+#define NTOM_MUL (32768)
 
 struct buf {
 	unsigned char *pnt;
@@ -39,7 +40,8 @@
 	int longLimit[9][23];		/*sample limits re setting volume */
 	int shortLimit[9][14];
 	real decwin[512 + 32];		/* scale table */
-
+	unsigned long ntom_val[2];
+	unsigned long ntom_step;
 };
 
 #define BOOL int
@@ -54,7 +56,7 @@
 int decodeMP3(struct mpstr *mp, char *inmemory, int inmemsize, char *outmemory, int outmemsize, int *done);
 void ExitMP3(struct mpstr *mp);
 
-extern int synth_ntom_set_step(long, long);
+extern int synth_ntom_set_step(struct mpstr *mp, long, long);
 extern int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out, int *pnt);
 extern int synth_ntom_mono(struct mpstr *mp, real * bandPtr, unsigned char *samples, int *pnt);
 extern int synth_ntom_8bit(real *, int, unsigned char *, int *);



More information about the Freeswitch-svn mailing list