/* * Java port of ogg demultiplexer. * Copyright (c) 2004 Jonathan Hueber. * * License conditions are the same as OggVorbis. See README. * 1a39e335700bec46ae31a38e2156a898 */ /******************************************************************** * * * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * by the XIPHOPHORUS Company http://www.xiph.org/ * * * ********************************************************************/ package net.sourceforge.jffmpeg.codecs.audio.vorbis.residue; import net.sourceforge.jffmpeg.codecs.audio.vorbis.CodeBook; import net.sourceforge.jffmpeg.codecs.audio.vorbis.OggReader; public class Residue2 extends Residue0 { // public abstract void look(); // public abstract void forward(); public void inverse(OggReader oggRead, float[][] in, int[] nonZero, int ch) { /* move all this setup out later */ int samples_per_partition = grouping; int partitions_per_word = phrasebook.getDim(); int n = end - begin; int partvals = n/samples_per_partition; int partwords = (partvals+partitions_per_word-1)/partitions_per_word; long[][] partword = new long[ partwords ][]; // System.out.println( "Residue2 inverse" ); int i; for( i = 0; i < ch; i++ ) if ( nonZero[i] != 0 ) break; if( i == ch ) return; /* no nonzero vectors */ for( int s = 0; s < stages; s++ ) { int l = 0; for( i = 0; i < partvals; l++ ) { if ( s == 0 ) { /* fetch the partition word */ int temp = phrasebook.decode(oggRead); //System.out.println( "temp " + temp ); partword[l] = decodemap[temp]; } /* now we decode residual values for the partitions */ for(int k=0; k < partitions_per_word && i<partvals; k++,i++ ) { if ( (secondstages[(int)partword[l][k]]&(1<<s)) != 0 ) { CodeBook stagebook = partbooks[(int)partword[l][k]][s]; if ( stagebook != null ) { stagebook.decodevv_add( in, i * samples_per_partition + begin, ch, oggRead, samples_per_partition ); } } } } } } }