make mpglib more not threadsafe
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6704 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
5bd41e52c0
commit
3eb3671fb2
|
@ -20,12 +20,12 @@
|
||||||
else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \
|
else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \
|
||||||
else { *(samples) = sum; }
|
else { *(samples) = sum; }
|
||||||
|
|
||||||
#define NTOM_MUL (32768)
|
|
||||||
static unsigned long ntom_val[2] = { NTOM_MUL >> 1, NTOM_MUL >> 1 };
|
//static unsigned long ntom_val[2] = { NTOM_MUL >> 1, NTOM_MUL >> 1 };
|
||||||
static unsigned long ntom_step = NTOM_MUL;
|
//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)
|
if (param.verbose > 1)
|
||||||
debug_printf("Init rate converter: %ld->%ld\n", m, n);
|
debug_printf("Init rate converter: %ld->%ld\n", m, n);
|
||||||
|
@ -36,14 +36,14 @@ int synth_ntom_set_step(long m, long n)
|
||||||
}
|
}
|
||||||
|
|
||||||
n *= NTOM_MUL;
|
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__);
|
debug_printf("%d max. 1:8 conversion allowed!\n", __LINE__);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ntom_val[0] = ntom_val[1] = NTOM_MUL >> 1;
|
mp->ntom_val[0] = mp->ntom_val[1] = NTOM_MUL >> 1;
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
@ -89,12 +89,12 @@ int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out
|
||||||
bo--;
|
bo--;
|
||||||
bo &= 0xf;
|
bo &= 0xf;
|
||||||
buf = mp->synth_buffs[0];
|
buf = mp->synth_buffs[0];
|
||||||
ntom = ntom_val[1] = ntom_val[0];
|
ntom = mp->ntom_val[1] = mp->ntom_val[0];
|
||||||
} else {
|
} else {
|
||||||
samples++;
|
samples++;
|
||||||
out += 2; /* to compute the right *pnt value */
|
out += 2; /* to compute the right *pnt value */
|
||||||
buf = mp->synth_buffs[1];
|
buf = mp->synth_buffs[1];
|
||||||
ntom = ntom_val[1];
|
ntom = mp->ntom_val[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bo & 0x1) {
|
if (bo & 0x1) {
|
||||||
|
@ -116,7 +116,7 @@ int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out
|
||||||
for (j = 16; j; j--, window += 0x10) {
|
for (j = 16; j; j--, window += 0x10) {
|
||||||
real sum;
|
real sum;
|
||||||
|
|
||||||
ntom += ntom_step;
|
ntom += mp->ntom_step;
|
||||||
if (ntom < NTOM_MUL) {
|
if (ntom < NTOM_MUL) {
|
||||||
window += 16;
|
window += 16;
|
||||||
b0 += 16;
|
b0 += 16;
|
||||||
|
@ -147,7 +147,7 @@ int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ntom += ntom_step;
|
ntom += mp->ntom_step;
|
||||||
if (ntom >= NTOM_MUL) {
|
if (ntom >= NTOM_MUL) {
|
||||||
real sum;
|
real sum;
|
||||||
sum = window[0x0] * b0[0x0];
|
sum = window[0x0] * b0[0x0];
|
||||||
|
@ -172,7 +172,7 @@ int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out
|
||||||
for (j = 15; j; j--, b0 -= 0x20, window -= 0x10) {
|
for (j = 15; j; j--, b0 -= 0x20, window -= 0x10) {
|
||||||
real sum;
|
real sum;
|
||||||
|
|
||||||
ntom += ntom_step;
|
ntom += mp->ntom_step;
|
||||||
if (ntom < NTOM_MUL) {
|
if (ntom < NTOM_MUL) {
|
||||||
window -= 16;
|
window -= 16;
|
||||||
b0 += 16;
|
b0 += 16;
|
||||||
|
@ -204,7 +204,7 @@ int synth_ntom(struct mpstr *mp, real * bandPtr, int channel, unsigned char *out
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ntom_val[channel] = ntom;
|
mp->ntom_val[channel] = ntom;
|
||||||
*pnt = ((unsigned char *) samples - out);
|
*pnt = ((unsigned char *) samples - out);
|
||||||
|
|
||||||
return clip;
|
return clip;
|
||||||
|
|
|
@ -27,6 +27,9 @@ BOOL InitMP3(struct mpstr *mp, long outscale, int samplerate)
|
||||||
mp->bsnum = 0;
|
mp->bsnum = 0;
|
||||||
mp->synth_bo = 1;
|
mp->synth_bo = 1;
|
||||||
mp->outsamplerate = samplerate;
|
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);
|
make_decode_tables_scale(mp, outscale);
|
||||||
|
|
||||||
|
@ -241,7 +244,7 @@ int decodeMP3(struct mpstr *mp, char *in, int isize, char *out, int osize, int *
|
||||||
m = n;
|
m = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (synth_ntom_set_step(n, m))
|
if (synth_ntom_set_step(mp, n, m))
|
||||||
return MP3_ERR;
|
return MP3_ERR;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#else
|
#else
|
||||||
#define debug_printf(fmt,...)
|
#define debug_printf(fmt,...)
|
||||||
#endif
|
#endif
|
||||||
|
#define NTOM_MUL (32768)
|
||||||
|
|
||||||
struct buf {
|
struct buf {
|
||||||
unsigned char *pnt;
|
unsigned char *pnt;
|
||||||
|
@ -39,7 +40,8 @@ struct mpstr {
|
||||||
int longLimit[9][23]; /*sample limits re setting volume */
|
int longLimit[9][23]; /*sample limits re setting volume */
|
||||||
int shortLimit[9][14];
|
int shortLimit[9][14];
|
||||||
real decwin[512 + 32]; /* scale table */
|
real decwin[512 + 32]; /* scale table */
|
||||||
|
unsigned long ntom_val[2];
|
||||||
|
unsigned long ntom_step;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define BOOL int
|
#define BOOL int
|
||||||
|
@ -54,7 +56,7 @@ BOOL InitMP3(struct mpstr *mp, long outscale, int samplerate);
|
||||||
int decodeMP3(struct mpstr *mp, char *inmemory, int inmemsize, char *outmemory, int outmemsize, int *done);
|
int decodeMP3(struct mpstr *mp, char *inmemory, int inmemsize, char *outmemory, int outmemsize, int *done);
|
||||||
void ExitMP3(struct mpstr *mp);
|
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(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_mono(struct mpstr *mp, real * bandPtr, unsigned char *samples, int *pnt);
|
||||||
extern int synth_ntom_8bit(real *, int, unsigned char *, int *);
|
extern int synth_ntom_8bit(real *, int, unsigned char *, int *);
|
||||||
|
|
Loading…
Reference in New Issue