de.jarnbjo.vorbis.Util Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sound Show documentation
Show all versions of sound Show documentation
Etyl's default sound module
/*
* $ProjectName$
* $ProjectRevision$
* -----------------------------------------------------------
* $Id: Util.java,v 1.3 2003/04/10 19:49:04 jarnbjo Exp $
* -----------------------------------------------------------
*
* $Author: jarnbjo $
*
* Description:
*
* Copyright 2002-2003 Tor-Einar Jarnbjo
* -----------------------------------------------------------
*
* Change History
* -----------------------------------------------------------
* $Log: Util.java,v $
* Revision 1.3 2003/04/10 19:49:04 jarnbjo
* no message
*
* Revision 1.2 2003/03/16 01:11:12 jarnbjo
* no message
*
*
*/
package de.jarnbjo.vorbis;
final public class Util {
public static final int ilog(int x) {
int res=0;
for(; x>0; x>>=1, res++);
return res;
}
public static final float float32unpack(int x) {
float mantissa=x&0x1fffff;
float e=(x&0x7fe00000)>>21;
if((x&0x80000000)!=0) {
mantissa=-mantissa;
}
return mantissa*(float)Math.pow(2.0, e-788.0);
}
public static final int lookup1Values(int a, int b) {
int res=(int)Math.pow(Math.E, Math.log(a)/b);
return intPow(res+1, b)<=a?res+1:res;
}
public static final int intPow(int base, int e) {
int res=1;
for(; e>0; e--, res*=base);
return res;
}
public static final boolean isBitSet(int value, int bit) {
return (value&(1<0) {
res+=value&1;
value>>=1;
}
return res;
}
public static final int lowNeighbour(int[] v, int x) {
int max=-1, n=0;
for(int i=0; imax && v[i]v[x]) {
min=v[i];
n=i;
}
}
return n;
}
public static final int renderPoint(int x0, int x1, int y0, int y1, int x) {
int dy=y1-y0;
int ady=dy<0?-dy:dy;
int off=(ady*(x-x0))/(x1-x0);
return dy<0?y0-off:y0+off;
}
public static final void renderLine(final int x0, final int y0, final int x1, final int y1, final float[] v) {
final int dy=y1-y0;
final int adx=x1-x0;
final int base=dy/adx;
final int sy=dy<0?base-1:base+1;
int x=x0;
int y=y0;
int err=0;
final int ady=(dy<0?-dy:dy)-(base>0?base*adx:-base*adx);
v[x]*=Floor.DB_STATIC_TABLE[y];
for(x=x0+1; x=adx) {
err-=adx;
v[x]*=Floor.DB_STATIC_TABLE[y+=sy];
}
else {
v[x]*=Floor.DB_STATIC_TABLE[y+=base];
}
}
}
}