src/main/java/net/sourceforge/jaad/aac/ps/PSFilterbank.java
void channel_filter8(int frame_len, float[] filter,
		float[][] buffer, float[][][] X_hybrid) {
		int i, n;
		float[] input_re1 = new float[4], input_re2 = new float[4];
		float[] input_im1 = new float[4], input_im2 = new float[4];
		float[] x = new float[4];

		for(i = 0; i<frame_len; i++) {
			input_re1[0] = (filter[6]*buffer[6+i][0]);
			input_re1[1] = (filter[5]*(buffer[5+i][0]+buffer[7+i][0]));
			input_re1[2] = -(filter[0]*(buffer[0+i][0]+buffer[12+i][0]))+(filter[4]*(buffer[4+i][0]+buffer[8+i][0]));
			input_re1[3] = -(filter[1]*(buffer[1+i][0]+buffer[11+i][0]))+(filter[3]*(buffer[3+i][0]+buffer[9+i][0]));

			input_im1[0] = (filter[5]*(buffer[7+i][1]-buffer[5+i][1]));
			input_im1[1] = (filter[0]*(buffer[12+i][1]-buffer[0+i][1]))+(filter[4]*(buffer[8+i][1]-buffer[4+i][1]));
			input_im1[2] = (filter[1]*(buffer[11+i][1]-buffer[1+i][1]))+(filter[3]*(buffer[9+i][1]-buffer[3+i][1]));
			input_im1[3] = (filter[2]*(buffer[10+i][1]-buffer[2+i][1]));

			for(n = 0; n<4; n++) {
				x[n] = input_re1[n]-input_im1[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][7][0] = x[0];
			X_hybrid[i][5][0] = x[2];
			X_hybrid[i][3][0] = x[3];
			X_hybrid[i][1][0] = x[1];

			for(n = 0; n<4; n++) {
				x[n] = input_re1[n]+input_im1[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][6][0] = x[1];
			X_hybrid[i][4][0] = x[3];
			X_hybrid[i][2][0] = x[2];
			X_hybrid[i][0][0] = x[0];

			input_im2[0] = (filter[6]*buffer[6+i][1]);
			input_im2[1] = (filter[5]*(buffer[5+i][1]+buffer[7+i][1]));
			input_im2[2] = -(filter[0]*(buffer[0+i][1]+buffer[12+i][1]))+(filter[4]*(buffer[4+i][1]+buffer[8+i][1]));
			input_im2[3] = -(filter[1]*(buffer[1+i][1]+buffer[11+i][1]))+(filter[3]*(buffer[3+i][1]+buffer[9+i][1]));

			input_re2[0] = (filter[5]*(buffer[7+i][0]-buffer[5+i][0]));
			input_re2[1] = (filter[0]*(buffer[12+i][0]-buffer[0+i][0]))+(filter[4]*(buffer[8+i][0]-buffer[4+i][0]));
			input_re2[2] = (filter[1]*(buffer[11+i][0]-buffer[1+i][0]))+(filter[3]*(buffer[9+i][0]-buffer[3+i][0]));
			input_re2[3] = (filter[2]*(buffer[10+i][0]-buffer[2+i][0]));

			for(n = 0; n<4; n++) {
				x[n] = input_im2[n]+input_re2[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][7][1] = x[0];
			X_hybrid[i][5][1] = x[2];
			X_hybrid[i][3][1] = x[3];
			X_hybrid[i][1][1] = x[1];

			for(n = 0; n<4; n++) {
				x[n] = input_im2[n]-input_re2[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][6][1] = x[1];
			X_hybrid[i][4][1] = x[3];
			X_hybrid[i][2][1] = x[2];
			X_hybrid[i][0][1] = x[0];
		}
	}
void channel_filter8(int frame_len, float[] filter,
		float[][] buffer, float[][][] X_hybrid) {
		int i, n;
		float[] input_re1 = new float[4], input_re2 = new float[4];
		float[] input_im1 = new float[4], input_im2 = new float[4];
		float[] x = new float[4];

		for(i = 0; i<frame_len; i++) {
			input_re1[0] = (filter[6]*buffer[6+i][0]);
			input_re1[1] = (filter[5]*(buffer[5+i][0]+buffer[7+i][0]));
			input_re1[2] = -(filter[0]*(buffer[0+i][0]+buffer[12+i][0]))+(filter[4]*(buffer[4+i][0]+buffer[8+i][0]));
			input_re1[3] = -(filter[1]*(buffer[1+i][0]+buffer[11+i][0]))+(filter[3]*(buffer[3+i][0]+buffer[9+i][0]));

			input_im1[0] = (filter[5]*(buffer[7+i][1]-buffer[5+i][1]));
			input_im1[1] = (filter[0]*(buffer[12+i][1]-buffer[0+i][1]))+(filter[4]*(buffer[8+i][1]-buffer[4+i][1]));
			input_im1[2] = (filter[1]*(buffer[11+i][1]-buffer[1+i][1]))+(filter[3]*(buffer[9+i][1]-buffer[3+i][1]));
			input_im1[3] = (filter[2]*(buffer[10+i][1]-buffer[2+i][1]));

			for(n = 0; n<4; n++) {
				x[n] = input_re1[n]-input_im1[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][7][0] = x[0];
			X_hybrid[i][5][0] = x[2];
			X_hybrid[i][3][0] = x[3];
			X_hybrid[i][1][0] = x[1];

			for(n = 0; n<4; n++) {
				x[n] = input_re1[n]+input_im1[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][6][0] = x[1];
			X_hybrid[i][4][0] = x[3];
			X_hybrid[i][2][0] = x[2];
			X_hybrid[i][0][0] = x[0];

			input_im2[0] = (filter[6]*buffer[6+i][1]);
			input_im2[1] = (filter[5]*(buffer[5+i][1]+buffer[7+i][1]));
			input_im2[2] = -(filter[0]*(buffer[0+i][1]+buffer[12+i][1]))+(filter[4]*(buffer[4+i][1]+buffer[8+i][1]));
			input_im2[3] = -(filter[1]*(buffer[1+i][1]+buffer[11+i][1]))+(filter[3]*(buffer[3+i][1]+buffer[9+i][1]));

			input_re2[0] = (filter[5]*(buffer[7+i][0]-buffer[5+i][0]));
			input_re2[1] = (filter[0]*(buffer[12+i][0]-buffer[0+i][0]))+(filter[4]*(buffer[8+i][0]-buffer[4+i][0]));
			input_re2[2] = (filter[1]*(buffer[11+i][0]-buffer[1+i][0]))+(filter[3]*(buffer[9+i][0]-buffer[3+i][0]));
			input_re2[3] = (filter[2]*(buffer[10+i][0]-buffer[2+i][0]));

			for(n = 0; n<4; n++) {
				x[n] = input_im2[n]+input_re2[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][7][1] = x[0];
			X_hybrid[i][5][1] = x[2];
			X_hybrid[i][3][1] = x[3];
			X_hybrid[i][1][1] = x[1];

			for(n = 0; n<4; n++) {
				x[n] = input_im2[n]-input_re2[3-n];
			}
			DCT3_4_unscaled(x, x);
			X_hybrid[i][6][1] = x[1];
			X_hybrid[i][4][1] = x[3];
			X_hybrid[i][2][1] = x[2];
			X_hybrid[i][0][1] = x[0];
		}
	}
void channel_filter8 ( int frame_len , float [ ] filter , float [ ] [ ] buffer , float [ ] [ ] [ ] X_hybrid ) { int i , n ; float [ ] input_re1 = new float [ 4 ] , input_re2 = new float [ 4 ] ; float [ ] input_im1 = new float [ 4 ] , input_im2 = new float [ 4 ] ; float [ ] x = new float [ 4 ] ; for ( i = 0 ; i < frame_len ; i ++ ) { input_re1 [ 0 ] = ( filter [ 6 ] * buffer [ 6 + i ] [ 0 ] ) ; input_re1 [ 1 ] = ( filter [ 5 ] * ( buffer [ 5 + i ] [ 0 ] + buffer [ 7 + i ] [ 0 ] ) ) ; input_re1 [ 2 ] = - ( filter [ 0 ] * ( buffer [ 0 + i ] [ 0 ] + buffer [ 12 + i ] [ 0 ] ) ) + ( filter [ 4 ] * ( buffer [ 4 + i ] [ 0 ] + buffer [ 8 + i ] [ 0 ] ) ) ; input_re1 [ 3 ] = - ( filter [ 1 ] * ( buffer [ 1 + i ] [ 0 ] + buffer [ 11 + i ] [ 0 ] ) ) + ( filter [ 3 ] * ( buffer [ 3 + i ] [ 0 ] + buffer [ 9 + i ] [ 0 ] ) ) ; input_im1 [ 0 ] = ( filter [ 5 ] * ( buffer [ 7 + i ] [ 1 ] - buffer [ 5 + i ] [ 1 ] ) ) ; input_im1 [ 1 ] = ( filter [ 0 ] * ( buffer [ 12 + i ] [ 1 ] - buffer [ 0 + i ] [ 1 ] ) ) + ( filter [ 4 ] * ( buffer [ 8 + i ] [ 1 ] - buffer [ 4 + i ] [ 1 ] ) ) ; input_im1 [ 2 ] = ( filter [ 1 ] * ( buffer [ 11 + i ] [ 1 ] - buffer [ 1 + i ] [ 1 ] ) ) + ( filter [ 3 ] * ( buffer [ 9 + i ] [ 1 ] - buffer [ 3 + i ] [ 1 ] ) ) ; input_im1 [ 3 ] = ( filter [ 2 ] * ( buffer [ 10 + i ] [ 1 ] - buffer [ 2 + i ] [ 1 ] ) ) ; for ( n = 0 ; n < 4 ; n ++ ) { x [ n ] = input_re1 [ n ] - input_im1 [ 3 - n ] ; } DCT3_4_unscaled ( x , x ) ; X_hybrid [ i ] [ 7 ] [ 0 ] = x [ 0 ] ; X_hybrid [ i ] [ 5 ] [ 0 ] = x [ 2 ] ; X_hybrid [ i ] [ 3 ] [ 0 ] = x [ 3 ] ; X_hybrid [ i ] [ 1 ] [ 0 ] = x [ 1 ] ; for ( n = 0 ; n < 4 ; n ++ ) { x [ n ] = input_re1 [ n ] + input_im1 [ 3 - n ] ; } DCT3_4_unscaled ( x , x ) ; X_hybrid [ i ] [ 6 ] [ 0 ] = x [ 1 ] ; X_hybrid [ i ] [ 4 ] [ 0 ] = x [ 3 ] ; X_hybrid [ i ] [ 2 ] [ 0 ] = x [ 2 ] ; X_hybrid [ i ] [ 0 ] [ 0 ] = x [ 0 ] ; input_im2 [ 0 ] = ( filter [ 6 ] * buffer [ 6 + i ] [ 1 ] ) ; input_im2 [ 1 ] = ( filter [ 5 ] * ( buffer [ 5 + i ] [ 1 ] + buffer [ 7 + i ] [ 1 ] ) ) ; input_im2 [ 2 ] = - ( filter [ 0 ] * ( buffer [ 0 + i ] [ 1 ] + buffer [ 12 + i ] [ 1 ] ) ) + ( filter [ 4 ] * ( buffer [ 4 + i ] [ 1 ] + buffer [ 8 + i ] [ 1 ] ) ) ; input_im2 [ 3 ] = - ( filter [ 1 ] * ( buffer [ 1 + i ] [ 1 ] + buffer [ 11 + i ] [ 1 ] ) ) + ( filter [ 3 ] * ( buffer [ 3 + i ] [ 1 ] + buffer [ 9 + i ] [ 1 ] ) ) ; input_re2 [ 0 ] = ( filter [ 5 ] * ( buffer [ 7 + i ] [ 0 ] - buffer [ 5 + i ] [ 0 ] ) ) ; input_re2 [ 1 ] = ( filter [ 0 ] * ( buffer [ 12 + i ] [ 0 ] - buffer [ 0 + i ] [ 0 ] ) ) + ( filter [ 4 ] * ( buffer [ 8 + i ] [ 0 ] - buffer [ 4 + i ] [ 0 ] ) ) ; input_re2 [ 2 ] = ( filter [ 1 ] * ( buffer [ 11 + i ] [ 0 ] - buffer [ 1 + i ] [ 0 ] ) ) + ( filter [ 3 ] * ( buffer [ 9 + i ] [ 0 ] - buffer [ 3 + i ] [ 0 ] ) ) ; input_re2 [ 3 ] = ( filter [ 2 ] * ( buffer [ 10 + i ] [ 0 ] - buffer [ 2 + i ] [ 0 ] ) ) ; for ( n = 0 ; n < 4 ; n ++ ) { x [ n ] = input_im2 [ n ] + input_re2 [ 3 - n ] ; } DCT3_4_unscaled ( x , x ) ; X_hybrid [ i ] [ 7 ] [ 1 ] = x [ 0 ] ; X_hybrid [ i ] [ 5 ] [ 1 ] = x [ 2 ] ; X_hybrid [ i ] [ 3 ] [ 1 ] = x [ 3 ] ; X_hybrid [ i ] [ 1 ] [ 1 ] = x [ 1 ] ; for ( n = 0 ; n < 4 ; n ++ ) { x [ n ] = input_im2 [ n ] - input_re2 [ 3 - n ] ; } DCT3_4_unscaled ( x , x ) ; X_hybrid [ i ] [ 6 ] [ 1 ] = x [ 1 ] ; X_hybrid [ i ] [ 4 ] [ 1 ] = x [ 3 ] ; X_hybrid [ i ] [ 2 ] [ 1 ] = x [ 2 ] ; X_hybrid [ i ] [ 0 ] [ 1 ] = x [ 0 ] ; } }
/* complex filter, size 8
/ * complex filter size 8