Added lin2lin, findmax, findfactor and fintfit routines
This commit is contained in:
parent
22e44cd0b5
commit
dd8a6eac57
|
@ -270,6 +270,46 @@ audioop_rms(self, args)
|
||||||
return newintobject(val);
|
return newintobject(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static object *
|
||||||
|
audioop_rms2(self, args)
|
||||||
|
object *self;
|
||||||
|
object *args;
|
||||||
|
{
|
||||||
|
signed char *cp1, *cp2;
|
||||||
|
int len1, len2, size, val1, val2;
|
||||||
|
int i;
|
||||||
|
float sum_squares = 0.0;
|
||||||
|
|
||||||
|
if ( !getargs(args, "(s#s#i)", &cp1, &len1, &cp2, &len2, &size) )
|
||||||
|
return 0;
|
||||||
|
if ( size != 1 && size != 2 && size != 4 ) {
|
||||||
|
err_setstr(AudioopError, "Size should be 1, 2 or 4");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ( len1 != len2 ) {
|
||||||
|
err_setstr(AudioopError, "Samples should be same size");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
for ( i=0; i<len1; i+= size) {
|
||||||
|
if ( size == 1 ) {
|
||||||
|
val1 = (int)*CHARP(cp1, i);
|
||||||
|
val2 = (int)*CHARP(cp2, i);
|
||||||
|
} else if ( size == 2 ) {
|
||||||
|
val1 = (int)*SHORTP(cp1, i);
|
||||||
|
val2 = (int)*SHORTP(cp2, i);
|
||||||
|
} else if ( size == 4 ) {
|
||||||
|
val1 = (int)*LONGP(cp1, i);
|
||||||
|
val2 = (int)*LONGP(cp2, i);
|
||||||
|
}
|
||||||
|
sum_squares += (float)val1*(float)val2;
|
||||||
|
}
|
||||||
|
if ( len1 == 0 )
|
||||||
|
val1 = 0;
|
||||||
|
else
|
||||||
|
val1 = (int)sqrt(sum_squares / (float)(len1/size));
|
||||||
|
return newintobject(val1);
|
||||||
|
}
|
||||||
|
|
||||||
static object *
|
static object *
|
||||||
audioop_avgpp(self, args)
|
audioop_avgpp(self, args)
|
||||||
object *self;
|
object *self;
|
||||||
|
@ -731,6 +771,11 @@ audioop_lin2adpcm3(self, args)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
str = newsizedstringobject(NULL, len/size);
|
||||||
|
if ( str == 0 )
|
||||||
|
return 0;
|
||||||
|
ncp = (signed char *)getstringvalue(str);
|
||||||
|
|
||||||
/* Decode state, should have (value, step) */
|
/* Decode state, should have (value, step) */
|
||||||
if ( state == None ) {
|
if ( state == None ) {
|
||||||
/* First time, it seems. Set defaults */
|
/* First time, it seems. Set defaults */
|
||||||
|
@ -739,11 +784,6 @@ audioop_lin2adpcm3(self, args)
|
||||||
} else if ( !getargs(state, "(ii)", &valprev, &step) )
|
} else if ( !getargs(state, "(ii)", &valprev, &step) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
str = newsizedstringobject(NULL, len/size);
|
|
||||||
if ( str == 0 )
|
|
||||||
return 0;
|
|
||||||
ncp = (signed char *)getstringvalue(str);
|
|
||||||
|
|
||||||
for ( i=0; i < len; i += size ) {
|
for ( i=0; i < len; i += size ) {
|
||||||
if ( size == 1 ) val = ((int)*CHARP(cp, i)) << 8;
|
if ( size == 1 ) val = ((int)*CHARP(cp, i)) << 8;
|
||||||
else if ( size == 2 ) val = (int)*SHORTP(cp, i);
|
else if ( size == 2 ) val = (int)*SHORTP(cp, i);
|
||||||
|
@ -861,6 +901,11 @@ audioop_lin2adpcm(self, args)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
str = newsizedstringobject(NULL, len/(size*2));
|
||||||
|
if ( str == 0 )
|
||||||
|
return 0;
|
||||||
|
ncp = (signed char *)getstringvalue(str);
|
||||||
|
|
||||||
/* Decode state, should have (value, step) */
|
/* Decode state, should have (value, step) */
|
||||||
if ( state == None ) {
|
if ( state == None ) {
|
||||||
/* First time, it seems. Set defaults */
|
/* First time, it seems. Set defaults */
|
||||||
|
@ -870,11 +915,6 @@ audioop_lin2adpcm(self, args)
|
||||||
} else if ( !getargs(state, "(ii)", &valpred, &index) )
|
} else if ( !getargs(state, "(ii)", &valpred, &index) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
str = newsizedstringobject(NULL, len/(size*2));
|
|
||||||
if ( str == 0 )
|
|
||||||
return 0;
|
|
||||||
ncp = (signed char *)getstringvalue(str);
|
|
||||||
|
|
||||||
step = stepsizeTable[index];
|
step = stepsizeTable[index];
|
||||||
bufferstep = 1;
|
bufferstep = 1;
|
||||||
|
|
||||||
|
@ -1048,6 +1088,7 @@ static struct methodlist audioop_methods[] = {
|
||||||
{ "maxpp", audioop_maxpp },
|
{ "maxpp", audioop_maxpp },
|
||||||
{ "avgpp", audioop_avgpp },
|
{ "avgpp", audioop_avgpp },
|
||||||
{ "rms", audioop_rms },
|
{ "rms", audioop_rms },
|
||||||
|
{ "rms2", audioop_rms2 },
|
||||||
{ "cross", audioop_cross },
|
{ "cross", audioop_cross },
|
||||||
{ "mul", audioop_mul },
|
{ "mul", audioop_mul },
|
||||||
{ "add", audioop_add },
|
{ "add", audioop_add },
|
||||||
|
|
Loading…
Reference in New Issue