From 15e12c52c54314d14b860b578c46251adb3e8625 Mon Sep 17 00:00:00 2001 From: Yong hun eom Date: Tue, 5 Mar 2013 09:40:23 -0800 Subject: [PATCH] remove unnecessary annotations to calculate evalution numbers. --- .../src/Analysis/SSJava/SSJavaAnalysis.java | 2 +- .../SSJava/MP3Decoder/BitReserve.java | 342 +- .../SSJava/MP3Decoder/Bitstream.java | 92 +- .../SSJava/MP3Decoder/BitstreamErrors.java | 140 +- .../SSJava/MP3Decoder/BitstreamException.java | 140 +- .../Benchmarks/SSJava/MP3Decoder/Control.java | 110 +- .../Benchmarks/SSJava/MP3Decoder/Crc16.java | 150 +- .../Benchmarks/SSJava/MP3Decoder/Decoder.java | 598 +-- .../SSJava/MP3Decoder/DecoderErrors.java | 88 +- .../SSJava/MP3Decoder/DecoderException.java | 122 +- .../SSJava/MP3Decoder/Equalizer.java | 402 +- .../SSJava/MP3Decoder/FrameDecoder.java | 76 +- .../SSJava/MP3Decoder/InputStreamSource.java | 156 +- .../SSJava/MP3Decoder/JavaLayerError.java | 58 +- .../SSJava/MP3Decoder/JavaLayerErrors.java | 78 +- .../SSJava/MP3Decoder/JavaLayerHook.java | 70 +- .../SSJava/MP3Decoder/JavaLayerUtils.java | 454 +- .../Benchmarks/SSJava/MP3Decoder/Manager.java | 90 +- .../SSJava/MP3Decoder/OutputChannels.java | 258 +- .../Benchmarks/SSJava/MP3Decoder/Player.java | 522 +- .../Benchmarks/SSJava/MP3Decoder/Source.java | 96 +- .../SSJava/MP3Decoder/SynthesisFilter.java | 4462 ++++++++--------- .../SSJava/MP3Decoder/huffcodetab.java | 1328 ++--- 23 files changed, 4916 insertions(+), 4918 deletions(-) diff --git a/Robust/src/Analysis/SSJava/SSJavaAnalysis.java b/Robust/src/Analysis/SSJava/SSJavaAnalysis.java index 61a90d09..2d1f8ffc 100644 --- a/Robust/src/Analysis/SSJava/SSJavaAnalysis.java +++ b/Robust/src/Analysis/SSJava/SSJavaAnalysis.java @@ -244,7 +244,7 @@ public class SSJavaAnalysis { SSJavaLattice completeLattice = buildLattice.buildLattice(hierarchyGraph); - int numLocs = completeLattice.getKeySet().size() + 1; + int numLocs = completeLattice.getKeySet().size(); LocationInference.numLocationsSInfer += numLocs; mapNumLocsMapManual.put(desc, new Integer(numLocs)); diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitReserve.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitReserve.java index 190fd65c..8d5e2b24 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitReserve.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitReserve.java @@ -1,171 +1,171 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * - * 12/12/99 0.0.7 Implementation stores single bits - * as ints for better performance. mdm@techie.com. - * - * 02/28/99 0.0 Java Conversion by E.B, javalayer@javazoom.net - * - * Adapted from the public c code by Jeff Tsay. - * - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * Implementation of Bit Reservoir for Layer III. - *

- * The implementation stores single bits as a word in the buffer. If a bit is - * set, the corresponding word in the buffer will be non-zero. If a bit is - * clear, the corresponding word is zero. Although this may seem waseful, this - * can be a factor of two quicker than packing 8 bits to a byte and extracting. - *

- */ - -// REVIEW: there is no range checking, so buffer underflow or overflow -// can silently occur. -@LATTICE("BUF 0) { - val <<= 1; - val |= ((buf[pos++] != 0) ? 1 : 0); - } - } else { - TERMINATE: while (N-- > 0) { - val <<= 1; - val |= ((buf[pos] != 0) ? 1 : 0); - pos = (pos + 1) & BUFSIZE_MASK; - } - } - - buf_byte_idx = pos; - - return val; - - } - - /** - * Returns next bit from reserve. - * - * @returns 0 if next bit is reset, or 1 if next bit is set. - */ - @RETURNLOC("THIS,BitReserve.BIT") - public int hget1bit() { - totbit++; - @LOC("THIS,BitReserve.BIT") int val = buf[buf_byte_idx]; - buf_byte_idx = (buf_byte_idx + 1) & BUFSIZE_MASK; - return val; - } - - /** - * Write 8 bits into the bit stream. - */ - @LATTICE("OUT + * The implementation stores single bits as a word in the buffer. If a bit is + * set, the corresponding word in the buffer will be non-zero. If a bit is + * clear, the corresponding word is zero. Although this may seem waseful, this + * can be a factor of two quicker than packing 8 bits to a byte and extracting. + *

+ */ + +// REVIEW: there is no range checking, so buffer underflow or overflow +// can silently occur. +@LATTICE("BUF 0) { + val <<= 1; + val |= ((buf[pos++] != 0) ? 1 : 0); + } + } else { + TERMINATE: while (N-- > 0) { + val <<= 1; + val |= ((buf[pos] != 0) ? 1 : 0); + pos = (pos + 1) & BUFSIZE_MASK; + } + } + + buf_byte_idx = pos; + + return val; + + } + + /** + * Returns next bit from reserve. + * + * @returns 0 if next bit is reset, or 1 if next bit is set. + */ + @RETURNLOC("THIS,BitReserve.BIT") + public int hget1bit() { + totbit++; + @LOC("THIS,BitReserve.BIT") int val = buf[buf_byte_idx]; + buf_byte_idx = (buf_byte_idx + 1) & BUFSIZE_MASK; + return val; + } + + /** + * Write 8 bits into the bit stream. + */ + @LATTICE("OUTREVIEW: much of the parsing currently occurs in the various decoders. * This should be moved into this class and associated inner classes. */ -@LATTICE("FBframebuffer where the next bits are retrieved. */ - @LOC("WP") + private int wordpointer; /** * Number (0-31, from MSB to LSB) of next bit for get_bits() */ - @LOC("BI") + private int bitindex; /** * The current specified syncword */ - @LOC("F") + private int syncword; /** * Audio header position in stream. */ - @LOC("F") + private int header_pos = 0; /** * */ - @LOC("F") + private boolean single_ch_mode; // private int current_frame_number; // private int last_frame_number; - @LOC("F") + private final int bitmask[] = { 0, // dummy 0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF, 0x0001FFFF }; - @LOC("F") + private final PushbackInputStream source; - @LOC("F") + private final Header header = new Header(); - @LOC("F") + private final byte syncbuf[] = new byte[4]; - @LOC("F") + private Crc16[] crc = new Crc16[1]; - @LOC("F") + private byte[] rawid3v2 = null; - @LOC("FF") + private boolean firstframe = true; private BitReserve br; @@ -528,12 +526,12 @@ public final class Bitstream implements BitstreamErrors { /** * Parses the data previously read with read_frame_data(). */ - @LATTICE("GLOBAL>> 16) & 0x0000FFFF); returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 - @@ -612,7 +610,7 @@ public final class Bitstream implements BitstreamErrors { /** * Set the word we want to sync the header to. In Big-Endian byte order */ - void set_syncword(@LOC("IN") int syncword0) { + void set_syncword( int syncword0) { syncword = syncword0 & 0xFFFFFF3F; single_ch_mode = ((syncword0 & 0x000000C0) == 0x000000C0); } @@ -632,14 +630,14 @@ public final class Bitstream implements BitstreamErrors { * is thrown if the specified number of bytes could not be read * from the stream. */ - @LATTICE("OUT 0) { - @LOC("IN") int bytesread = source.read(b, offs, len); + int bytesread = source.read(b, offs, len); if (bytesread == -1) { while (len-- > 0) { b[offs++] = 0; @@ -660,14 +658,14 @@ public final class Bitstream implements BitstreamErrors { /** * Simlar to readFully, but doesn't throw exception when EOF is reached. */ - @LATTICE("OUT 0) { - @LOC("IN") int bytesread = source.read(b, offs, len); + int bytesread = source.read(b, offs, len); if (bytesread == -1) { break; } diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamErrors.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamErrors.java index 07114dbf..d47069fe 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamErrors.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamErrors.java @@ -1,70 +1,70 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 11/17/04 INVALIDFRAME code added. javalayer@javazoom.net - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * This interface describes all error codes that can be thrown - * in BistreamExceptions. - * - * @see BitstreamException - * - * @author MDM 12/12/99 - * @since 0.0.6 - */ - -public interface BitstreamErrors extends JavaLayerErrors -{ - - /** - * An undeterminable error occurred. - */ - static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0; - - /** - * The header describes an unknown sample rate. - */ - static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1; - - /** - * A problem occurred reading from the stream. - */ - static public final int STREAM_ERROR = BITSTREAM_ERROR + 2; - - /** - * The end of the stream was reached prematurely. - */ - static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3; - - /** - * The end of the stream was reached. - */ - static public final int STREAM_EOF = BITSTREAM_ERROR + 4; - - /** - * Frame data are missing. - */ - static public final int INVALIDFRAME = BITSTREAM_ERROR + 5; - - /** - * - */ - static public final int BITSTREAM_LAST = 0x1ff; - -} +/* + * 11/19/04 1.0 moved to LGPL. + * 11/17/04 INVALIDFRAME code added. javalayer@javazoom.net + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * This interface describes all error codes that can be thrown + * in BistreamExceptions. + * + * @see BitstreamException + * + * @author MDM 12/12/99 + * @since 0.0.6 + */ + +public interface BitstreamErrors extends JavaLayerErrors +{ + + /** + * An undeterminable error occurred. + */ + static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0; + + /** + * The header describes an unknown sample rate. + */ + static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1; + + /** + * A problem occurred reading from the stream. + */ + static public final int STREAM_ERROR = BITSTREAM_ERROR + 2; + + /** + * The end of the stream was reached prematurely. + */ + static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3; + + /** + * The end of the stream was reached. + */ + static public final int STREAM_EOF = BITSTREAM_ERROR + 4; + + /** + * Frame data are missing. + */ + static public final int INVALIDFRAME = BITSTREAM_ERROR + 5; + + /** + * + */ + static public final int BITSTREAM_LAST = 0x1ff; + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamException.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamException.java index fb2e60c7..a4d9ac65 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamException.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/BitstreamException.java @@ -1,70 +1,70 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * Instances of BitstreamException are thrown - * when operations on a Bitstream fail. - *

- * The exception provides details of the exception condition - * in two ways: - *

  1. - * as an error-code describing the nature of the error - *


  2. - * as the Throwable instance, if any, that was thrown - * indicating that an exceptional condition has occurred. - *

- * - * @since 0.0.6 - * @author MDM 12/12/99 - */ -@LATTICE("E") -public class BitstreamException extends JavaLayerException - implements BitstreamErrors -{ - @LOC("E") private int errorcode = UNKNOWN_ERROR; - - public BitstreamException(String msg, Throwable t) - { - super(msg, t); - } - - public BitstreamException(int errorcode, Throwable t) - { - this(getErrorString(errorcode), t); - this.errorcode = errorcode; - } - - public int getErrorCode() - { - return errorcode; - } - - - static public String getErrorString(int errorcode) - { - // REVIEW: use resource bundle to map error codes - // to locale-sensitive strings. - -// return "Bitstream errorcode "+Integer.toHexString(errorcode); - return "Bitstream errorcode "+errorcode; - } - - -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * Instances of BitstreamException are thrown + * when operations on a Bitstream fail. + *

+ * The exception provides details of the exception condition + * in two ways: + *

  1. + * as an error-code describing the nature of the error + *


  2. + * as the Throwable instance, if any, that was thrown + * indicating that an exceptional condition has occurred. + *

+ * + * @since 0.0.6 + * @author MDM 12/12/99 + */ + +public class BitstreamException extends JavaLayerException + implements BitstreamErrors +{ + private int errorcode = UNKNOWN_ERROR; + + public BitstreamException(String msg, Throwable t) + { + super(msg, t); + } + + public BitstreamException(int errorcode, Throwable t) + { + this(getErrorString(errorcode), t); + this.errorcode = errorcode; + } + + public int getErrorCode() + { + return errorcode; + } + + + static public String getErrorString(int errorcode) + { + // REVIEW: use resource bundle to map error codes + // to locale-sensitive strings. + +// return "Bitstream errorcode "+Integer.toHexString(errorcode); + return "Bitstream errorcode "+errorcode; + } + + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Control.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Control.java index c677b5fd..5c5b0eb5 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Control.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Control.java @@ -1,55 +1,55 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * Work in progress. - */ - -public interface Control -{ - - /** - * Starts playback of the media presented by this control. - */ - public void start(); - - /** - * Stops playback of the media presented by this control. - */ - public void stop(); - - public boolean isPlaying(); - - public void pause(); - - - public boolean isRandomAccess(); - - /** - * Retrieves the current position. - */ - public double getPosition(); - - /** - * - */ - public void setPosition(double d); - - -} +/* + * 11/19/04 1.0 moved to LGPL. + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * Work in progress. + */ + +public interface Control +{ + + /** + * Starts playback of the media presented by this control. + */ + public void start(); + + /** + * Stops playback of the media presented by this control. + */ + public void stop(); + + public boolean isPlaying(); + + public void pause(); + + + public boolean isRandomAccess(); + + /** + * Retrieves the current position. + */ + public double getPosition(); + + /** + * + */ + public void setPosition(double d); + + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Crc16.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Crc16.java index 20c32d86..a154eebe 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Crc16.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Crc16.java @@ -1,75 +1,75 @@ -/* - * 11/19/04 : 1.0 moved to LGPL. - * - * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net - * - * @(#) crc.h 1.5, last edit: 6/15/94 16:55:32 - * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) - * @(#) Berlin University of Technology - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * 16-Bit CRC checksum - */ -@LATTICE("B>>= 1) != 0); - } - - /** - * Return the calculated checksum. - * Erase it for next calls to add_bits(). - */ - @RETURNLOC("OUT") - public short checksum() - { - @LOC("OUT") short sum = crc; - crc = (short) 0xFFFF; - return sum; - } -} +/* + * 11/19/04 : 1.0 moved to LGPL. + * + * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net + * + * @(#) crc.h 1.5, last edit: 6/15/94 16:55:32 + * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) + * @(#) Berlin University of Technology + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * 16-Bit CRC checksum + */ + + +public final class Crc16 +{ + private static short polynomial=(short)0x8005; + private short crc; + + /** + * Dummy Constructor + */ + public Crc16() + { + crc = (short) 0xFFFF; + } + + /** + * Feed a bitstring to the crc calculation (0 < length <= 32). + */ + //ssjava + + public void add_bits ( int bitstring, int length) + { + int bitmask = 1 << (length - 1); + do{ + if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 )) + { + crc <<= 1; + crc ^= polynomial; + } + else{ + crc <<= 1; + } + }while ((bitmask >>>= 1) != 0); + } + + /** + * Return the calculated checksum. + * Erase it for next calls to add_bits(). + */ + + public short checksum() + { + short sum = crc; + crc = (short) 0xFFFF; + return sum; + } +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Decoder.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Decoder.java index ae6e87a6..368a28e8 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Decoder.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Decoder.java @@ -1,300 +1,300 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * The Decoder class encapsulates the details of decoding an MPEG - * audio frame. - * - * @author MDM - * @version 0.0.7 12/12/99 - * @since 0.0.5 - */ -@LATTICE("OUTDecoder instance with default parameters. - */ - - public Decoder() { - this(null); - } - - /** - * Creates a new Decoder instance with default parameters. - * - * @param params - * The Params instance that describes the customizable - * aspects of the decoder. - */ - public Decoder(@DELEGATE Params params0) { - - if (params0 == null) { - params0 = getDefaultParams(); - } - - params = params0; - - Equalizer eq = params.getInitialEqualizerSettings(); - if (eq != null) { - equalizer.setFrom(eq); - } - } - - static public Params getDefaultParams() { - return (Params) DEFAULT_PARAMS.clone(); - } - - // public void setEqualizer(Equalizer eq) { - // if (eq == null) - // eq = Equalizer.PASS_THRU_EQ; - // - // equalizer.setFrom(eq); - // - // float[] factors = equalizer.getBandFactors(); - // - // if (filter1 != null) - // filter1.setEQ(factors); - // - // if (filter2 != null) - // filter2.setEQ(factors); - // } - @LATTICE("THISParams class presents the customizable aspects of the - * decoder. - *

- * Instances of this class are not thread safe. - */ - public class Params implements Cloneable { - - // private OutputChannels outputChannels = OutputChannels.BOTH; - private OutputChannels outputChannels = new OutputChannels(0); - - private Equalizer equalizer = new Equalizer(); - - public Params() { - } - - public Object clone() { - // TODO: need to have better clone method - Params clone = new Params(); - clone.outputChannels = new OutputChannels(outputChannels.getChannelsOutputCode()); - clone.equalizer = new Equalizer(); - return clone; - // try - // { - // return super.clone(); - // } - // catch (CloneNotSupportedException ex) - // { - // throw new InternalError(this+": "+ex); - // } - } - - public void setOutputChannels(OutputChannels out) { - if (out == null) - throw new NullPointerException("out"); - - outputChannels = out; - } - - public OutputChannels getOutputChannels() { - return outputChannels; - } - - /** - * Retrieves the equalizer settings that the decoder's equalizer will be - * initialized from. - *

- * The Equalizer instance returned cannot be changed in real - * time to affect the decoder output as it is used only to initialize the - * decoders EQ settings. To affect the decoder's output in realtime, use the - * Equalizer returned from the getEqualizer() method on the decoder. - * - * @return The Equalizer used to initialize the EQ settings of - * the decoder. - */ - public Equalizer getInitialEqualizerSettings() { - return equalizer; - } - +/* + * 11/19/04 1.0 moved to LGPL. + * 01/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * The Decoder class encapsulates the details of decoding an MPEG + * audio frame. + * + * @author MDM + * @version 0.0.7 12/12/99 + * @since 0.0.5 + */ +@LATTICE("OUTDecoder instance with default parameters. + */ + + public Decoder() { + this(null); + } + + /** + * Creates a new Decoder instance with default parameters. + * + * @param params + * The Params instance that describes the customizable + * aspects of the decoder. + */ + public Decoder(@DELEGATE Params params0) { + + if (params0 == null) { + params0 = getDefaultParams(); + } + + params = params0; + + Equalizer eq = params.getInitialEqualizerSettings(); + if (eq != null) { + equalizer.setFrom(eq); + } + } + + static public Params getDefaultParams() { + return (Params) DEFAULT_PARAMS.clone(); + } + + // public void setEqualizer(Equalizer eq) { + // if (eq == null) + // eq = Equalizer.PASS_THRU_EQ; + // + // equalizer.setFrom(eq); + // + // float[] factors = equalizer.getBandFactors(); + // + // if (filter1 != null) + // filter1.setEQ(factors); + // + // if (filter2 != null) + // filter2.setEQ(factors); + // } + @LATTICE("THISParams class presents the customizable aspects of the + * decoder. + *

+ * Instances of this class are not thread safe. + */ + public class Params implements Cloneable { + + // private OutputChannels outputChannels = OutputChannels.BOTH; + private OutputChannels outputChannels = new OutputChannels(0); + + private Equalizer equalizer = new Equalizer(); + + public Params() { + } + + public Object clone() { + // TODO: need to have better clone method + Params clone = new Params(); + clone.outputChannels = new OutputChannels(outputChannels.getChannelsOutputCode()); + clone.equalizer = new Equalizer(); + return clone; + // try + // { + // return super.clone(); + // } + // catch (CloneNotSupportedException ex) + // { + // throw new InternalError(this+": "+ex); + // } + } + + public void setOutputChannels(OutputChannels out) { + if (out == null) + throw new NullPointerException("out"); + + outputChannels = out; + } + + public OutputChannels getOutputChannels() { + return outputChannels; + } + + /** + * Retrieves the equalizer settings that the decoder's equalizer will be + * initialized from. + *

+ * The Equalizer instance returned cannot be changed in real + * time to affect the decoder output as it is used only to initialize the + * decoders EQ settings. To affect the decoder's output in realtime, use the + * Equalizer returned from the getEqualizer() method on the decoder. + * + * @return The Equalizer used to initialize the EQ settings of + * the decoder. + */ + public Equalizer getInitialEqualizerSettings() { + return equalizer; + } + } \ No newline at end of file diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderErrors.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderErrors.java index ef3552ad..3afa3a4c 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderErrors.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderErrors.java @@ -1,44 +1,44 @@ -/* - * 09/26/08 throw exception on subbband alloc error: Christopher G. Jennings (cjennings@acm.org) - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -/** - * This interface provides constants describing the error - * codes used by the Decoder to indicate errors. - * - * @author MDM - */ -public interface DecoderErrors extends JavaLayerErrors -{ - - static public final int UNKNOWN_ERROR = DECODER_ERROR + 0; - - /** - * Layer not supported by the decoder. - */ - static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1; - - /** - * Illegal allocation in subband layer. Indicates a corrupt stream. - */ - static public final int ILLEGAL_SUBBAND_ALLOCATION = DECODER_ERROR + 2; - -} +/* + * 09/26/08 throw exception on subbband alloc error: Christopher G. Jennings (cjennings@acm.org) + * 11/19/04 1.0 moved to LGPL. + * 01/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +/** + * This interface provides constants describing the error + * codes used by the Decoder to indicate errors. + * + * @author MDM + */ +public interface DecoderErrors extends JavaLayerErrors +{ + + static public final int UNKNOWN_ERROR = DECODER_ERROR + 0; + + /** + * Layer not supported by the decoder. + */ + static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1; + + /** + * Illegal allocation in subband layer. Indicates a corrupt stream. + */ + static public final int ILLEGAL_SUBBAND_ALLOCATION = DECODER_ERROR + 2; + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderException.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderException.java index d33b0f09..6e89ce89 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderException.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/DecoderException.java @@ -1,61 +1,61 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 01/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -/** - * The DecoderException represents the class of - * errors that can occur when decoding MPEG audio. - * - * @author MDM - */ -public class DecoderException extends JavaLayerException - implements DecoderErrors -{ - private int errorcode = UNKNOWN_ERROR; - - public DecoderException(String msg, Throwable t) - { - super(msg, t); - } - - public DecoderException(int errorcode, Throwable t) - { - this(getErrorString(errorcode), t); - this.errorcode = errorcode; - } - - public int getErrorCode() - { - return errorcode; - } - - - static public String getErrorString(int errorcode) - { - // REVIEW: use resource file to map error codes - // to locale-sensitive strings. - -// return "Decoder errorcode "+Integer.toHexString(errorcode); - return "Decoder errorcode "+errorcode; - } - - -} - +/* + * 11/19/04 1.0 moved to LGPL. + * 01/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +/** + * The DecoderException represents the class of + * errors that can occur when decoding MPEG audio. + * + * @author MDM + */ +public class DecoderException extends JavaLayerException + implements DecoderErrors +{ + private int errorcode = UNKNOWN_ERROR; + + public DecoderException(String msg, Throwable t) + { + super(msg, t); + } + + public DecoderException(int errorcode, Throwable t) + { + this(getErrorString(errorcode), t); + this.errorcode = errorcode; + } + + public int getErrorCode() + { + return errorcode; + } + + + static public String getErrorString(int errorcode) + { + // REVIEW: use resource file to map error codes + // to locale-sensitive strings. + +// return "Decoder errorcode "+Integer.toHexString(errorcode); + return "Decoder errorcode "+errorcode; + } + + +} + diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Equalizer.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Equalizer.java index 8ba6180d..c1d7775e 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Equalizer.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Equalizer.java @@ -1,201 +1,201 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * The Equalizer class can be used to specify equalization settings - * for the MPEG audio decoder. - *

- * The equalizer consists of 32 band-pass filters. Each band of the equalizer - * can take on a fractional value between -1.0 and +1.0. At -1.0, the input - * signal is attenuated by 6dB, at +1.0 the signal is amplified by 6dB. - * - * @see Decoder - * - * @author MDM - */ -@LATTICE("BEqualizer instance. - */ - public Equalizer() { - } - - // private Equalizer(float b1, float b2, float b3, float b4, float b5, - // float b6, float b7, float b8, float b9, float b10, float b11, - // float b12, float b13, float b14, float b15, float b16, - // float b17, float b18, float b19, float b20); - - public Equalizer(float[] settings) { - setFrom(settings); - } - - public Equalizer(EQFunction eq) { - setFrom(eq); - } - - public void setFrom(float[] eq) { - reset(); - int max = (eq.length > BANDS) ? BANDS : eq.length; - - for (int i = 0; i < max; i++) { - settings[i] = limit(eq[i]); - } - } - - public void setFrom(EQFunction eq) { - reset(); - int max = BANDS; - - for (int i = 0; i < max; i++) { - settings[i] = limit(eq.getBand(i)); - } - } - - /** - * Sets the bands of this equalizer to the value the bands of another - * equalizer. Bands that are not present in both equalizers are ignored. - */ - public void setFrom(Equalizer eq) { - if (eq != this) { - setFrom(eq.settings); - } - } - - /** - * Sets all bands to 0.0 - */ - public void reset() { - for (int i = 0; i < BANDS; i++) { - settings[i] = 0.0f; - } - } - - /** - * Retrieves the number of bands present in this equalizer. - */ - public int getBandCount() { - return settings.length; - } - - public float setBand(int band, float neweq) { - float eq = 0.0f; - - if ((band >= 0) && (band < BANDS)) { - eq = settings[band]; - settings[band] = limit(neweq); - } - - return eq; - } - - /** - * Retrieves the eq setting for a given band. - */ - public float getBand(int band) { - float eq = 0.0f; - - if ((band >= 0) && (band < BANDS)) { - eq = settings[band]; - } - - return eq; - } - - private float limit(float eq) { - if (eq == BAND_NOT_PRESENT) - return eq; - if (eq > 1.0f) - return 1.0f; - if (eq < -1.0f) - return -1.0f; - - return eq; - } - - /** - * Retrieves an array of floats whose values represent a scaling factor that - * can be applied to linear samples in each band to provide the equalization - * represented by this instance. - * - * @return an array of factors that can be applied to the subbands. - */ - @LATTICE("OUTEqualizer class can be used to specify equalization settings + * for the MPEG audio decoder. + *

+ * The equalizer consists of 32 band-pass filters. Each band of the equalizer + * can take on a fractional value between -1.0 and +1.0. At -1.0, the input + * signal is attenuated by 6dB, at +1.0 the signal is amplified by 6dB. + * + * @see Decoder + * + * @author MDM + */ +@LATTICE("BEqualizer instance. + */ + public Equalizer() { + } + + // private Equalizer(float b1, float b2, float b3, float b4, float b5, + // float b6, float b7, float b8, float b9, float b10, float b11, + // float b12, float b13, float b14, float b15, float b16, + // float b17, float b18, float b19, float b20); + + public Equalizer(float[] settings) { + setFrom(settings); + } + + public Equalizer(EQFunction eq) { + setFrom(eq); + } + + public void setFrom(float[] eq) { + reset(); + int max = (eq.length > BANDS) ? BANDS : eq.length; + + for (int i = 0; i < max; i++) { + settings[i] = limit(eq[i]); + } + } + + public void setFrom(EQFunction eq) { + reset(); + int max = BANDS; + + for (int i = 0; i < max; i++) { + settings[i] = limit(eq.getBand(i)); + } + } + + /** + * Sets the bands of this equalizer to the value the bands of another + * equalizer. Bands that are not present in both equalizers are ignored. + */ + public void setFrom(Equalizer eq) { + if (eq != this) { + setFrom(eq.settings); + } + } + + /** + * Sets all bands to 0.0 + */ + public void reset() { + for (int i = 0; i < BANDS; i++) { + settings[i] = 0.0f; + } + } + + /** + * Retrieves the number of bands present in this equalizer. + */ + public int getBandCount() { + return settings.length; + } + + public float setBand(int band, float neweq) { + float eq = 0.0f; + + if ((band >= 0) && (band < BANDS)) { + eq = settings[band]; + settings[band] = limit(neweq); + } + + return eq; + } + + /** + * Retrieves the eq setting for a given band. + */ + public float getBand(int band) { + float eq = 0.0f; + + if ((band >= 0) && (band < BANDS)) { + eq = settings[band]; + } + + return eq; + } + + private float limit(float eq) { + if (eq == BAND_NOT_PRESENT) + return eq; + if (eq > 1.0f) + return 1.0f; + if (eq < -1.0f) + return -1.0f; + + return eq; + } + + /** + * Retrieves an array of floats whose values represent a scaling factor that + * can be applied to linear samples in each band to provide the equalization + * represented by this instance. + * + * @return an array of factors that can be applied to the subbands. + */ + @LATTICE("OUTWork In Progress. - * - * An instance of InputStreamSource implements a - * Source that provides data from an InputStream - * . Seeking functionality is not supported. - * - * @author MDM - */ -public class InputStreamSource implements Source -{ - private final InputStream in; - - public InputStreamSource(InputStream in) - { - if (in==null) - throw new NullPointerException("in"); - - this.in = in; - } - - public int read(byte[] b, int offs, int len) - throws IOException - { - int read = in.read(b, offs, len); - return read; - } - - public boolean willReadBlock() - { - return true; - //boolean block = (in.available()==0); - //return block; - } - - public boolean isSeekable() - { - return false; - } - - public long tell() - { - return -1; - } - - public long seek(long to) - { - return -1; - } - - public long length() - { - return -1; - } -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +import java.io.IOException; +import java.io.InputStream; + +/** + * Work In Progress. + * + * An instance of InputStreamSource implements a + * Source that provides data from an InputStream + * . Seeking functionality is not supported. + * + * @author MDM + */ +public class InputStreamSource implements Source +{ + private final InputStream in; + + public InputStreamSource(InputStream in) + { + if (in==null) + throw new NullPointerException("in"); + + this.in = in; + } + + public int read(byte[] b, int offs, int len) + throws IOException + { + int read = in.read(b, offs, len); + return read; + } + + public boolean willReadBlock() + { + return true; + //boolean block = (in.available()==0); + //return block; + } + + public boolean isSeekable() + { + return false; + } + + public long tell() + { + return -1; + } + + public long seek(long to) + { + return -1; + } + + public long length() + { + return -1; + } +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerError.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerError.java index cc8dde73..87dc767a 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerError.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerError.java @@ -1,29 +1,29 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * Work in progress. - * - * API usage errors may be handled by throwing an instance of this - * class, as per JMF 2.0. - */ -public class JavaLayerError extends Error -{ -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * Work in progress. + * + * API usage errors may be handled by throwing an instance of this + * class, as per JMF 2.0. + */ +public class JavaLayerError extends Error +{ +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerErrors.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerErrors.java index 4d11270c..e66bbe45 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerErrors.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerErrors.java @@ -1,39 +1,39 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -/** - * Exception erorr codes for components of the JavaLayer API. - */ -public interface JavaLayerErrors -{ - /** - * The first bitstream error code. See the {@link DecoderErrors DecoderErrors} - * interface for other bitstream error codes. - */ - static public final int BITSTREAM_ERROR = 0x100; - - /** - * The first decoder error code. See the {@link DecoderErrors DecoderErrors} - * interface for other decoder error codes. - */ - static public final int DECODER_ERROR = 0x200; - -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +/** + * Exception erorr codes for components of the JavaLayer API. + */ +public interface JavaLayerErrors +{ + /** + * The first bitstream error code. See the {@link DecoderErrors DecoderErrors} + * interface for other bitstream error codes. + */ + static public final int BITSTREAM_ERROR = 0x100; + + /** + * The first decoder error code. See the {@link DecoderErrors DecoderErrors} + * interface for other decoder error codes. + */ + static public final int DECODER_ERROR = 0x200; + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerHook.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerHook.java index eda09dec..d824934f 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerHook.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerHook.java @@ -1,35 +1,35 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -//import java.io.InputStream; - -/** - * The JavaLayerHooks class allows developers to change - * the way the JavaLayer library uses Resources. - */ - -public interface JavaLayerHook -{ - /** - * Retrieves the named resource. This allows resources to be - * obtained without specifying how they are retrieved. - */ - public InputStream getResourceAsStream(String name); -} +/* + * 11/19/04 1.0 moved to LGPL. + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +//import java.io.InputStream; + +/** + * The JavaLayerHooks class allows developers to change + * the way the JavaLayer library uses Resources. + */ + +public interface JavaLayerHook +{ + /** + * Retrieves the named resource. This allows resources to be + * obtained without specifying how they are retrieved. + */ + public InputStream getResourceAsStream(String name); +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerUtils.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerUtils.java index 13f2ac0b..605e3f67 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerUtils.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/JavaLayerUtils.java @@ -1,227 +1,227 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -//import java.io.IOException; -//import java.io.InputStream; -//import java.io.InvalidClassException; -//import java.io.InvalidObjectException; -//import java.io.ObjectInputStream; -//import java.io.ObjectOutputStream; -//import java.io.OutputStream; -//import java.lang.reflect.Array; - -/** - * The JavaLayerUtils class is not strictly part of the JavaLayer API. - * It serves to provide useful methods and system-wide hooks. - * - * @author MDM - */ -public class JavaLayerUtils -{ - static private JavaLayerHook hook = null; - - /** - * Deserializes the object contained in the given input stream. - * @param in The input stream to deserialize an object from. - * @param cls The expected class of the deserialized object. - */ -// static public Object deserialize(InputStream in, Class cls) - static public Object deserialize(InputStream in) - throws IOException - { -// if (cls==null) -// throw new NullPointerException("cls"); - -// Object obj = deserialize(in, cls); - Object obj = deserialize(in); -// if (!cls.isInstance(obj)) -// { -// throw new InvalidObjectException("type of deserialized instance not of required class."); -// } - - return obj; - } - - /** - * Deserializes an object from the given InputStream. - * The deserialization is delegated to an - * ObjectInputStream instance. - * - * @param in The InputStream to deserialize an object - * from. - * - * @return The object deserialized from the stream. - * @exception IOException is thrown if there was a problem reading - * the underlying stream, or an object could not be deserialized - * from the stream. - * - * @see java.io.ObjectInputStream - */ - static public Object deserialize(InputStream in) - throws IOException - { - if (in==null) - throw new NullPointerException("in"); - - //TODO : need to enable after having objectinputstream - /* - ObjectInputStream objIn = new ObjectInputStream(in); - - Object obj; - - try - { - obj = objIn.readObject(); - } - catch (ClassNotFoundException ex) - { - throw new InvalidClassException(ex.toString()); - } - - return obj; - */ - return null; - } - - /** - * Deserializes an array from a given InputStream. - * - * @param in The InputStream to - * deserialize an object from. - * - * @param elemType The class denoting the type of the array - * elements. - * @param length The expected length of the array, or -1 if - * any length is expected. - */ - static public Object deserializeArray(InputStream in, int length) - throws IOException - { - if (length<-1) - throw new IllegalArgumentException("length"); - - Object obj = deserialize(in); - - return obj; - } -// static public Object deserializeArray(InputStream in, Class elemType, int length) -// throws IOException -// { -// if (elemType==null) -// throw new NullPointerException("elemType"); -// -// if (length<-1) -// throw new IllegalArgumentException("length"); -// -// Object obj = deserialize(in); -// -// //SSJava will never throw exceptions as it is so this code is meaningless -// /* -// Class cls = obj.getClass(); -// -// if (!cls.isArray()) -// throw new InvalidObjectException("object is not an array"); -// -// Class arrayElemType = cls.getComponentType(); -// if (arrayElemType!=elemType) -// throw new InvalidObjectException("unexpected array component type"); -// -// if (length != -1) -// { -// int arrayLength = Array.getLength(obj); -// if (arrayLength!=length) -// throw new InvalidObjectException("array length mismatch"); -// } -// */ -// return obj; -// } - -// static public Object deserializeArrayResource(String name, Class elemType, int length) - static public Object deserializeArrayResource(String name, int length) - throws IOException - { - InputStream str = getResourceAsStream(name); - if (str==null) - throw new IOException("unable to load resource '"+name+"'"); - -// Object obj = deserializeArray(str, elemType, length); - Object obj = deserializeArray(str, length); - - return obj; - } - - static public void serialize(OutputStream out, Object obj) - throws IOException - { - //TODO : need to enable after having objectinputstream -// if (out==null) -// throw new NullPointerException("out"); -// -// if (obj==null) -// throw new NullPointerException("obj"); -// -// ObjectOutputStream objOut = new ObjectOutputStream(out); -// objOut.writeObject(obj); - - } - - /** - * Sets the system-wide JavaLayer hook. - */ - static synchronized public void setHook(JavaLayerHook hook0) - { - hook = hook0; - } - - static synchronized public JavaLayerHook getHook() - { - return hook; - } - - /** - * Retrieves an InputStream for a named resource. - * - * @param name The name of the resource. This must be a simple - * name, and not a qualified package name. - * - * @return The InputStream for the named resource, or null if - * the resource has not been found. If a hook has been - * provided, its getResourceAsStream() method is called - * to retrieve the resource. - */ - static synchronized public InputStream getResourceAsStream(String name) - { - InputStream is = null; - - if (hook!=null) - { - is = hook.getResourceAsStream(name); - } - //TODO java reflection -// else -// { -// Class cls = JavaLayerUtils.class; -// is = cls.getResourceAsStream(name); -// } - - return is; - } -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial version. mdm@techie.com + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +//import java.io.IOException; +//import java.io.InputStream; +//import java.io.InvalidClassException; +//import java.io.InvalidObjectException; +//import java.io.ObjectInputStream; +//import java.io.ObjectOutputStream; +//import java.io.OutputStream; +//import java.lang.reflect.Array; + +/** + * The JavaLayerUtils class is not strictly part of the JavaLayer API. + * It serves to provide useful methods and system-wide hooks. + * + * @author MDM + */ +public class JavaLayerUtils +{ + static private JavaLayerHook hook = null; + + /** + * Deserializes the object contained in the given input stream. + * @param in The input stream to deserialize an object from. + * @param cls The expected class of the deserialized object. + */ +// static public Object deserialize(InputStream in, Class cls) + static public Object deserialize(InputStream in) + throws IOException + { +// if (cls==null) +// throw new NullPointerException("cls"); + +// Object obj = deserialize(in, cls); + Object obj = deserialize(in); +// if (!cls.isInstance(obj)) +// { +// throw new InvalidObjectException("type of deserialized instance not of required class."); +// } + + return obj; + } + + /** + * Deserializes an object from the given InputStream. + * The deserialization is delegated to an + * ObjectInputStream instance. + * + * @param in The InputStream to deserialize an object + * from. + * + * @return The object deserialized from the stream. + * @exception IOException is thrown if there was a problem reading + * the underlying stream, or an object could not be deserialized + * from the stream. + * + * @see java.io.ObjectInputStream + */ + static public Object deserialize(InputStream in) + throws IOException + { + if (in==null) + throw new NullPointerException("in"); + + //TODO : need to enable after having objectinputstream + /* + ObjectInputStream objIn = new ObjectInputStream(in); + + Object obj; + + try + { + obj = objIn.readObject(); + } + catch (ClassNotFoundException ex) + { + throw new InvalidClassException(ex.toString()); + } + + return obj; + */ + return null; + } + + /** + * Deserializes an array from a given InputStream. + * + * @param in The InputStream to + * deserialize an object from. + * + * @param elemType The class denoting the type of the array + * elements. + * @param length The expected length of the array, or -1 if + * any length is expected. + */ + static public Object deserializeArray(InputStream in, int length) + throws IOException + { + if (length<-1) + throw new IllegalArgumentException("length"); + + Object obj = deserialize(in); + + return obj; + } +// static public Object deserializeArray(InputStream in, Class elemType, int length) +// throws IOException +// { +// if (elemType==null) +// throw new NullPointerException("elemType"); +// +// if (length<-1) +// throw new IllegalArgumentException("length"); +// +// Object obj = deserialize(in); +// +// //SSJava will never throw exceptions as it is so this code is meaningless +// /* +// Class cls = obj.getClass(); +// +// if (!cls.isArray()) +// throw new InvalidObjectException("object is not an array"); +// +// Class arrayElemType = cls.getComponentType(); +// if (arrayElemType!=elemType) +// throw new InvalidObjectException("unexpected array component type"); +// +// if (length != -1) +// { +// int arrayLength = Array.getLength(obj); +// if (arrayLength!=length) +// throw new InvalidObjectException("array length mismatch"); +// } +// */ +// return obj; +// } + +// static public Object deserializeArrayResource(String name, Class elemType, int length) + static public Object deserializeArrayResource(String name, int length) + throws IOException + { + InputStream str = getResourceAsStream(name); + if (str==null) + throw new IOException("unable to load resource '"+name+"'"); + +// Object obj = deserializeArray(str, elemType, length); + Object obj = deserializeArray(str, length); + + return obj; + } + + static public void serialize(OutputStream out, Object obj) + throws IOException + { + //TODO : need to enable after having objectinputstream +// if (out==null) +// throw new NullPointerException("out"); +// +// if (obj==null) +// throw new NullPointerException("obj"); +// +// ObjectOutputStream objOut = new ObjectOutputStream(out); +// objOut.writeObject(obj); + + } + + /** + * Sets the system-wide JavaLayer hook. + */ + static synchronized public void setHook(JavaLayerHook hook0) + { + hook = hook0; + } + + static synchronized public JavaLayerHook getHook() + { + return hook; + } + + /** + * Retrieves an InputStream for a named resource. + * + * @param name The name of the resource. This must be a simple + * name, and not a qualified package name. + * + * @return The InputStream for the named resource, or null if + * the resource has not been found. If a hook has been + * provided, its getResourceAsStream() method is called + * to retrieve the resource. + */ + static synchronized public InputStream getResourceAsStream(String name) + { + InputStream is = null; + + if (hook!=null) + { + is = hook.getResourceAsStream(name); + } + //TODO java reflection +// else +// { +// Class cls = JavaLayerUtils.class; +// is = cls.getResourceAsStream(name); +// } + + return is; + } +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Manager.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Manager.java index fe855401..ae9867cd 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Manager.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Manager.java @@ -1,45 +1,45 @@ -/* - * 11/19/04 1.0 moved to LGPL. - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - - -/** - * Work in progress. - * - * Manages a number of controls. - */ -public class Manager //implements Control -{ - public void addControl(Control c) - { - - } - - public void removeControl(Control c) - { - - } - - public void removeAll() - { - - } - - // control interface delegates to a managed control - -} +/* + * 11/19/04 1.0 moved to LGPL. + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + + +/** + * Work in progress. + * + * Manages a number of controls. + */ +public class Manager //implements Control +{ + public void addControl(Control c) + { + + } + + public void removeControl(Control c) + { + + } + + public void removeAll() + { + + } + + // control interface delegates to a managed control + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/OutputChannels.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/OutputChannels.java index 276ca6a2..8baca2ad 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/OutputChannels.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/OutputChannels.java @@ -1,129 +1,129 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 12/12/99 Initial implementation. mdm@techie.com. - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * A Type-safe representation of the the supported output channel constants. - * - * This class is immutable and, hence, is thread safe. - * - * @author Mat McGowan 12/12/99 - * @since 0.0.7 - */ -@LATTICE("BOutputChannels instance corresponding to the given - * channel code. - * - * @param code - * one of the OutputChannels channel code constants. - * - * @throws IllegalArgumentException - * if code is not a valid channel code. - */ - static public OutputChannels fromInt(int code) { - switch (code) { - case LEFT_CHANNEL: - return LEFT; - case RIGHT_CHANNEL: - return RIGHT; - case BOTH_CHANNELS: - return BOTH; - case DOWNMIX_CHANNELS: - return DOWNMIX; - default: - throw new IllegalArgumentException("Invalid channel code: " + code); - } - } - - public OutputChannels(@LOC("IN") int channels) { - outputChannels = channels; - - if (channels < 0 || channels > 3) - throw new IllegalArgumentException("channels"); - } - - /** - * Retrieves the code representing the desired output channels. Will be one of - * LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS or DOWNMIX_CHANNELS. - * - * @return the channel code represented by this instance. - */ - public int getChannelsOutputCode() { - return outputChannels; - } - - /** - * Retrieves the number of output channels represented by this channel output - * type. - * - * @return The number of output channels for this channel output type. This - * will be 2 for BOTH_CHANNELS only, and 1 for all other types. - */ - public int getChannelCount() { - int count = (outputChannels == BOTH_CHANNELS) ? 2 : 1; - return count; - } - - public boolean equals(Object o) { - boolean equals = false; - - if (o instanceof OutputChannels) { - OutputChannels oc = (OutputChannels) o; - equals = (oc.outputChannels == outputChannels); - } - - return equals; - } - - public int hashCode() { - return outputChannels; - } - -} +/* + * 11/19/04 1.0 moved to LGPL. + * 12/12/99 Initial implementation. mdm@techie.com. + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * A Type-safe representation of the the supported output channel constants. + * + * This class is immutable and, hence, is thread safe. + * + * @author Mat McGowan 12/12/99 + * @since 0.0.7 + */ +@LATTICE("BOutputChannels instance corresponding to the given + * channel code. + * + * @param code + * one of the OutputChannels channel code constants. + * + * @throws IllegalArgumentException + * if code is not a valid channel code. + */ + static public OutputChannels fromInt(int code) { + switch (code) { + case LEFT_CHANNEL: + return LEFT; + case RIGHT_CHANNEL: + return RIGHT; + case BOTH_CHANNELS: + return BOTH; + case DOWNMIX_CHANNELS: + return DOWNMIX; + default: + throw new IllegalArgumentException("Invalid channel code: " + code); + } + } + + public OutputChannels(@LOC("IN") int channels) { + outputChannels = channels; + + if (channels < 0 || channels > 3) + throw new IllegalArgumentException("channels"); + } + + /** + * Retrieves the code representing the desired output channels. Will be one of + * LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS or DOWNMIX_CHANNELS. + * + * @return the channel code represented by this instance. + */ + public int getChannelsOutputCode() { + return outputChannels; + } + + /** + * Retrieves the number of output channels represented by this channel output + * type. + * + * @return The number of output channels for this channel output type. This + * will be 2 for BOTH_CHANNELS only, and 1 for all other types. + */ + public int getChannelCount() { + int count = (outputChannels == BOTH_CHANNELS) ? 2 : 1; + return count; + } + + public boolean equals(Object o) { + boolean equals = false; + + if (o instanceof OutputChannels) { + OutputChannels oc = (OutputChannels) o; + equals = (oc.outputChannels == outputChannels); + } + + return equals; + } + + public int hashCode() { + return outputChannels; + } + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/Player.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/Player.java index 1e82e907..8159c3ee 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/Player.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/Player.java @@ -1,261 +1,261 @@ -import java.awt.image.SampleModel; - -import FileOutputStream; - -/* - * 11/19/04 1.0 moved to LGPL. - * 29/01/00 Initial version. mdm@techie.com - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * The Player class implements a simple player for playback of an - * MPEG audio stream. - * - * @author Mat McGowan - * @since 0.0.8 - */ - -// REVIEW: the audio device should not be opened until the -// first MPEG audio frame has been decoded. -@LATTICE("BPlayer instance. - */ - public Player() throws JavaLayerException { - this(null); - } - - public Player(AudioDevice device) throws JavaLayerException { - // bitstream = new Bitstream(stream); - decoder = new Decoder(); - - // if (device!=null) - // { - // audio = device; - // } - // else - // { - // FactoryRegistry r = FactoryRegistry.systemRegistry(); - // audio = r.createAudioDevice(); - // } - - device.open(decoder); - } - - public void play() throws JavaLayerException { - play(Integer.MAX_VALUE); - } - - /** - * Plays a number of MPEG audio frames. - * - * @param frames - * The number of frames to play. - * @return true if the last frame was played, or false if there are more - * frames. - */ - @LATTICE("OUT - * AudioDevice that is used by this player to sound the decoded audio - * samples. - */ - public int getPosition() { - // int position = lastPosition; - - // AudioDevice out = audio; - // if (out!=null) - // { - // position = out.getPosition(); - // } - // return position; - return 0; - } - - /** - * Decodes a single frame. - * - * @return true if there are no more frames to decode, false otherwise. - */ - @LATTICE("CPlayer class implements a simple player for playback of an + * MPEG audio stream. + * + * @author Mat McGowan + * @since 0.0.8 + */ + +// REVIEW: the audio device should not be opened until the +// first MPEG audio frame has been decoded. +@LATTICE("BPlayer instance. + */ + public Player() throws JavaLayerException { + this(null); + } + + public Player(AudioDevice device) throws JavaLayerException { + // bitstream = new Bitstream(stream); + decoder = new Decoder(); + + // if (device!=null) + // { + // audio = device; + // } + // else + // { + // FactoryRegistry r = FactoryRegistry.systemRegistry(); + // audio = r.createAudioDevice(); + // } + + device.open(decoder); + } + + public void play() throws JavaLayerException { + play(Integer.MAX_VALUE); + } + + /** + * Plays a number of MPEG audio frames. + * + * @param frames + * The number of frames to play. + * @return true if the last frame was played, or false if there are more + * frames. + */ + @LATTICE("OUT + * AudioDevice that is used by this player to sound the decoded audio + * samples. + */ + public int getPosition() { + // int position = lastPosition; + + // AudioDevice out = audio; + // if (out!=null) + // { + // position = out.getPosition(); + // } + // return position; + return 0; + } + + /** + * Decodes a single frame. + * + * @return true if there are no more frames to decode, false otherwise. + */ + @LATTICE("C= 0; i--) { - samples[i] = s[i] * eq[i]; - } - } - - private void compute_new_v2_v1() { - - @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f; - - // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure - // 3-A.2 in ISO DIS 11172-3 - // float[] p = new float[16]; - // float[] pp = new float[16]; - - // float[] s = samples; - - @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0]; - @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1]; - @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2]; - @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3]; - @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4]; - @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5]; - @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6]; - @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7]; - @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8]; - @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9]; - @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10]; - @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11]; - @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12]; - @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13]; - @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14]; - @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15]; - @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16]; - @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17]; - @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18]; - @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19]; - @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20]; - @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21]; - @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22]; - @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23]; - @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24]; - @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25]; - @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26]; - @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27]; - @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28]; - @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29]; - @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30]; - @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31]; - - @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31; - @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30; - @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29; - @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28; - @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27; - @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26; - @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25; - @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24; - @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23; - @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22; - @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21; - @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20; - @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19; - @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18; - @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17; - @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16; - - @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15; - @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14; - @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13; - @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12; - @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11; - @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10; - @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9; - @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8; - @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32; - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - // this is pretty insane coding - @LOC("THIS,SynthesisFilter.NEWV") float tmp1; - new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6; - new_v27/* 44-17 */= -p6 - p7 - p4; - new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; - new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14; - new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13; - new_v29/* 46-17 */= -p14 - p15 - p12 - p8; - new_v25/* 42-17 */= tmp1 - p12; - new_v31/* 48-17 */= -p0; - new_v0 = p1; - new_v23/* 40-17 */= -(new_v8 = p3) - p2; - - p0 = (s0 - s31) * cos1_64; - p1 = (s1 - s30) * cos3_64; - p2 = (s2 - s29) * cos5_64; - p3 = (s3 - s28) * cos7_64; - p4 = (s4 - s27) * cos9_64; - p5 = (s5 - s26) * cos11_64; - p6 = (s6 - s25) * cos13_64; - p7 = (s7 - s24) * cos15_64; - p8 = (s8 - s23) * cos17_64; - p9 = (s9 - s22) * cos19_64; - p10 = (s10 - s21) * cos21_64; - p11 = (s11 - s20) * cos23_64; - p12 = (s12 - s19) * cos25_64; - p13 = (s13 - s18) * cos27_64; - p14 = (s14 - s17) * cos29_64; - p15 = (s15 - s16) * cos31_64; - - pp0 = p0 + p15; - pp1 = p1 + p14; - pp2 = p2 + p13; - pp3 = p3 + p12; - pp4 = p4 + p11; - pp5 = p5 + p10; - pp6 = p6 + p9; - pp7 = p7 + p8; - pp8 = (p0 - p15) * cos1_32; - pp9 = (p1 - p14) * cos3_32; - pp10 = (p2 - p13) * cos5_32; - pp11 = (p3 - p12) * cos7_32; - pp12 = (p4 - p11) * cos9_32; - pp13 = (p5 - p10) * cos11_32; - pp14 = (p6 - p9) * cos13_32; - pp15 = (p7 - p8) * cos15_32; - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - // manually doing something that a compiler should handle sucks - // coding like this is hard to read - @LOC("THIS,SynthesisFilter.NEWV") float tmp2; - new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13; - new_v7 = (new_v9 = p15 + p11 + p3) + p13; - new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; - new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14; - - new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3; - new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7; - new_v24/* 41-17 */= tmp1 - p12 - p2 - p3; - new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7); - new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0; - new_v28/* 45-17 */= tmp1 - tmp2; - - // insert V[0-15] (== new_v[0-15]) into actual v: - // float[] x2 = actual_v + actual_write_pos; - // float dest[] = actual_v; v2 - - @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos; - - v2[0 + pos] = new_v0; - v2[16 + pos] = new_v1; - v2[32 + pos] = new_v2; - v2[48 + pos] = new_v3; - v2[64 + pos] = new_v4; - v2[80 + pos] = new_v5; - v2[96 + pos] = new_v6; - v2[112 + pos] = new_v7; - v2[128 + pos] = new_v8; - v2[144 + pos] = new_v9; - v2[160 + pos] = new_v10; - v2[176 + pos] = new_v11; - v2[192 + pos] = new_v12; - v2[208 + pos] = new_v13; - v2[224 + pos] = new_v14; - v2[240 + pos] = new_v15; - - // V[16] is always 0.0: - v2[256 + pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - v2[272 + pos] = -new_v15; - v2[288 + pos] = -new_v14; - v2[304 + pos] = -new_v13; - v2[320 + pos] = -new_v12; - v2[336 + pos] = -new_v11; - v2[352 + pos] = -new_v10; - v2[368 + pos] = -new_v9; - v2[384 + pos] = -new_v8; - v2[400 + pos] = -new_v7; - v2[416 + pos] = -new_v6; - v2[432 + pos] = -new_v5; - v2[448 + pos] = -new_v4; - v2[464 + pos] = -new_v3; - v2[480 + pos] = -new_v2; - v2[496 + pos] = -new_v1; - - // insert V[32] (== -new_v[0]) into other v: - // dest = (actual_v == v1) ? v2 : v1; - - v1[0 + pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - v1[16 + pos] = new_v16; - v1[32 + pos] = new_v17; - v1[48 + pos] = new_v18; - v1[64 + pos] = new_v19; - v1[80 + pos] = new_v20; - v1[96 + pos] = new_v21; - v1[112 + pos] = new_v22; - v1[128 + pos] = new_v23; - v1[144 + pos] = new_v24; - v1[160 + pos] = new_v25; - v1[176 + pos] = new_v26; - v1[192 + pos] = new_v27; - v1[208 + pos] = new_v28; - v1[224 + pos] = new_v29; - v1[240 + pos] = new_v30; - v1[256 + pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - v1[272 + pos] = new_v30; - v1[288 + pos] = new_v29; - v1[304 + pos] = new_v28; - v1[320 + pos] = new_v27; - v1[336 + pos] = new_v26; - v1[352 + pos] = new_v25; - v1[368 + pos] = new_v24; - v1[384 + pos] = new_v23; - v1[400 + pos] = new_v22; - v1[416 + pos] = new_v21; - v1[432 + pos] = new_v20; - v1[448 + pos] = new_v19; - v1[464 + pos] = new_v18; - v1[480 + pos] = new_v17; - v1[496 + pos] = new_v16; - - /* - * setup PREV - */ - - prev2[0 + pos] = new_v0; - prev2[16 + pos] = new_v1; - prev2[32 + pos] = new_v2; - prev2[48 + pos] = new_v3; - prev2[64 + pos] = new_v4; - prev2[80 + pos] = new_v5; - prev2[96 + pos] = new_v6; - prev2[112 + pos] = new_v7; - prev2[128 + pos] = new_v8; - prev2[144 + pos] = new_v9; - prev2[160 + pos] = new_v10; - prev2[176 + pos] = new_v11; - prev2[192 + pos] = new_v12; - prev2[208 + pos] = new_v13; - prev2[224 + pos] = new_v14; - prev2[240 + pos] = new_v15; - - // V[16] is always 0.0: - prev2[256 + pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - prev2[272 + pos] = -new_v15; - prev2[288 + pos] = -new_v14; - prev2[304 + pos] = -new_v13; - prev2[320 + pos] = -new_v12; - prev2[336 + pos] = -new_v11; - prev2[352 + pos] = -new_v10; - prev2[368 + pos] = -new_v9; - prev2[384 + pos] = -new_v8; - prev2[400 + pos] = -new_v7; - prev2[416 + pos] = -new_v6; - prev2[432 + pos] = -new_v5; - prev2[448 + pos] = -new_v4; - prev2[464 + pos] = -new_v3; - prev2[480 + pos] = -new_v2; - prev2[496 + pos] = -new_v1; - - // insert V[32] (== -new_v[0]) into other v: - // dest = (actual_v == v1) ? v2 : v1; - - prev1[0 + pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - prev1[16 + pos] = new_v16; - prev1[32 + pos] = new_v17; - prev1[48 + pos] = new_v18; - prev1[64 + pos] = new_v19; - prev1[80 + pos] = new_v20; - prev1[96 + pos] = new_v21; - prev1[112 + pos] = new_v22; - prev1[128 + pos] = new_v23; - prev1[144 + pos] = new_v24; - prev1[160 + pos] = new_v25; - prev1[176 + pos] = new_v26; - prev1[192 + pos] = new_v27; - prev1[208 + pos] = new_v28; - prev1[224 + pos] = new_v29; - prev1[240 + pos] = new_v30; - prev1[256 + pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - prev1[272 + pos] = new_v30; - prev1[288 + pos] = new_v29; - prev1[304 + pos] = new_v28; - prev1[320 + pos] = new_v27; - prev1[336 + pos] = new_v26; - prev1[352 + pos] = new_v25; - prev1[368 + pos] = new_v24; - prev1[384 + pos] = new_v23; - prev1[400 + pos] = new_v22; - prev1[416 + pos] = new_v21; - prev1[432 + pos] = new_v20; - prev1[448 + pos] = new_v19; - prev1[464 + pos] = new_v18; - prev1[480 + pos] = new_v17; - prev1[496 + pos] = new_v16; - } - - private void compute_new_v1_v2() { - - @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f; - @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f; - - // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure - // 3-A.2 in ISO DIS 11172-3 - // float[] p = new float[16]; - // float[] pp = new float[16]; - - // float[] s = samples; - - @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0]; - @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1]; - @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2]; - @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3]; - @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4]; - @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5]; - @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6]; - @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7]; - @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8]; - @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9]; - @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10]; - @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11]; - @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12]; - @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13]; - @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14]; - @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15]; - @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16]; - @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17]; - @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18]; - @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19]; - @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20]; - @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21]; - @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22]; - @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23]; - @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24]; - @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25]; - @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26]; - @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27]; - @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28]; - @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29]; - @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30]; - @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31]; - - @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31; - @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30; - @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29; - @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28; - @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27; - @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26; - @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25; - @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24; - @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23; - @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22; - @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21; - @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20; - @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19; - @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18; - @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17; - @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16; - - @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15; - @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14; - @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13; - @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12; - @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11; - @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10; - @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9; - @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8; - @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32; - @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32; - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - // this is pretty insane coding - @LOC("THIS,SynthesisFilter.NEWV") float tmp1; - new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6; - new_v27/* 44-17 */= -p6 - p7 - p4; - new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; - new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14; - new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13; - new_v29/* 46-17 */= -p14 - p15 - p12 - p8; - new_v25/* 42-17 */= tmp1 - p12; - new_v31/* 48-17 */= -p0; - new_v0 = p1; - new_v23/* 40-17 */= -(new_v8 = p3) - p2; - - p0 = (s0 - s31) * cos1_64; - p1 = (s1 - s30) * cos3_64; - p2 = (s2 - s29) * cos5_64; - p3 = (s3 - s28) * cos7_64; - p4 = (s4 - s27) * cos9_64; - p5 = (s5 - s26) * cos11_64; - p6 = (s6 - s25) * cos13_64; - p7 = (s7 - s24) * cos15_64; - p8 = (s8 - s23) * cos17_64; - p9 = (s9 - s22) * cos19_64; - p10 = (s10 - s21) * cos21_64; - p11 = (s11 - s20) * cos23_64; - p12 = (s12 - s19) * cos25_64; - p13 = (s13 - s18) * cos27_64; - p14 = (s14 - s17) * cos29_64; - p15 = (s15 - s16) * cos31_64; - - pp0 = p0 + p15; - pp1 = p1 + p14; - pp2 = p2 + p13; - pp3 = p3 + p12; - pp4 = p4 + p11; - pp5 = p5 + p10; - pp6 = p6 + p9; - pp7 = p7 + p8; - pp8 = (p0 - p15) * cos1_32; - pp9 = (p1 - p14) * cos3_32; - pp10 = (p2 - p13) * cos5_32; - pp11 = (p3 - p12) * cos7_32; - pp12 = (p4 - p11) * cos9_32; - pp13 = (p5 - p10) * cos11_32; - pp14 = (p6 - p9) * cos13_32; - pp15 = (p7 - p8) * cos15_32; - - p0 = pp0 + pp7; - p1 = pp1 + pp6; - p2 = pp2 + pp5; - p3 = pp3 + pp4; - p4 = (pp0 - pp7) * cos1_16; - p5 = (pp1 - pp6) * cos3_16; - p6 = (pp2 - pp5) * cos5_16; - p7 = (pp3 - pp4) * cos7_16; - p8 = pp8 + pp15; - p9 = pp9 + pp14; - p10 = pp10 + pp13; - p11 = pp11 + pp12; - p12 = (pp8 - pp15) * cos1_16; - p13 = (pp9 - pp14) * cos3_16; - p14 = (pp10 - pp13) * cos5_16; - p15 = (pp11 - pp12) * cos7_16; - - pp0 = p0 + p3; - pp1 = p1 + p2; - pp2 = (p0 - p3) * cos1_8; - pp3 = (p1 - p2) * cos3_8; - pp4 = p4 + p7; - pp5 = p5 + p6; - pp6 = (p4 - p7) * cos1_8; - pp7 = (p5 - p6) * cos3_8; - pp8 = p8 + p11; - pp9 = p9 + p10; - pp10 = (p8 - p11) * cos1_8; - pp11 = (p9 - p10) * cos3_8; - pp12 = p12 + p15; - pp13 = p13 + p14; - pp14 = (p12 - p15) * cos1_8; - pp15 = (p13 - p14) * cos3_8; - - p0 = pp0 + pp1; - p1 = (pp0 - pp1) * cos1_4; - p2 = pp2 + pp3; - p3 = (pp2 - pp3) * cos1_4; - p4 = pp4 + pp5; - p5 = (pp4 - pp5) * cos1_4; - p6 = pp6 + pp7; - p7 = (pp6 - pp7) * cos1_4; - p8 = pp8 + pp9; - p9 = (pp8 - pp9) * cos1_4; - p10 = pp10 + pp11; - p11 = (pp10 - pp11) * cos1_4; - p12 = pp12 + pp13; - p13 = (pp12 - pp13) * cos1_4; - p14 = pp14 + pp15; - p15 = (pp14 - pp15) * cos1_4; - - // manually doing something that a compiler should handle sucks - // coding like this is hard to read - @LOC("THIS,SynthesisFilter.NEWV") float tmp2; - new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13; - new_v7 = (new_v9 = p15 + p11 + p3) + p13; - new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; - new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14; - - new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3; - new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7; - new_v24/* 41-17 */= tmp1 - p12 - p2 - p3; - new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7); - new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0; - new_v28/* 45-17 */= tmp1 - tmp2; - - // insert V[0-15] (== new_v[0-15]) into actual v: - // float[] x2 = actual_v + actual_write_pos; - // float dest[] = actual_v; actual_v=v1; - - @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos; - - v1[0 + pos] = new_v0; - v1[16 + pos] = new_v1; - v1[32 + pos] = new_v2; - v1[48 + pos] = new_v3; - v1[64 + pos] = new_v4; - v1[80 + pos] = new_v5; - v1[96 + pos] = new_v6; - v1[112 + pos] = new_v7; - v1[128 + pos] = new_v8; - v1[144 + pos] = new_v9; - v1[160 + pos] = new_v10; - v1[176 + pos] = new_v11; - v1[192 + pos] = new_v12; - v1[208 + pos] = new_v13; - v1[224 + pos] = new_v14; - v1[240 + pos] = new_v15; - - // V[16] is always 0.0: - v1[256 + pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - v1[272 + pos] = -new_v15; - v1[288 + pos] = -new_v14; - v1[304 + pos] = -new_v13; - v1[320 + pos] = -new_v12; - v1[336 + pos] = -new_v11; - v1[352 + pos] = -new_v10; - v1[368 + pos] = -new_v9; - v1[384 + pos] = -new_v8; - v1[400 + pos] = -new_v7; - v1[416 + pos] = -new_v6; - v1[432 + pos] = -new_v5; - v1[448 + pos] = -new_v4; - v1[464 + pos] = -new_v3; - v1[480 + pos] = -new_v2; - v1[496 + pos] = -new_v1; - - // insert V[32] (== -new_v[0]) into other v: - // dest = (actual_v == v1) ? v2 : v1; - - v2[0 + pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - v2[16 + pos] = new_v16; - v2[32 + pos] = new_v17; - v2[48 + pos] = new_v18; - v2[64 + pos] = new_v19; - v2[80 + pos] = new_v20; - v2[96 + pos] = new_v21; - v2[112 + pos] = new_v22; - v2[128 + pos] = new_v23; - v2[144 + pos] = new_v24; - v2[160 + pos] = new_v25; - v2[176 + pos] = new_v26; - v2[192 + pos] = new_v27; - v2[208 + pos] = new_v28; - v2[224 + pos] = new_v29; - v2[240 + pos] = new_v30; - v2[256 + pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - v2[272 + pos] = new_v30; - v2[288 + pos] = new_v29; - v2[304 + pos] = new_v28; - v2[320 + pos] = new_v27; - v2[336 + pos] = new_v26; - v2[352 + pos] = new_v25; - v2[368 + pos] = new_v24; - v2[384 + pos] = new_v23; - v2[400 + pos] = new_v22; - v2[416 + pos] = new_v21; - v2[432 + pos] = new_v20; - v2[448 + pos] = new_v19; - v2[464 + pos] = new_v18; - v2[480 + pos] = new_v17; - v2[496 + pos] = new_v16; - - /* - * setup PREV - */ - - prev1[0 + pos] = new_v0; - prev1[16 + pos] = new_v1; - prev1[32 + pos] = new_v2; - prev1[48 + pos] = new_v3; - prev1[64 + pos] = new_v4; - prev1[80 + pos] = new_v5; - prev1[96 + pos] = new_v6; - prev1[112 + pos] = new_v7; - prev1[128 + pos] = new_v8; - prev1[144 + pos] = new_v9; - prev1[160 + pos] = new_v10; - prev1[176 + pos] = new_v11; - prev1[192 + pos] = new_v12; - prev1[208 + pos] = new_v13; - prev1[224 + pos] = new_v14; - prev1[240 + pos] = new_v15; - - // V[16] is always 0.0: - prev1[256 + pos] = 0.0f; - - // insert V[17-31] (== -new_v[15-1]) into actual v: - prev1[272 + pos] = -new_v15; - prev1[288 + pos] = -new_v14; - prev1[304 + pos] = -new_v13; - prev1[320 + pos] = -new_v12; - prev1[336 + pos] = -new_v11; - prev1[352 + pos] = -new_v10; - prev1[368 + pos] = -new_v9; - prev1[384 + pos] = -new_v8; - prev1[400 + pos] = -new_v7; - prev1[416 + pos] = -new_v6; - prev1[432 + pos] = -new_v5; - prev1[448 + pos] = -new_v4; - prev1[464 + pos] = -new_v3; - prev1[480 + pos] = -new_v2; - prev1[496 + pos] = -new_v1; - - // insert V[32] (== -new_v[0]) into other v: - // dest = (actual_v == v1) ? v2 : v1; - - prev2[0 + pos] = -new_v0; - // insert V[33-48] (== new_v[16-31]) into other v: - prev2[16 + pos] = new_v16; - prev2[32 + pos] = new_v17; - prev2[48 + pos] = new_v18; - prev2[64 + pos] = new_v19; - prev2[80 + pos] = new_v20; - prev2[96 + pos] = new_v21; - prev2[112 + pos] = new_v22; - prev2[128 + pos] = new_v23; - prev2[144 + pos] = new_v24; - prev2[160 + pos] = new_v25; - prev2[176 + pos] = new_v26; - prev2[192 + pos] = new_v27; - prev2[208 + pos] = new_v28; - prev2[224 + pos] = new_v29; - prev2[240 + pos] = new_v30; - prev2[256 + pos] = new_v31; - - // insert V[49-63] (== new_v[30-16]) into other v: - prev2[272 + pos] = new_v30; - prev2[288 + pos] = new_v29; - prev2[304 + pos] = new_v28; - prev2[320 + pos] = new_v27; - prev2[336 + pos] = new_v26; - prev2[352 + pos] = new_v25; - prev2[368 + pos] = new_v24; - prev2[384 + pos] = new_v23; - prev2[400 + pos] = new_v22; - prev2[416 + pos] = new_v21; - prev2[432 + pos] = new_v20; - prev2[448 + pos] = new_v19; - prev2[464 + pos] = new_v18; - prev2[480 + pos] = new_v17; - prev2[496 + pos] = new_v16; - } - - /** - * Compute PCM Samples. - */ - - @LOC("OUT") - private float[] _tmpOut = new float[32]; - - private void compute_pcm_samples0() { - - if (vidx == 1) { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - // final float[] dp = d16[i]; - pcm_sample = - (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1]) - + (v1[14 + dvp] * d16[i][2]) + (v1[13 + dvp] * d16[i][3]) - + (v1[12 + dvp] * d16[i][4]) + (v1[11 + dvp] * d16[i][5]) - + (v1[10 + dvp] * d16[i][6]) + (v1[9 + dvp] * d16[i][7]) - + (v1[8 + dvp] * d16[i][8]) + (v1[7 + dvp] * d16[i][9]) - + (v1[6 + dvp] * d16[i][10]) + (v1[5 + dvp] * d16[i][11]) - + (v1[4 + dvp] * d16[i][12]) + (v1[3 + dvp] * d16[i][13]) - + (v1[2 + dvp] * d16[i][14]) + (v1[1 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - // final float[] dp = d16[i]; - pcm_sample = - (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1]) - + (v2[14 + dvp] * d16[i][2]) + (v2[13 + dvp] * d16[i][3]) - + (v2[12 + dvp] * d16[i][4]) + (v2[11 + dvp] * d16[i][5]) - + (v2[10 + dvp] * d16[i][6]) + (v2[9 + dvp] * d16[i][7]) - + (v2[8 + dvp] * d16[i][8]) + (v2[7 + dvp] * d16[i][9]) - + (v2[6 + dvp] * d16[i][10]) + (v2[5 + dvp] * d16[i][11]) - + (v2[4 + dvp] * d16[i][12]) + (v2[3 + dvp] * d16[i][13]) - + (v2[2 + dvp] * d16[i][14]) + (v2[1 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples1() { - - if (vidx == 1) { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1]) - + (v1[15 + dvp] * d16[i][2]) + (v1[14 + dvp] * d16[i][3]) - + (v1[13 + dvp] * d16[i][4]) + (v1[12 + dvp] * d16[i][5]) - + (v1[11 + dvp] * d16[i][6]) + (v1[10 + dvp] * d16[i][7]) - + (v1[9 + dvp] * d16[i][8]) + (v1[8 + dvp] * d16[i][9]) - + (v1[7 + dvp] * d16[i][10]) + (v1[6 + dvp] * d16[i][11]) - + (v1[5 + dvp] * d16[i][12]) + (v1[4 + dvp] * d16[i][13]) - + (v1[3 + dvp] * d16[i][14]) + (v1[2 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1]) - + (v2[15 + dvp] * d16[i][2]) + (v2[14 + dvp] * d16[i][3]) - + (v2[13 + dvp] * d16[i][4]) + (v2[12 + dvp] * d16[i][5]) - + (v2[11 + dvp] * d16[i][6]) + (v2[10 + dvp] * d16[i][7]) - + (v2[9 + dvp] * d16[i][8]) + (v2[8 + dvp] * d16[i][9]) - + (v2[7 + dvp] * d16[i][10]) + (v2[6 + dvp] * d16[i][11]) - + (v2[5 + dvp] * d16[i][12]) + (v2[4 + dvp] * d16[i][13]) - + (v2[3 + dvp] * d16[i][14]) + (v2[2 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples2() { - - if (vidx == 1) { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1]) - + (v1[0 + dvp] * d16[i][2]) + (v1[15 + dvp] * d16[i][3]) - + (v1[14 + dvp] * d16[i][4]) + (v1[13 + dvp] * d16[i][5]) - + (v1[12 + dvp] * d16[i][6]) + (v1[11 + dvp] * d16[i][7]) - + (v1[10 + dvp] * d16[i][8]) + (v1[9 + dvp] * d16[i][9]) - + (v1[8 + dvp] * d16[i][10]) + (v1[7 + dvp] * d16[i][11]) - + (v1[6 + dvp] * d16[i][12]) + (v1[5 + dvp] * d16[i][13]) - + (v1[4 + dvp] * d16[i][14]) + (v1[3 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1]) - + (v2[0 + dvp] * d16[i][2]) + (v2[15 + dvp] * d16[i][3]) - + (v2[14 + dvp] * d16[i][4]) + (v2[13 + dvp] * d16[i][5]) - + (v2[12 + dvp] * d16[i][6]) + (v2[11 + dvp] * d16[i][7]) - + (v2[10 + dvp] * d16[i][8]) + (v2[9 + dvp] * d16[i][9]) - + (v2[8 + dvp] * d16[i][10]) + (v2[7 + dvp] * d16[i][11]) - + (v2[6 + dvp] * d16[i][12]) + (v2[5 + dvp] * d16[i][13]) - + (v2[4 + dvp] * d16[i][14]) + (v2[3 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples3() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1]) - + (v1[1 + dvp] * d16[i][2]) + (v1[0 + dvp] * d16[i][3]) - + (v1[15 + dvp] * d16[i][4]) + (v1[14 + dvp] * d16[i][5]) - + (v1[13 + dvp] * d16[i][6]) + (v1[12 + dvp] * d16[i][7]) - + (v1[11 + dvp] * d16[i][8]) + (v1[10 + dvp] * d16[i][9]) - + (v1[9 + dvp] * d16[i][10]) + (v1[8 + dvp] * d16[i][11]) - + (v1[7 + dvp] * d16[i][12]) + (v1[6 + dvp] * d16[i][13]) - + (v1[5 + dvp] * d16[i][14]) + (v1[4 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1]) - + (v2[1 + dvp] * d16[i][2]) + (v2[0 + dvp] * d16[i][3]) - + (v2[15 + dvp] * d16[i][4]) + (v2[14 + dvp] * d16[i][5]) - + (v2[13 + dvp] * d16[i][6]) + (v2[12 + dvp] * d16[i][7]) - + (v2[11 + dvp] * d16[i][8]) + (v2[10 + dvp] * d16[i][9]) - + (v2[9 + dvp] * d16[i][10]) + (v2[8 + dvp] * d16[i][11]) - + (v2[7 + dvp] * d16[i][12]) + (v2[6 + dvp] * d16[i][13]) - + (v2[5 + dvp] * d16[i][14]) + (v2[4 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples4() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1]) - + (v1[2 + dvp] * d16[i][2]) + (v1[1 + dvp] * d16[i][3]) + (v1[0 + dvp] * d16[i][4]) - + (v1[15 + dvp] * d16[i][5]) + (v1[14 + dvp] * d16[i][6]) - + (v1[13 + dvp] * d16[i][7]) + (v1[12 + dvp] * d16[i][8]) - + (v1[11 + dvp] * d16[i][9]) + (v1[10 + dvp] * d16[i][10]) - + (v1[9 + dvp] * d16[i][11]) + (v1[8 + dvp] * d16[i][12]) - + (v1[7 + dvp] * d16[i][13]) + (v1[6 + dvp] * d16[i][14]) + (v1[5 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1]) - + (v2[2 + dvp] * d16[i][2]) + (v2[1 + dvp] * d16[i][3]) + (v2[0 + dvp] * d16[i][4]) - + (v2[15 + dvp] * d16[i][5]) + (v2[14 + dvp] * d16[i][6]) - + (v2[13 + dvp] * d16[i][7]) + (v2[12 + dvp] * d16[i][8]) - + (v2[11 + dvp] * d16[i][9]) + (v2[10 + dvp] * d16[i][10]) - + (v2[9 + dvp] * d16[i][11]) + (v2[8 + dvp] * d16[i][12]) - + (v2[7 + dvp] * d16[i][13]) + (v2[6 + dvp] * d16[i][14]) + (v2[5 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples5() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1]) - + (v1[3 + dvp] * d16[i][2]) + (v1[2 + dvp] * d16[i][3]) + (v1[1 + dvp] * d16[i][4]) - + (v1[0 + dvp] * d16[i][5]) + (v1[15 + dvp] * d16[i][6]) - + (v1[14 + dvp] * d16[i][7]) + (v1[13 + dvp] * d16[i][8]) - + (v1[12 + dvp] * d16[i][9]) + (v1[11 + dvp] * d16[i][10]) - + (v1[10 + dvp] * d16[i][11]) + (v1[9 + dvp] * d16[i][12]) - + (v1[8 + dvp] * d16[i][13]) + (v1[7 + dvp] * d16[i][14]) + (v1[6 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1]) - + (v2[3 + dvp] * d16[i][2]) + (v2[2 + dvp] * d16[i][3]) + (v2[1 + dvp] * d16[i][4]) - + (v2[0 + dvp] * d16[i][5]) + (v2[15 + dvp] * d16[i][6]) - + (v2[14 + dvp] * d16[i][7]) + (v2[13 + dvp] * d16[i][8]) - + (v2[12 + dvp] * d16[i][9]) + (v2[11 + dvp] * d16[i][10]) - + (v2[10 + dvp] * d16[i][11]) + (v2[9 + dvp] * d16[i][12]) - + (v2[8 + dvp] * d16[i][13]) + (v2[7 + dvp] * d16[i][14]) + (v2[6 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples6() { - - if (vidx == 1) { - - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1]) - + (v1[4 + dvp] * d16[i][2]) + (v1[3 + dvp] * d16[i][3]) + (v1[2 + dvp] * d16[i][4]) - + (v1[1 + dvp] * d16[i][5]) + (v1[0 + dvp] * d16[i][6]) - + (v1[15 + dvp] * d16[i][7]) + (v1[14 + dvp] * d16[i][8]) - + (v1[13 + dvp] * d16[i][9]) + (v1[12 + dvp] * d16[i][10]) - + (v1[11 + dvp] * d16[i][11]) + (v1[10 + dvp] * d16[i][12]) - + (v1[9 + dvp] * d16[i][13]) + (v1[8 + dvp] * d16[i][14]) + (v1[7 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1]) - + (v2[4 + dvp] * d16[i][2]) + (v2[3 + dvp] * d16[i][3]) + (v2[2 + dvp] * d16[i][4]) - + (v2[1 + dvp] * d16[i][5]) + (v2[0 + dvp] * d16[i][6]) - + (v2[15 + dvp] * d16[i][7]) + (v2[14 + dvp] * d16[i][8]) - + (v2[13 + dvp] * d16[i][9]) + (v2[12 + dvp] * d16[i][10]) - + (v2[11 + dvp] * d16[i][11]) + (v2[10 + dvp] * d16[i][12]) - + (v2[9 + dvp] * d16[i][13]) + (v2[8 + dvp] * d16[i][14]) + (v2[7 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples7() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1]) - + (v1[5 + dvp] * d16[i][2]) + (v1[4 + dvp] * d16[i][3]) + (v1[3 + dvp] * d16[i][4]) - + (v1[2 + dvp] * d16[i][5]) + (v1[1 + dvp] * d16[i][6]) + (v1[0 + dvp] * d16[i][7]) - + (v1[15 + dvp] * d16[i][8]) + (v1[14 + dvp] * d16[i][9]) - + (v1[13 + dvp] * d16[i][10]) + (v1[12 + dvp] * d16[i][11]) - + (v1[11 + dvp] * d16[i][12]) + (v1[10 + dvp] * d16[i][13]) - + (v1[9 + dvp] * d16[i][14]) + (v1[8 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1]) - + (v2[5 + dvp] * d16[i][2]) + (v2[4 + dvp] * d16[i][3]) + (v2[3 + dvp] * d16[i][4]) - + (v2[2 + dvp] * d16[i][5]) + (v2[1 + dvp] * d16[i][6]) + (v2[0 + dvp] * d16[i][7]) - + (v2[15 + dvp] * d16[i][8]) + (v2[14 + dvp] * d16[i][9]) - + (v2[13 + dvp] * d16[i][10]) + (v2[12 + dvp] * d16[i][11]) - + (v2[11 + dvp] * d16[i][12]) + (v2[10 + dvp] * d16[i][13]) - + (v2[9 + dvp] * d16[i][14]) + (v2[8 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples8() { - - if (vidx == 1) { - - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1]) - + (v1[6 + dvp] * d16[i][2]) + (v1[5 + dvp] * d16[i][3]) + (v1[4 + dvp] * d16[i][4]) - + (v1[3 + dvp] * d16[i][5]) + (v1[2 + dvp] * d16[i][6]) + (v1[1 + dvp] * d16[i][7]) - + (v1[0 + dvp] * d16[i][8]) + (v1[15 + dvp] * d16[i][9]) - + (v1[14 + dvp] * d16[i][10]) + (v1[13 + dvp] * d16[i][11]) - + (v1[12 + dvp] * d16[i][12]) + (v1[11 + dvp] * d16[i][13]) - + (v1[10 + dvp] * d16[i][14]) + (v1[9 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1]) - + (v2[6 + dvp] * d16[i][2]) + (v2[5 + dvp] * d16[i][3]) + (v2[4 + dvp] * d16[i][4]) - + (v2[3 + dvp] * d16[i][5]) + (v2[2 + dvp] * d16[i][6]) + (v2[1 + dvp] * d16[i][7]) - + (v2[0 + dvp] * d16[i][8]) + (v2[15 + dvp] * d16[i][9]) - + (v2[14 + dvp] * d16[i][10]) + (v2[13 + dvp] * d16[i][11]) - + (v2[12 + dvp] * d16[i][12]) + (v2[11 + dvp] * d16[i][13]) - + (v2[10 + dvp] * d16[i][14]) + (v2[9 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples9() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1]) - + (v1[7 + dvp] * d16[i][2]) + (v1[6 + dvp] * d16[i][3]) + (v1[5 + dvp] * d16[i][4]) - + (v1[4 + dvp] * d16[i][5]) + (v1[3 + dvp] * d16[i][6]) + (v1[2 + dvp] * d16[i][7]) - + (v1[1 + dvp] * d16[i][8]) + (v1[0 + dvp] * d16[i][9]) - + (v1[15 + dvp] * d16[i][10]) + (v1[14 + dvp] * d16[i][11]) - + (v1[13 + dvp] * d16[i][12]) + (v1[12 + dvp] * d16[i][13]) - + (v1[11 + dvp] * d16[i][14]) + (v1[10 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1]) - + (v2[7 + dvp] * d16[i][2]) + (v2[6 + dvp] * d16[i][3]) + (v2[5 + dvp] * d16[i][4]) - + (v2[4 + dvp] * d16[i][5]) + (v2[3 + dvp] * d16[i][6]) + (v2[2 + dvp] * d16[i][7]) - + (v2[1 + dvp] * d16[i][8]) + (v2[0 + dvp] * d16[i][9]) - + (v2[15 + dvp] * d16[i][10]) + (v2[14 + dvp] * d16[i][11]) - + (v2[13 + dvp] * d16[i][12]) + (v2[12 + dvp] * d16[i][13]) - + (v2[11 + dvp] * d16[i][14]) + (v2[10 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples10() { - if (vidx == 1) { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1]) - + (v1[8 + dvp] * d16[i][2]) + (v1[7 + dvp] * d16[i][3]) + (v1[6 + dvp] * d16[i][4]) - + (v1[5 + dvp] * d16[i][5]) + (v1[4 + dvp] * d16[i][6]) + (v1[3 + dvp] * d16[i][7]) - + (v1[2 + dvp] * d16[i][8]) + (v1[1 + dvp] * d16[i][9]) - + (v1[0 + dvp] * d16[i][10]) + (v1[15 + dvp] * d16[i][11]) - + (v1[14 + dvp] * d16[i][12]) + (v1[13 + dvp] * d16[i][13]) - + (v1[12 + dvp] * d16[i][14]) + (v1[11 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1]) - + (v2[8 + dvp] * d16[i][2]) + (v2[7 + dvp] * d16[i][3]) + (v2[6 + dvp] * d16[i][4]) - + (v2[5 + dvp] * d16[i][5]) + (v2[4 + dvp] * d16[i][6]) + (v2[3 + dvp] * d16[i][7]) - + (v2[2 + dvp] * d16[i][8]) + (v2[1 + dvp] * d16[i][9]) - + (v2[0 + dvp] * d16[i][10]) + (v2[15 + dvp] * d16[i][11]) - + (v2[14 + dvp] * d16[i][12]) + (v2[13 + dvp] * d16[i][13]) - + (v2[12 + dvp] * d16[i][14]) + (v2[11 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples11() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1]) - + (v1[9 + dvp] * d16[i][2]) + (v1[8 + dvp] * d16[i][3]) + (v1[7 + dvp] * d16[i][4]) - + (v1[6 + dvp] * d16[i][5]) + (v1[5 + dvp] * d16[i][6]) + (v1[4 + dvp] * d16[i][7]) - + (v1[3 + dvp] * d16[i][8]) + (v1[2 + dvp] * d16[i][9]) - + (v1[1 + dvp] * d16[i][10]) + (v1[0 + dvp] * d16[i][11]) - + (v1[15 + dvp] * d16[i][12]) + (v1[14 + dvp] * d16[i][13]) - + (v1[13 + dvp] * d16[i][14]) + (v1[12 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1]) - + (v2[9 + dvp] * d16[i][2]) + (v2[8 + dvp] * d16[i][3]) + (v2[7 + dvp] * d16[i][4]) - + (v2[6 + dvp] * d16[i][5]) + (v2[5 + dvp] * d16[i][6]) + (v2[4 + dvp] * d16[i][7]) - + (v2[3 + dvp] * d16[i][8]) + (v2[2 + dvp] * d16[i][9]) - + (v2[1 + dvp] * d16[i][10]) + (v2[0 + dvp] * d16[i][11]) - + (v2[15 + dvp] * d16[i][12]) + (v2[14 + dvp] * d16[i][13]) - + (v2[13 + dvp] * d16[i][14]) + (v2[12 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples12() { - - if (vidx == 1) { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1]) - + (v1[10 + dvp] * d16[i][2]) + (v1[9 + dvp] * d16[i][3]) - + (v1[8 + dvp] * d16[i][4]) + (v1[7 + dvp] * d16[i][5]) + (v1[6 + dvp] * d16[i][6]) - + (v1[5 + dvp] * d16[i][7]) + (v1[4 + dvp] * d16[i][8]) + (v1[3 + dvp] * d16[i][9]) - + (v1[2 + dvp] * d16[i][10]) + (v1[1 + dvp] * d16[i][11]) - + (v1[0 + dvp] * d16[i][12]) + (v1[15 + dvp] * d16[i][13]) - + (v1[14 + dvp] * d16[i][14]) + (v1[13 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1]) - + (v2[10 + dvp] * d16[i][2]) + (v2[9 + dvp] * d16[i][3]) - + (v2[8 + dvp] * d16[i][4]) + (v2[7 + dvp] * d16[i][5]) + (v2[6 + dvp] * d16[i][6]) - + (v2[5 + dvp] * d16[i][7]) + (v2[4 + dvp] * d16[i][8]) + (v2[3 + dvp] * d16[i][9]) - + (v2[2 + dvp] * d16[i][10]) + (v2[1 + dvp] * d16[i][11]) - + (v2[0 + dvp] * d16[i][12]) + (v2[15 + dvp] * d16[i][13]) - + (v2[14 + dvp] * d16[i][14]) + (v2[13 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples13() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1]) - + (v1[11 + dvp] * d16[i][2]) + (v1[10 + dvp] * d16[i][3]) - + (v1[9 + dvp] * d16[i][4]) + (v1[8 + dvp] * d16[i][5]) + (v1[7 + dvp] * d16[i][6]) - + (v1[6 + dvp] * d16[i][7]) + (v1[5 + dvp] * d16[i][8]) + (v1[4 + dvp] * d16[i][9]) - + (v1[3 + dvp] * d16[i][10]) + (v1[2 + dvp] * d16[i][11]) - + (v1[1 + dvp] * d16[i][12]) + (v1[0 + dvp] * d16[i][13]) - + (v1[15 + dvp] * d16[i][14]) + (v1[14 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1]) - + (v2[11 + dvp] * d16[i][2]) + (v2[10 + dvp] * d16[i][3]) - + (v2[9 + dvp] * d16[i][4]) + (v2[8 + dvp] * d16[i][5]) + (v2[7 + dvp] * d16[i][6]) - + (v2[6 + dvp] * d16[i][7]) + (v2[5 + dvp] * d16[i][8]) + (v2[4 + dvp] * d16[i][9]) - + (v2[3 + dvp] * d16[i][10]) + (v2[2 + dvp] * d16[i][11]) - + (v2[1 + dvp] * d16[i][12]) + (v2[0 + dvp] * d16[i][13]) - + (v2[15 + dvp] * d16[i][14]) + (v2[14 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples14() { - - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1]) - + (v1[12 + dvp] * d16[i][2]) + (v1[11 + dvp] * d16[i][3]) - + (v1[10 + dvp] * d16[i][4]) + (v1[9 + dvp] * d16[i][5]) - + (v1[8 + dvp] * d16[i][6]) + (v1[7 + dvp] * d16[i][7]) + (v1[6 + dvp] * d16[i][8]) - + (v1[5 + dvp] * d16[i][9]) + (v1[4 + dvp] * d16[i][10]) - + (v1[3 + dvp] * d16[i][11]) + (v1[2 + dvp] * d16[i][12]) - + (v1[1 + dvp] * d16[i][13]) + (v1[0 + dvp] * d16[i][14]) + (v1[15 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - // final float[] dp = d16[i]; - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - - pcm_sample = - (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1]) - + (v2[12 + dvp] * d16[i][2]) + (v2[11 + dvp] * d16[i][3]) - + (v2[10 + dvp] * d16[i][4]) + (v2[9 + dvp] * d16[i][5]) - + (v2[8 + dvp] * d16[i][6]) + (v2[7 + dvp] * d16[i][7]) + (v2[6 + dvp] * d16[i][8]) - + (v2[5 + dvp] * d16[i][9]) + (v2[4 + dvp] * d16[i][10]) - + (v2[3 + dvp] * d16[i][11]) + (v2[2 + dvp] * d16[i][12]) - + (v2[1 + dvp] * d16[i][13]) + (v2[0 + dvp] * d16[i][14]) + (v2[15 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples15() { - if (vidx == 1) { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - // final float d16[i][] = d16[i]; - pcm_sample = - (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1]) - + (v1[13 + dvp] * d16[i][2]) + (v1[12 + dvp] * d16[i][3]) - + (v1[11 + dvp] * d16[i][4]) + (v1[10 + dvp] * d16[i][5]) - + (v1[9 + dvp] * d16[i][6]) + (v1[8 + dvp] * d16[i][7]) + (v1[7 + dvp] * d16[i][8]) - + (v1[6 + dvp] * d16[i][9]) + (v1[5 + dvp] * d16[i][10]) - + (v1[4 + dvp] * d16[i][11]) + (v1[3 + dvp] * d16[i][12]) - + (v1[2 + dvp] * d16[i][13]) + (v1[1 + dvp] * d16[i][14]) + (v1[0 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - dvp += 16; - } // for - } else { - // final float[] vp = actual_v; - - // int inc = v_inc; - // final float[] tmpOut = _tmpOut; - @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; - - // fat chance of having this loop unroll - for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { - @LOC("THIS,SynthesisFilter.V2") float pcm_sample; - // final float d16[i][] = d16[i]; - pcm_sample = - (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1]) - + (v2[13 + dvp] * d16[i][2]) + (v2[12 + dvp] * d16[i][3]) - + (v2[11 + dvp] * d16[i][4]) + (v2[10 + dvp] * d16[i][5]) - + (v2[9 + dvp] * d16[i][6]) + (v2[8 + dvp] * d16[i][7]) + (v2[7 + dvp] * d16[i][8]) - + (v2[6 + dvp] * d16[i][9]) + (v2[5 + dvp] * d16[i][10]) - + (v2[4 + dvp] * d16[i][11]) + (v2[3 + dvp] * d16[i][12]) - + (v2[2 + dvp] * d16[i][13]) + (v2[1 + dvp] * d16[i][14]) + (v2[0 + dvp] * d16[i][15])) * scalefactor); - - _tmpOut[i] = pcm_sample; - dvp += 16; - } // for - } - - } - - private void compute_pcm_samples() { - - switch (actual_write_pos) { - case 0: - compute_pcm_samples0(); - break; - case 1: - compute_pcm_samples1(); - break; - case 2: - compute_pcm_samples2(); - break; - case 3: - compute_pcm_samples3(); - break; - case 4: - compute_pcm_samples4(); - break; - case 5: - compute_pcm_samples5(); - break; - case 6: - compute_pcm_samples6(); - break; - case 7: - compute_pcm_samples7(); - break; - case 8: - compute_pcm_samples8(); - break; - case 9: - compute_pcm_samples9(); - break; - case 10: - compute_pcm_samples10(); - break; - case 11: - compute_pcm_samples11(); - break; - case 12: - compute_pcm_samples12(); - break; - case 13: - compute_pcm_samples13(); - break; - case 14: - compute_pcm_samples14(); - break; - case 15: - compute_pcm_samples15(); - break; - } - - // if (buffer != null) { - // buffer.appendSamples(channel, _tmpOut); - // } - SampleBufferWrapper.appendSamples(channel, _tmpOut); - - /* - * // MDM: I was considering putting in quality control for // low-spec - * CPUs, but the performance gain (about 10-15%) // did not justify the - * considerable drop in audio quality. switch (inc) { case 16: - * buffer.appendSamples(channel, tmpOut); break; case 32: for (int i=0; - * i<16; i++) { buffer.append(channel, (short)tmpOut[i]); - * buffer.append(channel, (short)tmpOut[i]); } break; case 64: for (int i=0; - * i<8; i++) { buffer.append(channel, (short)tmpOut[i]); - * buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, - * (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); } break; - * - * } - */ - } - - @LATTICE("THISblockSize. - */ - static private float[][] splitArray(final float[] array, final int blockSize) { - int size = array.length / blockSize; - float[][] split = new float[size][]; - for (int i = 0; i < size; i++) { - split[i] = subArray(array, i * blockSize, blockSize); - } - return split; - } - - /** - * Returns a subarray of an existing array. - * - * @param array - * The array to retrieve a subarra from. - * @param offs - * The offset in the array that corresponds to the first index of the - * subarray. - * @param len - * The number of indeces in the subarray. - * @return The subarray, which may be of length 0. - */ - static private float[] subArray(final float[] array, final int offs, int len) { - if (offs + len > array.length) { - len = array.length - offs; - } - - if (len < 0) - len = 0; - - float[] subarray = new float[len]; - for (int i = 0; i < len; i++) { - subarray[i] = array[offs + i]; - } - - return subarray; - } - - // The original data for d[]. This data is loaded from a file - // to reduce the overall package size and to improve performance. - - static final float d[] = { 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f, - 0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, 1.144989014f, 0.572036743f, - 0.100311279f, 0.078628540f, 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f, - -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, 0.030517578f, -0.084182739f, - 0.090927124f, -0.600219727f, 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f, - 0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, -0.000015259f, -0.000534058f, - 0.003387451f, -0.008865356f, 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f, - 1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, 0.031738281f, 0.005294800f, - 0.003082275f, 0.000366211f, -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f, - 0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, 1.138763428f, 0.487472534f, - 0.123474121f, 0.061996460f, 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f, - -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, 0.027801514f, -0.100540161f, - 0.057617188f, -0.683914185f, 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f, - 0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, -0.000015259f, -0.000686646f, - 0.003479004f, -0.011886597f, 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f, - 1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, 0.031661987f, 0.003005981f, - 0.002792358f, 0.000259399f, -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f, - 0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, 1.120223999f, 0.404083252f, - 0.139450073f, 0.045837402f, 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f, - -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, 0.023422241f, -0.115921021f, - 0.016510010f, -0.765029907f, 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f, - 0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, -0.000030518f, -0.000885010f, - 0.003417969f, -0.015121460f, 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f, - 1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, 0.030532837f, 0.001098633f, - 0.002456665f, 0.000198364f, -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f, - 0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, 1.089782715f, 0.323318481f, - 0.148773193f, 0.030609131f, 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f, - -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, 0.017257690f, -0.129562378f, - -0.032379150f, -0.841949463f, 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f, - 0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, -0.000045776f, -0.001113892f, - 0.003173828f, -0.018463135f, 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f, - 1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, 0.028533936f, -0.000442505f, - 0.002120972f, 0.000137329f, -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f, - 0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, 1.048156738f, 0.246505737f, - 0.152069092f, 0.016708374f, 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f, - -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f, -0.140670776f, - -0.088775635f, -0.913055420f, 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f, - 0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, -0.000061035f, -0.001388550f, - 0.002700806f, -0.021789551f, 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f, - 1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, 0.025909424f, -0.001617432f, - 0.001785278f, 0.000106812f, -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f, - 0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, 0.996246338f, 0.174789429f, - 0.150115967f, 0.004394531f, 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f, - -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, -0.000686646f, -0.148422241f, - -0.152206421f, -0.976852417f, 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f, - 0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, -0.000091553f, -0.001693726f, - 0.001937866f, -0.024932861f, -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f, - 0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, 0.022857666f, -0.002487183f, - 0.001480103f, 0.000076294f, -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f, - -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, 0.935195923f, 0.109161377f, - 0.143676758f, -0.006134033f, 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f, - -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, -0.012420654f, -0.151962280f, - -0.221984863f, -1.031936646f, 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f, - 0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, -0.000122070f, -0.002014160f, - 0.000869751f, -0.027725220f, -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f, - 0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, 0.019577026f, -0.003051758f, - 0.001205444f, 0.000045776f, -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f, - -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, 0.866363525f, 0.050354004f, - 0.133590698f, -0.014801025f, 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f, - -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, -0.025817871f, -0.150497437f, - -0.297210693f, -1.077117920f, 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f, - 0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, -0.000167847f, -0.002349854f, - -0.000549316f, -0.029937744f, -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f, - 0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, 0.016235352f, -0.003372192f, - 0.000961304f, 0.000030518f, -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f, - -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, 0.791213989f, -0.001068115f, - 0.120697021f, -0.021575928f, 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f, - -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, -0.040634155f, -0.143264771f, - -0.376800537f, -1.111373901f, 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f, - 0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, -0.000244141f, -0.002685547f, - -0.002334595f, -0.031387329f, -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f, - 0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, 0.012939453f, -0.003479004f, - 0.000747681f, 0.000015259f, -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f, - -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, 0.711318970f, -0.044784546f, - 0.105819702f, -0.026535034f, 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f, - -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, -0.056533813f, -0.129577637f, - -0.459472656f, -1.133926392f, 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f, - 0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, -0.000320435f, -0.002990723f, - -0.004486084f, -0.031845093f, -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f, - 0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, 0.009841919f, -0.003433228f, - 0.000579834f, 0.000015259f, -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f, - -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, 0.628295898f, -0.080688477f, - 0.089706421f, -0.029785156f, 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f, - -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, -0.073059082f, -0.108856201f, - -0.543823242f, -1.144287109f, 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f, - 0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f }; - -} +/* + * 11/19/04 1.0 moved to LGPL. + * + * 04/01/00 Fixes for running under build 23xx Microsoft JVM. mdm. + * + * 19/12/99 Performance improvements to compute_pcm_samples(). + * Mat McGowan. mdm@techie.com. + * + * 16/02/99 Java Conversion by E.B , javalayer@javazoom.net + * + * @(#) synthesis_filter.h 1.8, last edit: 6/15/94 16:52:00 + * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) + * @(#) Berlin University of Technology + * + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * A class for the synthesis filter bank. This class does a fast downsampling + * from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. Frequencies above 4 kHz + * are removed by ignoring higher subbands. + */ +@LATTICE("OUT= 0; i--) { + samples[i] = s[i] * eq[i]; + } + } + + private void compute_new_v2_v1() { + + @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f; + + // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure + // 3-A.2 in ISO DIS 11172-3 + // float[] p = new float[16]; + // float[] pp = new float[16]; + + // float[] s = samples; + + @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0]; + @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1]; + @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2]; + @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3]; + @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4]; + @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5]; + @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6]; + @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7]; + @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8]; + @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9]; + @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10]; + @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11]; + @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12]; + @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13]; + @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14]; + @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15]; + @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16]; + @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17]; + @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18]; + @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19]; + @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20]; + @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21]; + @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22]; + @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23]; + @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24]; + @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25]; + @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26]; + @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27]; + @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28]; + @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29]; + @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30]; + @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31]; + + @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31; + @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30; + @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29; + @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28; + @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27; + @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26; + @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25; + @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24; + @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23; + @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22; + @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21; + @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20; + @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19; + @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18; + @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17; + @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16; + + @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15; + @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14; + @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13; + @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12; + @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11; + @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10; + @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9; + @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8; + @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32; + + p0 = pp0 + pp7; + p1 = pp1 + pp6; + p2 = pp2 + pp5; + p3 = pp3 + pp4; + p4 = (pp0 - pp7) * cos1_16; + p5 = (pp1 - pp6) * cos3_16; + p6 = (pp2 - pp5) * cos5_16; + p7 = (pp3 - pp4) * cos7_16; + p8 = pp8 + pp15; + p9 = pp9 + pp14; + p10 = pp10 + pp13; + p11 = pp11 + pp12; + p12 = (pp8 - pp15) * cos1_16; + p13 = (pp9 - pp14) * cos3_16; + p14 = (pp10 - pp13) * cos5_16; + p15 = (pp11 - pp12) * cos7_16; + + pp0 = p0 + p3; + pp1 = p1 + p2; + pp2 = (p0 - p3) * cos1_8; + pp3 = (p1 - p2) * cos3_8; + pp4 = p4 + p7; + pp5 = p5 + p6; + pp6 = (p4 - p7) * cos1_8; + pp7 = (p5 - p6) * cos3_8; + pp8 = p8 + p11; + pp9 = p9 + p10; + pp10 = (p8 - p11) * cos1_8; + pp11 = (p9 - p10) * cos3_8; + pp12 = p12 + p15; + pp13 = p13 + p14; + pp14 = (p12 - p15) * cos1_8; + pp15 = (p13 - p14) * cos3_8; + + p0 = pp0 + pp1; + p1 = (pp0 - pp1) * cos1_4; + p2 = pp2 + pp3; + p3 = (pp2 - pp3) * cos1_4; + p4 = pp4 + pp5; + p5 = (pp4 - pp5) * cos1_4; + p6 = pp6 + pp7; + p7 = (pp6 - pp7) * cos1_4; + p8 = pp8 + pp9; + p9 = (pp8 - pp9) * cos1_4; + p10 = pp10 + pp11; + p11 = (pp10 - pp11) * cos1_4; + p12 = pp12 + pp13; + p13 = (pp12 - pp13) * cos1_4; + p14 = pp14 + pp15; + p15 = (pp14 - pp15) * cos1_4; + + // this is pretty insane coding + @LOC("THIS,SynthesisFilter.NEWV") float tmp1; + new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6; + new_v27/* 44-17 */= -p6 - p7 - p4; + new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; + new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14; + new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13; + new_v29/* 46-17 */= -p14 - p15 - p12 - p8; + new_v25/* 42-17 */= tmp1 - p12; + new_v31/* 48-17 */= -p0; + new_v0 = p1; + new_v23/* 40-17 */= -(new_v8 = p3) - p2; + + p0 = (s0 - s31) * cos1_64; + p1 = (s1 - s30) * cos3_64; + p2 = (s2 - s29) * cos5_64; + p3 = (s3 - s28) * cos7_64; + p4 = (s4 - s27) * cos9_64; + p5 = (s5 - s26) * cos11_64; + p6 = (s6 - s25) * cos13_64; + p7 = (s7 - s24) * cos15_64; + p8 = (s8 - s23) * cos17_64; + p9 = (s9 - s22) * cos19_64; + p10 = (s10 - s21) * cos21_64; + p11 = (s11 - s20) * cos23_64; + p12 = (s12 - s19) * cos25_64; + p13 = (s13 - s18) * cos27_64; + p14 = (s14 - s17) * cos29_64; + p15 = (s15 - s16) * cos31_64; + + pp0 = p0 + p15; + pp1 = p1 + p14; + pp2 = p2 + p13; + pp3 = p3 + p12; + pp4 = p4 + p11; + pp5 = p5 + p10; + pp6 = p6 + p9; + pp7 = p7 + p8; + pp8 = (p0 - p15) * cos1_32; + pp9 = (p1 - p14) * cos3_32; + pp10 = (p2 - p13) * cos5_32; + pp11 = (p3 - p12) * cos7_32; + pp12 = (p4 - p11) * cos9_32; + pp13 = (p5 - p10) * cos11_32; + pp14 = (p6 - p9) * cos13_32; + pp15 = (p7 - p8) * cos15_32; + + p0 = pp0 + pp7; + p1 = pp1 + pp6; + p2 = pp2 + pp5; + p3 = pp3 + pp4; + p4 = (pp0 - pp7) * cos1_16; + p5 = (pp1 - pp6) * cos3_16; + p6 = (pp2 - pp5) * cos5_16; + p7 = (pp3 - pp4) * cos7_16; + p8 = pp8 + pp15; + p9 = pp9 + pp14; + p10 = pp10 + pp13; + p11 = pp11 + pp12; + p12 = (pp8 - pp15) * cos1_16; + p13 = (pp9 - pp14) * cos3_16; + p14 = (pp10 - pp13) * cos5_16; + p15 = (pp11 - pp12) * cos7_16; + + pp0 = p0 + p3; + pp1 = p1 + p2; + pp2 = (p0 - p3) * cos1_8; + pp3 = (p1 - p2) * cos3_8; + pp4 = p4 + p7; + pp5 = p5 + p6; + pp6 = (p4 - p7) * cos1_8; + pp7 = (p5 - p6) * cos3_8; + pp8 = p8 + p11; + pp9 = p9 + p10; + pp10 = (p8 - p11) * cos1_8; + pp11 = (p9 - p10) * cos3_8; + pp12 = p12 + p15; + pp13 = p13 + p14; + pp14 = (p12 - p15) * cos1_8; + pp15 = (p13 - p14) * cos3_8; + + p0 = pp0 + pp1; + p1 = (pp0 - pp1) * cos1_4; + p2 = pp2 + pp3; + p3 = (pp2 - pp3) * cos1_4; + p4 = pp4 + pp5; + p5 = (pp4 - pp5) * cos1_4; + p6 = pp6 + pp7; + p7 = (pp6 - pp7) * cos1_4; + p8 = pp8 + pp9; + p9 = (pp8 - pp9) * cos1_4; + p10 = pp10 + pp11; + p11 = (pp10 - pp11) * cos1_4; + p12 = pp12 + pp13; + p13 = (pp12 - pp13) * cos1_4; + p14 = pp14 + pp15; + p15 = (pp14 - pp15) * cos1_4; + + // manually doing something that a compiler should handle sucks + // coding like this is hard to read + @LOC("THIS,SynthesisFilter.NEWV") float tmp2; + new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13; + new_v7 = (new_v9 = p15 + p11 + p3) + p13; + new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; + new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14; + + new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3; + new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7; + new_v24/* 41-17 */= tmp1 - p12 - p2 - p3; + new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7); + new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0; + new_v28/* 45-17 */= tmp1 - tmp2; + + // insert V[0-15] (== new_v[0-15]) into actual v: + // float[] x2 = actual_v + actual_write_pos; + // float dest[] = actual_v; v2 + + @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos; + + v2[0 + pos] = new_v0; + v2[16 + pos] = new_v1; + v2[32 + pos] = new_v2; + v2[48 + pos] = new_v3; + v2[64 + pos] = new_v4; + v2[80 + pos] = new_v5; + v2[96 + pos] = new_v6; + v2[112 + pos] = new_v7; + v2[128 + pos] = new_v8; + v2[144 + pos] = new_v9; + v2[160 + pos] = new_v10; + v2[176 + pos] = new_v11; + v2[192 + pos] = new_v12; + v2[208 + pos] = new_v13; + v2[224 + pos] = new_v14; + v2[240 + pos] = new_v15; + + // V[16] is always 0.0: + v2[256 + pos] = 0.0f; + + // insert V[17-31] (== -new_v[15-1]) into actual v: + v2[272 + pos] = -new_v15; + v2[288 + pos] = -new_v14; + v2[304 + pos] = -new_v13; + v2[320 + pos] = -new_v12; + v2[336 + pos] = -new_v11; + v2[352 + pos] = -new_v10; + v2[368 + pos] = -new_v9; + v2[384 + pos] = -new_v8; + v2[400 + pos] = -new_v7; + v2[416 + pos] = -new_v6; + v2[432 + pos] = -new_v5; + v2[448 + pos] = -new_v4; + v2[464 + pos] = -new_v3; + v2[480 + pos] = -new_v2; + v2[496 + pos] = -new_v1; + + // insert V[32] (== -new_v[0]) into other v: + // dest = (actual_v == v1) ? v2 : v1; + + v1[0 + pos] = -new_v0; + // insert V[33-48] (== new_v[16-31]) into other v: + v1[16 + pos] = new_v16; + v1[32 + pos] = new_v17; + v1[48 + pos] = new_v18; + v1[64 + pos] = new_v19; + v1[80 + pos] = new_v20; + v1[96 + pos] = new_v21; + v1[112 + pos] = new_v22; + v1[128 + pos] = new_v23; + v1[144 + pos] = new_v24; + v1[160 + pos] = new_v25; + v1[176 + pos] = new_v26; + v1[192 + pos] = new_v27; + v1[208 + pos] = new_v28; + v1[224 + pos] = new_v29; + v1[240 + pos] = new_v30; + v1[256 + pos] = new_v31; + + // insert V[49-63] (== new_v[30-16]) into other v: + v1[272 + pos] = new_v30; + v1[288 + pos] = new_v29; + v1[304 + pos] = new_v28; + v1[320 + pos] = new_v27; + v1[336 + pos] = new_v26; + v1[352 + pos] = new_v25; + v1[368 + pos] = new_v24; + v1[384 + pos] = new_v23; + v1[400 + pos] = new_v22; + v1[416 + pos] = new_v21; + v1[432 + pos] = new_v20; + v1[448 + pos] = new_v19; + v1[464 + pos] = new_v18; + v1[480 + pos] = new_v17; + v1[496 + pos] = new_v16; + + /* + * setup PREV + */ + + prev2[0 + pos] = new_v0; + prev2[16 + pos] = new_v1; + prev2[32 + pos] = new_v2; + prev2[48 + pos] = new_v3; + prev2[64 + pos] = new_v4; + prev2[80 + pos] = new_v5; + prev2[96 + pos] = new_v6; + prev2[112 + pos] = new_v7; + prev2[128 + pos] = new_v8; + prev2[144 + pos] = new_v9; + prev2[160 + pos] = new_v10; + prev2[176 + pos] = new_v11; + prev2[192 + pos] = new_v12; + prev2[208 + pos] = new_v13; + prev2[224 + pos] = new_v14; + prev2[240 + pos] = new_v15; + + // V[16] is always 0.0: + prev2[256 + pos] = 0.0f; + + // insert V[17-31] (== -new_v[15-1]) into actual v: + prev2[272 + pos] = -new_v15; + prev2[288 + pos] = -new_v14; + prev2[304 + pos] = -new_v13; + prev2[320 + pos] = -new_v12; + prev2[336 + pos] = -new_v11; + prev2[352 + pos] = -new_v10; + prev2[368 + pos] = -new_v9; + prev2[384 + pos] = -new_v8; + prev2[400 + pos] = -new_v7; + prev2[416 + pos] = -new_v6; + prev2[432 + pos] = -new_v5; + prev2[448 + pos] = -new_v4; + prev2[464 + pos] = -new_v3; + prev2[480 + pos] = -new_v2; + prev2[496 + pos] = -new_v1; + + // insert V[32] (== -new_v[0]) into other v: + // dest = (actual_v == v1) ? v2 : v1; + + prev1[0 + pos] = -new_v0; + // insert V[33-48] (== new_v[16-31]) into other v: + prev1[16 + pos] = new_v16; + prev1[32 + pos] = new_v17; + prev1[48 + pos] = new_v18; + prev1[64 + pos] = new_v19; + prev1[80 + pos] = new_v20; + prev1[96 + pos] = new_v21; + prev1[112 + pos] = new_v22; + prev1[128 + pos] = new_v23; + prev1[144 + pos] = new_v24; + prev1[160 + pos] = new_v25; + prev1[176 + pos] = new_v26; + prev1[192 + pos] = new_v27; + prev1[208 + pos] = new_v28; + prev1[224 + pos] = new_v29; + prev1[240 + pos] = new_v30; + prev1[256 + pos] = new_v31; + + // insert V[49-63] (== new_v[30-16]) into other v: + prev1[272 + pos] = new_v30; + prev1[288 + pos] = new_v29; + prev1[304 + pos] = new_v28; + prev1[320 + pos] = new_v27; + prev1[336 + pos] = new_v26; + prev1[352 + pos] = new_v25; + prev1[368 + pos] = new_v24; + prev1[384 + pos] = new_v23; + prev1[400 + pos] = new_v22; + prev1[416 + pos] = new_v21; + prev1[432 + pos] = new_v20; + prev1[448 + pos] = new_v19; + prev1[464 + pos] = new_v18; + prev1[480 + pos] = new_v17; + prev1[496 + pos] = new_v16; + } + + private void compute_new_v1_v2() { + + @LOC("THIS,SynthesisFilter.NEWV") float new_v0 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v1 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v2 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v3 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v4 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v5 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v6 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v7 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v8 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v9 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v10 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v11 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v12 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v13 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v14 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v15 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v16 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v17 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v18 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v19 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v20 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v21 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v22 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v23 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v24 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v25 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v26 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v27 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v28 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v29 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v30 = 0.0f; + @LOC("THIS,SynthesisFilter.NEWV") float new_v31 = 0.0f; + + // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure + // 3-A.2 in ISO DIS 11172-3 + // float[] p = new float[16]; + // float[] pp = new float[16]; + + // float[] s = samples; + + @LOC("THIS,SynthesisFilter.NEWV") float s0 = samples[0]; + @LOC("THIS,SynthesisFilter.NEWV") float s1 = samples[1]; + @LOC("THIS,SynthesisFilter.NEWV") float s2 = samples[2]; + @LOC("THIS,SynthesisFilter.NEWV") float s3 = samples[3]; + @LOC("THIS,SynthesisFilter.NEWV") float s4 = samples[4]; + @LOC("THIS,SynthesisFilter.NEWV") float s5 = samples[5]; + @LOC("THIS,SynthesisFilter.NEWV") float s6 = samples[6]; + @LOC("THIS,SynthesisFilter.NEWV") float s7 = samples[7]; + @LOC("THIS,SynthesisFilter.NEWV") float s8 = samples[8]; + @LOC("THIS,SynthesisFilter.NEWV") float s9 = samples[9]; + @LOC("THIS,SynthesisFilter.NEWV") float s10 = samples[10]; + @LOC("THIS,SynthesisFilter.NEWV") float s11 = samples[11]; + @LOC("THIS,SynthesisFilter.NEWV") float s12 = samples[12]; + @LOC("THIS,SynthesisFilter.NEWV") float s13 = samples[13]; + @LOC("THIS,SynthesisFilter.NEWV") float s14 = samples[14]; + @LOC("THIS,SynthesisFilter.NEWV") float s15 = samples[15]; + @LOC("THIS,SynthesisFilter.NEWV") float s16 = samples[16]; + @LOC("THIS,SynthesisFilter.NEWV") float s17 = samples[17]; + @LOC("THIS,SynthesisFilter.NEWV") float s18 = samples[18]; + @LOC("THIS,SynthesisFilter.NEWV") float s19 = samples[19]; + @LOC("THIS,SynthesisFilter.NEWV") float s20 = samples[20]; + @LOC("THIS,SynthesisFilter.NEWV") float s21 = samples[21]; + @LOC("THIS,SynthesisFilter.NEWV") float s22 = samples[22]; + @LOC("THIS,SynthesisFilter.NEWV") float s23 = samples[23]; + @LOC("THIS,SynthesisFilter.NEWV") float s24 = samples[24]; + @LOC("THIS,SynthesisFilter.NEWV") float s25 = samples[25]; + @LOC("THIS,SynthesisFilter.NEWV") float s26 = samples[26]; + @LOC("THIS,SynthesisFilter.NEWV") float s27 = samples[27]; + @LOC("THIS,SynthesisFilter.NEWV") float s28 = samples[28]; + @LOC("THIS,SynthesisFilter.NEWV") float s29 = samples[29]; + @LOC("THIS,SynthesisFilter.NEWV") float s30 = samples[30]; + @LOC("THIS,SynthesisFilter.NEWV") float s31 = samples[31]; + + @LOC("THIS,SynthesisFilter.NEWV") float p0 = s0 + s31; + @LOC("THIS,SynthesisFilter.NEWV") float p1 = s1 + s30; + @LOC("THIS,SynthesisFilter.NEWV") float p2 = s2 + s29; + @LOC("THIS,SynthesisFilter.NEWV") float p3 = s3 + s28; + @LOC("THIS,SynthesisFilter.NEWV") float p4 = s4 + s27; + @LOC("THIS,SynthesisFilter.NEWV") float p5 = s5 + s26; + @LOC("THIS,SynthesisFilter.NEWV") float p6 = s6 + s25; + @LOC("THIS,SynthesisFilter.NEWV") float p7 = s7 + s24; + @LOC("THIS,SynthesisFilter.NEWV") float p8 = s8 + s23; + @LOC("THIS,SynthesisFilter.NEWV") float p9 = s9 + s22; + @LOC("THIS,SynthesisFilter.NEWV") float p10 = s10 + s21; + @LOC("THIS,SynthesisFilter.NEWV") float p11 = s11 + s20; + @LOC("THIS,SynthesisFilter.NEWV") float p12 = s12 + s19; + @LOC("THIS,SynthesisFilter.NEWV") float p13 = s13 + s18; + @LOC("THIS,SynthesisFilter.NEWV") float p14 = s14 + s17; + @LOC("THIS,SynthesisFilter.NEWV") float p15 = s15 + s16; + + @LOC("THIS,SynthesisFilter.NEWV") float pp0 = p0 + p15; + @LOC("THIS,SynthesisFilter.NEWV") float pp1 = p1 + p14; + @LOC("THIS,SynthesisFilter.NEWV") float pp2 = p2 + p13; + @LOC("THIS,SynthesisFilter.NEWV") float pp3 = p3 + p12; + @LOC("THIS,SynthesisFilter.NEWV") float pp4 = p4 + p11; + @LOC("THIS,SynthesisFilter.NEWV") float pp5 = p5 + p10; + @LOC("THIS,SynthesisFilter.NEWV") float pp6 = p6 + p9; + @LOC("THIS,SynthesisFilter.NEWV") float pp7 = p7 + p8; + @LOC("THIS,SynthesisFilter.NEWV") float pp8 = (p0 - p15) * cos1_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp9 = (p1 - p14) * cos3_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp10 = (p2 - p13) * cos5_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp11 = (p3 - p12) * cos7_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp12 = (p4 - p11) * cos9_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp13 = (p5 - p10) * cos11_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp14 = (p6 - p9) * cos13_32; + @LOC("THIS,SynthesisFilter.NEWV") float pp15 = (p7 - p8) * cos15_32; + + p0 = pp0 + pp7; + p1 = pp1 + pp6; + p2 = pp2 + pp5; + p3 = pp3 + pp4; + p4 = (pp0 - pp7) * cos1_16; + p5 = (pp1 - pp6) * cos3_16; + p6 = (pp2 - pp5) * cos5_16; + p7 = (pp3 - pp4) * cos7_16; + p8 = pp8 + pp15; + p9 = pp9 + pp14; + p10 = pp10 + pp13; + p11 = pp11 + pp12; + p12 = (pp8 - pp15) * cos1_16; + p13 = (pp9 - pp14) * cos3_16; + p14 = (pp10 - pp13) * cos5_16; + p15 = (pp11 - pp12) * cos7_16; + + pp0 = p0 + p3; + pp1 = p1 + p2; + pp2 = (p0 - p3) * cos1_8; + pp3 = (p1 - p2) * cos3_8; + pp4 = p4 + p7; + pp5 = p5 + p6; + pp6 = (p4 - p7) * cos1_8; + pp7 = (p5 - p6) * cos3_8; + pp8 = p8 + p11; + pp9 = p9 + p10; + pp10 = (p8 - p11) * cos1_8; + pp11 = (p9 - p10) * cos3_8; + pp12 = p12 + p15; + pp13 = p13 + p14; + pp14 = (p12 - p15) * cos1_8; + pp15 = (p13 - p14) * cos3_8; + + p0 = pp0 + pp1; + p1 = (pp0 - pp1) * cos1_4; + p2 = pp2 + pp3; + p3 = (pp2 - pp3) * cos1_4; + p4 = pp4 + pp5; + p5 = (pp4 - pp5) * cos1_4; + p6 = pp6 + pp7; + p7 = (pp6 - pp7) * cos1_4; + p8 = pp8 + pp9; + p9 = (pp8 - pp9) * cos1_4; + p10 = pp10 + pp11; + p11 = (pp10 - pp11) * cos1_4; + p12 = pp12 + pp13; + p13 = (pp12 - pp13) * cos1_4; + p14 = pp14 + pp15; + p15 = (pp14 - pp15) * cos1_4; + + // this is pretty insane coding + @LOC("THIS,SynthesisFilter.NEWV") float tmp1; + new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6; + new_v27/* 44-17 */= -p6 - p7 - p4; + new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; + new_v17/* 34-17 */= -(new_v2 = p15 + p13 + p9) - p14; + new_v21/* 38-17 */= (tmp1 = -p14 - p15 - p10 - p11) - p13; + new_v29/* 46-17 */= -p14 - p15 - p12 - p8; + new_v25/* 42-17 */= tmp1 - p12; + new_v31/* 48-17 */= -p0; + new_v0 = p1; + new_v23/* 40-17 */= -(new_v8 = p3) - p2; + + p0 = (s0 - s31) * cos1_64; + p1 = (s1 - s30) * cos3_64; + p2 = (s2 - s29) * cos5_64; + p3 = (s3 - s28) * cos7_64; + p4 = (s4 - s27) * cos9_64; + p5 = (s5 - s26) * cos11_64; + p6 = (s6 - s25) * cos13_64; + p7 = (s7 - s24) * cos15_64; + p8 = (s8 - s23) * cos17_64; + p9 = (s9 - s22) * cos19_64; + p10 = (s10 - s21) * cos21_64; + p11 = (s11 - s20) * cos23_64; + p12 = (s12 - s19) * cos25_64; + p13 = (s13 - s18) * cos27_64; + p14 = (s14 - s17) * cos29_64; + p15 = (s15 - s16) * cos31_64; + + pp0 = p0 + p15; + pp1 = p1 + p14; + pp2 = p2 + p13; + pp3 = p3 + p12; + pp4 = p4 + p11; + pp5 = p5 + p10; + pp6 = p6 + p9; + pp7 = p7 + p8; + pp8 = (p0 - p15) * cos1_32; + pp9 = (p1 - p14) * cos3_32; + pp10 = (p2 - p13) * cos5_32; + pp11 = (p3 - p12) * cos7_32; + pp12 = (p4 - p11) * cos9_32; + pp13 = (p5 - p10) * cos11_32; + pp14 = (p6 - p9) * cos13_32; + pp15 = (p7 - p8) * cos15_32; + + p0 = pp0 + pp7; + p1 = pp1 + pp6; + p2 = pp2 + pp5; + p3 = pp3 + pp4; + p4 = (pp0 - pp7) * cos1_16; + p5 = (pp1 - pp6) * cos3_16; + p6 = (pp2 - pp5) * cos5_16; + p7 = (pp3 - pp4) * cos7_16; + p8 = pp8 + pp15; + p9 = pp9 + pp14; + p10 = pp10 + pp13; + p11 = pp11 + pp12; + p12 = (pp8 - pp15) * cos1_16; + p13 = (pp9 - pp14) * cos3_16; + p14 = (pp10 - pp13) * cos5_16; + p15 = (pp11 - pp12) * cos7_16; + + pp0 = p0 + p3; + pp1 = p1 + p2; + pp2 = (p0 - p3) * cos1_8; + pp3 = (p1 - p2) * cos3_8; + pp4 = p4 + p7; + pp5 = p5 + p6; + pp6 = (p4 - p7) * cos1_8; + pp7 = (p5 - p6) * cos3_8; + pp8 = p8 + p11; + pp9 = p9 + p10; + pp10 = (p8 - p11) * cos1_8; + pp11 = (p9 - p10) * cos3_8; + pp12 = p12 + p15; + pp13 = p13 + p14; + pp14 = (p12 - p15) * cos1_8; + pp15 = (p13 - p14) * cos3_8; + + p0 = pp0 + pp1; + p1 = (pp0 - pp1) * cos1_4; + p2 = pp2 + pp3; + p3 = (pp2 - pp3) * cos1_4; + p4 = pp4 + pp5; + p5 = (pp4 - pp5) * cos1_4; + p6 = pp6 + pp7; + p7 = (pp6 - pp7) * cos1_4; + p8 = pp8 + pp9; + p9 = (pp8 - pp9) * cos1_4; + p10 = pp10 + pp11; + p11 = (pp10 - pp11) * cos1_4; + p12 = pp12 + pp13; + p13 = (pp12 - pp13) * cos1_4; + p14 = pp14 + pp15; + p15 = (pp14 - pp15) * cos1_4; + + // manually doing something that a compiler should handle sucks + // coding like this is hard to read + @LOC("THIS,SynthesisFilter.NEWV") float tmp2; + new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13; + new_v7 = (new_v9 = p15 + p11 + p3) + p13; + new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; + new_v18/* 35-17 */= -(new_v3 = tmp1 + p5 + p7) - p6 - p14; + + new_v22/* 39-17 */= (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3; + new_v20/* 37-17 */= tmp1 - p13 - p5 - p6 - p7; + new_v24/* 41-17 */= tmp1 - p12 - p2 - p3; + new_v26/* 43-17 */= tmp1 - p12 - (tmp2 = p4 + p6 + p7); + new_v30/* 47-17 */= (tmp1 = -p8 - p12 - p14 - p15) - p0; + new_v28/* 45-17 */= tmp1 - tmp2; + + // insert V[0-15] (== new_v[0-15]) into actual v: + // float[] x2 = actual_v + actual_write_pos; + // float dest[] = actual_v; actual_v=v1; + + @LOC("THIS,SynthesisFilter.NEWV") int pos = actual_write_pos; + + v1[0 + pos] = new_v0; + v1[16 + pos] = new_v1; + v1[32 + pos] = new_v2; + v1[48 + pos] = new_v3; + v1[64 + pos] = new_v4; + v1[80 + pos] = new_v5; + v1[96 + pos] = new_v6; + v1[112 + pos] = new_v7; + v1[128 + pos] = new_v8; + v1[144 + pos] = new_v9; + v1[160 + pos] = new_v10; + v1[176 + pos] = new_v11; + v1[192 + pos] = new_v12; + v1[208 + pos] = new_v13; + v1[224 + pos] = new_v14; + v1[240 + pos] = new_v15; + + // V[16] is always 0.0: + v1[256 + pos] = 0.0f; + + // insert V[17-31] (== -new_v[15-1]) into actual v: + v1[272 + pos] = -new_v15; + v1[288 + pos] = -new_v14; + v1[304 + pos] = -new_v13; + v1[320 + pos] = -new_v12; + v1[336 + pos] = -new_v11; + v1[352 + pos] = -new_v10; + v1[368 + pos] = -new_v9; + v1[384 + pos] = -new_v8; + v1[400 + pos] = -new_v7; + v1[416 + pos] = -new_v6; + v1[432 + pos] = -new_v5; + v1[448 + pos] = -new_v4; + v1[464 + pos] = -new_v3; + v1[480 + pos] = -new_v2; + v1[496 + pos] = -new_v1; + + // insert V[32] (== -new_v[0]) into other v: + // dest = (actual_v == v1) ? v2 : v1; + + v2[0 + pos] = -new_v0; + // insert V[33-48] (== new_v[16-31]) into other v: + v2[16 + pos] = new_v16; + v2[32 + pos] = new_v17; + v2[48 + pos] = new_v18; + v2[64 + pos] = new_v19; + v2[80 + pos] = new_v20; + v2[96 + pos] = new_v21; + v2[112 + pos] = new_v22; + v2[128 + pos] = new_v23; + v2[144 + pos] = new_v24; + v2[160 + pos] = new_v25; + v2[176 + pos] = new_v26; + v2[192 + pos] = new_v27; + v2[208 + pos] = new_v28; + v2[224 + pos] = new_v29; + v2[240 + pos] = new_v30; + v2[256 + pos] = new_v31; + + // insert V[49-63] (== new_v[30-16]) into other v: + v2[272 + pos] = new_v30; + v2[288 + pos] = new_v29; + v2[304 + pos] = new_v28; + v2[320 + pos] = new_v27; + v2[336 + pos] = new_v26; + v2[352 + pos] = new_v25; + v2[368 + pos] = new_v24; + v2[384 + pos] = new_v23; + v2[400 + pos] = new_v22; + v2[416 + pos] = new_v21; + v2[432 + pos] = new_v20; + v2[448 + pos] = new_v19; + v2[464 + pos] = new_v18; + v2[480 + pos] = new_v17; + v2[496 + pos] = new_v16; + + /* + * setup PREV + */ + + prev1[0 + pos] = new_v0; + prev1[16 + pos] = new_v1; + prev1[32 + pos] = new_v2; + prev1[48 + pos] = new_v3; + prev1[64 + pos] = new_v4; + prev1[80 + pos] = new_v5; + prev1[96 + pos] = new_v6; + prev1[112 + pos] = new_v7; + prev1[128 + pos] = new_v8; + prev1[144 + pos] = new_v9; + prev1[160 + pos] = new_v10; + prev1[176 + pos] = new_v11; + prev1[192 + pos] = new_v12; + prev1[208 + pos] = new_v13; + prev1[224 + pos] = new_v14; + prev1[240 + pos] = new_v15; + + // V[16] is always 0.0: + prev1[256 + pos] = 0.0f; + + // insert V[17-31] (== -new_v[15-1]) into actual v: + prev1[272 + pos] = -new_v15; + prev1[288 + pos] = -new_v14; + prev1[304 + pos] = -new_v13; + prev1[320 + pos] = -new_v12; + prev1[336 + pos] = -new_v11; + prev1[352 + pos] = -new_v10; + prev1[368 + pos] = -new_v9; + prev1[384 + pos] = -new_v8; + prev1[400 + pos] = -new_v7; + prev1[416 + pos] = -new_v6; + prev1[432 + pos] = -new_v5; + prev1[448 + pos] = -new_v4; + prev1[464 + pos] = -new_v3; + prev1[480 + pos] = -new_v2; + prev1[496 + pos] = -new_v1; + + // insert V[32] (== -new_v[0]) into other v: + // dest = (actual_v == v1) ? v2 : v1; + + prev2[0 + pos] = -new_v0; + // insert V[33-48] (== new_v[16-31]) into other v: + prev2[16 + pos] = new_v16; + prev2[32 + pos] = new_v17; + prev2[48 + pos] = new_v18; + prev2[64 + pos] = new_v19; + prev2[80 + pos] = new_v20; + prev2[96 + pos] = new_v21; + prev2[112 + pos] = new_v22; + prev2[128 + pos] = new_v23; + prev2[144 + pos] = new_v24; + prev2[160 + pos] = new_v25; + prev2[176 + pos] = new_v26; + prev2[192 + pos] = new_v27; + prev2[208 + pos] = new_v28; + prev2[224 + pos] = new_v29; + prev2[240 + pos] = new_v30; + prev2[256 + pos] = new_v31; + + // insert V[49-63] (== new_v[30-16]) into other v: + prev2[272 + pos] = new_v30; + prev2[288 + pos] = new_v29; + prev2[304 + pos] = new_v28; + prev2[320 + pos] = new_v27; + prev2[336 + pos] = new_v26; + prev2[352 + pos] = new_v25; + prev2[368 + pos] = new_v24; + prev2[384 + pos] = new_v23; + prev2[400 + pos] = new_v22; + prev2[416 + pos] = new_v21; + prev2[432 + pos] = new_v20; + prev2[448 + pos] = new_v19; + prev2[464 + pos] = new_v18; + prev2[480 + pos] = new_v17; + prev2[496 + pos] = new_v16; + } + + /** + * Compute PCM Samples. + */ + + @LOC("OUT") + private float[] _tmpOut = new float[32]; + + private void compute_pcm_samples0() { + + if (vidx == 1) { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + // final float[] dp = d16[i]; + pcm_sample = + (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1]) + + (v1[14 + dvp] * d16[i][2]) + (v1[13 + dvp] * d16[i][3]) + + (v1[12 + dvp] * d16[i][4]) + (v1[11 + dvp] * d16[i][5]) + + (v1[10 + dvp] * d16[i][6]) + (v1[9 + dvp] * d16[i][7]) + + (v1[8 + dvp] * d16[i][8]) + (v1[7 + dvp] * d16[i][9]) + + (v1[6 + dvp] * d16[i][10]) + (v1[5 + dvp] * d16[i][11]) + + (v1[4 + dvp] * d16[i][12]) + (v1[3 + dvp] * d16[i][13]) + + (v1[2 + dvp] * d16[i][14]) + (v1[1 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + // final float[] dp = d16[i]; + pcm_sample = + (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1]) + + (v2[14 + dvp] * d16[i][2]) + (v2[13 + dvp] * d16[i][3]) + + (v2[12 + dvp] * d16[i][4]) + (v2[11 + dvp] * d16[i][5]) + + (v2[10 + dvp] * d16[i][6]) + (v2[9 + dvp] * d16[i][7]) + + (v2[8 + dvp] * d16[i][8]) + (v2[7 + dvp] * d16[i][9]) + + (v2[6 + dvp] * d16[i][10]) + (v2[5 + dvp] * d16[i][11]) + + (v2[4 + dvp] * d16[i][12]) + (v2[3 + dvp] * d16[i][13]) + + (v2[2 + dvp] * d16[i][14]) + (v2[1 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples1() { + + if (vidx == 1) { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1]) + + (v1[15 + dvp] * d16[i][2]) + (v1[14 + dvp] * d16[i][3]) + + (v1[13 + dvp] * d16[i][4]) + (v1[12 + dvp] * d16[i][5]) + + (v1[11 + dvp] * d16[i][6]) + (v1[10 + dvp] * d16[i][7]) + + (v1[9 + dvp] * d16[i][8]) + (v1[8 + dvp] * d16[i][9]) + + (v1[7 + dvp] * d16[i][10]) + (v1[6 + dvp] * d16[i][11]) + + (v1[5 + dvp] * d16[i][12]) + (v1[4 + dvp] * d16[i][13]) + + (v1[3 + dvp] * d16[i][14]) + (v1[2 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1]) + + (v2[15 + dvp] * d16[i][2]) + (v2[14 + dvp] * d16[i][3]) + + (v2[13 + dvp] * d16[i][4]) + (v2[12 + dvp] * d16[i][5]) + + (v2[11 + dvp] * d16[i][6]) + (v2[10 + dvp] * d16[i][7]) + + (v2[9 + dvp] * d16[i][8]) + (v2[8 + dvp] * d16[i][9]) + + (v2[7 + dvp] * d16[i][10]) + (v2[6 + dvp] * d16[i][11]) + + (v2[5 + dvp] * d16[i][12]) + (v2[4 + dvp] * d16[i][13]) + + (v2[3 + dvp] * d16[i][14]) + (v2[2 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples2() { + + if (vidx == 1) { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1]) + + (v1[0 + dvp] * d16[i][2]) + (v1[15 + dvp] * d16[i][3]) + + (v1[14 + dvp] * d16[i][4]) + (v1[13 + dvp] * d16[i][5]) + + (v1[12 + dvp] * d16[i][6]) + (v1[11 + dvp] * d16[i][7]) + + (v1[10 + dvp] * d16[i][8]) + (v1[9 + dvp] * d16[i][9]) + + (v1[8 + dvp] * d16[i][10]) + (v1[7 + dvp] * d16[i][11]) + + (v1[6 + dvp] * d16[i][12]) + (v1[5 + dvp] * d16[i][13]) + + (v1[4 + dvp] * d16[i][14]) + (v1[3 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1]) + + (v2[0 + dvp] * d16[i][2]) + (v2[15 + dvp] * d16[i][3]) + + (v2[14 + dvp] * d16[i][4]) + (v2[13 + dvp] * d16[i][5]) + + (v2[12 + dvp] * d16[i][6]) + (v2[11 + dvp] * d16[i][7]) + + (v2[10 + dvp] * d16[i][8]) + (v2[9 + dvp] * d16[i][9]) + + (v2[8 + dvp] * d16[i][10]) + (v2[7 + dvp] * d16[i][11]) + + (v2[6 + dvp] * d16[i][12]) + (v2[5 + dvp] * d16[i][13]) + + (v2[4 + dvp] * d16[i][14]) + (v2[3 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples3() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1]) + + (v1[1 + dvp] * d16[i][2]) + (v1[0 + dvp] * d16[i][3]) + + (v1[15 + dvp] * d16[i][4]) + (v1[14 + dvp] * d16[i][5]) + + (v1[13 + dvp] * d16[i][6]) + (v1[12 + dvp] * d16[i][7]) + + (v1[11 + dvp] * d16[i][8]) + (v1[10 + dvp] * d16[i][9]) + + (v1[9 + dvp] * d16[i][10]) + (v1[8 + dvp] * d16[i][11]) + + (v1[7 + dvp] * d16[i][12]) + (v1[6 + dvp] * d16[i][13]) + + (v1[5 + dvp] * d16[i][14]) + (v1[4 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1]) + + (v2[1 + dvp] * d16[i][2]) + (v2[0 + dvp] * d16[i][3]) + + (v2[15 + dvp] * d16[i][4]) + (v2[14 + dvp] * d16[i][5]) + + (v2[13 + dvp] * d16[i][6]) + (v2[12 + dvp] * d16[i][7]) + + (v2[11 + dvp] * d16[i][8]) + (v2[10 + dvp] * d16[i][9]) + + (v2[9 + dvp] * d16[i][10]) + (v2[8 + dvp] * d16[i][11]) + + (v2[7 + dvp] * d16[i][12]) + (v2[6 + dvp] * d16[i][13]) + + (v2[5 + dvp] * d16[i][14]) + (v2[4 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples4() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1]) + + (v1[2 + dvp] * d16[i][2]) + (v1[1 + dvp] * d16[i][3]) + (v1[0 + dvp] * d16[i][4]) + + (v1[15 + dvp] * d16[i][5]) + (v1[14 + dvp] * d16[i][6]) + + (v1[13 + dvp] * d16[i][7]) + (v1[12 + dvp] * d16[i][8]) + + (v1[11 + dvp] * d16[i][9]) + (v1[10 + dvp] * d16[i][10]) + + (v1[9 + dvp] * d16[i][11]) + (v1[8 + dvp] * d16[i][12]) + + (v1[7 + dvp] * d16[i][13]) + (v1[6 + dvp] * d16[i][14]) + (v1[5 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1]) + + (v2[2 + dvp] * d16[i][2]) + (v2[1 + dvp] * d16[i][3]) + (v2[0 + dvp] * d16[i][4]) + + (v2[15 + dvp] * d16[i][5]) + (v2[14 + dvp] * d16[i][6]) + + (v2[13 + dvp] * d16[i][7]) + (v2[12 + dvp] * d16[i][8]) + + (v2[11 + dvp] * d16[i][9]) + (v2[10 + dvp] * d16[i][10]) + + (v2[9 + dvp] * d16[i][11]) + (v2[8 + dvp] * d16[i][12]) + + (v2[7 + dvp] * d16[i][13]) + (v2[6 + dvp] * d16[i][14]) + (v2[5 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples5() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1]) + + (v1[3 + dvp] * d16[i][2]) + (v1[2 + dvp] * d16[i][3]) + (v1[1 + dvp] * d16[i][4]) + + (v1[0 + dvp] * d16[i][5]) + (v1[15 + dvp] * d16[i][6]) + + (v1[14 + dvp] * d16[i][7]) + (v1[13 + dvp] * d16[i][8]) + + (v1[12 + dvp] * d16[i][9]) + (v1[11 + dvp] * d16[i][10]) + + (v1[10 + dvp] * d16[i][11]) + (v1[9 + dvp] * d16[i][12]) + + (v1[8 + dvp] * d16[i][13]) + (v1[7 + dvp] * d16[i][14]) + (v1[6 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1]) + + (v2[3 + dvp] * d16[i][2]) + (v2[2 + dvp] * d16[i][3]) + (v2[1 + dvp] * d16[i][4]) + + (v2[0 + dvp] * d16[i][5]) + (v2[15 + dvp] * d16[i][6]) + + (v2[14 + dvp] * d16[i][7]) + (v2[13 + dvp] * d16[i][8]) + + (v2[12 + dvp] * d16[i][9]) + (v2[11 + dvp] * d16[i][10]) + + (v2[10 + dvp] * d16[i][11]) + (v2[9 + dvp] * d16[i][12]) + + (v2[8 + dvp] * d16[i][13]) + (v2[7 + dvp] * d16[i][14]) + (v2[6 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples6() { + + if (vidx == 1) { + + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1]) + + (v1[4 + dvp] * d16[i][2]) + (v1[3 + dvp] * d16[i][3]) + (v1[2 + dvp] * d16[i][4]) + + (v1[1 + dvp] * d16[i][5]) + (v1[0 + dvp] * d16[i][6]) + + (v1[15 + dvp] * d16[i][7]) + (v1[14 + dvp] * d16[i][8]) + + (v1[13 + dvp] * d16[i][9]) + (v1[12 + dvp] * d16[i][10]) + + (v1[11 + dvp] * d16[i][11]) + (v1[10 + dvp] * d16[i][12]) + + (v1[9 + dvp] * d16[i][13]) + (v1[8 + dvp] * d16[i][14]) + (v1[7 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1]) + + (v2[4 + dvp] * d16[i][2]) + (v2[3 + dvp] * d16[i][3]) + (v2[2 + dvp] * d16[i][4]) + + (v2[1 + dvp] * d16[i][5]) + (v2[0 + dvp] * d16[i][6]) + + (v2[15 + dvp] * d16[i][7]) + (v2[14 + dvp] * d16[i][8]) + + (v2[13 + dvp] * d16[i][9]) + (v2[12 + dvp] * d16[i][10]) + + (v2[11 + dvp] * d16[i][11]) + (v2[10 + dvp] * d16[i][12]) + + (v2[9 + dvp] * d16[i][13]) + (v2[8 + dvp] * d16[i][14]) + (v2[7 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples7() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1]) + + (v1[5 + dvp] * d16[i][2]) + (v1[4 + dvp] * d16[i][3]) + (v1[3 + dvp] * d16[i][4]) + + (v1[2 + dvp] * d16[i][5]) + (v1[1 + dvp] * d16[i][6]) + (v1[0 + dvp] * d16[i][7]) + + (v1[15 + dvp] * d16[i][8]) + (v1[14 + dvp] * d16[i][9]) + + (v1[13 + dvp] * d16[i][10]) + (v1[12 + dvp] * d16[i][11]) + + (v1[11 + dvp] * d16[i][12]) + (v1[10 + dvp] * d16[i][13]) + + (v1[9 + dvp] * d16[i][14]) + (v1[8 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1]) + + (v2[5 + dvp] * d16[i][2]) + (v2[4 + dvp] * d16[i][3]) + (v2[3 + dvp] * d16[i][4]) + + (v2[2 + dvp] * d16[i][5]) + (v2[1 + dvp] * d16[i][6]) + (v2[0 + dvp] * d16[i][7]) + + (v2[15 + dvp] * d16[i][8]) + (v2[14 + dvp] * d16[i][9]) + + (v2[13 + dvp] * d16[i][10]) + (v2[12 + dvp] * d16[i][11]) + + (v2[11 + dvp] * d16[i][12]) + (v2[10 + dvp] * d16[i][13]) + + (v2[9 + dvp] * d16[i][14]) + (v2[8 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples8() { + + if (vidx == 1) { + + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1]) + + (v1[6 + dvp] * d16[i][2]) + (v1[5 + dvp] * d16[i][3]) + (v1[4 + dvp] * d16[i][4]) + + (v1[3 + dvp] * d16[i][5]) + (v1[2 + dvp] * d16[i][6]) + (v1[1 + dvp] * d16[i][7]) + + (v1[0 + dvp] * d16[i][8]) + (v1[15 + dvp] * d16[i][9]) + + (v1[14 + dvp] * d16[i][10]) + (v1[13 + dvp] * d16[i][11]) + + (v1[12 + dvp] * d16[i][12]) + (v1[11 + dvp] * d16[i][13]) + + (v1[10 + dvp] * d16[i][14]) + (v1[9 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1]) + + (v2[6 + dvp] * d16[i][2]) + (v2[5 + dvp] * d16[i][3]) + (v2[4 + dvp] * d16[i][4]) + + (v2[3 + dvp] * d16[i][5]) + (v2[2 + dvp] * d16[i][6]) + (v2[1 + dvp] * d16[i][7]) + + (v2[0 + dvp] * d16[i][8]) + (v2[15 + dvp] * d16[i][9]) + + (v2[14 + dvp] * d16[i][10]) + (v2[13 + dvp] * d16[i][11]) + + (v2[12 + dvp] * d16[i][12]) + (v2[11 + dvp] * d16[i][13]) + + (v2[10 + dvp] * d16[i][14]) + (v2[9 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples9() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1]) + + (v1[7 + dvp] * d16[i][2]) + (v1[6 + dvp] * d16[i][3]) + (v1[5 + dvp] * d16[i][4]) + + (v1[4 + dvp] * d16[i][5]) + (v1[3 + dvp] * d16[i][6]) + (v1[2 + dvp] * d16[i][7]) + + (v1[1 + dvp] * d16[i][8]) + (v1[0 + dvp] * d16[i][9]) + + (v1[15 + dvp] * d16[i][10]) + (v1[14 + dvp] * d16[i][11]) + + (v1[13 + dvp] * d16[i][12]) + (v1[12 + dvp] * d16[i][13]) + + (v1[11 + dvp] * d16[i][14]) + (v1[10 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1]) + + (v2[7 + dvp] * d16[i][2]) + (v2[6 + dvp] * d16[i][3]) + (v2[5 + dvp] * d16[i][4]) + + (v2[4 + dvp] * d16[i][5]) + (v2[3 + dvp] * d16[i][6]) + (v2[2 + dvp] * d16[i][7]) + + (v2[1 + dvp] * d16[i][8]) + (v2[0 + dvp] * d16[i][9]) + + (v2[15 + dvp] * d16[i][10]) + (v2[14 + dvp] * d16[i][11]) + + (v2[13 + dvp] * d16[i][12]) + (v2[12 + dvp] * d16[i][13]) + + (v2[11 + dvp] * d16[i][14]) + (v2[10 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples10() { + if (vidx == 1) { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1]) + + (v1[8 + dvp] * d16[i][2]) + (v1[7 + dvp] * d16[i][3]) + (v1[6 + dvp] * d16[i][4]) + + (v1[5 + dvp] * d16[i][5]) + (v1[4 + dvp] * d16[i][6]) + (v1[3 + dvp] * d16[i][7]) + + (v1[2 + dvp] * d16[i][8]) + (v1[1 + dvp] * d16[i][9]) + + (v1[0 + dvp] * d16[i][10]) + (v1[15 + dvp] * d16[i][11]) + + (v1[14 + dvp] * d16[i][12]) + (v1[13 + dvp] * d16[i][13]) + + (v1[12 + dvp] * d16[i][14]) + (v1[11 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1]) + + (v2[8 + dvp] * d16[i][2]) + (v2[7 + dvp] * d16[i][3]) + (v2[6 + dvp] * d16[i][4]) + + (v2[5 + dvp] * d16[i][5]) + (v2[4 + dvp] * d16[i][6]) + (v2[3 + dvp] * d16[i][7]) + + (v2[2 + dvp] * d16[i][8]) + (v2[1 + dvp] * d16[i][9]) + + (v2[0 + dvp] * d16[i][10]) + (v2[15 + dvp] * d16[i][11]) + + (v2[14 + dvp] * d16[i][12]) + (v2[13 + dvp] * d16[i][13]) + + (v2[12 + dvp] * d16[i][14]) + (v2[11 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples11() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1]) + + (v1[9 + dvp] * d16[i][2]) + (v1[8 + dvp] * d16[i][3]) + (v1[7 + dvp] * d16[i][4]) + + (v1[6 + dvp] * d16[i][5]) + (v1[5 + dvp] * d16[i][6]) + (v1[4 + dvp] * d16[i][7]) + + (v1[3 + dvp] * d16[i][8]) + (v1[2 + dvp] * d16[i][9]) + + (v1[1 + dvp] * d16[i][10]) + (v1[0 + dvp] * d16[i][11]) + + (v1[15 + dvp] * d16[i][12]) + (v1[14 + dvp] * d16[i][13]) + + (v1[13 + dvp] * d16[i][14]) + (v1[12 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1]) + + (v2[9 + dvp] * d16[i][2]) + (v2[8 + dvp] * d16[i][3]) + (v2[7 + dvp] * d16[i][4]) + + (v2[6 + dvp] * d16[i][5]) + (v2[5 + dvp] * d16[i][6]) + (v2[4 + dvp] * d16[i][7]) + + (v2[3 + dvp] * d16[i][8]) + (v2[2 + dvp] * d16[i][9]) + + (v2[1 + dvp] * d16[i][10]) + (v2[0 + dvp] * d16[i][11]) + + (v2[15 + dvp] * d16[i][12]) + (v2[14 + dvp] * d16[i][13]) + + (v2[13 + dvp] * d16[i][14]) + (v2[12 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples12() { + + if (vidx == 1) { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1]) + + (v1[10 + dvp] * d16[i][2]) + (v1[9 + dvp] * d16[i][3]) + + (v1[8 + dvp] * d16[i][4]) + (v1[7 + dvp] * d16[i][5]) + (v1[6 + dvp] * d16[i][6]) + + (v1[5 + dvp] * d16[i][7]) + (v1[4 + dvp] * d16[i][8]) + (v1[3 + dvp] * d16[i][9]) + + (v1[2 + dvp] * d16[i][10]) + (v1[1 + dvp] * d16[i][11]) + + (v1[0 + dvp] * d16[i][12]) + (v1[15 + dvp] * d16[i][13]) + + (v1[14 + dvp] * d16[i][14]) + (v1[13 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1]) + + (v2[10 + dvp] * d16[i][2]) + (v2[9 + dvp] * d16[i][3]) + + (v2[8 + dvp] * d16[i][4]) + (v2[7 + dvp] * d16[i][5]) + (v2[6 + dvp] * d16[i][6]) + + (v2[5 + dvp] * d16[i][7]) + (v2[4 + dvp] * d16[i][8]) + (v2[3 + dvp] * d16[i][9]) + + (v2[2 + dvp] * d16[i][10]) + (v2[1 + dvp] * d16[i][11]) + + (v2[0 + dvp] * d16[i][12]) + (v2[15 + dvp] * d16[i][13]) + + (v2[14 + dvp] * d16[i][14]) + (v2[13 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples13() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1]) + + (v1[11 + dvp] * d16[i][2]) + (v1[10 + dvp] * d16[i][3]) + + (v1[9 + dvp] * d16[i][4]) + (v1[8 + dvp] * d16[i][5]) + (v1[7 + dvp] * d16[i][6]) + + (v1[6 + dvp] * d16[i][7]) + (v1[5 + dvp] * d16[i][8]) + (v1[4 + dvp] * d16[i][9]) + + (v1[3 + dvp] * d16[i][10]) + (v1[2 + dvp] * d16[i][11]) + + (v1[1 + dvp] * d16[i][12]) + (v1[0 + dvp] * d16[i][13]) + + (v1[15 + dvp] * d16[i][14]) + (v1[14 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1]) + + (v2[11 + dvp] * d16[i][2]) + (v2[10 + dvp] * d16[i][3]) + + (v2[9 + dvp] * d16[i][4]) + (v2[8 + dvp] * d16[i][5]) + (v2[7 + dvp] * d16[i][6]) + + (v2[6 + dvp] * d16[i][7]) + (v2[5 + dvp] * d16[i][8]) + (v2[4 + dvp] * d16[i][9]) + + (v2[3 + dvp] * d16[i][10]) + (v2[2 + dvp] * d16[i][11]) + + (v2[1 + dvp] * d16[i][12]) + (v2[0 + dvp] * d16[i][13]) + + (v2[15 + dvp] * d16[i][14]) + (v2[14 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples14() { + + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1]) + + (v1[12 + dvp] * d16[i][2]) + (v1[11 + dvp] * d16[i][3]) + + (v1[10 + dvp] * d16[i][4]) + (v1[9 + dvp] * d16[i][5]) + + (v1[8 + dvp] * d16[i][6]) + (v1[7 + dvp] * d16[i][7]) + (v1[6 + dvp] * d16[i][8]) + + (v1[5 + dvp] * d16[i][9]) + (v1[4 + dvp] * d16[i][10]) + + (v1[3 + dvp] * d16[i][11]) + (v1[2 + dvp] * d16[i][12]) + + (v1[1 + dvp] * d16[i][13]) + (v1[0 + dvp] * d16[i][14]) + (v1[15 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + // final float[] dp = d16[i]; + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + + pcm_sample = + (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1]) + + (v2[12 + dvp] * d16[i][2]) + (v2[11 + dvp] * d16[i][3]) + + (v2[10 + dvp] * d16[i][4]) + (v2[9 + dvp] * d16[i][5]) + + (v2[8 + dvp] * d16[i][6]) + (v2[7 + dvp] * d16[i][7]) + (v2[6 + dvp] * d16[i][8]) + + (v2[5 + dvp] * d16[i][9]) + (v2[4 + dvp] * d16[i][10]) + + (v2[3 + dvp] * d16[i][11]) + (v2[2 + dvp] * d16[i][12]) + + (v2[1 + dvp] * d16[i][13]) + (v2[0 + dvp] * d16[i][14]) + (v2[15 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples15() { + if (vidx == 1) { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + // final float d16[i][] = d16[i]; + pcm_sample = + (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1]) + + (v1[13 + dvp] * d16[i][2]) + (v1[12 + dvp] * d16[i][3]) + + (v1[11 + dvp] * d16[i][4]) + (v1[10 + dvp] * d16[i][5]) + + (v1[9 + dvp] * d16[i][6]) + (v1[8 + dvp] * d16[i][7]) + (v1[7 + dvp] * d16[i][8]) + + (v1[6 + dvp] * d16[i][9]) + (v1[5 + dvp] * d16[i][10]) + + (v1[4 + dvp] * d16[i][11]) + (v1[3 + dvp] * d16[i][12]) + + (v1[2 + dvp] * d16[i][13]) + (v1[1 + dvp] * d16[i][14]) + (v1[0 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + dvp += 16; + } // for + } else { + // final float[] vp = actual_v; + + // int inc = v_inc; + // final float[] tmpOut = _tmpOut; + @LOC("THIS,SynthesisFilter.NEWV") int dvp = 0; + + // fat chance of having this loop unroll + for (@LOC("THIS,SynthesisFilter.NEWV") int i = 0; i < 32; i++) { + @LOC("THIS,SynthesisFilter.V2") float pcm_sample; + // final float d16[i][] = d16[i]; + pcm_sample = + (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1]) + + (v2[13 + dvp] * d16[i][2]) + (v2[12 + dvp] * d16[i][3]) + + (v2[11 + dvp] * d16[i][4]) + (v2[10 + dvp] * d16[i][5]) + + (v2[9 + dvp] * d16[i][6]) + (v2[8 + dvp] * d16[i][7]) + (v2[7 + dvp] * d16[i][8]) + + (v2[6 + dvp] * d16[i][9]) + (v2[5 + dvp] * d16[i][10]) + + (v2[4 + dvp] * d16[i][11]) + (v2[3 + dvp] * d16[i][12]) + + (v2[2 + dvp] * d16[i][13]) + (v2[1 + dvp] * d16[i][14]) + (v2[0 + dvp] * d16[i][15])) * scalefactor); + + _tmpOut[i] = pcm_sample; + dvp += 16; + } // for + } + + } + + private void compute_pcm_samples() { + + switch (actual_write_pos) { + case 0: + compute_pcm_samples0(); + break; + case 1: + compute_pcm_samples1(); + break; + case 2: + compute_pcm_samples2(); + break; + case 3: + compute_pcm_samples3(); + break; + case 4: + compute_pcm_samples4(); + break; + case 5: + compute_pcm_samples5(); + break; + case 6: + compute_pcm_samples6(); + break; + case 7: + compute_pcm_samples7(); + break; + case 8: + compute_pcm_samples8(); + break; + case 9: + compute_pcm_samples9(); + break; + case 10: + compute_pcm_samples10(); + break; + case 11: + compute_pcm_samples11(); + break; + case 12: + compute_pcm_samples12(); + break; + case 13: + compute_pcm_samples13(); + break; + case 14: + compute_pcm_samples14(); + break; + case 15: + compute_pcm_samples15(); + break; + } + + // if (buffer != null) { + // buffer.appendSamples(channel, _tmpOut); + // } + SampleBufferWrapper.appendSamples(channel, _tmpOut); + + /* + * // MDM: I was considering putting in quality control for // low-spec + * CPUs, but the performance gain (about 10-15%) // did not justify the + * considerable drop in audio quality. switch (inc) { case 16: + * buffer.appendSamples(channel, tmpOut); break; case 32: for (int i=0; + * i<16; i++) { buffer.append(channel, (short)tmpOut[i]); + * buffer.append(channel, (short)tmpOut[i]); } break; case 64: for (int i=0; + * i<8; i++) { buffer.append(channel, (short)tmpOut[i]); + * buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, + * (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); } break; + * + * } + */ + } + + @LATTICE("THISblockSize. + */ + static private float[][] splitArray(final float[] array, final int blockSize) { + int size = array.length / blockSize; + float[][] split = new float[size][]; + for (int i = 0; i < size; i++) { + split[i] = subArray(array, i * blockSize, blockSize); + } + return split; + } + + /** + * Returns a subarray of an existing array. + * + * @param array + * The array to retrieve a subarra from. + * @param offs + * The offset in the array that corresponds to the first index of the + * subarray. + * @param len + * The number of indeces in the subarray. + * @return The subarray, which may be of length 0. + */ + static private float[] subArray(final float[] array, final int offs, int len) { + if (offs + len > array.length) { + len = array.length - offs; + } + + if (len < 0) + len = 0; + + float[] subarray = new float[len]; + for (int i = 0; i < len; i++) { + subarray[i] = array[offs + i]; + } + + return subarray; + } + + // The original data for d[]. This data is loaded from a file + // to reduce the overall package size and to improve performance. + + static final float d[] = { 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f, + 0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, 1.144989014f, 0.572036743f, + 0.100311279f, 0.078628540f, 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f, + -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, 0.030517578f, -0.084182739f, + 0.090927124f, -0.600219727f, 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f, + 0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, -0.000015259f, -0.000534058f, + 0.003387451f, -0.008865356f, 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f, + 1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, 0.031738281f, 0.005294800f, + 0.003082275f, 0.000366211f, -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f, + 0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, 1.138763428f, 0.487472534f, + 0.123474121f, 0.061996460f, 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f, + -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, 0.027801514f, -0.100540161f, + 0.057617188f, -0.683914185f, 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f, + 0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, -0.000015259f, -0.000686646f, + 0.003479004f, -0.011886597f, 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f, + 1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, 0.031661987f, 0.003005981f, + 0.002792358f, 0.000259399f, -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f, + 0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, 1.120223999f, 0.404083252f, + 0.139450073f, 0.045837402f, 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f, + -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, 0.023422241f, -0.115921021f, + 0.016510010f, -0.765029907f, 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f, + 0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, -0.000030518f, -0.000885010f, + 0.003417969f, -0.015121460f, 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f, + 1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, 0.030532837f, 0.001098633f, + 0.002456665f, 0.000198364f, -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f, + 0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, 1.089782715f, 0.323318481f, + 0.148773193f, 0.030609131f, 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f, + -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, 0.017257690f, -0.129562378f, + -0.032379150f, -0.841949463f, 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f, + 0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, -0.000045776f, -0.001113892f, + 0.003173828f, -0.018463135f, 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f, + 1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, 0.028533936f, -0.000442505f, + 0.002120972f, 0.000137329f, -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f, + 0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, 1.048156738f, 0.246505737f, + 0.152069092f, 0.016708374f, 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f, + -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f, -0.140670776f, + -0.088775635f, -0.913055420f, 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f, + 0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, -0.000061035f, -0.001388550f, + 0.002700806f, -0.021789551f, 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f, + 1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, 0.025909424f, -0.001617432f, + 0.001785278f, 0.000106812f, -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f, + 0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, 0.996246338f, 0.174789429f, + 0.150115967f, 0.004394531f, 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f, + -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, -0.000686646f, -0.148422241f, + -0.152206421f, -0.976852417f, 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f, + 0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, -0.000091553f, -0.001693726f, + 0.001937866f, -0.024932861f, -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f, + 0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, 0.022857666f, -0.002487183f, + 0.001480103f, 0.000076294f, -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f, + -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, 0.935195923f, 0.109161377f, + 0.143676758f, -0.006134033f, 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f, + -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, -0.012420654f, -0.151962280f, + -0.221984863f, -1.031936646f, 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f, + 0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, -0.000122070f, -0.002014160f, + 0.000869751f, -0.027725220f, -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f, + 0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, 0.019577026f, -0.003051758f, + 0.001205444f, 0.000045776f, -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f, + -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, 0.866363525f, 0.050354004f, + 0.133590698f, -0.014801025f, 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f, + -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, -0.025817871f, -0.150497437f, + -0.297210693f, -1.077117920f, 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f, + 0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, -0.000167847f, -0.002349854f, + -0.000549316f, -0.029937744f, -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f, + 0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, 0.016235352f, -0.003372192f, + 0.000961304f, 0.000030518f, -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f, + -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, 0.791213989f, -0.001068115f, + 0.120697021f, -0.021575928f, 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f, + -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, -0.040634155f, -0.143264771f, + -0.376800537f, -1.111373901f, 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f, + 0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, -0.000244141f, -0.002685547f, + -0.002334595f, -0.031387329f, -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f, + 0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, 0.012939453f, -0.003479004f, + 0.000747681f, 0.000015259f, -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f, + -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, 0.711318970f, -0.044784546f, + 0.105819702f, -0.026535034f, 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f, + -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, -0.056533813f, -0.129577637f, + -0.459472656f, -1.133926392f, 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f, + 0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, -0.000320435f, -0.002990723f, + -0.004486084f, -0.031845093f, -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f, + 0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, 0.009841919f, -0.003433228f, + 0.000579834f, 0.000015259f, -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f, + -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, 0.628295898f, -0.080688477f, + 0.089706421f, -0.029785156f, 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f, + -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, -0.073059082f, -0.108856201f, + -0.543823242f, -1.144287109f, 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f, + 0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f }; + +} diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/huffcodetab.java b/Robust/src/Benchmarks/SSJava/MP3Decoder/huffcodetab.java index 0b8ba334..a0266ace 100644 --- a/Robust/src/Benchmarks/SSJava/MP3Decoder/huffcodetab.java +++ b/Robust/src/Benchmarks/SSJava/MP3Decoder/huffcodetab.java @@ -1,664 +1,664 @@ -/* - * 11/19/04 1.0 moved to LGPL. - * 16/11/99 Renamed class, added javadoc, and changed table - * name from String to 3 chars. mdm@techie.com - * 02/15/99 Java Conversion by E.B, javalayer@javazoom.net - * - * 04/19/97 : Adapted from the ISO MPEG Audio Subgroup Software Simulation - * Group's public c source for its MPEG audio decoder. Miscellaneous - * changes by Jeff Tsay (ctsay@pasteur.eecs.berkeley.edu). - *----------------------------------------------------------------------- - * Copyright (c) 1991 MPEG/audio software simulation group, All Rights Reserved - * MPEG/audio coding/decoding software, work in progress - * NOT for public distribution until verified and approved by the - * MPEG/audio committee. For further information, please contact - * Davis Pan, 508-493-2241, e-mail: pan@3d.enet.dec.com - * - * VERSION 4.1 - * changes made since last update: - * date programmers comment - * 27.2.92 F.O.Witte (ITT Intermetall) - * 8/24/93 M. Iwadare Changed for 1 pass decoding. - * 7/14/94 J. Koller useless 'typedef' before huffcodetab removed - *----------------------------------------------------------------------- - * 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. - *---------------------------------------------------------------------- - */ - -/** - * Class to implements Huffman decoder. - */ -@LATTICE("FIELD>> 4; - y[0] = ht[htIdx].val[point][1] & 0xf; - error = 0; - break; - } - - // hget1bit() is called thousands of times, and so needs to be - // ultra fast. - /* - * if (bitIndex==bitsAvailable) { bitsAvailable = br.readBits(bits, 32); - * bitIndex = 0; } - */ - // if (bits[bitIndex++]!=0) - if (br.hget1bit() != 0) { - TERMINATE: while (ht[htIdx].val[point][1] >= MXOFF) - point += ht[htIdx].val[point][1]; - point += ht[htIdx].val[point][1]; - } else { - TERMINATE: while (ht[htIdx].val[point][0] >= MXOFF) - point += ht[htIdx].val[point][0]; - point += ht[htIdx].val[point][0]; - } - level >>>= 1; - // MDM: ht[0] is always 0; - } while ((level != 0) || (point < 0 /* ht[0].treelen */)); - - // put back any bits not consumed - /* - * int unread = (bitsAvailable-bitIndex); if (unread>0) - * br.rewindNbits(unread); - */ - /* Process sign encodings for quadruples tables. */ - // System.out.println(ht[htIdx].tablename); - if (ht[htIdx].tablename0 == '3' && (ht[htIdx].tablename1 == '2' || ht[htIdx].tablename1 == '3')) { - v[0] = (y[0] >> 3) & 1; - w[0] = (y[0] >> 2) & 1; - x[0] = (y[0] >> 1) & 1; - y[0] = y[0] & 1; - - /* - * v, w, x and y are reversed in the bitstream. switch them around to make - * test bistream work. - */ - - if (v[0] != 0) - if (br.hget1bit() != 0) - v[0] = -v[0]; - if (w[0] != 0) - if (br.hget1bit() != 0) - w[0] = -w[0]; - if (x[0] != 0) - if (br.hget1bit() != 0) - x[0] = -x[0]; - if (y[0] != 0) - if (br.hget1bit() != 0) - y[0] = -y[0]; - } else { - // Process sign and escape encodings for dual tables. - // x and y are reversed in the test bitstream. - // Reverse x and y here to make test bitstream work. - - if (ht[htIdx].linbits != 0) - if ((ht[htIdx].xlen - 1) == x[0]) - x[0] += br.hgetbits(ht[htIdx].linbits); - if (x[0] != 0) - if (br.hget1bit() != 0) - x[0] = -x[0]; - if (ht[htIdx].linbits != 0) - if ((ht[htIdx].ylen - 1) == y[0]) - y[0] += br.hgetbits(ht[htIdx].linbits); - if (y[0] != 0) - if (br.hget1bit() != 0) - y[0] = -y[0]; - } - return error; - } - - public static void inithuff() { - - if (ht != null) - return; - - ht = new huffcodetab[HTN]; - ht[0] = new huffcodetab("0 ", 0, 0, 0, 0, -1, null, null, ValTab0, 0); - ht[1] = new huffcodetab("1 ", 2, 2, 0, 0, -1, null, null, ValTab1, 7); - ht[2] = new huffcodetab("2 ", 3, 3, 0, 0, -1, null, null, ValTab2, 17); - ht[3] = new huffcodetab("3 ", 3, 3, 0, 0, -1, null, null, ValTab3, 17); - ht[4] = new huffcodetab("4 ", 0, 0, 0, 0, -1, null, null, ValTab4, 0); - ht[5] = new huffcodetab("5 ", 4, 4, 0, 0, -1, null, null, ValTab5, 31); - ht[6] = new huffcodetab("6 ", 4, 4, 0, 0, -1, null, null, ValTab6, 31); - ht[7] = new huffcodetab("7 ", 6, 6, 0, 0, -1, null, null, ValTab7, 71); - ht[8] = new huffcodetab("8 ", 6, 6, 0, 0, -1, null, null, ValTab8, 71); - ht[9] = new huffcodetab("9 ", 6, 6, 0, 0, -1, null, null, ValTab9, 71); - ht[10] = new huffcodetab("10 ", 8, 8, 0, 0, -1, null, null, ValTab10, 127); - ht[11] = new huffcodetab("11 ", 8, 8, 0, 0, -1, null, null, ValTab11, 127); - ht[12] = new huffcodetab("12 ", 8, 8, 0, 0, -1, null, null, ValTab12, 127); - ht[13] = new huffcodetab("13 ", 16, 16, 0, 0, -1, null, null, ValTab13, 511); - ht[14] = new huffcodetab("14 ", 0, 0, 0, 0, -1, null, null, ValTab14, 0); - ht[15] = new huffcodetab("15 ", 16, 16, 0, 0, -1, null, null, ValTab15, 511); - ht[16] = new huffcodetab("16 ", 16, 16, 1, 1, -1, null, null, ValTab16, 511); - ht[17] = new huffcodetab("17 ", 16, 16, 2, 3, 16, null, null, ValTab16, 511); - ht[18] = new huffcodetab("18 ", 16, 16, 3, 7, 16, null, null, ValTab16, 511); - ht[19] = new huffcodetab("19 ", 16, 16, 4, 15, 16, null, null, ValTab16, 511); - ht[20] = new huffcodetab("20 ", 16, 16, 6, 63, 16, null, null, ValTab16, 511); - ht[21] = new huffcodetab("21 ", 16, 16, 8, 255, 16, null, null, ValTab16, 511); - ht[22] = new huffcodetab("22 ", 16, 16, 10, 1023, 16, null, null, ValTab16, 511); - ht[23] = new huffcodetab("23 ", 16, 16, 13, 8191, 16, null, null, ValTab16, 511); - ht[24] = new huffcodetab("24 ", 16, 16, 4, 15, -1, null, null, ValTab24, 512); - ht[25] = new huffcodetab("25 ", 16, 16, 5, 31, 24, null, null, ValTab24, 512); - ht[26] = new huffcodetab("26 ", 16, 16, 6, 63, 24, null, null, ValTab24, 512); - ht[27] = new huffcodetab("27 ", 16, 16, 7, 127, 24, null, null, ValTab24, 512); - ht[28] = new huffcodetab("28 ", 16, 16, 8, 255, 24, null, null, ValTab24, 512); - ht[29] = new huffcodetab("29 ", 16, 16, 9, 511, 24, null, null, ValTab24, 512); - ht[30] = new huffcodetab("30 ", 16, 16, 11, 2047, 24, null, null, ValTab24, 512); - ht[31] = new huffcodetab("31 ", 16, 16, 13, 8191, 24, null, null, ValTab24, 512); - ht[32] = new huffcodetab("32 ", 1, 16, 0, 0, -1, null, null, ValTab32, 31); - ht[33] = new huffcodetab("33 ", 1, 16, 0, 0, -1, null, null, ValTab33, 31); - } -} +/* + * 11/19/04 1.0 moved to LGPL. + * 16/11/99 Renamed class, added javadoc, and changed table + * name from String to 3 chars. mdm@techie.com + * 02/15/99 Java Conversion by E.B, javalayer@javazoom.net + * + * 04/19/97 : Adapted from the ISO MPEG Audio Subgroup Software Simulation + * Group's public c source for its MPEG audio decoder. Miscellaneous + * changes by Jeff Tsay (ctsay@pasteur.eecs.berkeley.edu). + *----------------------------------------------------------------------- + * Copyright (c) 1991 MPEG/audio software simulation group, All Rights Reserved + * MPEG/audio coding/decoding software, work in progress + * NOT for public distribution until verified and approved by the + * MPEG/audio committee. For further information, please contact + * Davis Pan, 508-493-2241, e-mail: pan@3d.enet.dec.com + * + * VERSION 4.1 + * changes made since last update: + * date programmers comment + * 27.2.92 F.O.Witte (ITT Intermetall) + * 8/24/93 M. Iwadare Changed for 1 pass decoding. + * 7/14/94 J. Koller useless 'typedef' before huffcodetab removed + *----------------------------------------------------------------------- + * 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. + *---------------------------------------------------------------------- + */ + +/** + * Class to implements Huffman decoder. + */ +@LATTICE("FIELD>> 4; + y[0] = ht[htIdx].val[point][1] & 0xf; + error = 0; + break; + } + + // hget1bit() is called thousands of times, and so needs to be + // ultra fast. + /* + * if (bitIndex==bitsAvailable) { bitsAvailable = br.readBits(bits, 32); + * bitIndex = 0; } + */ + // if (bits[bitIndex++]!=0) + if (br.hget1bit() != 0) { + TERMINATE: while (ht[htIdx].val[point][1] >= MXOFF) + point += ht[htIdx].val[point][1]; + point += ht[htIdx].val[point][1]; + } else { + TERMINATE: while (ht[htIdx].val[point][0] >= MXOFF) + point += ht[htIdx].val[point][0]; + point += ht[htIdx].val[point][0]; + } + level >>>= 1; + // MDM: ht[0] is always 0; + } while ((level != 0) || (point < 0 /* ht[0].treelen */)); + + // put back any bits not consumed + /* + * int unread = (bitsAvailable-bitIndex); if (unread>0) + * br.rewindNbits(unread); + */ + /* Process sign encodings for quadruples tables. */ + // System.out.println(ht[htIdx].tablename); + if (ht[htIdx].tablename0 == '3' && (ht[htIdx].tablename1 == '2' || ht[htIdx].tablename1 == '3')) { + v[0] = (y[0] >> 3) & 1; + w[0] = (y[0] >> 2) & 1; + x[0] = (y[0] >> 1) & 1; + y[0] = y[0] & 1; + + /* + * v, w, x and y are reversed in the bitstream. switch them around to make + * test bistream work. + */ + + if (v[0] != 0) + if (br.hget1bit() != 0) + v[0] = -v[0]; + if (w[0] != 0) + if (br.hget1bit() != 0) + w[0] = -w[0]; + if (x[0] != 0) + if (br.hget1bit() != 0) + x[0] = -x[0]; + if (y[0] != 0) + if (br.hget1bit() != 0) + y[0] = -y[0]; + } else { + // Process sign and escape encodings for dual tables. + // x and y are reversed in the test bitstream. + // Reverse x and y here to make test bitstream work. + + if (ht[htIdx].linbits != 0) + if ((ht[htIdx].xlen - 1) == x[0]) + x[0] += br.hgetbits(ht[htIdx].linbits); + if (x[0] != 0) + if (br.hget1bit() != 0) + x[0] = -x[0]; + if (ht[htIdx].linbits != 0) + if ((ht[htIdx].ylen - 1) == y[0]) + y[0] += br.hgetbits(ht[htIdx].linbits); + if (y[0] != 0) + if (br.hget1bit() != 0) + y[0] = -y[0]; + } + return error; + } + + public static void inithuff() { + + if (ht != null) + return; + + ht = new huffcodetab[HTN]; + ht[0] = new huffcodetab("0 ", 0, 0, 0, 0, -1, null, null, ValTab0, 0); + ht[1] = new huffcodetab("1 ", 2, 2, 0, 0, -1, null, null, ValTab1, 7); + ht[2] = new huffcodetab("2 ", 3, 3, 0, 0, -1, null, null, ValTab2, 17); + ht[3] = new huffcodetab("3 ", 3, 3, 0, 0, -1, null, null, ValTab3, 17); + ht[4] = new huffcodetab("4 ", 0, 0, 0, 0, -1, null, null, ValTab4, 0); + ht[5] = new huffcodetab("5 ", 4, 4, 0, 0, -1, null, null, ValTab5, 31); + ht[6] = new huffcodetab("6 ", 4, 4, 0, 0, -1, null, null, ValTab6, 31); + ht[7] = new huffcodetab("7 ", 6, 6, 0, 0, -1, null, null, ValTab7, 71); + ht[8] = new huffcodetab("8 ", 6, 6, 0, 0, -1, null, null, ValTab8, 71); + ht[9] = new huffcodetab("9 ", 6, 6, 0, 0, -1, null, null, ValTab9, 71); + ht[10] = new huffcodetab("10 ", 8, 8, 0, 0, -1, null, null, ValTab10, 127); + ht[11] = new huffcodetab("11 ", 8, 8, 0, 0, -1, null, null, ValTab11, 127); + ht[12] = new huffcodetab("12 ", 8, 8, 0, 0, -1, null, null, ValTab12, 127); + ht[13] = new huffcodetab("13 ", 16, 16, 0, 0, -1, null, null, ValTab13, 511); + ht[14] = new huffcodetab("14 ", 0, 0, 0, 0, -1, null, null, ValTab14, 0); + ht[15] = new huffcodetab("15 ", 16, 16, 0, 0, -1, null, null, ValTab15, 511); + ht[16] = new huffcodetab("16 ", 16, 16, 1, 1, -1, null, null, ValTab16, 511); + ht[17] = new huffcodetab("17 ", 16, 16, 2, 3, 16, null, null, ValTab16, 511); + ht[18] = new huffcodetab("18 ", 16, 16, 3, 7, 16, null, null, ValTab16, 511); + ht[19] = new huffcodetab("19 ", 16, 16, 4, 15, 16, null, null, ValTab16, 511); + ht[20] = new huffcodetab("20 ", 16, 16, 6, 63, 16, null, null, ValTab16, 511); + ht[21] = new huffcodetab("21 ", 16, 16, 8, 255, 16, null, null, ValTab16, 511); + ht[22] = new huffcodetab("22 ", 16, 16, 10, 1023, 16, null, null, ValTab16, 511); + ht[23] = new huffcodetab("23 ", 16, 16, 13, 8191, 16, null, null, ValTab16, 511); + ht[24] = new huffcodetab("24 ", 16, 16, 4, 15, -1, null, null, ValTab24, 512); + ht[25] = new huffcodetab("25 ", 16, 16, 5, 31, 24, null, null, ValTab24, 512); + ht[26] = new huffcodetab("26 ", 16, 16, 6, 63, 24, null, null, ValTab24, 512); + ht[27] = new huffcodetab("27 ", 16, 16, 7, 127, 24, null, null, ValTab24, 512); + ht[28] = new huffcodetab("28 ", 16, 16, 8, 255, 24, null, null, ValTab24, 512); + ht[29] = new huffcodetab("29 ", 16, 16, 9, 511, 24, null, null, ValTab24, 512); + ht[30] = new huffcodetab("30 ", 16, 16, 11, 2047, 24, null, null, ValTab24, 512); + ht[31] = new huffcodetab("31 ", 16, 16, 13, 8191, 24, null, null, ValTab24, 512); + ht[32] = new huffcodetab("32 ", 1, 16, 0, 0, -1, null, null, ValTab32, 31); + ht[33] = new huffcodetab("33 ", 1, 16, 0, 0, -1, null, null, ValTab33, 31); + } +} -- 2.34.1