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

com.jcraft.jorbis.Lsp Maven / Gradle / Ivy

The newest version!
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/* JOrbis
 * Copyright (C) 2000 ymnk, JCraft,Inc.
 *  
 * Written by: 2000 ymnk
 *   
 * Many thanks to 
 *   Monty  and 
 *   The XIPHOPHORUS Company http://www.xiph.org/ .
 * JOrbis has been based on their awesome works, Vorbis codec.
 *   
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public License
 * as published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
   
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Library General Public License for more details.
 * 
 * You should have received a copy of the GNU Library General Public
 * License along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

package com.jcraft.jorbis;

/*
  function: LSP (also called LSF) conversion routines

  The LSP generation code is taken (with minimal modification) from
  "On the Computation of the LSP Frequencies" by Joseph Rothweiler
  , available at:
  
  http://www2.xtdl.com/~rothwlr/lsfpaper/lsfpage.html 
 ********************************************************************/

class Lsp{

  static final float M_PI=(float)(3.1415926539);

  static void lsp_to_curve(float[] curve, int[] map, int n, int ln,
      float[] lsp, int m, float amp, float ampoffset){
    int i;
    float wdel=M_PI/ln;
    for(i=0; i=0x7f800000||(ix==0)){
        // 0,inf,nan
      }
      else{
        if(ix<0x00800000){ // subnormal
          q*=3.3554432000e+07; // 0x4c000000
          hx=Float.floatToIntBits(q);
          ix=0x7fffffff&hx;
          qexp=-25;
        }
        qexp+=((ix>>>23)-126);
        hx=(hx&0x807fffff)|0x3f000000;
        q=Float.intBitsToFloat(hx);
      }

      q=Lookup.fromdBlook(amp*Lookup.invsqlook(q)*Lookup.invsq2explook(qexp+m)
          -ampoffset);

      do{
        curve[i++]*=q;
      }
      while(i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy