src/main/java/net/sourceforge/jaad/aac/syntax/ICStream.java
public void decode(IBitStream _in, boolean commonWindow, AACDecoderConfig conf) throws AACException {
		if(conf.isScalefactorResilienceUsed()&&rvlc==null) rvlc = new RVLC();
		final boolean er = conf.getProfile().isErrorResilientProfile();

		globalGain = _in.readBits(8);

		if(!commonWindow) info.decode(_in, conf, commonWindow);

		decodeSectionData(_in, conf.isSectionDataResilienceUsed());

		//if(conf.isScalefactorResilienceUsed()) rvlc.decode(_in, this, scaleFactors);
		/*else*/ decodeScaleFactors(_in);

		pulseDataPresent = _in.readBool();
		if(pulseDataPresent) {
			if(info.isEightShortFrame()) throw new AACException("pulse data not allowed for short frames");
			Logger.debug("PULSE");
			decodePulseData(_in);
		}

		tnsDataPresent = _in.readBool();
		if(tnsDataPresent&&!er) {
			if(tns==null) tns = new TNS();
			tns.decode(_in, info);
		}

		gainControlPresent = _in.readBool();
		if(gainControlPresent) {
			if(gainControl==null) gainControl = new GainControl(frameLength);
			Logger.debug("GAIN");
			gainControl.decode(_in, info.getWindowSequence());
		}

		//RVLC spectral data
		//if(conf.isScalefactorResilienceUsed()) rvlc.decodeScalefactors(this, _in, scaleFactors);

		if(conf.isSpectralDataResilienceUsed()) {
			int max = (conf.getChannelConfiguration()==ChannelConfiguration.CHANNEL_CONFIG_STEREO) ? 6144 : 12288;
			reorderedSpectralDataLen = Math.max(_in.readBits(14), max);
			longestCodewordLen = Math.max(_in.readBits(6), 49);
			//HCR.decodeReorderedSpectralData(this, _in, data, conf.isSectionDataResilienceUsed());
		}
		else decodeSpectralData(_in);
	}
public void decode(IBitStream _in, boolean commonWindow, AACDecoderConfig conf) throws AACException {
		if(conf.isScalefactorResilienceUsed()&&rvlc==null) rvlc = new RVLC();
		final boolean er = conf.getProfile().isErrorResilientProfile();

		globalGain = _in.readBits(8);

		if(!commonWindow) info.decode(_in, conf, commonWindow);

		decodeSectionData(_in, conf.isSectionDataResilienceUsed());

		//if(conf.isScalefactorResilienceUsed()) rvlc.decode(_in, this, scaleFactors);
		/*else*/ decodeScaleFactors(_in);

		pulseDataPresent = _in.readBool();
		if(pulseDataPresent) {
			if(info.isEightShortFrame()) throw new AACException("pulse data not allowed for short frames");
			Logger.debug("PULSE");
			decodePulseData(_in);
		}

		tnsDataPresent = _in.readBool();
		if(tnsDataPresent&&!er) {
			if(tns==null) tns = new TNS();
			tns.decode(_in, info);
		}

		gainControlPresent = _in.readBool();
		if(gainControlPresent) {
			if(gainControl==null) gainControl = new GainControl(frameLength);
			Logger.debug("GAIN");
			gainControl.decode(_in, info.getWindowSequence());
		}

		//RVLC spectral data
		//if(conf.isScalefactorResilienceUsed()) rvlc.decodeScalefactors(this, _in, scaleFactors);

		if(conf.isSpectralDataResilienceUsed()) {
			int max = (conf.getChannelConfiguration()==ChannelConfiguration.CHANNEL_CONFIG_STEREO) ? 6144 : 12288;
			reorderedSpectralDataLen = Math.max(_in.readBits(14), max);
			longestCodewordLen = Math.max(_in.readBits(6), 49);
			//HCR.decodeReorderedSpectralData(this, _in, data, conf.isSectionDataResilienceUsed());
		}
		else decodeSpectralData(_in);
	}
public void decode ( IBitStream _in , boolean commonWindow , AACDecoderConfig conf ) throws AACException { if ( conf . isScalefactorResilienceUsed ( ) && rvlc == null ) rvlc = new RVLC ( ) ; final boolean er = conf . getProfile ( ) . isErrorResilientProfile ( ) ; globalGain = _in . readBits ( 8 ) ; if ( ! commonWindow ) info . decode ( _in , conf , commonWindow ) ; decodeSectionData ( _in , conf . isSectionDataResilienceUsed ( ) ) ; //if(conf.isScalefactorResilienceUsed()) rvlc.decode(_in, this, scaleFactors); /*else*/ decodeScaleFactors ( _in ) ; pulseDataPresent = _in . readBool ( ) ; if ( pulseDataPresent ) { if ( info . isEightShortFrame ( ) ) throw new AACException ( "pulse data not allowed for short frames" ) ; Logger . debug ( "PULSE" ) ; decodePulseData ( _in ) ; } tnsDataPresent = _in . readBool ( ) ; if ( tnsDataPresent && ! er ) { if ( tns == null ) tns = new TNS ( ) ; tns . decode ( _in , info ) ; } gainControlPresent = _in . readBool ( ) ; if ( gainControlPresent ) { if ( gainControl == null ) gainControl = new GainControl ( frameLength ) ; Logger . debug ( "GAIN" ) ; gainControl . decode ( _in , info . getWindowSequence ( ) ) ; } //RVLC spectral data //if(conf.isScalefactorResilienceUsed()) rvlc.decodeScalefactors(this, _in, scaleFactors); if ( conf . isSpectralDataResilienceUsed ( ) ) { int max = ( conf . getChannelConfiguration ( ) == ChannelConfiguration . CHANNEL_CONFIG_STEREO ) ? 6144 : 12288 ; reorderedSpectralDataLen = Math . max ( _in . readBits ( 14 ) , max ) ; longestCodewordLen = Math . max ( _in . readBits ( 6 ) , 49 ) ; //HCR.decodeReorderedSpectralData(this, _in, data, conf.isSectionDataResilienceUsed()); } else decodeSpectralData ( _in ) ; }
/* ========= decoding ==========
/ * ========= decoding ==========