// Path: vorbis-support/src/main/java/com/github/trilarion/sound/util/Util.java
// public final class Util {
// 
//     private static final Logger LOG = Logger.getLogger(Util.class.getName());
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int ilog(int v) {
//         int ret = 0;
//         while (v != 0) {
//             ret++;
//             v >>>= 1;
//         }
//         return ret;
//     }
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int ilog2(int v) {
//         int ret = 0;
//         while (v > 1) {
//             ret++;
//             v >>>= 1;
//         }
//         return ret;
//     }
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int icount(int v) {
//         int ret = 0;
//         while (v != 0) {
//             ret += (v & 1);
//             v >>>= 1;
//         }
//         return ret;
//     }
// }


import java.util.logging.Logger;
import com.github.trilarion.sound.util.Util;
        for (int i = 0; i < vi.books; i++) {
            fullbooks[i] = new CodeBook();
            fullbooks[i].init_decode(vi.book_param[i]);
        }

        // initialize the storage vectors to a decent size greater than the
        // minimum
        pcm_storage = 8192; // we'll assume later that we have
        // a minimum of twice the blocksize of
        // accumulated samples in analysis
        pcm = new float[vi.channels][];
        {
            for (int i = 0; i < vi.channels; i++) {
                pcm[i] = new float[pcm_storage];
            }
        }

        // all 1 (large block) or 0 (small block)
        // explicitly set for the sake of clarity
        lW = 0; // previous window size
        W = 0; // current window size

        // all vector indexes; multiples of samples_per_envelope_step
        centerW = vi.blocksizes[1] / 2;

        pcm_current = centerW;

        // initialize all the mapping/backend lookups
        mode = new Object[vi.modes];
        for (int i = 0; i < vi.modes; i++) {
// Path: vorbis-support/src/main/java/com/github/trilarion/sound/util/Util.java
// public final class Util {
// 
//     private static final Logger LOG = Logger.getLogger(Util.class.getName());
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int ilog(int v) {
//         int ret = 0;
//         while (v != 0) {
//             ret++;
//             v >>>= 1;
//         }
//         return ret;
//     }
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int ilog2(int v) {
//         int ret = 0;
//         while (v > 1) {
//             ret++;
//             v >>>= 1;
//         }
//         return ret;
//     }
// 
//     /**
//      *
//      * @param v
//      * @return
//      */
//     public static int icount(int v) {
//         int ret = 0;
//         while (v != 0) {
//             ret += (v & 1);
//             v >>>= 1;
//         }
//         return ret;
//     }
// }


// Path: vorbis-support/src/main/java/com/github/trilarion/sound/vorbis/jcraft/jorbis/DspState.java
import java.util.logging.Logger;
import com.github.trilarion.sound.util.Util;

        for (int i = 0; i < vi.books; i++) {
            fullbooks[i] = new CodeBook();
            fullbooks[i].init_decode(vi.book_param[i]);
        }

        // initialize the storage vectors to a decent size greater than the
        // minimum
        pcm_storage = 8192; // we'll assume later that we have
        // a minimum of twice the blocksize of
        // accumulated samples in analysis
        pcm = new float[vi.channels][];
        {
            for (int i = 0; i < vi.channels; i++) {
                pcm[i] = new float[pcm_storage];
            }
        }

        // all 1 (large block) or 0 (small block)
        // explicitly set for the sake of clarity
        lW = 0; // previous window size
        W = 0; // current window size

        // all vector indexes; multiples of samples_per_envelope_step
        centerW = vi.blocksizes[1] / 2;

        pcm_current = centerW;

        // initialize all the mapping/backend lookups
        mode = new Object[vi.modes];
        for (int i = 0; i < vi.modes; i++) {
            int mapnum = vi.mode_param[i].mapping;