private void hybrid(int gr, int ch, float[] xrch, float[] preb) {
		final ChannelInformation ci = channelInfo[gr][ch];
		final int maxi = rzeroIndex[ch];
		int i, block_type;
		
		for (i = 0; i < maxi; i += 18) {
			block_type = ((ci.window_switching_flag != 0)
					&& (ci.mixed_block_flag != 0) && (i < 36)) ? 0
					: ci.block_type;

			if(block_type == 2)
				imdct12(xrch, preb, i);
			else
				imdct36(xrch, preb, i, block_type);
		}

		// 0值区
		for (; i < 576; i++) {
			xrch[i] = preb[i];
			preb[i] = 0;
		}
	}