/*
* 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.ps2;
class Utils {
public static void map10To34(int[] in, int[] out, boolean full) {
if(full) {
out[33] = in[9];
out[32] = in[9];
out[31] = in[9];
out[30] = in[9];
out[29] = in[9];
out[28] = in[9];
out[27] = in[8];
out[26] = in[8];
out[25] = in[8];
out[24] = in[8];
out[23] = in[7];
out[22] = in[7];
out[21] = in[7];
out[20] = in[7];
out[19] = in[6];
out[18] = in[6];
out[17] = in[5];
out[16] = in[5];
}
out[15] = in[4];
out[14] = in[4];
out[13] = in[4];
out[12] = in[4];
out[11] = in[3];
out[10] = in[3];
out[9] = in[2];
out[8] = in[2];
out[7] = in[2];
out[6] = in[2];
out[5] = in[1];
out[4] = in[1];
out[3] = in[1];
out[2] = in[0];
out[1] = in[0];
out[0] = in[0];
}
public static void map20To34(int[] in, int[] out, boolean full) {
if(full) {
out[33] = in[19];
out[32] = in[19];
out[31] = in[18];
out[30] = in[18];
out[29] = in[18];
out[28] = in[18];
out[27] = in[17];
out[26] = in[17];
out[25] = in[16];
out[24] = in[16];
out[23] = in[15];
out[22] = in[15];
out[21] = in[14];
out[20] = in[14];
out[19] = in[13];
out[18] = in[12];
out[17] = in[11];
}
out[16] = in[10];
out[15] = in[9];
out[14] = in[9];
out[13] = in[8];
out[12] = in[8];
out[11] = in[7];
out[10] = in[6];
out[9] = in[5];
out[8] = in[5];
out[7] = in[4];
out[6] = in[4];
out[5] = in[3];
out[4] = (in[2]+in[3])/2;
out[3] = in[2];
out[2] = in[1];
out[1] = (in[0]+in[1])/2;
out[0] = in[0];
}
public static void map10To20(int[] in, int[] out, boolean full) {
int i;
if(full) i = 9;
else {
i = 4;
out[10] = 0;
}
for(; i>=0; i--) {
out[2*i+1] = in[i];
out[2*i] = in[i];
}
}
public static void map34To20(int[] in, int[] out, boolean full) {
out[0] = (2*in[0]+in[1])/3;
out[1] = (in[1]+2*in[2])/3;
out[2] = (2*in[3]+in[4])/3;
out[3] = (in[4]+2*in[5])/3;
out[4] = (in[6]+in[7])/2;
out[5] = (in[8]+in[9])/2;
out[6] = in[10];
out[7] = in[11];
out[8] = (in[12]+in[13])/2;
out[9] = (in[14]+in[15])/2;
out[10] = in[16];
if(full) {
out[11] = in[17];
out[12] = in[18];
out[13] = in[19];
out[14] = (in[20]+in[21])/2;
out[15] = (in[22]+in[23])/2;
out[16] = (in[24]+in[25])/2;
out[17] = (in[26]+in[27])/2;
out[18] = (in[28]+in[29]+in[30]+in[31])/4;
out[19] = (in[32]+in[33])/2;
}
}
public static void map20To34(float[] par) {
par[33] = par[19];
par[32] = par[19];
par[31] = par[18];
par[30] = par[18];
par[29] = par[18];
par[28] = par[18];
par[27] = par[17];
par[26] = par[17];
par[25] = par[16];
par[24] = par[16];
par[23] = par[15];
par[22] = par[15];
par[21] = par[14];
par[20] = par[14];
par[19] = par[13];
par[18] = par[12];
par[17] = par[11];
par[16] = par[10];
par[15] = par[9];
par[14] = par[9];
par[13] = par[8];
par[12] = par[8];
par[11] = par[7];
par[10] = par[6];
par[9] = par[5];
par[8] = par[5];
par[7] = par[4];
par[6] = par[4];
par[5] = par[3];
par[4] = (par[2]+par[3])*0.5f;
par[3] = par[2];
par[2] = par[1];
par[1] = (par[0]+par[1])*0.5f;
par[0] = par[0];
}
public static void map34To20(float[] par) {
par[0] = (2*par[0]+par[1])*0.33333333f;
par[1] = (par[1]+2*par[2])*0.33333333f;
par[2] = (2*par[3]+par[4])*0.33333333f;
par[3] = (par[4]+2*par[5])*0.33333333f;
par[4] = (par[6]+par[7])*0.5f;
par[5] = (par[8]+par[9])*0.5f;
par[6] = par[10];
par[7] = par[11];
par[8] = (par[12]+par[13])*0.5f;
par[9] = (par[14]+par[15])*0.5f;
par[10] = par[16];
par[11] = par[17];
par[12] = par[18];
par[13] = par[19];
par[14] = (par[20]+par[21])*0.5f;
par[15] = (par[22]+par[23])*0.5f;
par[16] = (par[24]+par[25])*0.5f;
par[17] = (par[26]+par[27])*0.5f;
par[18] = (par[28]+par[29]+par[30]+par[31])*0.25f;
par[19] = (par[32]+par[33])*0.5f;
}
}