src/main/java/net/sourceforge/jaad/aac/ps/PSFilterbank.java
void channel_filter12(int frame_len, float[] filter,
		float[][] buffer, float[][][] X_hybrid) {
		int i, n;
		float[] input_re1 = new float[6], input_re2 = new float[6];
		float[] input_im1 = new float[6], input_im2 = new float[6];
		float[] out_re1 = new float[6], out_re2 = new float[6];
		float[] out_im1 = new float[6], out_im2 = new float[6];

		for(i = 0; i<frame_len; i++) {
			for(n = 0; n<6; n++) {
				if(n==0) {
					input_re1[0] = (buffer[6+i][0]*filter[6]);
					input_re2[0] = (buffer[6+i][1]*filter[6]);
				}
				else {
					input_re1[6-n] = ((buffer[n+i][0]+buffer[12-n+i][0])*filter[n]);
					input_re2[6-n] = ((buffer[n+i][1]+buffer[12-n+i][1])*filter[n]);
				}
				input_im2[n] = ((buffer[n+i][0]-buffer[12-n+i][0])*filter[n]);
				input_im1[n] = ((buffer[n+i][1]-buffer[12-n+i][1])*filter[n]);
			}

			DCT3_6_unscaled(out_re1, input_re1);
			DCT3_6_unscaled(out_re2, input_re2);

			DCT3_6_unscaled(out_im1, input_im1);
			DCT3_6_unscaled(out_im2, input_im2);

			for(n = 0; n<6; n += 2) {
				X_hybrid[i][n][0] = out_re1[n]-out_im1[n];
				X_hybrid[i][n][1] = out_re2[n]+out_im2[n];
				X_hybrid[i][n+1][0] = out_re1[n+1]+out_im1[n+1];
				X_hybrid[i][n+1][1] = out_re2[n+1]-out_im2[n+1];

				X_hybrid[i][10-n][0] = out_re1[n+1]-out_im1[n+1];
				X_hybrid[i][10-n][1] = out_re2[n+1]+out_im2[n+1];
				X_hybrid[i][11-n][0] = out_re1[n]+out_im1[n];
				X_hybrid[i][11-n][1] = out_re2[n]-out_im2[n];
			}
		}
	}
void channel_filter12(int frame_len, float[] filter,
		float[][] buffer, float[][][] X_hybrid) {
		int i, n;
		float[] input_re1 = new float[6], input_re2 = new float[6];
		float[] input_im1 = new float[6], input_im2 = new float[6];
		float[] out_re1 = new float[6], out_re2 = new float[6];
		float[] out_im1 = new float[6], out_im2 = new float[6];

		for(i = 0; i<frame_len; i++) {
			for(n = 0; n<6; n++) {
				if(n==0) {
					input_re1[0] = (buffer[6+i][0]*filter[6]);
					input_re2[0] = (buffer[6+i][1]*filter[6]);
				}
				else {
					input_re1[6-n] = ((buffer[n+i][0]+buffer[12-n+i][0])*filter[n]);
					input_re2[6-n] = ((buffer[n+i][1]+buffer[12-n+i][1])*filter[n]);
				}
				input_im2[n] = ((buffer[n+i][0]-buffer[12-n+i][0])*filter[n]);
				input_im1[n] = ((buffer[n+i][1]-buffer[12-n+i][1])*filter[n]);
			}

			DCT3_6_unscaled(out_re1, input_re1);
			DCT3_6_unscaled(out_re2, input_re2);

			DCT3_6_unscaled(out_im1, input_im1);
			DCT3_6_unscaled(out_im2, input_im2);

			for(n = 0; n<6; n += 2) {
				X_hybrid[i][n][0] = out_re1[n]-out_im1[n];
				X_hybrid[i][n][1] = out_re2[n]+out_im2[n];
				X_hybrid[i][n+1][0] = out_re1[n+1]+out_im1[n+1];
				X_hybrid[i][n+1][1] = out_re2[n+1]-out_im2[n+1];

				X_hybrid[i][10-n][0] = out_re1[n+1]-out_im1[n+1];
				X_hybrid[i][10-n][1] = out_re2[n+1]+out_im2[n+1];
				X_hybrid[i][11-n][0] = out_re1[n]+out_im1[n];
				X_hybrid[i][11-n][1] = out_re2[n]-out_im2[n];
			}
		}
	}
void channel_filter12 ( int frame_len , float [ ] filter , float [ ] [ ] buffer , float [ ] [ ] [ ] X_hybrid ) { int i , n ; float [ ] input_re1 = new float [ 6 ] , input_re2 = new float [ 6 ] ; float [ ] input_im1 = new float [ 6 ] , input_im2 = new float [ 6 ] ; float [ ] out_re1 = new float [ 6 ] , out_re2 = new float [ 6 ] ; float [ ] out_im1 = new float [ 6 ] , out_im2 = new float [ 6 ] ; for ( i = 0 ; i < frame_len ; i ++ ) { for ( n = 0 ; n < 6 ; n ++ ) { if ( n == 0 ) { input_re1 [ 0 ] = ( buffer [ 6 + i ] [ 0 ] * filter [ 6 ] ) ; input_re2 [ 0 ] = ( buffer [ 6 + i ] [ 1 ] * filter [ 6 ] ) ; } else { input_re1 [ 6 - n ] = ( ( buffer [ n + i ] [ 0 ] + buffer [ 12 - n + i ] [ 0 ] ) * filter [ n ] ) ; input_re2 [ 6 - n ] = ( ( buffer [ n + i ] [ 1 ] + buffer [ 12 - n + i ] [ 1 ] ) * filter [ n ] ) ; } input_im2 [ n ] = ( ( buffer [ n + i ] [ 0 ] - buffer [ 12 - n + i ] [ 0 ] ) * filter [ n ] ) ; input_im1 [ n ] = ( ( buffer [ n + i ] [ 1 ] - buffer [ 12 - n + i ] [ 1 ] ) * filter [ n ] ) ; } DCT3_6_unscaled ( out_re1 , input_re1 ) ; DCT3_6_unscaled ( out_re2 , input_re2 ) ; DCT3_6_unscaled ( out_im1 , input_im1 ) ; DCT3_6_unscaled ( out_im2 , input_im2 ) ; for ( n = 0 ; n < 6 ; n += 2 ) { X_hybrid [ i ] [ n ] [ 0 ] = out_re1 [ n ] - out_im1 [ n ] ; X_hybrid [ i ] [ n ] [ 1 ] = out_re2 [ n ] + out_im2 [ n ] ; X_hybrid [ i ] [ n + 1 ] [ 0 ] = out_re1 [ n + 1 ] + out_im1 [ n + 1 ] ; X_hybrid [ i ] [ n + 1 ] [ 1 ] = out_re2 [ n + 1 ] - out_im2 [ n + 1 ] ; X_hybrid [ i ] [ 10 - n ] [ 0 ] = out_re1 [ n + 1 ] - out_im1 [ n + 1 ] ; X_hybrid [ i ] [ 10 - n ] [ 1 ] = out_re2 [ n + 1 ] + out_im2 [ n + 1 ] ; X_hybrid [ i ] [ 11 - n ] [ 0 ] = out_re1 [ n ] + out_im1 [ n ] ; X_hybrid [ i ] [ 11 - n ] [ 1 ] = out_re2 [ n ] - out_im2 [ n ] ; } } }
/* complex filter, size 12
/ * complex filter size 12