Package net.sourceforge.jaad.aac.tools

Source Code of net.sourceforge.jaad.aac.tools.IS

/*
*  Copyright (C) 2011 in-somnia
*
*  This file is part of JAAD.
*
*  JAAD is free software; you can redistribute it and/or modify it
*  under the terms of the GNU Lesser General Public License as
*  published by the Free Software Foundation; either version 3 of the
*  License, or (at your option) any later version.
*
*  JAAD 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 Lesser General
*  Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public
*  License along with this library.
*  If not, see <http://www.gnu.org/licenses/>.
*/
package net.sourceforge.jaad.aac.tools;

import net.sourceforge.jaad.aac.huffman.HCB;
import net.sourceforge.jaad.aac.syntax.CPE;
import net.sourceforge.jaad.aac.syntax.Constants;
import net.sourceforge.jaad.aac.syntax.ICSInfo;
import net.sourceforge.jaad.aac.syntax.ICStream;

/**
* Intensity stereo
* @author in-somnia
*/
public final class IS implements Constants, ISScaleTable, HCB {

  private IS() {
  }

  public static void process(CPE cpe, float[] specL, float[] specR) {
    final ICStream ics = cpe.getRightChannel();
    final ICSInfo info = ics.getInfo();
    final int[] offsets = info.getSWBOffsets();
    final int windowGroups = info.getWindowGroupCount();
    final int maxSFB = info.getMaxSFB();
    final int[] sfbCB = ics.getSfbCB();
    final int[] sectEnd = ics.getSectEnd();
    final float[] scaleFactors = ics.getScaleFactors();

    int w, i, j, c, end, off;
    int idx = 0, groupOff = 0;
    float scale;
    for(int g = 0; g<windowGroups; g++) {
      for(i = 0; i<maxSFB;) {
        if(sfbCB[idx]==INTENSITY_HCB||sfbCB[idx]==INTENSITY_HCB2) {
          end = sectEnd[idx];
          for(; i<end; i++, idx++) {
            c = sfbCB[idx]==INTENSITY_HCB ? 1 : -1;
            if(cpe.isMSMaskPresent())
              c *= cpe.isMSUsed(idx) ? -1 : 1;
            scale = c*scaleFactors[idx];
            for(w = 0; w<info.getWindowGroupLength(g); w++) {
              off = groupOff+w*128+offsets[i];
              for(j = 0; j<offsets[i+1]-offsets[i]; j++) {
                specR[off+j] = specL[off+j]*scale;
              }
            }
          }
        }
        else {
          end = sectEnd[idx];
          idx += end-i;
          i = end;
        }
      }
      groupOff += info.getWindowGroupLength(g)*128;
    }
  }
TOP

Related Classes of net.sourceforge.jaad.aac.tools.IS

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.