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];
			}
		}
	}
/* complex filter, size 12