All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.jarnbjo.vorbis.Util Maven / Gradle / Ivy

There is a newer version: 1.2.0
Show newest version
/*
 * $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];
         }
      }
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy