www in docker support
This commit is contained in:
parent
539a848e95
commit
c227fce036
2145 changed files with 399596 additions and 58 deletions
|
|
@ -0,0 +1,210 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
import net.sourceforge.jaad.aac.syntax.BitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.PCE;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public class AACDecoderConfig implements SyntaxConstants {
|
||||
private Profile profile = Profile.AAC_MAIN;
|
||||
|
||||
private Profile extProfile = Profile.UNKNOWN;
|
||||
|
||||
private SampleFrequency sampleFrequency = SampleFrequency.SAMPLE_FREQUENCY_NONE;
|
||||
|
||||
private ChannelConfiguration channelConfiguration = ChannelConfiguration.CHANNEL_CONFIG_UNSUPPORTED;
|
||||
|
||||
private boolean frameLengthFlag = false;
|
||||
|
||||
private boolean dependsOnCoreCoder;
|
||||
|
||||
private int coreCoderDelay;
|
||||
|
||||
private boolean extensionFlag;
|
||||
|
||||
private boolean sbrPresent = false;
|
||||
|
||||
private boolean downSampledSBR = false;
|
||||
|
||||
private boolean sbrEnabled = true;
|
||||
|
||||
private boolean sectionDataResilience = false;
|
||||
|
||||
private boolean scalefactorResilience = false;
|
||||
|
||||
private boolean spectralDataResilience = false;
|
||||
|
||||
public ChannelConfiguration getChannelConfiguration() {
|
||||
return this.channelConfiguration;
|
||||
}
|
||||
|
||||
public void setChannelConfiguration(ChannelConfiguration channelConfiguration) {
|
||||
this.channelConfiguration = channelConfiguration;
|
||||
}
|
||||
|
||||
public int getCoreCoderDelay() {
|
||||
return this.coreCoderDelay;
|
||||
}
|
||||
|
||||
public void setCoreCoderDelay(int coreCoderDelay) {
|
||||
this.coreCoderDelay = coreCoderDelay;
|
||||
}
|
||||
|
||||
public boolean isDependsOnCoreCoder() {
|
||||
return this.dependsOnCoreCoder;
|
||||
}
|
||||
|
||||
public void setDependsOnCoreCoder(boolean dependsOnCoreCoder) {
|
||||
this.dependsOnCoreCoder = dependsOnCoreCoder;
|
||||
}
|
||||
|
||||
public Profile getExtObjectType() {
|
||||
return this.extProfile;
|
||||
}
|
||||
|
||||
public void setExtObjectType(Profile extObjectType) {
|
||||
this.extProfile = extObjectType;
|
||||
}
|
||||
|
||||
public int getFrameLength() {
|
||||
return this.frameLengthFlag ? 960 : 1024;
|
||||
}
|
||||
|
||||
public boolean isSmallFrameUsed() {
|
||||
return this.frameLengthFlag;
|
||||
}
|
||||
|
||||
public void setSmallFrameUsed(boolean shortFrame) {
|
||||
this.frameLengthFlag = shortFrame;
|
||||
}
|
||||
|
||||
public Profile getProfile() {
|
||||
return this.profile;
|
||||
}
|
||||
|
||||
public void setProfile(Profile profile) {
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
public SampleFrequency getSampleFrequency() {
|
||||
return this.sampleFrequency;
|
||||
}
|
||||
|
||||
public void setSampleFrequency(SampleFrequency sampleFrequency) {
|
||||
this.sampleFrequency = sampleFrequency;
|
||||
}
|
||||
|
||||
public boolean isSBRPresent() {
|
||||
return this.sbrPresent;
|
||||
}
|
||||
|
||||
public boolean isSBRDownSampled() {
|
||||
return this.downSampledSBR;
|
||||
}
|
||||
|
||||
public boolean isSBREnabled() {
|
||||
return this.sbrEnabled;
|
||||
}
|
||||
|
||||
public void setSBREnabled(boolean enabled) {
|
||||
this.sbrEnabled = enabled;
|
||||
}
|
||||
|
||||
public boolean isScalefactorResilienceUsed() {
|
||||
return this.scalefactorResilience;
|
||||
}
|
||||
|
||||
public boolean isSectionDataResilienceUsed() {
|
||||
return this.sectionDataResilience;
|
||||
}
|
||||
|
||||
public boolean isSpectralDataResilienceUsed() {
|
||||
return this.spectralDataResilience;
|
||||
}
|
||||
|
||||
public static AACDecoderConfig parseMP4DecoderSpecificInfo(byte[] data) throws AACException {
|
||||
IBitStream _in = BitStream.createBitStream(data);
|
||||
AACDecoderConfig config = new AACDecoderConfig();
|
||||
try {
|
||||
config.profile = readProfile(_in);
|
||||
int sf = _in.readBits(4);
|
||||
if (sf == 15) {
|
||||
config.sampleFrequency = SampleFrequency.forFrequency(_in.readBits(24));
|
||||
} else {
|
||||
config.sampleFrequency = SampleFrequency.forInt(sf);
|
||||
}
|
||||
config.channelConfiguration = ChannelConfiguration.forInt(_in.readBits(4));
|
||||
Profile cp = config.profile;
|
||||
if (Profile.AAC_SBR == cp) {
|
||||
config.extProfile = cp;
|
||||
config.sbrPresent = true;
|
||||
sf = _in.readBits(4);
|
||||
config.downSampledSBR = (config.sampleFrequency.getIndex() == sf);
|
||||
config.sampleFrequency = SampleFrequency.forInt(sf);
|
||||
config.profile = readProfile(_in);
|
||||
} else if (Profile.AAC_MAIN == cp || Profile.AAC_LC == cp || Profile.AAC_SSR == cp || Profile.AAC_LTP == cp || Profile.ER_AAC_LC == cp || Profile.ER_AAC_LTP == cp || Profile.ER_AAC_LD == cp) {
|
||||
config.frameLengthFlag = _in.readBool();
|
||||
if (config.frameLengthFlag)
|
||||
throw new AACException("config uses 960-sample frames, not yet supported");
|
||||
config.dependsOnCoreCoder = _in.readBool();
|
||||
if (config.dependsOnCoreCoder) {
|
||||
config.coreCoderDelay = _in.readBits(14);
|
||||
} else {
|
||||
config.coreCoderDelay = 0;
|
||||
}
|
||||
config.extensionFlag = _in.readBool();
|
||||
if (config.extensionFlag) {
|
||||
if (cp.isErrorResilientProfile()) {
|
||||
config.sectionDataResilience = _in.readBool();
|
||||
config.scalefactorResilience = _in.readBool();
|
||||
config.spectralDataResilience = _in.readBool();
|
||||
}
|
||||
_in.skipBit();
|
||||
}
|
||||
if (config.channelConfiguration == ChannelConfiguration.CHANNEL_CONFIG_NONE) {
|
||||
_in.skipBits(3);
|
||||
PCE pce = new PCE();
|
||||
pce.decode(_in);
|
||||
config.profile = pce.getProfile();
|
||||
config.sampleFrequency = pce.getSampleFrequency();
|
||||
config.channelConfiguration = ChannelConfiguration.forInt(pce.getChannelCount());
|
||||
}
|
||||
if (_in.getBitsLeft() > 10)
|
||||
readSyncExtension(_in, config);
|
||||
} else {
|
||||
throw new AACException("profile not supported: " + cp.getIndex());
|
||||
}
|
||||
return config;
|
||||
} finally {
|
||||
_in.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
private static Profile readProfile(IBitStream _in) throws AACException {
|
||||
int i = _in.readBits(5);
|
||||
if (i == 31)
|
||||
i = 32 + _in.readBits(6);
|
||||
return Profile.forInt(i);
|
||||
}
|
||||
|
||||
private static void readSyncExtension(IBitStream _in, AACDecoderConfig config) throws AACException {
|
||||
Profile profile;
|
||||
int type = _in.readBits(11);
|
||||
switch (type) {
|
||||
case 695:
|
||||
profile = Profile.forInt(_in.readBits(5));
|
||||
if (profile.equals(Profile.AAC_SBR)) {
|
||||
config.sbrPresent = _in.readBool();
|
||||
if (config.sbrPresent) {
|
||||
config.profile = profile;
|
||||
int tmp = _in.readBits(4);
|
||||
if (tmp == config.sampleFrequency.getIndex())
|
||||
config.downSampledSBR = true;
|
||||
if (tmp == 15)
|
||||
throw new AACException("sample rate specified explicitly, not supported yet!");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class AACException extends IOException {
|
||||
private boolean eos;
|
||||
|
||||
public static AACException endOfStream() {
|
||||
AACException ex = new AACException("end of stream");
|
||||
ex.eos = true;
|
||||
return ex;
|
||||
}
|
||||
|
||||
public AACException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public boolean isEndOfStream() {
|
||||
return this.eos;
|
||||
}
|
||||
|
||||
public static AACException wrap(Exception e) {
|
||||
if (e != null && e instanceof AACException)
|
||||
return (AACException)e;
|
||||
if (e != null && e.getMessage() != null)
|
||||
return new AACException(e.getMessage());
|
||||
return new AACException(String.valueOf(e));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
public final class ChannelConfiguration {
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_UNSUPPORTED = new ChannelConfiguration(-1, "invalid");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_NONE = new ChannelConfiguration(0, "No channel");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_MONO = new ChannelConfiguration(1, "Mono");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_STEREO = new ChannelConfiguration(2, "Stereo");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_STEREO_PLUS_CENTER = new ChannelConfiguration(3, "Stereo+Center");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_STEREO_PLUS_CENTER_PLUS_REAR_MONO = new ChannelConfiguration(4, "Stereo+Center+Rear");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_FIVE = new ChannelConfiguration(5, "Five channels");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_FIVE_PLUS_ONE = new ChannelConfiguration(6, "Five channels+LF");
|
||||
|
||||
public static final ChannelConfiguration CHANNEL_CONFIG_SEVEN_PLUS_ONE = new ChannelConfiguration(8, "Seven channels+LF");
|
||||
|
||||
private final int chCount;
|
||||
|
||||
private final String descr;
|
||||
|
||||
public static ChannelConfiguration forInt(int i) {
|
||||
ChannelConfiguration c;
|
||||
switch (i) {
|
||||
case 0:
|
||||
c = CHANNEL_CONFIG_NONE;
|
||||
break;
|
||||
case 1:
|
||||
c = CHANNEL_CONFIG_MONO;
|
||||
break;
|
||||
case 2:
|
||||
c = CHANNEL_CONFIG_STEREO;
|
||||
break;
|
||||
case 3:
|
||||
c = CHANNEL_CONFIG_STEREO_PLUS_CENTER;
|
||||
break;
|
||||
case 4:
|
||||
c = CHANNEL_CONFIG_STEREO_PLUS_CENTER_PLUS_REAR_MONO;
|
||||
break;
|
||||
case 5:
|
||||
c = CHANNEL_CONFIG_FIVE;
|
||||
break;
|
||||
case 6:
|
||||
c = CHANNEL_CONFIG_FIVE_PLUS_ONE;
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
c = CHANNEL_CONFIG_SEVEN_PLUS_ONE;
|
||||
break;
|
||||
default:
|
||||
c = CHANNEL_CONFIG_UNSUPPORTED;
|
||||
break;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
private ChannelConfiguration(int chCount, String descr) {
|
||||
this.chCount = chCount;
|
||||
this.descr = descr;
|
||||
}
|
||||
|
||||
public int getChannelCount() {
|
||||
return this.chCount;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return this.descr;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return this.descr;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
import net.sourceforge.jaad.aac.filterbank.FilterBank;
|
||||
import net.sourceforge.jaad.aac.syntax.BitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.PCE;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntacticElements;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
import net.sourceforge.jaad.aac.transport.ADIFHeader;
|
||||
import org.jcodec.common.logging.Logger;
|
||||
|
||||
public class Decoder implements SyntaxConstants {
|
||||
private final AACDecoderConfig config;
|
||||
|
||||
private final SyntacticElements syntacticElements;
|
||||
|
||||
private final FilterBank filterBank;
|
||||
|
||||
private IBitStream _in;
|
||||
|
||||
private ADIFHeader adifHeader;
|
||||
|
||||
public static boolean canDecode(Profile profile) {
|
||||
return profile.isDecodingSupported();
|
||||
}
|
||||
|
||||
public Decoder(byte[] decoderSpecificInfo) throws AACException {
|
||||
this.config = AACDecoderConfig.parseMP4DecoderSpecificInfo(decoderSpecificInfo);
|
||||
if (this.config == null)
|
||||
throw new IllegalArgumentException("illegal MP4 decoder specific info");
|
||||
if (!canDecode(this.config.getProfile()))
|
||||
throw new AACException("unsupported profile: " + this.config.getProfile().getDescription());
|
||||
this.syntacticElements = new SyntacticElements(this.config);
|
||||
this.filterBank = new FilterBank(this.config.isSmallFrameUsed(), this.config.getChannelConfiguration().getChannelCount());
|
||||
this._in = new BitStream();
|
||||
Logger.debug("profile: {0}", this.config.getProfile());
|
||||
Logger.debug("sf: {0}", this.config.getSampleFrequency().getFrequency());
|
||||
Logger.debug("channels: {0}", this.config.getChannelConfiguration().getDescription());
|
||||
}
|
||||
|
||||
public AACDecoderConfig getConfig() {
|
||||
return this.config;
|
||||
}
|
||||
|
||||
public void decodeFrame(byte[] frame, SampleBuffer buffer) throws AACException {
|
||||
if (frame != null)
|
||||
this._in.setData(frame);
|
||||
Logger.debug("bits left " + this._in.getBitsLeft());
|
||||
try {
|
||||
decode(buffer);
|
||||
} catch (AACException e) {
|
||||
if (!e.isEndOfStream())
|
||||
throw e;
|
||||
Logger.warn("unexpected end of frame");
|
||||
}
|
||||
}
|
||||
|
||||
private void decode(SampleBuffer buffer) throws AACException {
|
||||
if (ADIFHeader.isPresent(this._in)) {
|
||||
this.adifHeader = ADIFHeader.readHeader(this._in);
|
||||
PCE pce = this.adifHeader.getFirstPCE();
|
||||
this.config.setProfile(pce.getProfile());
|
||||
this.config.setSampleFrequency(pce.getSampleFrequency());
|
||||
this.config.setChannelConfiguration(ChannelConfiguration.forInt(pce.getChannelCount()));
|
||||
}
|
||||
if (!canDecode(this.config.getProfile()))
|
||||
throw new AACException("unsupported profile: " + this.config.getProfile().getDescription());
|
||||
this.syntacticElements.startNewFrame();
|
||||
try {
|
||||
this.syntacticElements.decode(this._in);
|
||||
this.syntacticElements.process(this.filterBank);
|
||||
this.syntacticElements.sendToOutput(buffer);
|
||||
} catch (Exception e) {
|
||||
buffer.setData(new byte[0], 0, 0, 0, 0);
|
||||
throw AACException.wrap(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
public final class Profile {
|
||||
public static final Profile UNKNOWN = new Profile(-1, "unknown", false);
|
||||
|
||||
public static final Profile AAC_MAIN = new Profile(1, "AAC Main Profile", true);
|
||||
|
||||
public static final Profile AAC_LC = new Profile(2, "AAC Low Complexity", true);
|
||||
|
||||
public static final Profile AAC_SSR = new Profile(3, "AAC Scalable Sample Rate", false);
|
||||
|
||||
public static final Profile AAC_LTP = new Profile(4, "AAC Long Term Prediction", false);
|
||||
|
||||
public static final Profile AAC_SBR = new Profile(5, "AAC SBR", true);
|
||||
|
||||
public static final Profile AAC_SCALABLE = new Profile(6, "Scalable AAC", false);
|
||||
|
||||
public static final Profile TWIN_VQ = new Profile(7, "TwinVQ", false);
|
||||
|
||||
public static final Profile AAC_LD = new Profile(11, "AAC Low Delay", false);
|
||||
|
||||
public static final Profile ER_AAC_LC = new Profile(17, "Error Resilient AAC Low Complexity", true);
|
||||
|
||||
public static final Profile ER_AAC_SSR = new Profile(18, "Error Resilient AAC SSR", false);
|
||||
|
||||
public static final Profile ER_AAC_LTP = new Profile(19, "Error Resilient AAC Long Term Prediction", false);
|
||||
|
||||
public static final Profile ER_AAC_SCALABLE = new Profile(20, "Error Resilient Scalable AAC", false);
|
||||
|
||||
public static final Profile ER_TWIN_VQ = new Profile(21, "Error Resilient TwinVQ", false);
|
||||
|
||||
public static final Profile ER_BSAC = new Profile(22, "Error Resilient BSAC", false);
|
||||
|
||||
public static final Profile ER_AAC_LD = new Profile(23, "Error Resilient AAC Low Delay", false);
|
||||
|
||||
private static final Profile[] ALL = new Profile[] {
|
||||
AAC_MAIN, AAC_LC, AAC_SSR, AAC_LTP, AAC_SBR, AAC_SCALABLE, TWIN_VQ, null, null, null,
|
||||
AAC_LD, null, null, null, null, null, ER_AAC_LC, ER_AAC_SSR, ER_AAC_LTP, ER_AAC_SCALABLE,
|
||||
ER_TWIN_VQ, ER_BSAC, ER_AAC_LD };
|
||||
|
||||
private final int num;
|
||||
|
||||
private final String descr;
|
||||
|
||||
private final boolean supported;
|
||||
|
||||
public static Profile forInt(int i) {
|
||||
Profile p;
|
||||
if (i <= 0 || i > ALL.length) {
|
||||
p = UNKNOWN;
|
||||
} else {
|
||||
p = ALL[i - 1];
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
private Profile(int num, String descr, boolean supported) {
|
||||
this.num = num;
|
||||
this.descr = descr;
|
||||
this.supported = supported;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return this.num;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return this.descr;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return this.descr;
|
||||
}
|
||||
|
||||
public boolean isDecodingSupported() {
|
||||
return this.supported;
|
||||
}
|
||||
|
||||
public boolean isErrorResilientProfile() {
|
||||
return (this.num > 16);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
public class SampleBuffer {
|
||||
private byte[] data = new byte[0];
|
||||
|
||||
private int sampleRate = 0;
|
||||
|
||||
private int channels = 0;
|
||||
|
||||
private int bitsPerSample = 0;
|
||||
|
||||
private boolean bigEndian = true;
|
||||
|
||||
private double length;
|
||||
|
||||
private double bitrate;
|
||||
|
||||
private double encodedBitrate;
|
||||
|
||||
public byte[] getData() {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
public int getSampleRate() {
|
||||
return this.sampleRate;
|
||||
}
|
||||
|
||||
public int getChannels() {
|
||||
return this.channels;
|
||||
}
|
||||
|
||||
public int getBitsPerSample() {
|
||||
return this.bitsPerSample;
|
||||
}
|
||||
|
||||
public double getLength() {
|
||||
return this.length;
|
||||
}
|
||||
|
||||
public double getBitrate() {
|
||||
return this.bitrate;
|
||||
}
|
||||
|
||||
public double getEncodedBitrate() {
|
||||
return this.encodedBitrate;
|
||||
}
|
||||
|
||||
public boolean isBigEndian() {
|
||||
return this.bigEndian;
|
||||
}
|
||||
|
||||
public void setBigEndian(boolean bigEndian) {
|
||||
if (bigEndian != this.bigEndian) {
|
||||
for (int i = 0; i < this.data.length; i += 2) {
|
||||
byte tmp = this.data[i];
|
||||
this.data[i] = this.data[i + 1];
|
||||
this.data[i + 1] = tmp;
|
||||
}
|
||||
this.bigEndian = bigEndian;
|
||||
}
|
||||
}
|
||||
|
||||
public void setData(byte[] data, int sampleRate, int channels, int bitsPerSample, int bitsRead) {
|
||||
this.data = data;
|
||||
this.sampleRate = sampleRate;
|
||||
this.channels = channels;
|
||||
this.bitsPerSample = bitsPerSample;
|
||||
if (sampleRate == 0) {
|
||||
this.length = 0.0D;
|
||||
this.bitrate = 0.0D;
|
||||
this.encodedBitrate = 0.0D;
|
||||
} else {
|
||||
int bytesPerSample = bitsPerSample / 8;
|
||||
int samplesPerChannel = data.length / (bytesPerSample * channels);
|
||||
this.length = (double)samplesPerChannel / (double)sampleRate;
|
||||
this.bitrate = (double)(samplesPerChannel * bitsPerSample * channels) / this.length;
|
||||
this.encodedBitrate = (double)bitsRead / this.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
package net.sourceforge.jaad.aac;
|
||||
|
||||
public final class SampleFrequency {
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_96000 = new SampleFrequency(0, 96000, new int[] { 33, 512 }, new int[] { 31, 9 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_88200 = new SampleFrequency(1, 88200, new int[] { 33, 512 }, new int[] { 31, 9 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_64000 = new SampleFrequency(2, 64000, new int[] { 38, 664 }, new int[] { 34, 10 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_48000 = new SampleFrequency(3, 48000, new int[] { 40, 672 }, new int[] { 40, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_44100 = new SampleFrequency(4, 44100, new int[] { 40, 672 }, new int[] { 42, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_32000 = new SampleFrequency(5, 32000, new int[] { 40, 672 }, new int[] { 51, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_24000 = new SampleFrequency(6, 24000, new int[] { 41, 652 }, new int[] { 46, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_22050 = new SampleFrequency(7, 22050, new int[] { 41, 652 }, new int[] { 46, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_16000 = new SampleFrequency(8, 16000, new int[] { 37, 664 }, new int[] { 42, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_12000 = new SampleFrequency(9, 12000, new int[] { 37, 664 }, new int[] { 42, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_11025 = new SampleFrequency(10, 11025, new int[] { 37, 664 }, new int[] { 42, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_8000 = new SampleFrequency(11, 8000, new int[] { 34, 664 }, new int[] { 39, 14 });
|
||||
|
||||
public static final SampleFrequency SAMPLE_FREQUENCY_NONE = new SampleFrequency(-1, 0, new int[] { 0, 0 }, new int[] { 0, 0 });
|
||||
|
||||
private static final SampleFrequency[] _values = new SampleFrequency[] {
|
||||
SAMPLE_FREQUENCY_96000, SAMPLE_FREQUENCY_88200, SAMPLE_FREQUENCY_64000, SAMPLE_FREQUENCY_48000, SAMPLE_FREQUENCY_44100, SAMPLE_FREQUENCY_32000, SAMPLE_FREQUENCY_24000, SAMPLE_FREQUENCY_22050, SAMPLE_FREQUENCY_16000, SAMPLE_FREQUENCY_12000,
|
||||
SAMPLE_FREQUENCY_11025, SAMPLE_FREQUENCY_8000, SAMPLE_FREQUENCY_NONE };
|
||||
|
||||
private final int index;
|
||||
|
||||
private final int frequency;
|
||||
|
||||
private final int[] prediction;
|
||||
|
||||
private final int[] maxTNS_SFB;
|
||||
|
||||
public static SampleFrequency[] values() {
|
||||
return _values;
|
||||
}
|
||||
|
||||
public static SampleFrequency forInt(int i) {
|
||||
SampleFrequency freq;
|
||||
if (i >= 0 && i < 12) {
|
||||
freq = values()[i];
|
||||
} else {
|
||||
freq = SAMPLE_FREQUENCY_NONE;
|
||||
}
|
||||
return freq;
|
||||
}
|
||||
|
||||
public static SampleFrequency forFrequency(int i) {
|
||||
SampleFrequency[] all = values();
|
||||
SampleFrequency freq = null;
|
||||
for (int j = 0; freq == null && j < 12; j++) {
|
||||
if (i == (all[j]).frequency)
|
||||
freq = all[j];
|
||||
}
|
||||
if (freq == null)
|
||||
freq = SAMPLE_FREQUENCY_NONE;
|
||||
return freq;
|
||||
}
|
||||
|
||||
private SampleFrequency(int index, int freqency, int[] prediction, int[] maxTNS_SFB) {
|
||||
this.index = index;
|
||||
this.frequency = freqency;
|
||||
this.prediction = prediction;
|
||||
this.maxTNS_SFB = maxTNS_SFB;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return this.index;
|
||||
}
|
||||
|
||||
public int getFrequency() {
|
||||
return this.frequency;
|
||||
}
|
||||
|
||||
public int getMaximalPredictionSFB() {
|
||||
return this.prediction[0];
|
||||
}
|
||||
|
||||
public int getPredictorCount() {
|
||||
return this.prediction[1];
|
||||
}
|
||||
|
||||
public int getMaximalTNS_SFB(boolean shortWindow) {
|
||||
return this.maxTNS_SFB[shortWindow ? 1 : 0];
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return Integer.toString(this.frequency);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
package net.sourceforge.jaad.aac.error;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
|
||||
public class BitsBuffer {
|
||||
static final int[] S = new int[] { 1, 2, 4, 8, 16 };
|
||||
|
||||
static final int[] B = new int[] { 1431655765, 858993459, 252645135, 16711935, 65535 };
|
||||
|
||||
int len = 0;
|
||||
|
||||
int bufa;
|
||||
|
||||
int bufb;
|
||||
|
||||
public int getLength() {
|
||||
return this.len;
|
||||
}
|
||||
|
||||
public int showBits(int bits) {
|
||||
if (bits == 0)
|
||||
return 0;
|
||||
if (this.len <= 32) {
|
||||
if (this.len >= bits)
|
||||
return this.bufa >> this.len - bits & -1 >> 32 - bits;
|
||||
return this.bufa << bits - this.len & -1 >> 32 - bits;
|
||||
}
|
||||
if (this.len - bits < 32)
|
||||
return (this.bufb & -1 >> 64 - this.len) << bits - this.len + 32 | this.bufa >> this.len - bits;
|
||||
return this.bufb >> this.len - bits - 32 & -1 >> 32 - bits;
|
||||
}
|
||||
|
||||
public boolean flushBits(int bits) {
|
||||
boolean b;
|
||||
this.len -= bits;
|
||||
if (this.len < 0) {
|
||||
this.len = 0;
|
||||
b = false;
|
||||
} else {
|
||||
b = true;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
public int getBits(int n) {
|
||||
int i = showBits(n);
|
||||
if (!flushBits(n))
|
||||
i = -1;
|
||||
return i;
|
||||
}
|
||||
|
||||
public int getBit() {
|
||||
int i = showBits(1);
|
||||
if (!flushBits(1))
|
||||
i = -1;
|
||||
return i;
|
||||
}
|
||||
|
||||
public void rewindReverse() {
|
||||
if (this.len == 0)
|
||||
return;
|
||||
int[] i = rewindReverse64(this.bufb, this.bufa, this.len);
|
||||
this.bufb = i[0];
|
||||
this.bufa = i[1];
|
||||
}
|
||||
|
||||
public void concatBits(BitsBuffer a) {
|
||||
int bl, bh;
|
||||
if (a.len == 0)
|
||||
return;
|
||||
int al = a.bufa;
|
||||
int ah = a.bufb;
|
||||
if (this.len > 32) {
|
||||
bl = this.bufa;
|
||||
bh = this.bufb & (1 << this.len - 32) - 1;
|
||||
ah = al << this.len - 32;
|
||||
al = 0;
|
||||
} else {
|
||||
bl = this.bufa & (1 << this.len) - 1;
|
||||
bh = 0;
|
||||
ah = ah << this.len | al >> 32 - this.len;
|
||||
al <<= this.len;
|
||||
}
|
||||
this.bufa = bl | al;
|
||||
this.bufb = bh | ah;
|
||||
this.len += a.len;
|
||||
}
|
||||
|
||||
public void readSegment(int segwidth, IBitStream _in) throws AACException {
|
||||
this.len = segwidth;
|
||||
if (segwidth > 32) {
|
||||
this.bufb = _in.readBits(segwidth - 32);
|
||||
this.bufa = _in.readBits(32);
|
||||
} else {
|
||||
this.bufa = _in.readBits(segwidth);
|
||||
this.bufb = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int rewindReverse32(int v, int len) {
|
||||
v = v >> S[0] & B[0] | v << S[0] & (B[0] ^ 0xFFFFFFFF);
|
||||
v = v >> S[1] & B[1] | v << S[1] & (B[1] ^ 0xFFFFFFFF);
|
||||
v = v >> S[2] & B[2] | v << S[2] & (B[2] ^ 0xFFFFFFFF);
|
||||
v = v >> S[3] & B[3] | v << S[3] & (B[3] ^ 0xFFFFFFFF);
|
||||
v = v >> S[4] & B[4] | v << S[4] & (B[4] ^ 0xFFFFFFFF);
|
||||
v >>= 32 - len;
|
||||
return v;
|
||||
}
|
||||
|
||||
static int[] rewindReverse64(int hi, int lo, int len) {
|
||||
int[] i = new int[2];
|
||||
if (len <= 32) {
|
||||
i[0] = 0;
|
||||
i[1] = rewindReverse32(lo, len);
|
||||
} else {
|
||||
lo = lo >> S[0] & B[0] | lo << S[0] & (B[0] ^ 0xFFFFFFFF);
|
||||
hi = hi >> S[0] & B[0] | hi << S[0] & (B[0] ^ 0xFFFFFFFF);
|
||||
lo = lo >> S[1] & B[1] | lo << S[1] & (B[1] ^ 0xFFFFFFFF);
|
||||
hi = hi >> S[1] & B[1] | hi << S[1] & (B[1] ^ 0xFFFFFFFF);
|
||||
lo = lo >> S[2] & B[2] | lo << S[2] & (B[2] ^ 0xFFFFFFFF);
|
||||
hi = hi >> S[2] & B[2] | hi << S[2] & (B[2] ^ 0xFFFFFFFF);
|
||||
lo = lo >> S[3] & B[3] | lo << S[3] & (B[3] ^ 0xFFFFFFFF);
|
||||
hi = hi >> S[3] & B[3] | hi << S[3] & (B[3] ^ 0xFFFFFFFF);
|
||||
lo = lo >> S[4] & B[4] | lo << S[4] & (B[4] ^ 0xFFFFFFFF);
|
||||
hi = hi >> S[4] & B[4] | hi << S[4] & (B[4] ^ 0xFFFFFFFF);
|
||||
i[1] = hi >> 64 - len | lo << len - 32;
|
||||
i[1] = lo >> 64 - len;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
package net.sourceforge.jaad.aac.error;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public class HCR implements SyntaxConstants {
|
||||
private static final int NUM_CB = 6;
|
||||
|
||||
private static final int NUM_CB_ER = 22;
|
||||
|
||||
private static final int MAX_CB = 32;
|
||||
|
||||
private static final int VCB11_FIRST = 16;
|
||||
|
||||
private static final int VCB11_LAST = 31;
|
||||
|
||||
private static class Codeword {
|
||||
int cb;
|
||||
|
||||
int decoded;
|
||||
|
||||
int sp_offset;
|
||||
|
||||
BitsBuffer bits;
|
||||
|
||||
private void fill(int sp, int cb) {
|
||||
this.sp_offset = sp;
|
||||
this.cb = cb;
|
||||
this.decoded = 0;
|
||||
this.bits = new BitsBuffer();
|
||||
}
|
||||
}
|
||||
|
||||
private static final int[] PRE_SORT_CB_STD = new int[] { 11, 9, 7, 5, 3, 1 };
|
||||
|
||||
private static final int[] PRE_SORT_CB_ER = new int[] {
|
||||
11, 31, 30, 29, 28, 27, 26, 25, 24, 23,
|
||||
22, 21, 20, 19, 18, 17, 16, 9, 7, 5,
|
||||
3, 1 };
|
||||
|
||||
private static final int[] MAX_CW_LEN = new int[] {
|
||||
0, 11, 9, 20, 16, 13, 11, 14, 12, 17,
|
||||
14, 49, 0, 0, 0, 0, 14, 17, 21, 21,
|
||||
25, 25, 29, 29, 29, 29, 33, 33, 33, 37,
|
||||
37, 41 };
|
||||
|
||||
private static boolean isGoodCB(int cb, int sectCB) {
|
||||
boolean b = false;
|
||||
if ((sectCB > 0 && sectCB <= 11) || (sectCB >= 16 && sectCB <= 31))
|
||||
if (cb < 11) {
|
||||
b = (sectCB == cb || sectCB == cb + 1);
|
||||
} else {
|
||||
b = (sectCB == cb);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
public static void decodeReorderedSpectralData(ICStream ics, IBitStream _in, short[] spectralData, boolean sectionDataResilience) throws AACException {
|
||||
int lastCB, preSortCB[];
|
||||
ICSInfo info = ics.getInfo();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[] swbOffsets = info.getSWBOffsets();
|
||||
int swbOffsetMax = info.getSWBOffsetMax();
|
||||
int[][] sectStart = new int[0][0];
|
||||
int[][] sectEnd = new int[0][0];
|
||||
int[] numSec = new int[0];
|
||||
int[][] sectCB = new int[0][0];
|
||||
int[][] sectSFBOffsets = new int[0][0];
|
||||
int spDataLen = ics.getReorderedSpectralDataLength();
|
||||
if (spDataLen == 0)
|
||||
return;
|
||||
int longestLen = ics.getLongestCodewordLength();
|
||||
if (longestLen == 0 || longestLen >= spDataLen)
|
||||
throw new AACException("length of longest HCR codeword out of range");
|
||||
int[] spOffsets = new int[8];
|
||||
int shortFrameLen = spectralData.length / 8;
|
||||
spOffsets[0] = 0;
|
||||
for (int g = 1; g < windowGroupCount; g++)
|
||||
spOffsets[g] = spOffsets[g - 1] + shortFrameLen * info.getWindowGroupLength(g - 1);
|
||||
Codeword[] codeword = new Codeword[512];
|
||||
BitsBuffer[] segment = new BitsBuffer[512];
|
||||
if (sectionDataResilience) {
|
||||
preSortCB = PRE_SORT_CB_ER;
|
||||
lastCB = 22;
|
||||
} else {
|
||||
preSortCB = PRE_SORT_CB_STD;
|
||||
lastCB = 6;
|
||||
}
|
||||
int PCWs_done = 0;
|
||||
int segmentsCount = 0;
|
||||
int numberOfCodewords = 0;
|
||||
int bitsread = 0;
|
||||
for (int sortloop = 0; sortloop < lastCB; sortloop++) {
|
||||
int thisCB = preSortCB[sortloop];
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++) {
|
||||
for (int w_idx = 0; 4 * w_idx < Math.min(swbOffsets[sfb + 1], swbOffsetMax) - swbOffsets[sfb]; w_idx++) {
|
||||
for (int i = 0; i < windowGroupCount; i++) {
|
||||
for (int j = 0; j < numSec[i]; j++) {
|
||||
if (sectStart[i][j] <= sfb && sectEnd[i][j] > sfb) {
|
||||
int thisSectCB = sectCB[i][j];
|
||||
if (isGoodCB(thisCB, thisSectCB)) {
|
||||
int sect_sfb_size = sectSFBOffsets[i][sfb + 1] - sectSFBOffsets[i][sfb];
|
||||
int inc = (thisSectCB < 5) ? 4 : 2;
|
||||
int group_cws_count = 4 * info.getWindowGroupLength(i) / inc;
|
||||
int segwidth = Math.min(MAX_CW_LEN[thisSectCB], longestLen);
|
||||
for (int cws = 0; cws < group_cws_count && cws + w_idx * group_cws_count < sect_sfb_size; cws++) {
|
||||
int sp = spOffsets[i] + sectSFBOffsets[i][sfb] + inc * (cws + w_idx * group_cws_count);
|
||||
if (PCWs_done == 0) {
|
||||
if (bitsread + segwidth <= spDataLen) {
|
||||
segment[segmentsCount].readSegment(segwidth, _in);
|
||||
bitsread += segwidth;
|
||||
segment[segmentsCount].rewindReverse();
|
||||
segmentsCount++;
|
||||
} else {
|
||||
if (bitsread < spDataLen) {
|
||||
int additional_bits = spDataLen - bitsread;
|
||||
segment[segmentsCount].readSegment(additional_bits, _in);
|
||||
(segment[segmentsCount]).len += (segment[segmentsCount - 1]).len;
|
||||
segment[segmentsCount].rewindReverse();
|
||||
if ((segment[segmentsCount - 1]).len > 32) {
|
||||
(segment[segmentsCount]).bufb += segment[segmentsCount - 1]
|
||||
.showBits((segment[segmentsCount - 1]).len - 32);
|
||||
(segment[segmentsCount]).bufa += segment[segmentsCount - 1]
|
||||
.showBits(32);
|
||||
} else {
|
||||
(segment[segmentsCount]).bufa += segment[segmentsCount - 1]
|
||||
.showBits((segment[segmentsCount - 1]).len);
|
||||
(segment[segmentsCount - 1]).bufb = (segment[segmentsCount]).bufb;
|
||||
}
|
||||
(segment[segmentsCount - 1]).len += additional_bits;
|
||||
}
|
||||
bitsread = spDataLen;
|
||||
PCWs_done = 1;
|
||||
codeword[0].fill(sp, thisSectCB);
|
||||
}
|
||||
} else {
|
||||
codeword[numberOfCodewords - segmentsCount].fill(sp, thisSectCB);
|
||||
}
|
||||
numberOfCodewords++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (segmentsCount == 0)
|
||||
throw new AACException("no segments _in HCR");
|
||||
int numberOfSets = numberOfCodewords / segmentsCount;
|
||||
for (int set = 1; set <= numberOfSets; set++) {
|
||||
for (int trial = 0; trial < segmentsCount; trial++) {
|
||||
for (int codewordBase = 0; codewordBase < segmentsCount; codewordBase++) {
|
||||
int segmentID = (trial + codewordBase) % segmentsCount;
|
||||
int codewordID = codewordBase + set * segmentsCount - segmentsCount;
|
||||
if (codewordID >= numberOfCodewords - segmentsCount)
|
||||
break;
|
||||
if ((codeword[codewordID]).decoded == 0 && (segment[segmentID]).len > 0) {
|
||||
if ((codeword[codewordID]).bits.len != 0)
|
||||
segment[segmentID].concatBits((codeword[codewordID]).bits);
|
||||
int j = (segment[segmentID]).len;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < segmentsCount; i++)
|
||||
segment[i].rewindReverse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
package net.sourceforge.jaad.aac.error;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
|
||||
public class RVLC implements RVLCTables {
|
||||
private static final int ESCAPE_FLAG = 7;
|
||||
|
||||
public void decode(IBitStream _in, ICStream ics, int[][] scaleFactors) throws AACException {
|
||||
int bits = ics.getInfo().isEightShortFrame() ? 11 : 9;
|
||||
boolean sfConcealment = _in.readBool();
|
||||
int revGlobalGain = _in.readBits(8);
|
||||
int rvlcSFLen = _in.readBits(bits);
|
||||
ICSInfo info = ics.getInfo();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[][] sfbCB = { {} };
|
||||
int sf = ics.getGlobalGain();
|
||||
int intensityPosition = 0;
|
||||
int noiseEnergy = sf - 90 - 256;
|
||||
boolean intensityUsed = false, noiseUsed = false;
|
||||
for (int g = 0; g < windowGroupCount; g++) {
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++) {
|
||||
switch (sfbCB[g][sfb]) {
|
||||
case 0:
|
||||
scaleFactors[g][sfb] = 0;
|
||||
break;
|
||||
case 14:
|
||||
case 15:
|
||||
if (!intensityUsed)
|
||||
intensityUsed = true;
|
||||
intensityPosition += decodeHuffman(_in);
|
||||
scaleFactors[g][sfb] = intensityPosition;
|
||||
break;
|
||||
case 13:
|
||||
if (noiseUsed) {
|
||||
noiseEnergy += decodeHuffman(_in);
|
||||
scaleFactors[g][sfb] = noiseEnergy;
|
||||
} else {
|
||||
noiseUsed = true;
|
||||
noiseEnergy = decodeHuffman(_in);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sf += decodeHuffman(_in);
|
||||
scaleFactors[g][sfb] = sf;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
int lastIntensityPosition = 0;
|
||||
if (intensityUsed)
|
||||
lastIntensityPosition = decodeHuffman(_in);
|
||||
noiseUsed = false;
|
||||
if (_in.readBool())
|
||||
decodeEscapes(_in, ics, scaleFactors);
|
||||
}
|
||||
|
||||
private void decodeEscapes(IBitStream _in, ICStream ics, int[][] scaleFactors) throws AACException {
|
||||
ICSInfo info = ics.getInfo();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[][] sfbCB = { {} };
|
||||
int escapesLen = _in.readBits(8);
|
||||
boolean noiseUsed = false;
|
||||
for (int g = 0; g < windowGroupCount; g++) {
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++) {
|
||||
if (sfbCB[g][sfb] == 13 && !noiseUsed) {
|
||||
noiseUsed = true;
|
||||
} else if (Math.abs(sfbCB[g][sfb]) == 7) {
|
||||
int val = decodeHuffmanEscape(_in);
|
||||
if (sfbCB[g][sfb] == -7) {
|
||||
scaleFactors[g][sfb] = scaleFactors[g][sfb] - val;
|
||||
} else {
|
||||
scaleFactors[g][sfb] = scaleFactors[g][sfb] + val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int decodeHuffman(IBitStream _in) throws AACException {
|
||||
int off = 0;
|
||||
int i = RVLC_BOOK[off][1];
|
||||
int cw = _in.readBits(i);
|
||||
while (cw != RVLC_BOOK[off][2] && i < 10) {
|
||||
off++;
|
||||
int j = RVLC_BOOK[off][1] - i;
|
||||
i += j;
|
||||
cw <<= j;
|
||||
cw |= _in.readBits(j);
|
||||
}
|
||||
return RVLC_BOOK[off][0];
|
||||
}
|
||||
|
||||
private int decodeHuffmanEscape(IBitStream _in) throws AACException {
|
||||
int off = 0;
|
||||
int i = ESCAPE_BOOK[off][1];
|
||||
int cw = _in.readBits(i);
|
||||
while (cw != ESCAPE_BOOK[off][2] && i < 21) {
|
||||
off++;
|
||||
int j = ESCAPE_BOOK[off][1] - i;
|
||||
i += j;
|
||||
cw <<= j;
|
||||
cw |= _in.readBits(j);
|
||||
}
|
||||
return ESCAPE_BOOK[off][0];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package net.sourceforge.jaad.aac.error;
|
||||
|
||||
interface RVLCTables {
|
||||
public static final int[][] RVLC_BOOK = new int[][] {
|
||||
new int[] { 0, 1, 0 }, new int[] { -1, 3, 5 }, new int[] { 1, 3, 7 }, new int[] { -2, 4, 9 }, new int[] { -3, 5, 17 }, new int[] { 2, 5, 27 }, new int[] { -4, 6, 33 }, new int[] { 99, 6, 50 }, new int[] { 3, 6, 51 }, new int[] { 99, 6, 52 },
|
||||
new int[] { -7, 7, 65 }, new int[] { 99, 7, 96 }, new int[] { 99, 7, 98 }, new int[] { 7, 7, 99 }, new int[] { 4, 7, 107 }, new int[] { -5, 8, 129 }, new int[] { 99, 8, 194 }, new int[] { 5, 8, 195 }, new int[] { 99, 8, 212 }, new int[] { 99, 9, 256 },
|
||||
new int[] { -6, 9, 257 }, new int[] { 99, 9, 426 }, new int[] { 6, 9, 427 }, new int[] { 99, 10, 0 } };
|
||||
|
||||
public static final int[][] ESCAPE_BOOK = new int[][] {
|
||||
new int[] { 1, 2, 0 }, new int[] { 0, 2, 2 }, new int[] { 3, 3, 2 }, new int[] { 2, 3, 6 }, new int[] { 4, 4, 14 }, new int[] { 7, 5, 13 }, new int[] { 6, 5, 15 }, new int[] { 5, 5, 31 }, new int[] { 11, 6, 24 }, new int[] { 10, 6, 25 },
|
||||
new int[] { 9, 6, 29 }, new int[] { 8, 6, 61 }, new int[] { 13, 7, 56 }, new int[] { 12, 7, 120 }, new int[] { 15, 8, 114 }, new int[] { 14, 8, 242 }, new int[] { 17, 9, 230 }, new int[] { 16, 9, 486 }, new int[] { 19, 10, 463 }, new int[] { 18, 10, 974 },
|
||||
new int[] { 22, 11, 925 }, new int[] { 20, 11, 1950 }, new int[] { 21, 11, 1951 }, new int[] { 23, 12, 1848 }, new int[] { 25, 13, 3698 }, new int[] { 24, 14, 7399 }, new int[] { 26, 15, 14797 }, new int[] { 49, 19, 236736 }, new int[] { 50, 19, 236737 }, new int[] { 51, 19, 236738 },
|
||||
new int[] { 52, 19, 236739 }, new int[] { 53, 19, 236740 }, new int[] { 27, 20, 473482 }, new int[] { 28, 20, 473483 }, new int[] { 29, 20, 473484 }, new int[] { 30, 20, 473485 }, new int[] { 31, 20, 473486 }, new int[] { 32, 20, 473487 }, new int[] { 33, 20, 473488 }, new int[] { 34, 20, 473489 },
|
||||
new int[] { 35, 20, 473490 }, new int[] { 36, 20, 473491 }, new int[] { 37, 20, 473492 }, new int[] { 38, 20, 473493 }, new int[] { 39, 20, 473494 }, new int[] { 40, 20, 473495 }, new int[] { 41, 20, 473496 }, new int[] { 42, 20, 473497 }, new int[] { 43, 20, 473498 }, new int[] { 44, 20, 473499 },
|
||||
new int[] { 45, 20, 473500 }, new int[] { 46, 20, 473501 }, new int[] { 47, 20, 473502 }, new int[] { 48, 20, 473503 }, new int[] { 99, 21, 0 } };
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
package net.sourceforge.jaad.aac.error;
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
class FFT implements FFTTables {
|
||||
private final int length;
|
||||
|
||||
private final float[][] roots;
|
||||
|
||||
private final float[][] rev;
|
||||
|
||||
private float[] a;
|
||||
|
||||
private float[] b;
|
||||
|
||||
private float[] c;
|
||||
|
||||
private float[] d;
|
||||
|
||||
private float[] e1;
|
||||
|
||||
private float[] e2;
|
||||
|
||||
FFT(int length) throws AACException {
|
||||
this.length = length;
|
||||
switch (length) {
|
||||
case 64:
|
||||
this.roots = FFT_TABLE_64;
|
||||
break;
|
||||
case 512:
|
||||
this.roots = FFT_TABLE_512;
|
||||
break;
|
||||
case 60:
|
||||
this.roots = FFT_TABLE_60;
|
||||
break;
|
||||
case 480:
|
||||
this.roots = FFT_TABLE_480;
|
||||
break;
|
||||
default:
|
||||
throw new AACException("unexpected FFT length: " + length);
|
||||
}
|
||||
this.rev = new float[length][2];
|
||||
this.a = new float[2];
|
||||
this.b = new float[2];
|
||||
this.c = new float[2];
|
||||
this.d = new float[2];
|
||||
this.e1 = new float[2];
|
||||
this.e2 = new float[2];
|
||||
}
|
||||
|
||||
void process(float[][] _in, boolean forward) {
|
||||
int imOff = forward ? 2 : 1;
|
||||
int scale = forward ? this.length : 1;
|
||||
int ii = 0;
|
||||
for (int k = 0; k < this.length; k++) {
|
||||
this.rev[k][0] = _in[ii][0];
|
||||
this.rev[k][1] = _in[ii][1];
|
||||
int n = this.length >> 1;
|
||||
while (ii >= n && n > 0) {
|
||||
ii -= n;
|
||||
n >>= 1;
|
||||
}
|
||||
ii += n;
|
||||
}
|
||||
for (int j = 0; j < this.length; j++) {
|
||||
_in[j][0] = this.rev[j][0];
|
||||
_in[j][1] = this.rev[j][1];
|
||||
}
|
||||
for (int i = 0; i < this.length; i += 4) {
|
||||
this.a[0] = _in[i][0] + _in[i + 1][0];
|
||||
this.a[1] = _in[i][1] + _in[i + 1][1];
|
||||
this.b[0] = _in[i + 2][0] + _in[i + 3][0];
|
||||
this.b[1] = _in[i + 2][1] + _in[i + 3][1];
|
||||
this.c[0] = _in[i][0] - _in[i + 1][0];
|
||||
this.c[1] = _in[i][1] - _in[i + 1][1];
|
||||
this.d[0] = _in[i + 2][0] - _in[i + 3][0];
|
||||
this.d[1] = _in[i + 2][1] - _in[i + 3][1];
|
||||
_in[i][0] = this.a[0] + this.b[0];
|
||||
_in[i][1] = this.a[1] + this.b[1];
|
||||
_in[i + 2][0] = this.a[0] - this.b[0];
|
||||
_in[i + 2][1] = this.a[1] - this.b[1];
|
||||
this.e1[0] = this.c[0] - this.d[1];
|
||||
this.e1[1] = this.c[1] + this.d[0];
|
||||
this.e2[0] = this.c[0] + this.d[1];
|
||||
this.e2[1] = this.c[1] - this.d[0];
|
||||
if (forward) {
|
||||
_in[i + 1][0] = this.e2[0];
|
||||
_in[i + 1][1] = this.e2[1];
|
||||
_in[i + 3][0] = this.e1[0];
|
||||
_in[i + 3][1] = this.e1[1];
|
||||
} else {
|
||||
_in[i + 1][0] = this.e1[0];
|
||||
_in[i + 1][1] = this.e1[1];
|
||||
_in[i + 3][0] = this.e2[0];
|
||||
_in[i + 3][1] = this.e2[1];
|
||||
}
|
||||
}
|
||||
for (int m = 4; m < this.length; m <<= 1) {
|
||||
int shift = m << 1;
|
||||
int n = this.length / shift;
|
||||
for (int i1 = 0; i1 < this.length; i1 += shift) {
|
||||
for (int i2 = 0; i2 < m; i2++) {
|
||||
int km = i2 * n;
|
||||
float rootRe = this.roots[km][0];
|
||||
float rootIm = this.roots[km][imOff];
|
||||
float zRe = _in[m + i1 + i2][0] * rootRe - _in[m + i1 + i2][1] * rootIm;
|
||||
float zIm = _in[m + i1 + i2][0] * rootIm + _in[m + i1 + i2][1] * rootRe;
|
||||
_in[m + i1 + i2][0] = (_in[i1 + i2][0] - zRe) * (float)scale;
|
||||
_in[m + i1 + i2][1] = (_in[i1 + i2][1] - zIm) * (float)scale;
|
||||
_in[i1 + i2][0] = (_in[i1 + i2][0] + zRe) * (float)scale;
|
||||
_in[i1 + i2][1] = (_in[i1 + i2][1] + zIm) * (float)scale;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
interface FFTTables {
|
||||
public static final float[][] FFT_TABLE_512 = new float[][] {
|
||||
new float[] { 1.0F, 0.0F, 0.0F }, new float[] { 0.9999247F, 0.012271538F, -0.012271538F }, new float[] { 0.9996989F, 0.024541229F, -0.024541229F }, new float[] { 0.9993224F, 0.036807224F, -0.036807224F }, new float[] { 0.9987955F, 0.049067676F, -0.049067676F }, new float[] { 0.9981182F, 0.061320737F, -0.061320737F }, new float[] { 0.99729055F, 0.07356457F, -0.07356457F }, new float[] { 0.9963127F, 0.08579732F, -0.08579732F }, new float[] { 0.99518484F, 0.09801715F, -0.09801715F }, new float[] { 0.9939071F, 0.11022222F, -0.11022222F },
|
||||
new float[] { 0.9924797F, 0.12241069F, -0.12241069F }, new float[] { 0.9909028F, 0.13458073F, -0.13458073F }, new float[] { 0.98917663F, 0.1467305F, -0.1467305F }, new float[] { 0.9873016F, 0.15885818F, -0.15885818F }, new float[] { 0.98527783F, 0.17096192F, -0.17096192F }, new float[] { 0.9831057F, 0.18303992F, -0.18303992F }, new float[] { 0.9807855F, 0.19509035F, -0.19509035F }, new float[] { 0.97831756F, 0.2071114F, -0.2071114F }, new float[] { 0.9757023F, 0.21910128F, -0.21910128F }, new float[] { 0.97294015F, 0.23105815F, -0.23105815F },
|
||||
new float[] { 0.97003144F, 0.24298023F, -0.24298023F }, new float[] { 0.9669767F, 0.2548657F, -0.2548657F }, new float[] { 0.96377635F, 0.2667128F, -0.2667128F }, new float[] { 0.96043086F, 0.27851975F, -0.27851975F }, new float[] { 0.9569407F, 0.29028472F, -0.29028472F }, new float[] { 0.95330644F, 0.302006F, -0.302006F }, new float[] { 0.9495286F, 0.3136818F, -0.3136818F }, new float[] { 0.9456077F, 0.32531038F, -0.32531038F }, new float[] { 0.9415445F, 0.33688995F, -0.33688995F }, new float[] { 0.9373394F, 0.3484188F, -0.3484188F },
|
||||
new float[] { 0.93299323F, 0.35989517F, -0.35989517F }, new float[] { 0.92850655F, 0.37131733F, -0.37131733F }, new float[] { 0.92388F, 0.38268358F, -0.38268358F }, new float[] { 0.9191143F, 0.3939922F, -0.3939922F }, new float[] { 0.9142102F, 0.4052415F, -0.4052415F }, new float[] { 0.9091684F, 0.41642973F, -0.41642973F }, new float[] { 0.9039898F, 0.42755526F, -0.42755526F }, new float[] { 0.89867496F, 0.43861642F, -0.43861642F }, new float[] { 0.89322484F, 0.4496115F, -0.4496115F }, new float[] { 0.8876402F, 0.4605389F, -0.4605389F },
|
||||
new float[] { 0.8819218F, 0.47139695F, -0.47139695F }, new float[] { 0.8760707F, 0.482184F, -0.482184F }, new float[] { 0.8700876F, 0.49289843F, -0.49289843F }, new float[] { 0.8639735F, 0.50353867F, -0.50353867F }, new float[] { 0.85772926F, 0.51410306F, -0.51410306F }, new float[] { 0.85135585F, 0.52459F, -0.52459F }, new float[] { 0.84485424F, 0.53499794F, -0.53499794F }, new float[] { 0.83822536F, 0.5453253F, -0.5453253F }, new float[] { 0.83147025F, 0.55557054F, -0.55557054F }, new float[] { 0.82458997F, 0.5657321F, -0.5657321F },
|
||||
new float[] { 0.8175855F, 0.57580847F, -0.57580847F }, new float[] { 0.8104579F, 0.58579814F, -0.58579814F }, new float[] { 0.80320823F, 0.5956996F, -0.5956996F }, new float[] { 0.79583764F, 0.60551137F, -0.60551137F }, new float[] { 0.7883472F, 0.61523193F, -0.61523193F }, new float[] { 0.780738F, 0.62485987F, -0.62485987F }, new float[] { 0.7730112F, 0.6343937F, -0.6343937F }, new float[] { 0.7651681F, 0.64383197F, -0.64383197F }, new float[] { 0.75720966F, 0.6531733F, -0.6531733F }, new float[] { 0.7491372F, 0.6624163F, -0.6624163F },
|
||||
new float[] { 0.74095196F, 0.67155945F, -0.67155945F }, new float[] { 0.7326551F, 0.68060154F, -0.68060154F }, new float[] { 0.72424793F, 0.6895411F, -0.6895411F }, new float[] { 0.7157317F, 0.69837683F, -0.69837683F }, new float[] { 0.70710766F, 0.70710737F, -0.70710737F }, new float[] { 0.69837713F, 0.71573144F, -0.71573144F }, new float[] { 0.68954146F, 0.7242477F, -0.7242477F }, new float[] { 0.6806019F, 0.73265487F, -0.73265487F }, new float[] { 0.6715598F, 0.7409518F, -0.7409518F }, new float[] { 0.66241664F, 0.74913704F, -0.74913704F },
|
||||
new float[] { 0.6531737F, 0.75720954F, -0.75720954F }, new float[] { 0.6438324F, 0.765168F, -0.765168F }, new float[] { 0.6343941F, 0.77301127F, -0.77301127F }, new float[] { 0.62486035F, 0.78073806F, -0.78073806F }, new float[] { 0.61523247F, 0.7883473F, -0.7883473F }, new float[] { 0.6055119F, 0.79583776F, -0.79583776F }, new float[] { 0.59570014F, 0.8032084F, -0.8032084F }, new float[] { 0.58579874F, 0.8104581F, -0.8104581F }, new float[] { 0.57580906F, 0.81758577F, -0.81758577F }, new float[] { 0.5657327F, 0.82459027F, -0.82459027F },
|
||||
new float[] { 0.5555711F, 0.8314706F, -0.8314706F }, new float[] { 0.5453258F, 0.8382257F, -0.8382257F }, new float[] { 0.5349984F, 0.8448546F, -0.8448546F }, new float[] { 0.52459043F, 0.85135627F, -0.85135627F }, new float[] { 0.5141035F, 0.85772973F, -0.85772973F }, new float[] { 0.50353914F, 0.86397403F, -0.86397403F }, new float[] { 0.49289894F, 0.8700882F, -0.8700882F }, new float[] { 0.48218453F, 0.87607133F, -0.87607133F }, new float[] { 0.4713975F, 0.88192254F, -0.88192254F }, new float[] { 0.46053946F, 0.8876409F, -0.8876409F },
|
||||
new float[] { 0.44961208F, 0.8932256F, -0.8932256F }, new float[] { 0.43861696F, 0.8986758F, -0.8986758F }, new float[] { 0.4275558F, 0.9039906F, -0.9039906F }, new float[] { 0.41643026F, 0.9091693F, -0.9091693F }, new float[] { 0.405242F, 0.91421115F, -0.91421115F }, new float[] { 0.3939927F, 0.91911525F, -0.91911525F }, new float[] { 0.38268408F, 0.92388093F, -0.92388093F }, new float[] { 0.37131783F, 0.9285075F, -0.9285075F }, new float[] { 0.35989568F, 0.93299425F, -0.93299425F }, new float[] { 0.3484193F, 0.9373405F, -0.9373405F },
|
||||
new float[] { 0.33689046F, 0.94154555F, -0.94154555F }, new float[] { 0.3253109F, 0.94560885F, -0.94560885F }, new float[] { 0.31368232F, 0.94952977F, -0.94952977F }, new float[] { 0.3020065F, 0.9533077F, -0.9533077F }, new float[] { 0.29028523F, 0.956942F, -0.956942F }, new float[] { 0.27852023F, 0.96043223F, -0.96043223F }, new float[] { 0.26671326F, 0.9637778F, -0.9637778F }, new float[] { 0.25486615F, 0.96697825F, -0.96697825F }, new float[] { 0.24298064F, 0.97003305F, -0.97003305F }, new float[] { 0.23105855F, 0.97294176F, -0.97294176F },
|
||||
new float[] { 0.21910167F, 0.97570395F, -0.97570395F }, new float[] { 0.20711178F, 0.9783192F, -0.9783192F }, new float[] { 0.19509071F, 0.98078716F, -0.98078716F }, new float[] { 0.18304025F, 0.9831074F, -0.9831074F }, new float[] { 0.17096223F, 0.98527956F, -0.98527956F }, new float[] { 0.15885846F, 0.9873034F, -0.9873034F }, new float[] { 0.14673077F, 0.9891785F, -0.9891785F }, new float[] { 0.13458098F, 0.9909046F, -0.9909046F }, new float[] { 0.12241093F, 0.9924815F, -0.9924815F }, new float[] { 0.11022244F, 0.99390894F, -0.99390894F },
|
||||
new float[] { 0.09801734F, 0.99518675F, -0.99518675F }, new float[] { 0.085797496F, 0.99631464F, -0.99631464F }, new float[] { 0.07356472F, 0.9972925F, -0.9972925F }, new float[] { 0.061320875F, 0.9981202F, -0.9981202F }, new float[] { 0.049067788F, 0.99879754F, -0.99879754F }, new float[] { 0.03680731F, 0.9993245F, -0.9993245F }, new float[] { 0.024541289F, 0.99970096F, -0.99970096F }, new float[] { 0.012271572F, 0.99992687F, -0.99992687F }, new float[] { 7.450581E-9F, 1.0000021F, -1.0000021F }, new float[] { -0.012271557F, 0.99992687F, -0.99992687F },
|
||||
new float[] { -0.024541274F, 0.999701F, -0.999701F }, new float[] { -0.036807295F, 0.99932456F, -0.99932456F }, new float[] { -0.049067773F, 0.99879766F, -0.99879766F }, new float[] { -0.06132086F, 0.99812037F, -0.99812037F }, new float[] { -0.073564716F, 0.9972927F, -0.9972927F }, new float[] { -0.085797496F, 0.9963148F, -0.9963148F }, new float[] { -0.09801735F, 0.995187F, -0.995187F }, new float[] { -0.11022245F, 0.99390924F, -0.99390924F }, new float[] { -0.122410946F, 0.9924818F, -0.9924818F }, new float[] { -0.13458101F, 0.9909049F, -0.9909049F },
|
||||
new float[] { -0.14673081F, 0.9891788F, -0.9891788F }, new float[] { -0.15885851F, 0.98730373F, -0.98730373F }, new float[] { -0.17096227F, 0.98528F, -0.98528F }, new float[] { -0.1830403F, 0.98310786F, -0.98310786F }, new float[] { -0.19509077F, 0.98078763F, -0.98078763F }, new float[] { -0.20711185F, 0.9783197F, -0.9783197F }, new float[] { -0.21910176F, 0.97570443F, -0.97570443F }, new float[] { -0.23105866F, 0.9729423F, -0.9729423F }, new float[] { -0.24298076F, 0.9700336F, -0.9700336F }, new float[] { -0.25486627F, 0.96697885F, -0.96697885F },
|
||||
new float[] { -0.2667134F, 0.9637785F, -0.9637785F }, new float[] { -0.27852038F, 0.96043295F, -0.96043295F }, new float[] { -0.29028538F, 0.9569428F, -0.9569428F }, new float[] { -0.3020067F, 0.95330846F, -0.95330846F }, new float[] { -0.31368253F, 0.9495306F, -0.9495306F }, new float[] { -0.32531112F, 0.94560975F, -0.94560975F }, new float[] { -0.33689073F, 0.9415465F, -0.9415465F }, new float[] { -0.34841958F, 0.93734145F, -0.93734145F }, new float[] { -0.35989597F, 0.93299526F, -0.93299526F }, new float[] { -0.37131816F, 0.9285086F, -0.9285086F },
|
||||
new float[] { -0.38268444F, 0.923882F, -0.923882F }, new float[] { -0.39399308F, 0.9191163F, -0.9191163F }, new float[] { -0.40524238F, 0.9142122F, -0.9142122F }, new float[] { -0.41643065F, 0.90917045F, -0.90917045F }, new float[] { -0.42755622F, 0.90399176F, -0.90399176F }, new float[] { -0.4386174F, 0.89867693F, -0.89867693F }, new float[] { -0.44961253F, 0.89322674F, -0.89322674F }, new float[] { -0.46053994F, 0.8876421F, -0.8876421F }, new float[] { -0.471398F, 0.88192374F, -0.88192374F }, new float[] { -0.48218507F, 0.8760726F, -0.8760726F },
|
||||
new float[] { -0.49289954F, 0.87008953F, -0.87008953F }, new float[] { -0.50353974F, 0.8639754F, -0.8639754F }, new float[] { -0.5141041F, 0.85773116F, -0.85773116F }, new float[] { -0.52459115F, 0.85135776F, -0.85135776F }, new float[] { -0.5349991F, 0.84485614F, -0.84485614F }, new float[] { -0.5453265F, 0.8382273F, -0.8382273F }, new float[] { -0.55557173F, 0.83147216F, -0.83147216F }, new float[] { -0.5657333F, 0.8245919F, -0.8245919F }, new float[] { -0.5758097F, 0.81758744F, -0.81758744F }, new float[] { -0.58579946F, 0.8104598F, -0.8104598F },
|
||||
new float[] { -0.5957009F, 0.8032101F, -0.8032101F }, new float[] { -0.60551274F, 0.7958395F, -0.7958395F }, new float[] { -0.6152333F, 0.78834903F, -0.78834903F }, new float[] { -0.62486124F, 0.7807398F, -0.7807398F }, new float[] { -0.63439506F, 0.773013F, -0.773013F }, new float[] { -0.6438334F, 0.7651698F, -0.7651698F }, new float[] { -0.65317476F, 0.7572114F, -0.7572114F }, new float[] { -0.6624177F, 0.74913895F, -0.74913895F }, new float[] { -0.6715609F, 0.7409537F, -0.7409537F }, new float[] { -0.68060297F, 0.73265684F, -0.73265684F },
|
||||
new float[] { -0.68954253F, 0.72424966F, -0.72424966F }, new float[] { -0.69837826F, 0.71573335F, -0.71573335F }, new float[] { -0.70710886F, 0.7071093F, -0.7071093F }, new float[] { -0.71573293F, 0.69837874F, -0.69837874F }, new float[] { -0.72424924F, 0.689543F, -0.689543F }, new float[] { -0.7326565F, 0.68060344F, -0.68060344F }, new float[] { -0.7409534F, 0.67156136F, -0.67156136F }, new float[] { -0.7491387F, 0.6624182F, -0.6624182F }, new float[] { -0.7572112F, 0.65317523F, -0.65317523F }, new float[] { -0.7651697F, 0.64383394F, -0.64383394F },
|
||||
new float[] { -0.77301294F, 0.63439566F, -0.63439566F }, new float[] { -0.7807398F, 0.62486184F, -0.62486184F }, new float[] { -0.78834903F, 0.61523396F, -0.61523396F }, new float[] { -0.79583955F, 0.6055134F, -0.6055134F }, new float[] { -0.8032102F, 0.59570163F, -0.59570163F }, new float[] { -0.8104599F, 0.5858002F, -0.5858002F }, new float[] { -0.81758755F, 0.5758105F, -0.5758105F }, new float[] { -0.82459205F, 0.5657341F, -0.5657341F }, new float[] { -0.83147246F, 0.55557245F, -0.55557245F }, new float[] { -0.8382276F, 0.5453272F, -0.5453272F },
|
||||
new float[] { -0.8448565F, 0.5349998F, -0.5349998F }, new float[] { -0.8513582F, 0.5245918F, -0.5245918F }, new float[] { -0.85773164F, 0.5141048F, -0.5141048F }, new float[] { -0.86397594F, 0.5035404F, -0.5035404F }, new float[] { -0.8700901F, 0.49290016F, -0.49290016F }, new float[] { -0.87607324F, 0.48218572F, -0.48218572F }, new float[] { -0.88192445F, 0.47139865F, -0.47139865F }, new float[] { -0.88764286F, 0.4605406F, -0.4605406F }, new float[] { -0.8932276F, 0.44961318F, -0.44961318F }, new float[] { -0.89867777F, 0.43861806F, -0.43861806F },
|
||||
new float[] { -0.90399265F, 0.42755687F, -0.42755687F }, new float[] { -0.90917134F, 0.4164313F, -0.4164313F }, new float[] { -0.9142132F, 0.40524304F, -0.40524304F }, new float[] { -0.9191173F, 0.3939937F, -0.3939937F }, new float[] { -0.92388296F, 0.38268507F, -0.38268507F }, new float[] { -0.92850953F, 0.3713188F, -0.3713188F }, new float[] { -0.9329963F, 0.3598966F, -0.3598966F }, new float[] { -0.9373425F, 0.3484202F, -0.3484202F }, new float[] { -0.94154763F, 0.33689135F, -0.33689135F }, new float[] { -0.94561094F, 0.32531175F, -0.32531175F },
|
||||
new float[] { -0.94953185F, 0.31368315F, -0.31368315F }, new float[] { -0.9533098F, 0.30200732F, -0.30200732F }, new float[] { -0.9569441F, 0.290286F, -0.290286F }, new float[] { -0.9604343F, 0.27852097F, -0.27852097F }, new float[] { -0.9637799F, 0.26671398F, -0.26671398F }, new float[] { -0.9669804F, 0.25486684F, -0.25486684F }, new float[] { -0.97003525F, 0.24298131F, -0.24298131F }, new float[] { -0.972944F, 0.2310592F, -0.2310592F }, new float[] { -0.9757062F, 0.21910228F, -0.21910228F }, new float[] { -0.9783215F, 0.20711237F, -0.20711237F },
|
||||
new float[] { -0.9807894F, 0.19509128F, -0.19509128F }, new float[] { -0.98310965F, 0.18304078F, -0.18304078F }, new float[] { -0.9852818F, 0.17096274F, -0.17096274F }, new float[] { -0.98730564F, 0.15885894F, -0.15885894F }, new float[] { -0.98918074F, 0.14673121F, -0.14673121F }, new float[] { -0.9909069F, 0.1345814F, -0.1345814F }, new float[] { -0.9924838F, 0.12241132F, -0.12241132F }, new float[] { -0.9939112F, 0.1102228F, -0.1102228F }, new float[] { -0.995189F, 0.098017685F, -0.098017685F }, new float[] { -0.9963169F, 0.08579781F, -0.08579781F },
|
||||
new float[] { -0.9972948F, 0.073565006F, -0.073565006F }, new float[] { -0.99812245F, 0.06132113F, -0.06132113F }, new float[] { -0.9987998F, 0.049068015F, -0.049068015F }, new float[] { -0.99932677F, 0.036807507F, -0.036807507F }, new float[] { -0.9997032F, 0.02454146F, -0.02454146F }, new float[] { -0.99992913F, 0.012271715F, -0.012271715F }, new float[] { -1.0000044F, 1.2293458E-7F, -1.2293458E-7F }, new float[] { -0.99992913F, -0.012271469F, 0.012271469F }, new float[] { -0.9997033F, -0.024541214F, 0.024541214F }, new float[] { -0.9993268F, -0.03680726F, 0.03680726F },
|
||||
new float[] { -0.9987999F, -0.049067765F, 0.049067765F }, new float[] { -0.99812263F, -0.061320882F, 0.061320882F }, new float[] { -0.99729496F, -0.07356477F, 0.07356477F }, new float[] { -0.9963171F, -0.08579758F, 0.08579758F }, new float[] { -0.99518925F, -0.09801746F, 0.09801746F }, new float[] { -0.9939115F, -0.110222585F, 0.110222585F }, new float[] { -0.9924841F, -0.12241111F, 0.12241111F }, new float[] { -0.9909072F, -0.1345812F, 0.1345812F }, new float[] { -0.98918104F, -0.14673102F, 0.14673102F }, new float[] { -0.987306F, -0.15885875F, 0.15885875F },
|
||||
new float[] { -0.98528224F, -0.17096254F, 0.17096254F }, new float[] { -0.98311013F, -0.18304059F, 0.18304059F }, new float[] { -0.9807899F, -0.19509108F, 0.19509108F }, new float[] { -0.97832197F, -0.2071122F, 0.2071122F }, new float[] { -0.9757067F, -0.21910211F, 0.21910211F }, new float[] { -0.97294456F, -0.23105904F, 0.23105904F }, new float[] { -0.97003585F, -0.24298118F, 0.24298118F }, new float[] { -0.96698105F, -0.25486672F, 0.25486672F }, new float[] { -0.96378064F, -0.26671386F, 0.26671386F }, new float[] { -0.9604351F, -0.27852085F, 0.27852085F },
|
||||
new float[] { -0.95694494F, -0.2902859F, 0.2902859F }, new float[] { -0.9533106F, -0.30200723F, 0.30200723F }, new float[] { -0.94953275F, -0.31368306F, 0.31368306F }, new float[] { -0.9456119F, -0.3253117F, 0.3253117F }, new float[] { -0.94154865F, -0.3368913F, 0.3368913F }, new float[] { -0.9373436F, -0.34842017F, 0.34842017F }, new float[] { -0.93299735F, -0.3598966F, 0.3598966F }, new float[] { -0.92851067F, -0.37131882F, 0.37131882F }, new float[] { -0.9238841F, -0.38268512F, 0.38268512F }, new float[] { -0.9191184F, -0.3939938F, 0.3939938F },
|
||||
new float[] { -0.9142143F, -0.40524313F, 0.40524313F }, new float[] { -0.90917253F, -0.41643143F, 0.41643143F }, new float[] { -0.90399384F, -0.42755702F, 0.42755702F }, new float[] { -0.898679F, -0.43861824F, 0.43861824F }, new float[] { -0.8932288F, -0.4496134F, 0.4496134F }, new float[] { -0.8876442F, -0.46054083F, 0.46054083F }, new float[] { -0.8819258F, -0.47139892F, 0.47139892F }, new float[] { -0.8760746F, -0.48218602F, 0.48218602F }, new float[] { -0.8700915F, -0.4929005F, 0.4929005F }, new float[] { -0.8639774F, -0.50354075F, 0.50354075F },
|
||||
new float[] { -0.85773313F, -0.5141052F, 0.5141052F }, new float[] { -0.8513597F, -0.5245922F, 0.5245922F }, new float[] { -0.8448581F, -0.5350002F, 0.5350002F }, new float[] { -0.83822924F, -0.5453276F, 0.5453276F }, new float[] { -0.8314741F, -0.5555729F, 0.5555729F }, new float[] { -0.8245938F, -0.56573457F, 0.56573457F }, new float[] { -0.8175893F, -0.57581097F, 0.57581097F }, new float[] { -0.81046164F, -0.5858007F, 0.5858007F }, new float[] { -0.8032119F, -0.59570223F, 0.59570223F }, new float[] { -0.7958413F, -0.60551405F, 0.60551405F },
|
||||
new float[] { -0.78835076F, -0.6152347F, 0.6152347F }, new float[] { -0.7807415F, -0.6248626F, 0.6248626F }, new float[] { -0.7730147F, -0.6343965F, 0.6343965F }, new float[] { -0.7651715F, -0.6438348F, 0.6438348F }, new float[] { -0.7572131F, -0.6531762F, 0.6531762F }, new float[] { -0.7491407F, -0.6624192F, 0.6624192F }, new float[] { -0.7409554F, -0.67156243F, 0.67156243F }, new float[] { -0.7326585F, -0.6806046F, 0.6806046F }, new float[] { -0.72425133F, -0.68954414F, 0.68954414F }, new float[] { -0.715735F, -0.6983799F, 0.6983799F },
|
||||
new float[] { -0.70711094F, -0.70711046F, 0.70711046F }, new float[] { -0.69838035F, -0.7157346F, 0.7157346F }, new float[] { -0.6895446F, -0.7242509F, 0.7242509F }, new float[] { -0.68060505F, -0.73265815F, 0.73265815F }, new float[] { -0.67156297F, -0.7409551F, 0.7409551F }, new float[] { -0.6624198F, -0.74914044F, 0.74914044F }, new float[] { -0.6531768F, -0.75721294F, 0.75721294F }, new float[] { -0.6438354F, -0.7651714F, 0.7651714F }, new float[] { -0.63439715F, -0.77301466F, 0.77301466F }, new float[] { -0.6248633F, -0.7807415F, 0.7807415F },
|
||||
new float[] { -0.6152354F, -0.78835076F, 0.78835076F }, new float[] { -0.6055148F, -0.7958413F, 0.7958413F }, new float[] { -0.595703F, -0.803212F, 0.803212F }, new float[] { -0.58580154F, -0.81046176F, 0.81046176F }, new float[] { -0.5758118F, -0.8175894F, 0.8175894F }, new float[] { -0.5657354F, -0.8245939F, 0.8245939F }, new float[] { -0.55557376F, -0.8314743F, 0.8314743F }, new float[] { -0.54532844F, -0.8382295F, 0.8382295F }, new float[] { -0.535001F, -0.84485835F, 0.84485835F }, new float[] { -0.524593F, -0.85136F, 0.85136F },
|
||||
new float[] { -0.514106F, -0.8577335F, 0.8577335F }, new float[] { -0.5035416F, -0.8639778F, 0.8639778F }, new float[] { -0.49290136F, -0.870092F, 0.870092F }, new float[] { -0.48218688F, -0.87607515F, 0.87607515F }, new float[] { -0.47139978F, -0.8819264F, 0.8819264F }, new float[] { -0.4605417F, -0.8876448F, 0.8876448F }, new float[] { -0.44961426F, -0.89322954F, 0.89322954F }, new float[] { -0.4386191F, -0.8986798F, 0.8986798F }, new float[] { -0.42755792F, -0.9039947F, 0.9039947F }, new float[] { -0.41643232F, -0.9091734F, 0.9091734F },
|
||||
new float[] { -0.40524402F, -0.91421527F, 0.91421527F }, new float[] { -0.3939947F, -0.9191194F, 0.9191194F }, new float[] { -0.38268602F, -0.92388517F, 0.92388517F }, new float[] { -0.3713197F, -0.92851174F, 0.92851174F }, new float[] { -0.3598975F, -0.9329985F, 0.9329985F }, new float[] { -0.34842107F, -0.9373448F, 0.9373448F }, new float[] { -0.3368922F, -0.9415499F, 0.9415499F }, new float[] { -0.32531255F, -0.9456132F, 0.9456132F }, new float[] { -0.31368393F, -0.9495341F, 0.9495341F }, new float[] { -0.3020081F, -0.95331204F, 0.95331204F },
|
||||
new float[] { -0.29028675F, -0.9569464F, 0.9569464F }, new float[] { -0.2785217F, -0.9604366F, 0.9604366F }, new float[] { -0.26671466F, -0.9637822F, 0.9637822F }, new float[] { -0.2548675F, -0.96698266F, 0.96698266F }, new float[] { -0.24298194F, -0.9700375F, 0.9700375F }, new float[] { -0.23105979F, -0.9729463F, 0.9729463F }, new float[] { -0.21910286F, -0.9757085F, 0.9757085F }, new float[] { -0.20711292F, -0.97832376F, 0.97832376F }, new float[] { -0.1950918F, -0.9807917F, 0.9807917F }, new float[] { -0.18304129F, -0.9831119F, 0.9831119F },
|
||||
new float[] { -0.17096321F, -0.9852841F, 0.9852841F }, new float[] { -0.15885939F, -0.9873079F, 0.9873079F }, new float[] { -0.14673163F, -0.989183F, 0.989183F }, new float[] { -0.13458179F, -0.99090916F, 0.99090916F }, new float[] { -0.122411676F, -0.99248606F, 0.99248606F }, new float[] { -0.11022313F, -0.9939135F, 0.9939135F }, new float[] { -0.09801798F, -0.9951913F, 0.9951913F }, new float[] { -0.08579808F, -0.9963192F, 0.9963192F }, new float[] { -0.073565245F, -0.99729705F, 0.99729705F }, new float[] { -0.06132134F, -0.9981247F, 0.9981247F },
|
||||
new float[] { -0.049068198F, -0.99880207F, 0.99880207F }, new float[] { -0.036807664F, -0.99932903F, 0.99932903F }, new float[] { -0.024541587F, -0.9997055F, 0.9997055F }, new float[] { -0.012271815F, -0.9999314F, 0.9999314F }, new float[] { -1.9464642E-7F, -1.0000067F, 1.0000067F }, new float[] { 0.012271426F, -0.9999314F, 0.9999314F }, new float[] { 0.0245412F, -0.99970555F, 0.99970555F }, new float[] { 0.036807276F, -0.9993291F, 0.9993291F }, new float[] { 0.04906781F, -0.9988022F, 0.9988022F }, new float[] { 0.061320953F, -0.9981249F, 0.9981249F },
|
||||
new float[] { 0.073564865F, -0.9972972F, 0.9972972F }, new float[] { 0.0857977F, -0.99631935F, 0.99631935F }, new float[] { 0.09801761F, -0.9951915F, 0.9951915F }, new float[] { 0.110222764F, -0.99391377F, 0.99391377F }, new float[] { 0.12241132F, -0.99248636F, 0.99248636F }, new float[] { 0.13458143F, -0.99090946F, 0.99090946F }, new float[] { 0.14673129F, -0.9891833F, 0.9891833F }, new float[] { 0.15885904F, -0.98730826F, 0.98730826F }, new float[] { 0.17096287F, -0.9852845F, 0.9852845F }, new float[] { 0.18304095F, -0.9831124F, 0.9831124F },
|
||||
new float[] { 0.19509147F, -0.98079216F, 0.98079216F }, new float[] { 0.20711261F, -0.97832423F, 0.97832423F }, new float[] { 0.21910256F, -0.97570896F, 0.97570896F }, new float[] { 0.23105952F, -0.9729468F, 0.9729468F }, new float[] { 0.24298169F, -0.9700381F, 0.9700381F }, new float[] { 0.25486726F, -0.9669833F, 0.9669833F }, new float[] { 0.26671442F, -0.9637829F, 0.9637829F }, new float[] { 0.27852145F, -0.96043736F, 0.96043736F }, new float[] { 0.2902865F, -0.95694715F, 0.95694715F }, new float[] { 0.30200788F, -0.9533128F, 0.9533128F },
|
||||
new float[] { 0.31368375F, -0.94953495F, 0.94953495F }, new float[] { 0.3253124F, -0.9456141F, 0.9456141F }, new float[] { 0.33689204F, -0.94155085F, 0.94155085F }, new float[] { 0.34842095F, -0.9373458F, 0.9373458F }, new float[] { 0.3598974F, -0.93299955F, 0.93299955F }, new float[] { 0.37131965F, -0.9285129F, 0.9285129F }, new float[] { 0.382686F, -0.9238863F, 0.9238863F }, new float[] { 0.3939947F, -0.9191206F, 0.9191206F }, new float[] { 0.40524405F, -0.91421646F, 0.91421646F }, new float[] { 0.41643238F, -0.9091746F, 0.9091746F },
|
||||
new float[] { 0.427558F, -0.90399593F, 0.90399593F }, new float[] { 0.43861923F, -0.89868104F, 0.89868104F }, new float[] { 0.4496144F, -0.89323086F, 0.89323086F }, new float[] { 0.46054187F, -0.88764614F, 0.88764614F }, new float[] { 0.4714F, -0.8819278F, 0.8819278F }, new float[] { 0.48218712F, -0.8760766F, 0.8760766F }, new float[] { 0.49290162F, -0.87009346F, 0.87009346F }, new float[] { 0.5035419F, -0.8639793F, 0.8639793F }, new float[] { 0.51410633F, -0.85773504F, 0.85773504F }, new float[] { 0.52459335F, -0.85136163F, 0.85136163F },
|
||||
new float[] { 0.53500134F, -0.84486F, 0.84486F }, new float[] { 0.5453288F, -0.83823115F, 0.83823115F }, new float[] { 0.5555741F, -0.831476F, 0.831476F }, new float[] { 0.56573576F, -0.82459563F, 0.82459563F }, new float[] { 0.5758122F, -0.81759113F, 0.81759113F }, new float[] { 0.58580196F, -0.8104634F, 0.8104634F }, new float[] { 0.5957035F, -0.8032137F, 0.8032137F }, new float[] { 0.6055153F, -0.79584306F, 0.79584306F }, new float[] { 0.6152359F, -0.78835255F, 0.78835255F }, new float[] { 0.6248639F, -0.7807433F, 0.7807433F },
|
||||
new float[] { 0.6343978F, -0.7730165F, 0.7730165F }, new float[] { 0.64383614F, -0.7651733F, 0.7651733F }, new float[] { 0.65317756F, -0.7572149F, 0.7572149F }, new float[] { 0.6624206F, -0.7491424F, 0.7491424F }, new float[] { 0.6715638F, -0.7409571F, 0.7409571F }, new float[] { 0.68060595F, -0.7326602F, 0.7326602F }, new float[] { 0.6895456F, -0.72425294F, 0.72425294F }, new float[] { 0.69838136F, -0.7157366F, 0.7157366F }, new float[] { 0.70711195F, -0.70711255F, 0.70711255F }, new float[] { 0.7157361F, -0.69838196F, 0.69838196F },
|
||||
new float[] { 0.7242524F, -0.6895462F, 0.6895462F }, new float[] { 0.73265964F, -0.6806066F, 0.6806066F }, new float[] { 0.7409566F, -0.67156446F, 0.67156446F }, new float[] { 0.74914193F, -0.6624212F, 0.6624212F }, new float[] { 0.7572145F, -0.6531782F, 0.6531782F }, new float[] { 0.765173F, -0.64383686F, 0.64383686F }, new float[] { 0.77301633F, -0.6343985F, 0.6343985F }, new float[] { 0.7807432F, -0.6248647F, 0.6248647F }, new float[] { 0.7883525F, -0.61523676F, 0.61523676F }, new float[] { 0.795843F, -0.60551614F, 0.60551614F },
|
||||
new float[] { 0.8032137F, -0.5957043F, 0.5957043F }, new float[] { 0.8104635F, -0.58580285F, 0.58580285F }, new float[] { 0.81759113F, -0.5758131F, 0.5758131F }, new float[] { 0.8245957F, -0.56573665F, 0.56573665F }, new float[] { 0.8314761F, -0.55557495F, 0.55557495F }, new float[] { 0.83823127F, -0.54532963F, 0.54532963F }, new float[] { 0.8448602F, -0.5350022F, 0.5350022F }, new float[] { 0.8513619F, -0.5245941F, 0.5245941F }, new float[] { 0.8577354F, -0.5141071F, 0.5141071F }, new float[] { 0.86397976F, -0.50354266F, 0.50354266F },
|
||||
new float[] { 0.87009394F, -0.4929024F, 0.4929024F }, new float[] { 0.8760771F, -0.4821879F, 0.4821879F }, new float[] { 0.8819284F, -0.4714008F, 0.4714008F }, new float[] { 0.8876468F, -0.46054268F, 0.46054268F }, new float[] { 0.8932316F, -0.44961524F, 0.44961524F }, new float[] { 0.8986818F, -0.43862006F, 0.43862006F }, new float[] { 0.9039967F, -0.42755884F, 0.42755884F }, new float[] { 0.90917546F, -0.41643322F, 0.41643322F }, new float[] { 0.9142173F, -0.4052449F, 0.4052449F }, new float[] { 0.91912144F, -0.39399552F, 0.39399552F },
|
||||
new float[] { 0.9238872F, -0.38268682F, 0.38268682F }, new float[] { 0.92851377F, -0.3713205F, 0.3713205F }, new float[] { 0.9330005F, -0.35989824F, 0.35989824F }, new float[] { 0.9373468F, -0.3484218F, 0.3484218F }, new float[] { 0.9415519F, -0.3368929F, 0.3368929F }, new float[] { 0.94561523F, -0.32531324F, 0.32531324F }, new float[] { 0.94953614F, -0.31368458F, 0.31368458F }, new float[] { 0.95331407F, -0.30200872F, 0.30200872F }, new float[] { 0.9569484F, -0.29028735F, 0.29028735F }, new float[] { 0.9604386F, -0.27852228F, 0.27852228F },
|
||||
new float[] { 0.9637842F, -0.26671523F, 0.26671523F }, new float[] { 0.9669847F, -0.25486803F, 0.25486803F }, new float[] { 0.97003955F, -0.24298245F, 0.24298245F }, new float[] { 0.9729483F, -0.23106027F, 0.23106027F }, new float[] { 0.9757105F, -0.2191033F, 0.2191033F }, new float[] { 0.9783258F, -0.20711334F, 0.20711334F }, new float[] { 0.9807937F, -0.19509219F, 0.19509219F }, new float[] { 0.98311394F, -0.18304165F, 0.18304165F }, new float[] { 0.9852861F, -0.17096354F, 0.17096354F }, new float[] { 0.98730993F, -0.15885969F, 0.15885969F },
|
||||
new float[] { 0.98918504F, -0.14673191F, 0.14673191F }, new float[] { 0.9909112F, -0.13458204F, 0.13458204F }, new float[] { 0.9924881F, -0.12241191F, 0.12241191F }, new float[] { 0.9939155F, -0.11022334F, 0.11022334F }, new float[] { 0.9951933F, -0.09801817F, 0.09801817F }, new float[] { 0.9963212F, -0.08579824F, 0.08579824F }, new float[] { 0.9972991F, -0.073565386F, 0.073565386F }, new float[] { 0.99812675F, -0.061321456F, 0.061321456F }, new float[] { 0.9988041F, -0.04906829F, 0.04906829F }, new float[] { 0.99933106F, -0.03680773F, 0.03680773F },
|
||||
new float[] { 0.9997075F, -0.02454163F, 0.02454163F }, new float[] { 0.9999334F, -0.012271833F, 0.012271833F } };
|
||||
|
||||
public static final float[][] FFT_TABLE_64 = new float[][] {
|
||||
new float[] { 1.0F, 0.0F }, new float[] { 0.9951847F, 0.09801714F }, new float[] { 0.98078525F, 0.19509032F }, new float[] { 0.9569403F, 0.2902847F }, new float[] { 0.9238795F, 0.38268346F }, new float[] { 0.88192123F, 0.47139674F }, new float[] { 0.83146954F, 0.55557024F }, new float[] { 0.7730104F, 0.6343933F }, new float[] { 0.7071067F, 0.70710677F }, new float[] { 0.6343932F, 0.77301043F },
|
||||
new float[] { 0.5555701F, 0.8314696F }, new float[] { 0.47139663F, 0.88192123F }, new float[] { 0.38268334F, 0.92387944F }, new float[] { 0.29028457F, 0.95694023F }, new float[] { 0.19509023F, 0.9807852F }, new float[] { 0.09801706F, 0.9951846F }, new float[] { -6.7055225E-8F, 0.9999999F }, new float[] { -0.09801719F, 0.9951846F }, new float[] { -0.19509035F, 0.98078513F }, new float[] { -0.2902847F, 0.9569402F },
|
||||
new float[] { -0.38268346F, 0.9238794F }, new float[] { -0.47139674F, 0.8819211F }, new float[] { -0.55557024F, 0.8314694F }, new float[] { -0.6343933F, 0.77301025F }, new float[] { -0.7071067F, 0.7071066F }, new float[] { -0.7730104F, 0.6343931F }, new float[] { -0.83146954F, 0.55557F }, new float[] { -0.8819212F, 0.4713965F }, new float[] { -0.9238794F, 0.38268322F }, new float[] { -0.9569402F, 0.29028445F },
|
||||
new float[] { -0.98078513F, 0.19509012F }, new float[] { -0.99518454F, 0.09801695F }, new float[] { -0.99999976F, -1.7881393E-7F }, new float[] { -0.9951845F, -0.0980173F }, new float[] { -0.980785F, -0.19509046F }, new float[] { -0.95694005F, -0.29028478F }, new float[] { -0.92387927F, -0.38268352F }, new float[] { -0.881921F, -0.47139677F }, new float[] { -0.8314693F, -0.55557024F }, new float[] { -0.77301013F, -0.6343933F },
|
||||
new float[] { -0.7071065F, -0.7071067F }, new float[] { -0.634393F, -0.7730104F }, new float[] { -0.5555699F, -0.83146954F }, new float[] { -0.4713964F, -0.8819212F }, new float[] { -0.3826831F, -0.9238794F }, new float[] { -0.29028434F, -0.9569402F }, new float[] { -0.19509F, -0.9807851F }, new float[] { -0.098016836F, -0.9951845F }, new float[] { 2.8312206E-7F, -0.9999997F }, new float[] { 0.098017395F, -0.9951844F },
|
||||
new float[] { 0.19509055F, -0.98078495F }, new float[] { 0.29028487F, -0.95693994F }, new float[] { 0.3826836F, -0.92387915F }, new float[] { 0.47139686F, -0.8819209F }, new float[] { 0.55557036F, -0.8314692F }, new float[] { 0.63439333F, -0.77301F }, new float[] { 0.70710677F, -0.70710635F }, new float[] { 0.7730104F, -0.63439286F }, new float[] { 0.8314695F, -0.55556977F }, new float[] { 0.88192105F, -0.47139627F },
|
||||
new float[] { 0.92387927F, -0.38268298F }, new float[] { 0.95694005F, -0.29028425F }, new float[] { 0.98078495F, -0.19508994F }, new float[] { 0.99518436F, -0.09801678F } };
|
||||
|
||||
public static final float[][] FFT_TABLE_480 = new float[][] {
|
||||
new float[] { 1.0F, 0.0F, 0.0F }, new float[] { 0.99991435F, 0.013089596F, -0.013089596F }, new float[] { 0.99965733F, 0.02617695F, -0.02617695F }, new float[] { 0.999229F, 0.039259817F, -0.039259817F }, new float[] { 0.9986295F, 0.05233596F, -0.05233596F }, new float[] { 0.99785894F, 0.06540313F, -0.06540313F }, new float[] { 0.99691737F, 0.0784591F, -0.0784591F }, new float[] { 0.99580497F, 0.09150162F, -0.09150162F }, new float[] { 0.994522F, 0.10452847F, -0.10452847F }, new float[] { 0.9930686F, 0.11753741F, -0.11753741F },
|
||||
new float[] { 0.991445F, 0.13052621F, -0.13052621F }, new float[] { 0.98965156F, 0.14349265F, -0.14349265F }, new float[] { 0.98768854F, 0.1564345F, -0.1564345F }, new float[] { 0.9855563F, 0.16934955F, -0.16934955F }, new float[] { 0.9832552F, 0.18223558F, -0.18223558F }, new float[] { 0.9807856F, 0.1950904F, -0.1950904F }, new float[] { 0.978148F, 0.20791179F, -0.20791179F }, new float[] { 0.9753427F, 0.22069755F, -0.22069755F }, new float[] { 0.97237027F, 0.23344548F, -0.23344548F }, new float[] { 0.9692313F, 0.24615341F, -0.24615341F },
|
||||
new float[] { 0.96592623F, 0.25881916F, -0.25881916F }, new float[] { 0.9624557F, 0.27144057F, -0.27144057F }, new float[] { 0.9588202F, 0.28401548F, -0.28401548F }, new float[] { 0.9550204F, 0.29654172F, -0.29654172F }, new float[] { 0.951057F, 0.30901715F, -0.30901715F }, new float[] { 0.94693065F, 0.32143965F, -0.32143965F }, new float[] { 0.94264203F, 0.33380705F, -0.33380705F }, new float[] { 0.9381919F, 0.3461173F, -0.3461173F }, new float[] { 0.933581F, 0.3583682F, -0.3583682F }, new float[] { 0.9288101F, 0.3705577F, -0.3705577F },
|
||||
new float[] { 0.9238801F, 0.3826837F, -0.3826837F }, new float[] { 0.9187918F, 0.39474413F, -0.39474413F }, new float[] { 0.913546F, 0.40673694F, -0.40673694F }, new float[] { 0.90814376F, 0.41866004F, -0.41866004F }, new float[] { 0.90258586F, 0.43051142F, -0.43051142F }, new float[] { 0.89687335F, 0.44228902F, -0.44228902F }, new float[] { 0.8910071F, 0.45399085F, -0.45399085F }, new float[] { 0.88498825F, 0.46561489F, -0.46561489F }, new float[] { 0.87881774F, 0.47715914F, -0.47715914F }, new float[] { 0.87249666F, 0.48862165F, -0.48862165F },
|
||||
new float[] { 0.86602604F, 0.5000004F, -0.5000004F }, new float[] { 0.85940707F, 0.51129353F, -0.51129353F }, new float[] { 0.8526408F, 0.522499F, -0.522499F }, new float[] { 0.8457285F, 0.533615F, -0.533615F }, new float[] { 0.83867127F, 0.5446395F, -0.5446395F }, new float[] { 0.8314703F, 0.5555707F, -0.5555707F }, new float[] { 0.8241269F, 0.5664068F, -0.5664068F }, new float[] { 0.8166423F, 0.57714576F, -0.57714576F }, new float[] { 0.8090177F, 0.58778584F, -0.58778584F }, new float[] { 0.8012545F, 0.5983252F, -0.5983252F },
|
||||
new float[] { 0.7933541F, 0.608762F, -0.608762F }, new float[] { 0.7853177F, 0.61909455F, -0.61909455F }, new float[] { 0.77714676F, 0.629321F, -0.629321F }, new float[] { 0.76884264F, 0.63943964F, -0.63943964F }, new float[] { 0.7604068F, 0.6494487F, -0.6494487F }, new float[] { 0.75184065F, 0.6593465F, -0.6593465F }, new float[] { 0.7431457F, 0.66913134F, -0.66913134F }, new float[] { 0.7343234F, 0.6788015F, -0.6788015F }, new float[] { 0.72537524F, 0.6883554F, -0.6883554F }, new float[] { 0.7163028F, 0.6977913F, -0.6977913F },
|
||||
new float[] { 0.70710766F, 0.7071076F, -0.7071076F }, new float[] { 0.69779134F, 0.7163028F, -0.7163028F }, new float[] { 0.68835545F, 0.7253753F, -0.7253753F }, new float[] { 0.67880166F, 0.7343235F, -0.7343235F }, new float[] { 0.6691315F, 0.7431459F, -0.7431459F }, new float[] { 0.6593467F, 0.7518409F, -0.7518409F }, new float[] { 0.64944893F, 0.7604071F, -0.7604071F }, new float[] { 0.6394399F, 0.768843F, -0.768843F }, new float[] { 0.6293213F, 0.7771471F, -0.7771471F }, new float[] { 0.61909485F, 0.7853181F, -0.7853181F },
|
||||
new float[] { 0.6087623F, 0.7933545F, -0.7933545F }, new float[] { 0.5983255F, 0.801255F, -0.801255F }, new float[] { 0.58778614F, 0.8090182F, -0.8090182F }, new float[] { 0.57714605F, 0.81664276F, -0.81664276F }, new float[] { 0.56640714F, 0.8241274F, -0.8241274F }, new float[] { 0.55557114F, 0.83147085F, -0.83147085F }, new float[] { 0.54463995F, 0.8386718F, -0.8386718F }, new float[] { 0.5336154F, 0.8457291F, -0.8457291F }, new float[] { 0.52249944F, 0.8526415F, -0.8526415F }, new float[] { 0.51129395F, 0.85940784F, -0.85940784F },
|
||||
new float[] { 0.50000083F, 0.8660269F, -0.8660269F }, new float[] { 0.48862207F, 0.87249756F, -0.87249756F }, new float[] { 0.4771596F, 0.8788187F, -0.8788187F }, new float[] { 0.46561536F, 0.88498926F, -0.88498926F }, new float[] { 0.45399132F, 0.89100814F, -0.89100814F }, new float[] { 0.4422895F, 0.8968744F, -0.8968744F }, new float[] { 0.4305119F, 0.902587F, -0.902587F }, new float[] { 0.41866052F, 0.9081449F, -0.9081449F }, new float[] { 0.40673742F, 0.9135472F, -0.9135472F }, new float[] { 0.3947446F, 0.91879296F, -0.91879296F },
|
||||
new float[] { 0.38268417F, 0.92388135F, -0.92388135F }, new float[] { 0.37055814F, 0.9288114F, -0.9288114F }, new float[] { 0.35836864F, 0.93358225F, -0.93358225F }, new float[] { 0.34611773F, 0.93819314F, -0.93819314F }, new float[] { 0.3338075F, 0.94264334F, -0.94264334F }, new float[] { 0.3214401F, 0.94693196F, -0.94693196F }, new float[] { 0.3090176F, 0.9510583F, -0.9510583F }, new float[] { 0.29654217F, 0.95502174F, -0.95502174F }, new float[] { 0.28401592F, 0.9588216F, -0.9588216F }, new float[] { 0.271441F, 0.9624571F, -0.9624571F },
|
||||
new float[] { 0.25881958F, 0.9659277F, -0.9659277F }, new float[] { 0.2461538F, 0.96923286F, -0.96923286F }, new float[] { 0.23344585F, 0.9723719F, -0.9723719F }, new float[] { 0.2206979F, 0.9753443F, -0.9753443F }, new float[] { 0.20791212F, 0.9781496F, -0.9781496F }, new float[] { 0.19509073F, 0.9807873F, -0.9807873F }, new float[] { 0.18223591F, 0.98325694F, -0.98325694F }, new float[] { 0.16934988F, 0.9855581F, -0.9855581F }, new float[] { 0.15643482F, 0.9876904F, -0.9876904F }, new float[] { 0.14349295F, 0.98965347F, -0.98965347F },
|
||||
new float[] { 0.1305265F, 0.991447F, -0.991447F }, new float[] { 0.117537685F, 0.9930706F, -0.9930706F }, new float[] { 0.104528725F, 0.99452406F, -0.99452406F }, new float[] { 0.09150185F, 0.9958071F, -0.9958071F }, new float[] { 0.07845929F, 0.9969195F, -0.9969195F }, new float[] { 0.0654033F, 0.9978611F, -0.9978611F }, new float[] { 0.052336097F, 0.9986317F, -0.9986317F }, new float[] { 0.03925993F, 0.9992312F, -0.9992312F }, new float[] { 0.026177032F, 0.99965954F, -0.99965954F }, new float[] { 0.013089649F, 0.99991655F, -0.99991655F },
|
||||
new float[] { 2.4214387E-8F, 1.0000023F, -1.0000023F }, new float[] { -0.013089602F, 0.9999166F, -0.9999166F }, new float[] { -0.026176985F, 0.9996596F, -0.9996596F }, new float[] { -0.039259885F, 0.9992313F, -0.9992313F }, new float[] { -0.052336056F, 0.9986318F, -0.9986318F }, new float[] { -0.06540326F, 0.9978612F, -0.9978612F }, new float[] { -0.078459255F, 0.99691963F, -0.99691963F }, new float[] { -0.09150181F, 0.99580723F, -0.99580723F }, new float[] { -0.10452869F, 0.99452424F, -0.99452424F }, new float[] { -0.117537655F, 0.99307084F, -0.99307084F },
|
||||
new float[] { -0.13052648F, 0.99144727F, -0.99144727F }, new float[] { -0.14349295F, 0.98965377F, -0.98965377F }, new float[] { -0.15643483F, 0.98769075F, -0.98769075F }, new float[] { -0.16934991F, 0.9855585F, -0.9855585F }, new float[] { -0.18223597F, 0.9832574F, -0.9832574F }, new float[] { -0.19509082F, 0.9807878F, -0.9807878F }, new float[] { -0.20791222F, 0.9781502F, -0.9781502F }, new float[] { -0.220698F, 0.9753449F, -0.9753449F }, new float[] { -0.23344596F, 0.9723725F, -0.9723725F }, new float[] { -0.24615392F, 0.9692335F, -0.9692335F },
|
||||
new float[] { -0.2588197F, 0.96592844F, -0.96592844F }, new float[] { -0.27144113F, 0.96245784F, -0.96245784F }, new float[] { -0.28401607F, 0.95882237F, -0.95882237F }, new float[] { -0.29654235F, 0.9550226F, -0.9550226F }, new float[] { -0.3090178F, 0.95105916F, -0.95105916F }, new float[] { -0.3214403F, 0.9469328F, -0.9469328F }, new float[] { -0.33380774F, 0.9426441F, -0.9426441F }, new float[] { -0.34611797F, 0.9381939F, -0.9381939F }, new float[] { -0.3583689F, 0.933583F, -0.933583F }, new float[] { -0.37055844F, 0.92881215F, -0.92881215F },
|
||||
new float[] { -0.38268447F, 0.9238821F, -0.9238821F }, new float[] { -0.39474493F, 0.9187938F, -0.9187938F }, new float[] { -0.40673777F, 0.91354805F, -0.91354805F }, new float[] { -0.4186609F, 0.9081458F, -0.9081458F }, new float[] { -0.4305123F, 0.9025879F, -0.9025879F }, new float[] { -0.44228995F, 0.8968753F, -0.8968753F }, new float[] { -0.4539918F, 0.8910091F, -0.8910091F }, new float[] { -0.46561587F, 0.8849902F, -0.8849902F }, new float[] { -0.47716016F, 0.8788197F, -0.8788197F }, new float[] { -0.4886227F, 0.8724986F, -0.8724986F },
|
||||
new float[] { -0.5000015F, 0.86602795F, -0.86602795F }, new float[] { -0.5112946F, 0.859409F, -0.859409F }, new float[] { -0.5225001F, 0.8526427F, -0.8526427F }, new float[] { -0.53361607F, 0.84573036F, -0.84573036F }, new float[] { -0.5446406F, 0.8386731F, -0.8386731F }, new float[] { -0.5555718F, 0.83147216F, -0.83147216F }, new float[] { -0.56640786F, 0.82412875F, -0.82412875F }, new float[] { -0.5771468F, 0.81664413F, -0.81664413F }, new float[] { -0.587787F, 0.80901957F, -0.80901957F }, new float[] { -0.5983263F, 0.80125636F, -0.80125636F },
|
||||
new float[] { -0.6087632F, 0.7933559F, -0.7933559F }, new float[] { -0.6190958F, 0.78531945F, -0.78531945F }, new float[] { -0.6293223F, 0.7771484F, -0.7771484F }, new float[] { -0.63944095F, 0.76884425F, -0.76884425F }, new float[] { -0.64945006F, 0.76040834F, -0.76040834F }, new float[] { -0.6593479F, 0.75184214F, -0.75184214F }, new float[] { -0.66913277F, 0.7431472F, -0.7431472F }, new float[] { -0.6788029F, 0.7343249F, -0.7343249F }, new float[] { -0.6883568F, 0.7253767F, -0.7253767F }, new float[] { -0.69779277F, 0.7163043F, -0.7163043F },
|
||||
new float[] { -0.7071091F, 0.70710915F, -0.70710915F }, new float[] { -0.7163043F, 0.6977928F, -0.6977928F }, new float[] { -0.7253768F, 0.68835694F, -0.68835694F }, new float[] { -0.734325F, 0.6788031F, -0.6788031F }, new float[] { -0.7431474F, 0.66913295F, -0.66913295F }, new float[] { -0.7518424F, 0.65934813F, -0.65934813F }, new float[] { -0.7604086F, 0.64945036F, -0.64945036F }, new float[] { -0.7688445F, 0.6394413F, -0.6394413F }, new float[] { -0.77714866F, 0.62932265F, -0.62932265F }, new float[] { -0.7853197F, 0.6190962F, -0.6190962F },
|
||||
new float[] { -0.7933561F, 0.60876364F, -0.60876364F }, new float[] { -0.80125666F, 0.59832674F, -0.59832674F }, new float[] { -0.8090199F, 0.58778733F, -0.58778733F }, new float[] { -0.8166445F, 0.57714725F, -0.57714725F }, new float[] { -0.82412916F, 0.5664083F, -0.5664083F }, new float[] { -0.83147264F, 0.5555722F, -0.5555722F }, new float[] { -0.83867365F, 0.544641F, -0.544641F }, new float[] { -0.84573096F, 0.5336164F, -0.5336164F }, new float[] { -0.8526434F, 0.52250046F, -0.52250046F }, new float[] { -0.8594097F, 0.51129496F, -0.51129496F },
|
||||
new float[] { -0.8660287F, 0.50000185F, -0.50000185F }, new float[] { -0.8724994F, 0.48862305F, -0.48862305F }, new float[] { -0.87882054F, 0.47716054F, -0.47716054F }, new float[] { -0.8849911F, 0.4656163F, -0.4656163F }, new float[] { -0.89101005F, 0.45399225F, -0.45399225F }, new float[] { -0.89687634F, 0.4422904F, -0.4422904F }, new float[] { -0.9025889F, 0.43051276F, -0.43051276F }, new float[] { -0.90814686F, 0.41866136F, -0.41866136F }, new float[] { -0.9135492F, 0.40673822F, -0.40673822F }, new float[] { -0.918795F, 0.39474538F, -0.39474538F },
|
||||
new float[] { -0.9238834F, 0.38268492F, -0.38268492F }, new float[] { -0.9288134F, 0.37055886F, -0.37055886F }, new float[] { -0.9335843F, 0.35836932F, -0.35836932F }, new float[] { -0.93819517F, 0.3461184F, -0.3461184F }, new float[] { -0.9426454F, 0.33380815F, -0.33380815F }, new float[] { -0.94693404F, 0.32144073F, -0.32144073F }, new float[] { -0.9510605F, 0.3090182F, -0.3090182F }, new float[] { -0.95502394F, 0.29654273F, -0.29654273F }, new float[] { -0.9588238F, 0.28401646F, -0.28401646F }, new float[] { -0.9624593F, 0.27144152F, -0.27144152F },
|
||||
new float[] { -0.9659299F, 0.25882006F, -0.25882006F }, new float[] { -0.96923506F, 0.24615425F, -0.24615425F }, new float[] { -0.9723741F, 0.23344627F, -0.23344627F }, new float[] { -0.9753465F, 0.22069828F, -0.22069828F }, new float[] { -0.9781518F, 0.20791247F, -0.20791247F }, new float[] { -0.9807895F, 0.19509105F, -0.19509105F }, new float[] { -0.98325914F, 0.18223621F, -0.18223621F }, new float[] { -0.9855603F, 0.16935015F, -0.16935015F }, new float[] { -0.9876926F, 0.15643506F, -0.15643506F }, new float[] { -0.9896557F, 0.14349316F, -0.14349316F },
|
||||
new float[] { -0.9914492F, 0.13052668F, -0.13052668F }, new float[] { -0.9930728F, 0.117537834F, -0.117537834F }, new float[] { -0.99452627F, 0.104528844F, -0.104528844F }, new float[] { -0.9958093F, 0.091501944F, -0.091501944F }, new float[] { -0.9969217F, 0.07845937F, -0.07845937F }, new float[] { -0.9978633F, 0.06540334F, -0.06540334F }, new float[] { -0.9986339F, 0.05233611F, -0.05233611F }, new float[] { -0.9992334F, 0.039259914F, -0.039259914F }, new float[] { -0.99966174F, 0.02617699F, -0.02617699F }, new float[] { -0.99991876F, 0.013089578F, -0.013089578F },
|
||||
new float[] { -1.0000044F, -7.636845E-8F, 7.636845E-8F }, new float[] { -0.99991876F, -0.01308973F, 0.01308973F }, new float[] { -0.99966174F, -0.026177142F, 0.026177142F }, new float[] { -0.9992334F, -0.039260067F, 0.039260067F }, new float[] { -0.9986339F, -0.052336264F, 0.052336264F }, new float[] { -0.99786335F, -0.0654035F, 0.0654035F }, new float[] { -0.9969218F, -0.07845952F, 0.07845952F }, new float[] { -0.9958094F, -0.09150211F, 0.09150211F }, new float[] { -0.9945263F, -0.10452901F, 0.10452901F }, new float[] { -0.9930729F, -0.117538F, 0.117538F },
|
||||
new float[] { -0.99144936F, -0.13052686F, 0.13052686F }, new float[] { -0.98965585F, -0.14349335F, 0.14349335F }, new float[] { -0.98769283F, -0.15643525F, 0.15643525F }, new float[] { -0.9855606F, -0.16935036F, 0.16935036F }, new float[] { -0.98325944F, -0.18223645F, 0.18223645F }, new float[] { -0.98078984F, -0.19509132F, 0.19509132F }, new float[] { -0.9781522F, -0.20791276F, 0.20791276F }, new float[] { -0.9753469F, -0.22069857F, 0.22069857F }, new float[] { -0.9723745F, -0.23344655F, 0.23344655F }, new float[] { -0.96923554F, -0.24615455F, 0.24615455F },
|
||||
new float[] { -0.96593046F, -0.25882035F, 0.25882035F }, new float[] { -0.96245986F, -0.27144182F, 0.27144182F }, new float[] { -0.95882434F, -0.2840168F, 0.2840168F }, new float[] { -0.95502454F, -0.2965431F, 0.2965431F }, new float[] { -0.9510611F, -0.30901858F, 0.30901858F }, new float[] { -0.9469347F, -0.3214411F, 0.3214411F }, new float[] { -0.942646F, -0.33380857F, 0.33380857F }, new float[] { -0.9381958F, -0.34611884F, 0.34611884F }, new float[] { -0.9335849F, -0.3583698F, 0.3583698F }, new float[] { -0.928814F, -0.37055936F, 0.37055936F },
|
||||
new float[] { -0.923884F, -0.38268542F, 0.38268542F }, new float[] { -0.91879565F, -0.39474592F, 0.39474592F }, new float[] { -0.9135499F, -0.4067388F, 0.4067388F }, new float[] { -0.9081476F, -0.41866195F, 0.41866195F }, new float[] { -0.9025897F, -0.43051338F, 0.43051338F }, new float[] { -0.8968771F, -0.44229105F, 0.44229105F }, new float[] { -0.8910109F, -0.45399293F, 0.45399293F }, new float[] { -0.884992F, -0.465617F, 0.465617F }, new float[] { -0.87882143F, -0.47716132F, 0.47716132F }, new float[] { -0.8725003F, -0.4886239F, 0.4886239F },
|
||||
new float[] { -0.8660297F, -0.50000274F, 0.50000274F }, new float[] { -0.8594107F, -0.5112959F, 0.5112959F }, new float[] { -0.85264444F, -0.52250147F, 0.52250147F }, new float[] { -0.8457321F, -0.5336175F, 0.5336175F }, new float[] { -0.83867484F, -0.5446421F, 0.5446421F }, new float[] { -0.8314739F, -0.55557334F, 0.55557334F }, new float[] { -0.8241304F, -0.5664094F, 0.5664094F }, new float[] { -0.8166458F, -0.57714844F, 0.57714844F }, new float[] { -0.8090212F, -0.5877886F, 0.5877886F }, new float[] { -0.80125797F, -0.598328F, 0.598328F },
|
||||
new float[] { -0.7933575F, -0.6087649F, 0.6087649F }, new float[] { -0.78532106F, -0.6190975F, 0.6190975F }, new float[] { -0.77715003F, -0.62932396F, 0.62932396F }, new float[] { -0.76884586F, -0.6394427F, 0.6394427F }, new float[] { -0.76040995F, -0.6494518F, 0.6494518F }, new float[] { -0.75184375F, -0.6593496F, 0.6593496F }, new float[] { -0.74314874F, -0.6691345F, 0.6691345F }, new float[] { -0.73432636F, -0.6788047F, 0.6788047F }, new float[] { -0.7253782F, -0.6883586F, 0.6883586F }, new float[] { -0.7163058F, -0.69779456F, 0.69779456F },
|
||||
new float[] { -0.7071106F, -0.70711094F, 0.70711094F }, new float[] { -0.6977942F, -0.71630615F, 0.71630615F }, new float[] { -0.68835825F, -0.72537863F, 0.72537863F }, new float[] { -0.6788044F, -0.73432684F, 0.73432684F }, new float[] { -0.66913426F, -0.7431492F, 0.7431492F }, new float[] { -0.6593494F, -0.7518443F, 0.7518443F }, new float[] { -0.6494516F, -0.76041055F, 0.76041055F }, new float[] { -0.63944256F, -0.76884645F, 0.76884645F }, new float[] { -0.6293239F, -0.77715063F, 0.77715063F }, new float[] { -0.6190974F, -0.78532165F, 0.78532165F },
|
||||
new float[] { -0.6087648F, -0.7933581F, 0.7933581F }, new float[] { -0.59832793F, -0.8012586F, 0.8012586F }, new float[] { -0.5877885F, -0.8090219F, 0.8090219F }, new float[] { -0.5771484F, -0.81664646F, 0.81664646F }, new float[] { -0.5664094F, -0.82413113F, 0.82413113F }, new float[] { -0.55557334F, -0.8314746F, 0.8314746F }, new float[] { -0.5446421F, -0.8386756F, 0.8386756F }, new float[] { -0.5336175F, -0.8457329F, 0.8457329F }, new float[] { -0.52250147F, -0.85264534F, 0.85264534F }, new float[] { -0.5112959F, -0.85941166F, 0.85941166F },
|
||||
new float[] { -0.50000274F, -0.8660307F, 0.8660307F }, new float[] { -0.48862392F, -0.8725014F, 0.8725014F }, new float[] { -0.47716138F, -0.8788225F, 0.8788225F }, new float[] { -0.4656171F, -0.8849931F, 0.8849931F }, new float[] { -0.45399302F, -0.891012F, 0.891012F }, new float[] { -0.44229114F, -0.8968783F, 0.8968783F }, new float[] { -0.4305135F, -0.9025909F, 0.9025909F }, new float[] { -0.41866207F, -0.9081488F, 0.9081488F }, new float[] { -0.4067389F, -0.91355115F, 0.91355115F }, new float[] { -0.39474607F, -0.91879696F, 0.91879696F },
|
||||
new float[] { -0.38268557F, -0.92388535F, 0.92388535F }, new float[] { -0.3705595F, -0.92881536F, 0.92881536F }, new float[] { -0.35836995F, -0.93358624F, 0.93358624F }, new float[] { -0.346119F, -0.9381972F, 0.9381972F }, new float[] { -0.33380872F, -0.9426474F, 0.9426474F }, new float[] { -0.32144126F, -0.9469361F, 0.9469361F }, new float[] { -0.3090187F, -0.9510625F, 0.9510625F }, new float[] { -0.2965432F, -0.955026F, 0.955026F }, new float[] { -0.2840169F, -0.9588258F, 0.9588258F }, new float[] { -0.27144194F, -0.96246135F, 0.96246135F },
|
||||
new float[] { -0.25882047F, -0.965932F, 0.965932F }, new float[] { -0.24615464F, -0.96923715F, 0.96923715F }, new float[] { -0.23344663F, -0.97237617F, 0.97237617F }, new float[] { -0.22069862F, -0.97534865F, 0.97534865F }, new float[] { -0.2079128F, -0.97815394F, 0.97815394F }, new float[] { -0.19509135F, -0.9807916F, 0.9807916F }, new float[] { -0.18223648F, -0.9832613F, 0.9832613F }, new float[] { -0.16935039F, -0.98556244F, 0.98556244F }, new float[] { -0.15643527F, -0.9876948F, 0.9876948F }, new float[] { -0.14349334F, -0.9896579F, 0.9896579F },
|
||||
new float[] { -0.13052683F, -0.9914514F, 0.9914514F }, new float[] { -0.11753795F, -0.993075F, 0.993075F }, new float[] { -0.104528934F, -0.9945285F, 0.9945285F }, new float[] { -0.091502F, -0.9958115F, 0.9958115F }, new float[] { -0.0784594F, -0.9969239F, 0.9969239F }, new float[] { -0.06540334F, -0.9978655F, 0.9978655F }, new float[] { -0.05233608F, -0.9986361F, 0.9986361F }, new float[] { -0.03925986F, -0.99923563F, 0.99923563F }, new float[] { -0.026176903F, -0.99966395F, 0.99966395F }, new float[] { -0.013089463F, -0.99992096F, 0.99992096F },
|
||||
new float[] { 2.1979213E-7F, -1.0000067F, 1.0000067F }, new float[] { 0.013089904F, -0.999921F, 0.999921F }, new float[] { 0.026177345F, -0.999664F, 0.999664F }, new float[] { 0.0392603F, -0.9992357F, 0.9992357F }, new float[] { 0.05233653F, -0.9986362F, 0.9986362F }, new float[] { 0.06540379F, -0.9978656F, 0.9978656F }, new float[] { 0.078459844F, -0.99692404F, 0.99692404F }, new float[] { 0.09150246F, -0.99581164F, 0.99581164F }, new float[] { 0.104529396F, -0.9945286F, 0.9945286F }, new float[] { 0.117538415F, -0.9930752F, 0.9930752F },
|
||||
new float[] { 0.1305273F, -0.9914516F, 0.9914516F }, new float[] { 0.14349383F, -0.9896581F, 0.9896581F }, new float[] { 0.15643576F, -0.9876951F, 0.9876951F }, new float[] { 0.16935089F, -0.98556286F, 0.98556286F }, new float[] { 0.18223701F, -0.9832617F, 0.9832617F }, new float[] { 0.19509192F, -0.98079205F, 0.98079205F }, new float[] { 0.20791338F, -0.97815436F, 0.97815436F }, new float[] { 0.22069922F, -0.97534907F, 0.97534907F }, new float[] { 0.23344724F, -0.97237664F, 0.97237664F }, new float[] { 0.24615526F, -0.9692376F, 0.9692376F },
|
||||
new float[] { 0.2588211F, -0.96593255F, 0.96593255F }, new float[] { 0.2714426F, -0.96246195F, 0.96246195F }, new float[] { 0.2840176F, -0.9588264F, 0.9588264F }, new float[] { 0.29654393F, -0.9550266F, 0.9550266F }, new float[] { 0.30901945F, -0.9510632F, 0.9510632F }, new float[] { 0.321442F, -0.9469368F, 0.9469368F }, new float[] { 0.3338095F, -0.9426481F, 0.9426481F }, new float[] { 0.3461198F, -0.9381979F, 0.9381979F }, new float[] { 0.35837078F, -0.933587F, 0.933587F }, new float[] { 0.37056035F, -0.9288161F, 0.9288161F },
|
||||
new float[] { 0.38268644F, -0.923886F, 0.923886F }, new float[] { 0.39474696F, -0.9187976F, 0.9187976F }, new float[] { 0.40673983F, -0.91355187F, 0.91355187F }, new float[] { 0.41866302F, -0.90814954F, 0.90814954F }, new float[] { 0.43051448F, -0.90259165F, 0.90259165F }, new float[] { 0.44229218F, -0.8968791F, 0.8968791F }, new float[] { 0.4539941F, -0.89101285F, 0.89101285F }, new float[] { 0.4656182F, -0.884994F, 0.884994F }, new float[] { 0.47716254F, -0.8788234F, 0.8788234F }, new float[] { 0.4886251F, -0.87250227F, 0.87250227F },
|
||||
new float[] { 0.500004F, -0.86603165F, 0.86603165F }, new float[] { 0.51129717F, -0.85941267F, 0.85941267F }, new float[] { 0.5225027F, -0.8526464F, 0.8526464F }, new float[] { 0.53361875F, -0.84573406F, 0.84573406F }, new float[] { 0.54464334F, -0.8386768F, 0.8386768F }, new float[] { 0.5555746F, -0.83147585F, 0.83147585F }, new float[] { 0.5664107F, -0.8241324F, 0.8241324F }, new float[] { 0.57714975F, -0.8166477F, 0.8166477F }, new float[] { 0.58778995F, -0.8090231F, 0.8090231F }, new float[] { 0.59832937F, -0.8012598F, 0.8012598F },
|
||||
new float[] { 0.60876626F, -0.79335934F, 0.79335934F }, new float[] { 0.61909884F, -0.7853229F, 0.7853229F }, new float[] { 0.62932533F, -0.7771519F, 0.7771519F }, new float[] { 0.63944405F, -0.7688477F, 0.7688477F }, new float[] { 0.64945316F, -0.7604118F, 0.7604118F }, new float[] { 0.65935105F, -0.7518456F, 0.7518456F }, new float[] { 0.669136F, -0.7431506F, 0.7431506F }, new float[] { 0.6788062F, -0.7343282F, 0.7343282F }, new float[] { 0.68836015F, -0.72538F, 0.72538F }, new float[] { 0.69779617F, -0.7163075F, 0.7163075F },
|
||||
new float[] { 0.70711255F, -0.7071123F, 0.7071123F }, new float[] { 0.7163078F, -0.6977959F, 0.6977959F }, new float[] { 0.72538036F, -0.68836F, 0.68836F }, new float[] { 0.7343286F, -0.67880607F, 0.67880607F }, new float[] { 0.74315107F, -0.66913587F, 0.66913587F }, new float[] { 0.75184613F, -0.659351F, 0.659351F }, new float[] { 0.7604124F, -0.64945316F, 0.64945316F }, new float[] { 0.7688483F, -0.63944405F, 0.63944405F }, new float[] { 0.7771525F, -0.6293254F, 0.6293254F }, new float[] { 0.7853235F, -0.6190989F, 0.6190989F },
|
||||
new float[] { 0.79335994F, -0.60876626F, 0.60876626F }, new float[] { 0.8012605F, -0.59832937F, 0.59832937F }, new float[] { 0.80902374F, -0.58778995F, 0.58778995F }, new float[] { 0.81664836F, -0.5771498F, 0.5771498F }, new float[] { 0.82413304F, -0.5664108F, 0.5664108F }, new float[] { 0.83147657F, -0.5555747F, 0.5555747F }, new float[] { 0.8386776F, -0.54464346F, 0.54464346F }, new float[] { 0.84573495F, -0.53361887F, 0.53361887F }, new float[] { 0.85264736F, -0.52250284F, 0.52250284F }, new float[] { 0.8594137F, -0.5112973F, 0.5112973F },
|
||||
new float[] { 0.8660327F, -0.5000041F, 0.5000041F }, new float[] { 0.8725034F, -0.48862526F, 0.48862526F }, new float[] { 0.8788246F, -0.4771627F, 0.4771627F }, new float[] { 0.88499516F, -0.46561837F, 0.46561837F }, new float[] { 0.8910141F, -0.45399427F, 0.45399427F }, new float[] { 0.8968804F, -0.44229236F, 0.44229236F }, new float[] { 0.90259296F, -0.4305147F, 0.4305147F }, new float[] { 0.9081509F, -0.41866326F, 0.41866326F }, new float[] { 0.91355324F, -0.40674007F, 0.40674007F }, new float[] { 0.91879904F, -0.3947472F, 0.3947472F },
|
||||
new float[] { 0.92388743F, -0.38268667F, 0.38268667F }, new float[] { 0.9288175F, -0.3705606F, 0.3705606F }, new float[] { 0.93358845F, -0.358371F, 0.358371F }, new float[] { 0.9381994F, -0.34612F, 0.34612F }, new float[] { 0.9426496F, -0.3338097F, 0.3338097F }, new float[] { 0.9469383F, -0.32144222F, 0.32144222F }, new float[] { 0.9510647F, -0.30901963F, 0.30901963F }, new float[] { 0.9550282F, -0.2965441F, 0.2965441F }, new float[] { 0.95882803F, -0.28401777F, 0.28401777F }, new float[] { 0.96246356F, -0.27144277F, 0.27144277F },
|
||||
new float[] { 0.9659342F, -0.25882128F, 0.25882128F }, new float[] { 0.96923935F, -0.24615541F, 0.24615541F }, new float[] { 0.9723784F, -0.23344737F, 0.23344737F }, new float[] { 0.97535086F, -0.22069934F, 0.22069934F }, new float[] { 0.97815615F, -0.20791349F, 0.20791349F }, new float[] { 0.98079383F, -0.19509201F, 0.19509201F }, new float[] { 0.98326355F, -0.1822371F, 0.1822371F }, new float[] { 0.98556477F, -0.16935098F, 0.16935098F }, new float[] { 0.9876971F, -0.15643583F, 0.15643583F }, new float[] { 0.9896602F, -0.14349388F, 0.14349388F },
|
||||
new float[] { 0.9914537F, -0.13052733F, 0.13052733F }, new float[] { 0.99307734F, -0.11753843F, 0.11753843F }, new float[] { 0.9945308F, -0.10452938F, 0.10452938F }, new float[] { 0.99581385F, -0.09150242F, 0.09150242F }, new float[] { 0.9969263F, -0.078459784F, 0.078459784F }, new float[] { 0.9978679F, -0.0654037F, 0.0654037F }, new float[] { 0.9986385F, -0.05233641F, 0.05233641F }, new float[] { 0.999238F, -0.039260153F, 0.039260153F }, new float[] { 0.99966633F, -0.026177168F, 0.026177168F }, new float[] { 0.99992335F, -0.013089697F, 0.013089697F } };
|
||||
|
||||
public static final float[][] FFT_TABLE_60 = new float[][] {
|
||||
new float[] { 1.0F, 0.0F }, new float[] { 0.9945219F, 0.104528464F }, new float[] { 0.9781476F, 0.2079117F }, new float[] { 0.95105654F, 0.309017F }, new float[] { 0.9135455F, 0.40673664F }, new float[] { 0.86602545F, 0.5F }, new float[] { 0.80901706F, 0.58778524F }, new float[] { 0.7431449F, 0.66913056F }, new float[] { 0.66913074F, 0.7431448F }, new float[] { 0.58778536F, 0.809017F },
|
||||
new float[] { 0.5000001F, 0.86602545F }, new float[] { 0.40673676F, 0.9135455F }, new float[] { 0.30901712F, 0.9510566F }, new float[] { 0.2079118F, 0.9781477F }, new float[] { 0.104528576F, 0.994522F }, new float[] { 1.0430813E-7F, 1.0000001F }, new float[] { -0.104528375F, 0.99452204F }, new float[] { -0.20791161F, 0.97814775F }, new float[] { -0.30901694F, 0.95105666F }, new float[] { -0.4067366F, 0.9135456F },
|
||||
new float[] { -0.5F, 0.86602557F }, new float[] { -0.5877853F, 0.8090172F }, new float[] { -0.6691307F, 0.74314505F }, new float[] { -0.7431449F, 0.66913086F }, new float[] { -0.8090172F, 0.5877855F }, new float[] { -0.8660256F, 0.5000002F }, new float[] { -0.9135457F, 0.4067368F }, new float[] { -0.95105684F, 0.30901712F }, new float[] { -0.9781479F, 0.20791179F }, new float[] { -0.9945222F, 0.10452853F },
|
||||
new float[] { -1.0000004F, 3.7252903E-8F }, new float[] { -0.9945223F, -0.104528464F }, new float[] { -0.978148F, -0.20791173F }, new float[] { -0.9510569F, -0.3090171F }, new float[] { -0.91354585F, -0.4067368F }, new float[] { -0.8660258F, -0.5000002F }, new float[] { -0.80901736F, -0.5877855F }, new float[] { -0.7431452F, -0.66913086F }, new float[] { -0.66913104F, -0.7431451F }, new float[] { -0.58778566F, -0.80901736F },
|
||||
new float[] { -0.50000036F, -0.86602587F }, new float[] { -0.40673697F, -0.91354597F }, new float[] { -0.30901727F, -0.9510571F }, new float[] { -0.20791191F, -0.9781482F }, new float[] { -0.10452862F, -0.9945225F }, new float[] { -9.685755E-8F, -1.0000006F }, new float[] { 0.10452843F, -0.9945225F }, new float[] { 0.20791173F, -0.9781482F }, new float[] { 0.30901712F, -0.95105714F }, new float[] { 0.40673685F, -0.9135461F },
|
||||
new float[] { 0.5000003F, -0.86602604F }, new float[] { 0.5877856F, -0.8090176F }, new float[] { 0.669131F, -0.7431454F }, new float[] { 0.7431453F, -0.66913116F }, new float[] { 0.80901754F, -0.5877858F }, new float[] { 0.86602604F, -0.5000005F }, new float[] { 0.91354614F, -0.40673706F }, new float[] { 0.95105726F, -0.30901736F }, new float[] { 0.9781484F, -0.20791197F }, new float[] { 0.99452275F, -0.104528666F } };
|
||||
}
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public class FilterBank implements SyntaxConstants, SineWindows, KBDWindows {
|
||||
private final float[][] LONG_WINDOWS;
|
||||
|
||||
private final float[][] SHORT_WINDOWS;
|
||||
|
||||
private final int length;
|
||||
|
||||
private final int shortLen;
|
||||
|
||||
private final int mid;
|
||||
|
||||
private final int trans;
|
||||
|
||||
private final MDCT mdctShort;
|
||||
|
||||
private final MDCT mdctLong;
|
||||
|
||||
private final float[] buf;
|
||||
|
||||
private final float[][] overlaps;
|
||||
|
||||
public FilterBank(boolean smallFrames, int channels) throws AACException {
|
||||
if (smallFrames) {
|
||||
this.length = 960;
|
||||
this.shortLen = 120;
|
||||
this.LONG_WINDOWS = new float[][] { SINE_960, KBD_960 };
|
||||
this.SHORT_WINDOWS = new float[][] { SINE_120, KBD_120 };
|
||||
} else {
|
||||
this.length = 1024;
|
||||
this.shortLen = 128;
|
||||
this.LONG_WINDOWS = new float[][] { SINE_1024, KBD_1024 };
|
||||
this.SHORT_WINDOWS = new float[][] { SINE_128, KBD_128 };
|
||||
}
|
||||
this.mid = (this.length - this.shortLen) / 2;
|
||||
this.trans = this.shortLen / 2;
|
||||
this.mdctShort = new MDCT(this.shortLen * 2);
|
||||
this.mdctLong = new MDCT(this.length * 2);
|
||||
this.overlaps = new float[channels][this.length];
|
||||
this.buf = new float[2 * this.length];
|
||||
}
|
||||
|
||||
public void process(ICSInfo.WindowSequence windowSequence, int windowShape, int windowShapePrev, float[] _in, float[] out, int channel) {
|
||||
int i;
|
||||
float[] overlap = this.overlaps[channel];
|
||||
switch (windowSequence) {
|
||||
case ONLY_LONG_SEQUENCE:
|
||||
this.mdctLong.process(_in, 0, this.buf, 0);
|
||||
for (i = 0; i < this.length; i++)
|
||||
out[i] = overlap[i] + this.buf[i] * this.LONG_WINDOWS[windowShapePrev][i];
|
||||
for (i = 0; i < this.length; i++)
|
||||
overlap[i] = this.buf[this.length + i] * this.LONG_WINDOWS[windowShape][this.length - 1 - i];
|
||||
break;
|
||||
case LONG_START_SEQUENCE:
|
||||
this.mdctLong.process(_in, 0, this.buf, 0);
|
||||
for (i = 0; i < this.length; i++)
|
||||
out[i] = overlap[i] + this.buf[i] * this.LONG_WINDOWS[windowShapePrev][i];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
overlap[i] = this.buf[this.length + i];
|
||||
for (i = 0; i < this.shortLen; i++)
|
||||
overlap[this.mid + i] = this.buf[this.length + this.mid + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - i - 1];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
overlap[this.mid + this.shortLen + i] = 0.0F;
|
||||
break;
|
||||
case EIGHT_SHORT_SEQUENCE:
|
||||
for (i = 0; i < 8; i++)
|
||||
this.mdctShort.process(_in, i * this.shortLen, this.buf, 2 * i * this.shortLen);
|
||||
for (i = 0; i < this.mid; i++)
|
||||
out[i] = overlap[i];
|
||||
for (i = 0; i < this.shortLen; i++) {
|
||||
out[this.mid + i] = overlap[this.mid + i] + this.buf[i] * this.SHORT_WINDOWS[windowShapePrev][i];
|
||||
out[this.mid + 1 * this.shortLen + i] = overlap[this.mid + this.shortLen * 1 + i] + this.buf[this.shortLen * 1 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 2 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
out[this.mid + 2 * this.shortLen + i] = overlap[this.mid + this.shortLen * 2 + i] + this.buf[this.shortLen * 3 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 4 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
out[this.mid + 3 * this.shortLen + i] = overlap[this.mid + this.shortLen * 3 + i] + this.buf[this.shortLen * 5 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 6 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
if (i < this.trans)
|
||||
out[this.mid + 4 * this.shortLen + i] = overlap[this.mid + this.shortLen * 4 + i] + this.buf[this.shortLen * 7 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 8 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
}
|
||||
for (i = 0; i < this.shortLen; i++) {
|
||||
if (i >= this.trans)
|
||||
overlap[this.mid + 4 * this.shortLen + i - this.length] = this.buf[this.shortLen * 7 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 8 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
overlap[this.mid + 5 * this.shortLen + i - this.length] = this.buf[this.shortLen * 9 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 10 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
overlap[this.mid + 6 * this.shortLen + i - this.length] = this.buf[this.shortLen * 11 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 12 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
overlap[this.mid + 7 * this.shortLen + i - this.length] = this.buf[this.shortLen * 13 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i] + this.buf[this.shortLen * 14 + i] * this.SHORT_WINDOWS[windowShape][i];
|
||||
overlap[this.mid + 8 * this.shortLen + i - this.length] = this.buf[this.shortLen * 15 + i] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i];
|
||||
}
|
||||
for (i = 0; i < this.mid; i++)
|
||||
overlap[this.mid + this.shortLen + i] = 0.0F;
|
||||
break;
|
||||
case LONG_STOP_SEQUENCE:
|
||||
this.mdctLong.process(_in, 0, this.buf, 0);
|
||||
for (i = 0; i < this.mid; i++)
|
||||
out[i] = overlap[i];
|
||||
for (i = 0; i < this.shortLen; i++)
|
||||
out[this.mid + i] = overlap[this.mid + i] + this.buf[this.mid + i] * this.SHORT_WINDOWS[windowShapePrev][i];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
out[this.mid + this.shortLen + i] = overlap[this.mid + this.shortLen + i] + this.buf[this.mid + this.shortLen + i];
|
||||
for (i = 0; i < this.length; i++)
|
||||
overlap[i] = this.buf[this.length + i] * this.LONG_WINDOWS[windowShape][this.length - 1 - i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void processLTP(ICSInfo.WindowSequence windowSequence, int windowShape, int windowShapePrev, float[] _in, float[] out) {
|
||||
int i;
|
||||
switch (windowSequence) {
|
||||
case ONLY_LONG_SEQUENCE:
|
||||
for (i = this.length - 1; i >= 0; i--) {
|
||||
this.buf[i] = _in[i] * this.LONG_WINDOWS[windowShapePrev][i];
|
||||
this.buf[i + this.length] = _in[i + this.length] * this.LONG_WINDOWS[windowShape][this.length - 1 - i];
|
||||
}
|
||||
break;
|
||||
case LONG_START_SEQUENCE:
|
||||
for (i = 0; i < this.length; i++)
|
||||
this.buf[i] = _in[i] * this.LONG_WINDOWS[windowShapePrev][i];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
this.buf[i + this.length] = _in[i + this.length];
|
||||
for (i = 0; i < this.shortLen; i++)
|
||||
this.buf[i + this.length + this.mid] = _in[i + this.length + this.mid] * this.SHORT_WINDOWS[windowShape][this.shortLen - 1 - i];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
this.buf[i + this.length + this.mid + this.shortLen] = 0.0F;
|
||||
break;
|
||||
case LONG_STOP_SEQUENCE:
|
||||
for (i = 0; i < this.mid; i++)
|
||||
this.buf[i] = 0.0F;
|
||||
for (i = 0; i < this.shortLen; i++)
|
||||
this.buf[i + this.mid] = _in[i + this.mid] * this.SHORT_WINDOWS[windowShapePrev][i];
|
||||
for (i = 0; i < this.mid; i++)
|
||||
this.buf[i + this.mid + this.shortLen] = _in[i + this.mid + this.shortLen];
|
||||
for (i = 0; i < this.length; i++)
|
||||
this.buf[i + this.length] = _in[i + this.length] * this.LONG_WINDOWS[windowShape][this.length - 1 - i];
|
||||
break;
|
||||
}
|
||||
this.mdctLong.processForward(this.buf, out);
|
||||
}
|
||||
|
||||
public float[] getOverlap(int channel) {
|
||||
return this.overlaps[channel];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
interface KBDWindows {
|
||||
public static final float[] KBD_1024 = new float[] {
|
||||
2.9256154E-4F, 4.2998567E-4F, 5.467407E-4F, 6.5482303E-4F, 7.5870194E-4F, 8.6059334E-4F, 9.617754E-4F, 0.001063061F, 0.0011650036F, 0.0012680013F,
|
||||
0.0013723518F, 0.0014782865F, 0.0015859902F, 0.0016956148F, 0.0018072877F, 0.0019211179F, 0.0020372008F, 0.0021556206F, 0.0022764534F, 0.0023997684F,
|
||||
0.002525629F, 0.002654095F, 0.0027852214F, 0.0029190616F, 0.0030556656F, 0.0031950814F, 0.0033373553F, 0.0034825325F, 0.0036306567F, 0.0037817704F,
|
||||
0.003935915F, 0.004093132F, 0.004253461F, 0.004416942F, 0.004583614F, 0.004753516F, 0.0049266857F, 0.0051031616F, 0.0052829813F, 0.005466182F,
|
||||
0.0056528007F, 0.005842875F, 0.0060364413F, 0.006233536F, 0.0064341966F, 0.006638458F, 0.0068463576F, 0.0070579313F, 0.0072732153F, 0.007492245F,
|
||||
0.007715057F, 0.0079416875F, 0.008172171F, 0.008406544F, 0.008644843F, 0.008887102F, 0.009133358F, 0.009383645F, 0.009638F, 0.009896458F,
|
||||
0.010159055F, 0.010425826F, 0.010696805F, 0.010972029F, 0.0112515325F, 0.011535351F, 0.011823521F, 0.012116075F, 0.01241305F, 0.01271448F,
|
||||
0.013020401F, 0.013330848F, 0.013645855F, 0.013965457F, 0.014289689F, 0.014618587F, 0.014952184F, 0.015290515F, 0.015633615F, 0.015981518F,
|
||||
0.01633426F, 0.016691875F, 0.017054394F, 0.017421857F, 0.017794292F, 0.018171739F, 0.018554227F, 0.018941795F, 0.019334473F, 0.019732295F,
|
||||
0.020135297F, 0.02054351F, 0.020956969F, 0.021375706F, 0.021799758F, 0.022229154F, 0.02266393F, 0.023104116F, 0.023549749F, 0.024000859F,
|
||||
0.024457477F, 0.02491964F, 0.025387377F, 0.025860721F, 0.026339704F, 0.02682436F, 0.027314719F, 0.027810814F, 0.028312674F, 0.028820332F,
|
||||
0.02933382F, 0.02985317F, 0.03037841F, 0.030909576F, 0.03144669F, 0.03198979F, 0.032538906F, 0.033094067F, 0.0336553F, 0.034222636F,
|
||||
0.03479611F, 0.035375744F, 0.035961572F, 0.03655362F, 0.03715192F, 0.037756503F, 0.03836739F, 0.038984615F, 0.039608207F, 0.04023819F,
|
||||
0.040874593F, 0.04151744F, 0.042166766F, 0.042822596F, 0.043484952F, 0.044153865F, 0.044829357F, 0.04551146F, 0.0462002F, 0.046895597F,
|
||||
0.04759768F, 0.048306476F, 0.049022008F, 0.049744297F, 0.050473373F, 0.05120926F, 0.05195198F, 0.052701555F, 0.05345801F, 0.05422137F,
|
||||
0.05499166F, 0.055768896F, 0.056553107F, 0.05734431F, 0.058142528F, 0.058947787F, 0.0597601F, 0.060579497F, 0.061405994F, 0.062239613F,
|
||||
0.06308037F, 0.06392829F, 0.064783394F, 0.065645695F, 0.066515215F, 0.06739197F, 0.06827598F, 0.06916727F, 0.07006585F, 0.070971735F,
|
||||
0.071884945F, 0.0728055F, 0.07373342F, 0.074668705F, 0.07561139F, 0.07656147F, 0.077518985F, 0.07848393F, 0.07945632F, 0.080436185F,
|
||||
0.08142353F, 0.08241835F, 0.083420694F, 0.084430546F, 0.08544793F, 0.086472854F, 0.08750533F, 0.088545375F, 0.08959299F, 0.0906482F,
|
||||
0.091711F, 0.0927814F, 0.09385943F, 0.09494507F, 0.09603836F, 0.09713928F, 0.09824785F, 0.09936407F, 0.10048797F, 0.101619534F,
|
||||
0.10275877F, 0.10390569F, 0.10506031F, 0.106222615F, 0.10739262F, 0.10857033F, 0.10975575F, 0.110948876F, 0.112149715F, 0.113358274F,
|
||||
0.11457455F, 0.115798555F, 0.11703028F, 0.11826973F, 0.119516894F, 0.120771796F, 0.12203442F, 0.12330477F, 0.12458284F, 0.12586865F,
|
||||
0.12716216F, 0.1284634F, 0.12977235F, 0.13108903F, 0.1324134F, 0.13374549F, 0.13508528F, 0.13643277F, 0.13778795F, 0.13915081F,
|
||||
0.14052136F, 0.14189959F, 0.14328548F, 0.14467904F, 0.14608026F, 0.1474891F, 0.14890559F, 0.15032972F, 0.15176146F, 0.1532008F,
|
||||
0.15464775F, 0.15610228F, 0.1575644F, 0.15903409F, 0.16051131F, 0.1619961F, 0.1634884F, 0.16498822F, 0.16649553F, 0.16801035F,
|
||||
0.16953263F, 0.17106237F, 0.17259955F, 0.17414416F, 0.17569618F, 0.1772556F, 0.17882238F, 0.18039654F, 0.18197803F, 0.18356684F,
|
||||
0.18516295F, 0.18676636F, 0.18837702F, 0.18999492F, 0.19162005F, 0.19325238F, 0.1948919F, 0.19653857F, 0.19819237F, 0.1998533F,
|
||||
0.2015213F, 0.20319638F, 0.2048785F, 0.20656763F, 0.20826375F, 0.20996685F, 0.21167688F, 0.21339384F, 0.21511766F, 0.21684836F,
|
||||
0.2185859F, 0.22033022F, 0.22208133F, 0.2238392F, 0.22560377F, 0.22737503F, 0.22915295F, 0.2309375F, 0.23272865F, 0.23452635F,
|
||||
0.2363306F, 0.23814134F, 0.23995855F, 0.2417822F, 0.24361224F, 0.24544866F, 0.24729142F, 0.24914046F, 0.25099578F, 0.2528573F,
|
||||
0.25472504F, 0.25659892F, 0.25847894F, 0.26036504F, 0.26225716F, 0.2641553F, 0.2660594F, 0.26796943F, 0.26988536F, 0.27180713F,
|
||||
0.27373472F, 0.27566808F, 0.27760717F, 0.27955195F, 0.28150237F, 0.2834584F, 0.28542F, 0.28738713F, 0.28935972F, 0.29133776F,
|
||||
0.29332116F, 0.29530993F, 0.297304F, 0.29930335F, 0.3013079F, 0.3033176F, 0.30533245F, 0.30735236F, 0.3093773F, 0.31140724F,
|
||||
0.3134421F, 0.31548184F, 0.31752646F, 0.31957585F, 0.32162997F, 0.3236888F, 0.3257523F, 0.32782036F, 0.32989296F, 0.3319701F,
|
||||
0.33405167F, 0.33613762F, 0.33822796F, 0.34032255F, 0.3424214F, 0.34452447F, 0.34663165F, 0.34874293F, 0.35085824F, 0.3529775F,
|
||||
0.35510075F, 0.35722783F, 0.35935876F, 0.36149344F, 0.36363184F, 0.3657739F, 0.36791956F, 0.3700688F, 0.37222147F, 0.37437764F,
|
||||
0.37653714F, 0.37870002F, 0.38086614F, 0.38303548F, 0.38520798F, 0.38738358F, 0.38956222F, 0.39174384F, 0.39392838F, 0.3961158F,
|
||||
0.39830604F, 0.40049905F, 0.40269473F, 0.40489307F, 0.40709397F, 0.40929738F, 0.4115033F, 0.41371155F, 0.4159222F, 0.4181351F,
|
||||
0.42035022F, 0.42256752F, 0.42478693F, 0.42700836F, 0.42923176F, 0.4314571F, 0.43368432F, 0.43591332F, 0.43814406F, 0.44037646F,
|
||||
0.4426105F, 0.44484606F, 0.44708315F, 0.44932166F, 0.45156154F, 0.4538027F, 0.45604512F, 0.45828876F, 0.46053347F, 0.46277925F,
|
||||
0.46502605F, 0.46727377F, 0.46952236F, 0.47177178F, 0.4740219F, 0.47627273F, 0.4785242F, 0.4807762F, 0.4830287F, 0.48528165F,
|
||||
0.48753494F, 0.48978856F, 0.49204242F, 0.49429646F, 0.49655062F, 0.49880484F, 0.501059F, 0.5033131F, 0.50556713F, 0.50782096F,
|
||||
0.5100745F, 0.5123277F, 0.5145805F, 0.5168329F, 0.51908475F, 0.521336F, 0.52358663F, 0.5258366F, 0.52808577F, 0.5303341F,
|
||||
0.53258157F, 0.53482807F, 0.5370735F, 0.5393179F, 0.5415612F, 0.5438032F, 0.546044F, 0.54828346F, 0.55052155F, 0.55275816F,
|
||||
0.5549932F, 0.5572267F, 0.5594586F, 0.5616888F, 0.5639172F, 0.56614375F, 0.5683685F, 0.5705912F, 0.57281196F, 0.5750306F,
|
||||
0.57724714F, 0.57946146F, 0.58167356F, 0.58388335F, 0.58609074F, 0.5882957F, 0.59049815F, 0.59269804F, 0.59489536F, 0.59708995F,
|
||||
0.59928185F, 0.60147095F, 0.6036572F, 0.6058405F, 0.60802084F, 0.6101982F, 0.6123724F, 0.6145435F, 0.6167114F, 0.61887604F,
|
||||
0.62103736F, 0.6231953F, 0.6253498F, 0.62750083F, 0.62964827F, 0.6317921F, 0.63393235F, 0.6360689F, 0.6382016F, 0.6403305F,
|
||||
0.6424555F, 0.6445766F, 0.6466937F, 0.64880675F, 0.65091574F, 0.6530205F, 0.65512115F, 0.65721744F, 0.6593095F, 0.66139716F,
|
||||
0.6634804F, 0.66555923F, 0.6676335F, 0.6697032F, 0.67176825F, 0.67382866F, 0.6758843F, 0.67793524F, 0.6799813F, 0.6820225F,
|
||||
0.6840588F, 0.6860901F, 0.6881164F, 0.6901376F, 0.69215375F, 0.6941647F, 0.69617045F, 0.6981709F, 0.7001661F, 0.7021559F,
|
||||
0.70414037F, 0.70611936F, 0.70809287F, 0.71006083F, 0.7120232F, 0.71398F, 0.7159311F, 0.71787655F, 0.7198162F, 0.7217501F,
|
||||
0.7236782F, 0.7256003F, 0.7275166F, 0.72942686F, 0.73133117F, 0.73322946F, 0.73512167F, 0.73700774F, 0.73888767F, 0.7407614F,
|
||||
0.7426289F, 0.74449015F, 0.74634504F, 0.7481936F, 0.7500359F, 0.75187165F, 0.75370103F, 0.75552386F, 0.7573402F, 0.75915F,
|
||||
0.7609532F, 0.7627498F, 0.7645397F, 0.766323F, 0.7680995F, 0.76986927F, 0.7716323F, 0.7733885F, 0.77513784F, 0.7768803F,
|
||||
0.7786159F, 0.78034455F, 0.7820663F, 0.783781F, 0.78548867F, 0.7871893F, 0.7888829F, 0.7905694F, 0.79224885F, 0.79392105F,
|
||||
0.7955861F, 0.797244F, 0.7988947F, 0.8005381F, 0.80217427F, 0.80380315F, 0.80542475F, 0.807039F, 0.8086459F, 0.81024545F,
|
||||
0.8118376F, 0.8134223F, 0.81499964F, 0.8165695F, 0.8181319F, 0.81968683F, 0.8212342F, 0.8227741F, 0.8243065F, 0.82583135F,
|
||||
0.8273486F, 0.82885826F, 0.83036035F, 0.8318549F, 0.8333417F, 0.834821F, 0.83629256F, 0.8377565F, 0.8392128F, 0.84066135F,
|
||||
0.8421022F, 0.8435354F, 0.8449609F, 0.8463787F, 0.84778875F, 0.84919107F, 0.85058564F, 0.85197246F, 0.8533515F, 0.8547228F,
|
||||
0.8560863F, 0.8574421F, 0.85879004F, 0.86013025F, 0.86146265F, 0.86278725F, 0.8641041F, 0.8654131F, 0.86671436F, 0.8680078F,
|
||||
0.8692934F, 0.8705712F, 0.87184125F, 0.87310344F, 0.8743579F, 0.8756045F, 0.87684333F, 0.87807435F, 0.8792976F, 0.8805131F,
|
||||
0.8817207F, 0.88292056F, 0.88411266F, 0.885297F, 0.88647354F, 0.8876423F, 0.88880336F, 0.88995665F, 0.8911022F, 0.89224F,
|
||||
0.89337003F, 0.8944924F, 0.89560705F, 0.896714F, 0.8978132F, 0.8989048F, 0.89998865F, 0.9010649F, 0.90213346F, 0.90319437F,
|
||||
0.9042477F, 0.90529335F, 0.9063314F, 0.9073619F, 0.90838486F, 0.9094002F, 0.910408F, 0.9114083F, 0.912401F, 0.9133863F,
|
||||
0.91436404F, 0.91533434F, 0.9162972F, 0.9172526F, 0.91820055F, 0.9191411F, 0.92007434F, 0.9210002F, 0.92191863F, 0.9228298F,
|
||||
0.92373365F, 0.92463017F, 0.92551947F, 0.9264015F, 0.9272763F, 0.9281439F, 0.9290044F, 0.9298576F, 0.93070376F, 0.93154275F,
|
||||
0.93237466F, 0.93319947F, 0.9340173F, 0.93482804F, 0.9356318F, 0.9364286F, 0.9372184F, 0.93800133F, 0.9387773F, 0.93954647F,
|
||||
0.94030875F, 0.94106424F, 0.9418129F, 0.9425548F, 0.94328994F, 0.94401836F, 0.94474006F, 0.94545513F, 0.9461636F, 0.94686544F,
|
||||
0.9475607F, 0.9482494F, 0.94893163F, 0.9496073F, 0.95027655F, 0.95093936F, 0.9515958F, 0.95224583F, 0.9528895F, 0.9535269F,
|
||||
0.954158F, 0.95478284F, 0.9554015F, 0.956014F, 0.9566203F, 0.95722044F, 0.9578145F, 0.9584025F, 0.95898455F, 0.9595605F,
|
||||
0.9601306F, 0.9606947F, 0.96125287F, 0.9618052F, 0.96235174F, 0.9628925F, 0.9634274F, 0.96395665F, 0.96448016F, 0.964998F,
|
||||
0.96551025F, 0.9660169F, 0.966518F, 0.96701354F, 0.9675036F, 0.9679882F, 0.96846735F, 0.96894115F, 0.9694096F, 0.9698727F,
|
||||
0.97033054F, 0.9707831F, 0.9712305F, 0.9716727F, 0.97210974F, 0.9725417F, 0.9729686F, 0.9733904F, 0.9738073F, 0.97421914F,
|
||||
0.97462606F, 0.97502816F, 0.97542536F, 0.97581774F, 0.9762053F, 0.97658813F, 0.97696626F, 0.9773397F, 0.9777085F, 0.9780727F,
|
||||
0.9784323F, 0.9787874F, 0.979138F, 0.97948414F, 0.97982585F, 0.98016316F, 0.9804961F, 0.9808247F, 0.9811491F, 0.98146915F,
|
||||
0.98178506F, 0.9820968F, 0.98240435F, 0.98270786F, 0.98300725F, 0.9833026F, 0.98359394F, 0.98388135F, 0.98416483F, 0.98444444F,
|
||||
0.9847202F, 0.9849921F, 0.9852602F, 0.9855246F, 0.98578525F, 0.9860422F, 0.9862955F, 0.98654526F, 0.9867914F, 0.987034F,
|
||||
0.9872731F, 0.9875087F, 0.9877409F, 0.9879697F, 0.98819506F, 0.98841715F, 0.9886359F, 0.9888514F, 0.9890637F, 0.9892727F,
|
||||
0.98947865F, 0.9896814F, 0.98988104F, 0.9900777F, 0.9902712F, 0.99046177F, 0.99064934F, 0.990834F, 0.99101573F, 0.9911946F,
|
||||
0.9913706F, 0.9915438F, 0.99171424F, 0.99188197F, 0.9920469F, 0.9922092F, 0.9923689F, 0.9925259F, 0.9926803F, 0.9928322F,
|
||||
0.9929815F, 0.99312836F, 0.9932727F, 0.99341464F, 0.9935542F, 0.9936913F, 0.9938261F, 0.9939586F, 0.99408877F, 0.9942167F,
|
||||
0.9943424F, 0.9944658F, 0.9945872F, 0.99470633F, 0.99482334F, 0.99493825F, 0.99505115F, 0.99516195F, 0.9952708F, 0.99537766F,
|
||||
0.9954825F, 0.99558544F, 0.99568653F, 0.99578565F, 0.995883F, 0.9959785F, 0.9960722F, 0.996164F, 0.9962542F, 0.99634266F,
|
||||
0.9964294F, 0.99651444F, 0.9965978F, 0.9966796F, 0.9967598F, 0.99683833F, 0.9969154F, 0.99699086F, 0.9970649F, 0.99713737F,
|
||||
0.9972084F, 0.997278F, 0.99734616F, 0.9974129F, 0.9974783F, 0.9975424F, 0.9976051F, 0.9976665F, 0.99772656F, 0.9977854F,
|
||||
0.99784297F, 0.99789935F, 0.9979545F, 0.99800843F, 0.99806124F, 0.99811286F, 0.9981634F, 0.99821275F, 0.9982611F, 0.9983083F,
|
||||
0.99835443F, 0.9983996F, 0.9984437F, 0.9984868F, 0.99852896F, 0.9985701F, 0.9986103F, 0.9986496F, 0.9986879F, 0.9987254F,
|
||||
0.998762F, 0.9987977F, 0.9988326F, 0.9988666F, 0.9988998F, 0.9989322F, 0.99896383F, 0.99899465F, 0.99902475F, 0.9990541F,
|
||||
0.9990827F, 0.9991106F, 0.99913776F, 0.9991643F, 0.9991901F, 0.9992153F, 0.9992398F, 0.9992637F, 0.99928695F, 0.9993096F,
|
||||
0.9993317F, 0.9993532F, 0.9993741F, 0.9993944F, 0.9994142F, 0.9994335F, 0.99945223F, 0.9994705F, 0.9994882F, 0.99950546F,
|
||||
0.9995222F, 0.9995385F, 0.9995543F, 0.99956965F, 0.9995846F, 0.9995991F, 0.9996132F, 0.9996269F, 0.99964017F, 0.99965304F,
|
||||
0.99966556F, 0.9996777F, 0.99968946F, 0.99970084F, 0.99971193F, 0.99972266F, 0.9997331F, 0.99974316F, 0.9997529F, 0.99976236F,
|
||||
0.99977154F, 0.99978036F, 0.99978894F, 0.9997973F, 0.9998053F, 0.9998131F, 0.9998206F, 0.99982786F, 0.9998349F, 0.9998417F,
|
||||
0.99984825F, 0.99985456F, 0.9998607F, 0.9998666F, 0.99987227F, 0.9998778F, 0.9998831F, 0.9998882F, 0.9998931F, 0.9998979F,
|
||||
0.9999025F, 0.9999069F, 0.9999111F, 0.99991524F, 0.9999192F, 0.99992293F, 0.9999266F, 0.9999301F, 0.9999335F, 0.9999367F,
|
||||
0.9999398F, 0.9999428F, 0.99994564F, 0.9999484F, 0.999951F, 0.99995357F, 0.99995595F, 0.9999583F, 0.9999605F, 0.9999626F,
|
||||
0.99996465F, 0.9999666F, 0.99996847F, 0.99997026F, 0.9999719F, 0.99997354F, 0.9999751F, 0.9999766F, 0.99997795F, 0.9999793F,
|
||||
0.99998057F, 0.99998176F, 0.99998295F, 0.999984F, 0.99998504F, 0.99998605F, 0.999987F, 0.99998784F, 0.9999887F, 0.9999895F,
|
||||
0.9999902F, 0.99999094F, 0.9999916F, 0.99999225F, 0.99999285F, 0.9999934F, 0.9999939F, 0.99999446F, 0.9999949F, 0.99999535F,
|
||||
0.99999577F, 0.9999961F, 0.9999965F, 0.9999968F, 0.99999714F, 0.99999744F, 0.9999977F, 0.9999979F, 0.99999815F, 0.9999984F,
|
||||
0.99999857F, 0.99999875F, 0.9999989F, 0.99999905F, 0.9999992F, 0.99999934F, 0.99999946F, 0.9999995F, 0.99999964F, 0.9999997F,
|
||||
0.99999976F, 0.9999998F, 0.9999999F, 0.99999994F };
|
||||
|
||||
public static final float[] KBD_128 = new float[] {
|
||||
4.3795702E-5F, 1.18673845E-4F, 2.3071657E-4F, 3.894728E-4F, 6.058127E-4F, 8.9199696E-4F, 0.0012617254F, 0.0017301724F, 0.0023140071F, 0.0030313989F,
|
||||
0.003902005F, 0.00494694F, 0.006188728F, 0.007651231F, 0.00935956F, 0.011339966F, 0.013619707F, 0.016226895F, 0.019190324F, 0.022539284F,
|
||||
0.02630334F, 0.030512117F, 0.03519505F, 0.04038113F, 0.046098642F, 0.05237489F, 0.059235904F, 0.06670617F, 0.074808344F, 0.083562955F,
|
||||
0.09298815F, 0.10309941F, 0.11390932F, 0.1254273F, 0.13765942F, 0.15060817F, 0.1642723F, 0.17864668F, 0.19372223F, 0.20948577F,
|
||||
0.22591996F, 0.2430034F, 0.26071054F, 0.27901176F, 0.29787362F, 0.31725872F, 0.33712614F, 0.35743153F, 0.3781274F, 0.39916334F,
|
||||
0.4204864F, 0.4420414F, 0.46377128F, 0.48561758F, 0.5075207F, 0.52942044F, 0.5512564F, 0.5729685F, 0.5944971F, 0.6157838F,
|
||||
0.6367718F, 0.65740615F, 0.67763436F, 0.6974065F, 0.7166758F, 0.735399F, 0.7535364F, 0.7710523F, 0.78791517F, 0.8040978F,
|
||||
0.8195774F, 0.83433586F, 0.8483596F, 0.86163956F, 0.8741714F, 0.885955F, 0.89699465F, 0.90729886F, 0.91687983F, 0.9257536F,
|
||||
0.93393934F, 0.9414595F, 0.94833905F, 0.95460534F, 0.9602877F, 0.965417F, 0.9700254F, 0.9741459F, 0.9778117F, 0.9810564F,
|
||||
0.9839133F, 0.986415F, 0.9885935F, 0.99047965F, 0.9921028F, 0.9934912F, 0.99467105F, 0.9956672F, 0.9965025F, 0.9971979F,
|
||||
0.99777263F, 0.998244F, 0.9986275F, 0.9989369F, 0.99918437F, 0.99938047F, 0.99953437F, 0.999654F, 0.99974597F, 0.9998158F,
|
||||
0.99986833F, 0.99990726F, 0.9999357F, 0.9999562F, 0.99997073F, 0.99998087F, 0.9999878F, 0.9999924F, 0.9999954F, 0.9999973F,
|
||||
0.9999985F, 0.9999992F, 0.9999996F, 0.9999998F, 0.99999994F, 1.0F, 1.0F, 1.0F };
|
||||
|
||||
public static final float[] KBD_960 = new float[] {
|
||||
3.0215626E-4F, 4.452267E-4F, 5.674948E-4F, 6.812466E-4F, 7.910497E-4F, 8.991655E-4F, 0.0010068978F, 0.0011150759F, 0.0012242653F, 0.0013348736F,
|
||||
0.0014472068F, 0.001561504F, 0.0016779569F, 0.0017967242F, 0.0019179397F, 0.0020417196F, 0.0021681653F, 0.002297368F, 0.0024294101F, 0.0025643678F,
|
||||
0.002702311F, 0.0028433062F, 0.0029874153F, 0.0031346984F, 0.0032852124F, 0.0034390124F, 0.0035961515F, 0.0037566822F, 0.0039206543F, 0.0040881187F,
|
||||
0.004259123F, 0.0044337157F, 0.0046119443F, 0.004793856F, 0.0049794964F, 0.0051689115F, 0.0053621475F, 0.005559249F, 0.0057602613F, 0.005965229F,
|
||||
0.006174197F, 0.006387209F, 0.0066043097F, 0.006825543F, 0.0070509524F, 0.007280582F, 0.007514476F, 0.0077526774F, 0.007995229F, 0.008242176F,
|
||||
0.00849356F, 0.008749426F, 0.009009816F, 0.009274773F, 0.009544341F, 0.009818562F, 0.01009748F, 0.010381138F, 0.010669579F, 0.010962844F,
|
||||
0.011260978F, 0.011564023F, 0.0118720215F, 0.012185017F, 0.01250305F, 0.012826165F, 0.013154404F, 0.01348781F, 0.013826424F, 0.01417029F,
|
||||
0.014519448F, 0.014873942F, 0.015233814F, 0.015599105F, 0.015969856F, 0.016346112F, 0.016727913F, 0.017115299F, 0.017508315F, 0.017907F,
|
||||
0.018311396F, 0.018721545F, 0.019137487F, 0.019559264F, 0.019986916F, 0.020420484F, 0.02086001F, 0.021305535F, 0.021757096F, 0.022214737F,
|
||||
0.022678494F, 0.023148412F, 0.023624528F, 0.024106883F, 0.024595516F, 0.025090465F, 0.025591772F, 0.026099475F, 0.026613612F, 0.027134223F,
|
||||
0.027661344F, 0.028195018F, 0.02873528F, 0.02928217F, 0.029835723F, 0.030395979F, 0.030962974F, 0.031536747F, 0.032117333F, 0.03270477F,
|
||||
0.033299096F, 0.033900343F, 0.034508552F, 0.035123758F, 0.035745993F, 0.0363753F, 0.0370117F, 0.037655246F, 0.03830596F, 0.03896388F,
|
||||
0.039629042F, 0.04030148F, 0.040981222F, 0.041668307F, 0.04236277F, 0.043064635F, 0.04377394F, 0.04449072F, 0.045215003F, 0.04594682F,
|
||||
0.046686206F, 0.04743319F, 0.048187803F, 0.048950076F, 0.049720038F, 0.05049772F, 0.051283147F, 0.052076355F, 0.052877367F, 0.053686213F,
|
||||
0.054502927F, 0.055327527F, 0.056160048F, 0.057000514F, 0.05784895F, 0.058705386F, 0.059569843F, 0.060442355F, 0.06132294F, 0.062211625F,
|
||||
0.06310843F, 0.06401339F, 0.06492652F, 0.065847844F, 0.066777386F, 0.067715175F, 0.06866122F, 0.06961555F, 0.070578195F, 0.071549155F,
|
||||
0.072528474F, 0.07351615F, 0.07451222F, 0.07551669F, 0.07652959F, 0.07755093F, 0.07858074F, 0.07961902F, 0.0806658F, 0.08172109F,
|
||||
0.082784906F, 0.08385727F, 0.08493819F, 0.08602769F, 0.08712578F, 0.088232465F, 0.089347765F, 0.0904717F, 0.09160427F, 0.0927455F,
|
||||
0.09389539F, 0.095053956F, 0.09622121F, 0.097397156F, 0.098581806F, 0.09977517F, 0.100977264F, 0.10218809F, 0.103407644F, 0.10463595F,
|
||||
0.105873F, 0.10711882F, 0.1083734F, 0.10963675F, 0.110908866F, 0.11218977F, 0.11347944F, 0.11477791F, 0.11608516F, 0.11740119F,
|
||||
0.118726015F, 0.120059624F, 0.12140203F, 0.122753225F, 0.12411321F, 0.12548198F, 0.12685953F, 0.12824588F, 0.129641F, 0.1310449F,
|
||||
0.13245757F, 0.133879F, 0.13530922F, 0.13674818F, 0.13819589F, 0.13965234F, 0.14111754F, 0.14259146F, 0.14407411F, 0.14556547F,
|
||||
0.14706554F, 0.14857428F, 0.15009172F, 0.15161783F, 0.15315259F, 0.154696F, 0.15624805F, 0.1578087F, 0.15937798F, 0.16095585F,
|
||||
0.16254228F, 0.16413727F, 0.16574082F, 0.1673529F, 0.16897348F, 0.17060255F, 0.1722401F, 0.17388609F, 0.17554054F, 0.17720339F,
|
||||
0.17887463F, 0.18055424F, 0.1822422F, 0.18393849F, 0.18564309F, 0.18735597F, 0.18907711F, 0.19080646F, 0.19254404F, 0.19428979F,
|
||||
0.1960437F, 0.19780573F, 0.19957587F, 0.20135407F, 0.20314032F, 0.20493457F, 0.20673682F, 0.20854701F, 0.21036512F, 0.21219113F,
|
||||
0.21402499F, 0.21586668F, 0.21771616F, 0.2195734F, 0.22143836F, 0.223311F, 0.22519132F, 0.22707924F, 0.22897474F, 0.23087779F,
|
||||
0.23278835F, 0.23470637F, 0.23663183F, 0.23856467F, 0.24050486F, 0.24245237F, 0.24440713F, 0.24636914F, 0.24833833F, 0.25031465F,
|
||||
0.2522981F, 0.25428858F, 0.25628608F, 0.25829056F, 0.26030195F, 0.26232022F, 0.26434532F, 0.2663772F, 0.26841584F, 0.27046117F,
|
||||
0.27251315F, 0.27457172F, 0.2766368F, 0.2787084F, 0.28078645F, 0.28287092F, 0.2849617F, 0.28705877F, 0.2891621F, 0.29127163F,
|
||||
0.29338726F, 0.295509F, 0.29763678F, 0.2997705F, 0.30191016F, 0.3040557F, 0.30620703F, 0.3083641F, 0.31052688F, 0.3126953F,
|
||||
0.3148693F, 0.31704885F, 0.31923383F, 0.32142425F, 0.32362F, 0.32582104F, 0.3280273F, 0.33023876F, 0.3324553F, 0.3346769F,
|
||||
0.33690348F, 0.339135F, 0.34137136F, 0.34361252F, 0.34585842F, 0.348109F, 0.3503642F, 0.35262394F, 0.35488814F, 0.35715678F,
|
||||
0.35942975F, 0.36170703F, 0.36398852F, 0.36627415F, 0.36856386F, 0.3708576F, 0.3731553F, 0.37545687F, 0.3777623F, 0.38007143F,
|
||||
0.38238424F, 0.3847007F, 0.38702068F, 0.38934413F, 0.39167097F, 0.3940012F, 0.39633462F, 0.39867127F, 0.40101105F, 0.40335387F,
|
||||
0.40569967F, 0.4080484F, 0.41039994F, 0.41275427F, 0.41511127F, 0.4174709F, 0.4198331F, 0.42219776F, 0.4245648F, 0.4269342F,
|
||||
0.42930585F, 0.43167967F, 0.43405563F, 0.43643358F, 0.43881354F, 0.44119534F, 0.443579F, 0.44596437F, 0.44835138F, 0.45074F,
|
||||
0.45313016F, 0.45552173F, 0.45791465F, 0.46030888F, 0.46270433F, 0.46510088F, 0.46749854F, 0.46989715F, 0.47229666F, 0.47469702F,
|
||||
0.47709814F, 0.47949994F, 0.48190233F, 0.48430526F, 0.48670864F, 0.4891124F, 0.49151644F, 0.4939207F, 0.49632514F, 0.49872962F,
|
||||
0.5011341F, 0.5035385F, 0.50594276F, 0.50834674F, 0.5107504F, 0.51315373F, 0.5155565F, 0.5179588F, 0.52036047F, 0.52276146F,
|
||||
0.5251616F, 0.52756095F, 0.5299594F, 0.5323568F, 0.53475314F, 0.5371483F, 0.53954226F, 0.5419349F, 0.5443261F, 0.546716F,
|
||||
0.5491042F, 0.55149084F, 0.55387586F, 0.55625904F, 0.5586404F, 0.5610199F, 0.56339735F, 0.5657728F, 0.56814605F, 0.5705171F,
|
||||
0.5728859F, 0.5752523F, 0.57761633F, 0.5799778F, 0.5823367F, 0.58469296F, 0.58704644F, 0.5893972F, 0.591745F, 0.5940899F,
|
||||
0.59643185F, 0.5987706F, 0.6011062F, 0.6034386F, 0.6057677F, 0.60809344F, 0.6104157F, 0.61273444F, 0.6150496F, 0.6173611F,
|
||||
0.6196689F, 0.62197286F, 0.62427294F, 0.6265691F, 0.62886125F, 0.63114935F, 0.6334333F, 0.63571304F, 0.63798845F, 0.64025956F,
|
||||
0.64252627F, 0.6447885F, 0.64704615F, 0.6492992F, 0.65154755F, 0.6537912F, 0.65603006F, 0.65826404F, 0.660493F, 0.66271704F,
|
||||
0.664936F, 0.6671499F, 0.66935855F, 0.67156196F, 0.67376006F, 0.67595273F, 0.67814004F, 0.6803218F, 0.6824981F, 0.6846687F,
|
||||
0.6868337F, 0.68899286F, 0.6911463F, 0.6932939F, 0.6954356F, 0.69757134F, 0.699701F, 0.70182467F, 0.7039421F, 0.70605344F,
|
||||
0.70815855F, 0.7102573F, 0.7123498F, 0.71443576F, 0.71651536F, 0.7185884F, 0.72065496F, 0.72271484F, 0.7247681F, 0.7268146F,
|
||||
0.7288544F, 0.7308874F, 0.7329135F, 0.7349327F, 0.736945F, 0.7389502F, 0.74094844F, 0.74293953F, 0.74492353F, 0.7469003F,
|
||||
0.7488699F, 0.75083214F, 0.7527872F, 0.75473475F, 0.756675F, 0.75860775F, 0.7605331F, 0.7624508F, 0.7643611F, 0.76626366F,
|
||||
0.7681586F, 0.77004594F, 0.7719255F, 0.7737973F, 0.77566135F, 0.7775175F, 0.77936584F, 0.7812063F, 0.7830388F, 0.78486335F,
|
||||
0.78667986F, 0.7884884F, 0.79028887F, 0.79208124F, 0.79386544F, 0.79564154F, 0.7974094F, 0.7991691F, 0.80092055F, 0.80266374F,
|
||||
0.8043986F, 0.80612516F, 0.8078434F, 0.80955327F, 0.8112547F, 0.8129477F, 0.8146323F, 0.8163084F, 0.817976F, 0.81963515F,
|
||||
0.8212857F, 0.8229278F, 0.8245612F, 0.82618606F, 0.8278023F, 0.82940996F, 0.831009F, 0.8325993F, 0.83418095F, 0.8357539F,
|
||||
0.8373181F, 0.8388737F, 0.8404205F, 0.8419585F, 0.8434878F, 0.8450083F, 0.84652007F, 0.848023F, 0.84951717F, 0.8510025F,
|
||||
0.85247904F, 0.8539467F, 0.85540557F, 0.8568556F, 0.85829675F, 0.85972905F, 0.86115247F, 0.86256707F, 0.8639728F, 0.8653696F,
|
||||
0.86675763F, 0.8681367F, 0.86950696F, 0.87086827F, 0.87222075F, 0.87356436F, 0.8748991F, 0.87622494F, 0.8775419F, 0.87885004F,
|
||||
0.88014925F, 0.8814396F, 0.8827212F, 0.88399386F, 0.88525766F, 0.8865127F, 0.88775885F, 0.8889962F, 0.8902247F, 0.8914444F,
|
||||
0.89265525F, 0.89385736F, 0.8950507F, 0.8962353F, 0.8974111F, 0.89857817F, 0.89973646F, 0.90088606F, 0.90202695F, 0.9031592F,
|
||||
0.9042827F, 0.90539753F, 0.90650374F, 0.90760136F, 0.9086903F, 0.90977067F, 0.9108424F, 0.91190565F, 0.9129603F, 0.9140064F,
|
||||
0.91504407F, 0.9160732F, 0.9170939F, 0.91810614F, 0.91910994F, 0.92010534F, 0.9210924F, 0.92207104F, 0.9230414F, 0.9240034F,
|
||||
0.92495716F, 0.9259026F, 0.9268399F, 0.9277689F, 0.9286897F, 0.92960244F, 0.930507F, 0.93140346F, 0.9322918F, 0.93317217F,
|
||||
0.9340444F, 0.93490875F, 0.93576515F, 0.93661356F, 0.93745404F, 0.9382867F, 0.93911153F, 0.93992853F, 0.9407377F, 0.94153917F,
|
||||
0.9423329F, 0.943119F, 0.9438974F, 0.94466823F, 0.9454315F, 0.94618714F, 0.9469353F, 0.947676F, 0.9484092F, 0.94913507F,
|
||||
0.9498535F, 0.9505646F, 0.95126843F, 0.951965F, 0.95265424F, 0.95333636F, 0.9540113F, 0.9546792F, 0.95533997F, 0.95599365F,
|
||||
0.9566404F, 0.95728016F, 0.957913F, 0.9585389F, 0.959158F, 0.95977026F, 0.9603758F, 0.9609746F, 0.9615666F, 0.96215206F,
|
||||
0.9627309F, 0.96330315F, 0.96386886F, 0.96442807F, 0.9649809F, 0.96552724F, 0.96606725F, 0.96660095F, 0.9671284F, 0.9676496F,
|
||||
0.96816456F, 0.96867335F, 0.96917605F, 0.9696727F, 0.9701633F, 0.97064793F, 0.9711266F, 0.9715994F, 0.97206634F, 0.97252744F,
|
||||
0.97298276F, 0.97343236F, 0.9738763F, 0.9743146F, 0.97474724F, 0.97517437F, 0.975596F, 0.9760121F, 0.97642285F, 0.97682816F,
|
||||
0.97722816F, 0.97762287F, 0.9780123F, 0.9783966F, 0.9787757F, 0.97914964F, 0.97951853F, 0.97988236F, 0.98024124F, 0.9805952F,
|
||||
0.98094416F, 0.9812883F, 0.9816277F, 0.98196226F, 0.98229206F, 0.98261726F, 0.98293775F, 0.98325366F, 0.98356503F, 0.9838719F,
|
||||
0.98417425F, 0.9844722F, 0.98476577F, 0.98505497F, 0.98533994F, 0.9856206F, 0.98589706F, 0.98616934F, 0.9864375F, 0.9867016F,
|
||||
0.9869616F, 0.98721766F, 0.9874697F, 0.98771787F, 0.9879621F, 0.9882026F, 0.9884392F, 0.9886721F, 0.98890126F, 0.98912674F,
|
||||
0.98934865F, 0.9895669F, 0.9897816F, 0.98999286F, 0.9902006F, 0.9904049F, 0.99060583F, 0.9908034F, 0.9909977F, 0.9911887F,
|
||||
0.99137646F, 0.991561F, 0.99174243F, 0.9919207F, 0.9920959F, 0.9922681F, 0.99243724F, 0.9926034F, 0.9927667F, 0.9929271F,
|
||||
0.99308455F, 0.9932393F, 0.99339116F, 0.99354035F, 0.9936868F, 0.99383056F, 0.9939717F, 0.9941103F, 0.99424624F, 0.99437964F,
|
||||
0.9945106F, 0.99463904F, 0.9947651F, 0.9948887F, 0.99501F, 0.9951289F, 0.9952456F, 0.99535996F, 0.99547213F, 0.99558204F,
|
||||
0.99568987F, 0.9957955F, 0.995899F, 0.99600047F, 0.9960999F, 0.99619734F, 0.99629277F, 0.99638623F, 0.9964778F, 0.9965674F,
|
||||
0.9966552F, 0.9967412F, 0.99682534F, 0.9969078F, 0.9969884F, 0.99706733F, 0.9971445F, 0.9972201F, 0.997294F, 0.99736637F,
|
||||
0.99743706F, 0.99750626F, 0.9975739F, 0.99764F, 0.9977047F, 0.9977679F, 0.9978297F, 0.99789006F, 0.99794906F, 0.9980067F,
|
||||
0.99806297F, 0.998118F, 0.9981717F, 0.99822414F, 0.99827534F, 0.99832535F, 0.99837416F, 0.9984218F, 0.9984683F, 0.99851364F,
|
||||
0.99855787F, 0.998601F, 0.9986431F, 0.99868417F, 0.99872416F, 0.9987632F, 0.99880123F, 0.9988383F, 0.9988744F, 0.9989096F,
|
||||
0.99894387F, 0.9989773F, 0.9990098F, 0.99904144F, 0.9990723F, 0.9991023F, 0.9991315F, 0.99915993F, 0.9991876F, 0.9992145F,
|
||||
0.99924064F, 0.999266F, 0.99929076F, 0.99931484F, 0.9993382F, 0.9993609F, 0.999383F, 0.99940443F, 0.99942523F, 0.99944544F,
|
||||
0.99946505F, 0.9994841F, 0.9995026F, 0.99952054F, 0.99953794F, 0.9995548F, 0.9995712F, 0.99958706F, 0.99960244F, 0.99961734F,
|
||||
0.9996318F, 0.99964577F, 0.99965936F, 0.9996725F, 0.99968517F, 0.9996975F, 0.99970937F, 0.99972093F, 0.999732F, 0.9997428F,
|
||||
0.99975324F, 0.9997633F, 0.999773F, 0.9997824F, 0.9997915F, 0.99980026F, 0.9998087F, 0.99981683F, 0.99982476F, 0.99983233F,
|
||||
0.99983966F, 0.9998467F, 0.99985355F, 0.9998601F, 0.99986637F, 0.99987245F, 0.99987835F, 0.99988395F, 0.9998894F, 0.99989456F,
|
||||
0.9998996F, 0.9999044F, 0.99990904F, 0.99991345F, 0.99991775F, 0.99992186F, 0.99992573F, 0.99992955F, 0.9999331F, 0.9999366F,
|
||||
0.9999399F, 0.9999431F, 0.9999461F, 0.99994904F, 0.9999518F, 0.99995446F, 0.99995697F, 0.9999594F, 0.99996173F, 0.99996394F,
|
||||
0.999966F, 0.99996805F, 0.99996996F, 0.99997175F, 0.9999735F, 0.99997514F, 0.9999767F, 0.9999782F, 0.9999796F, 0.9999809F,
|
||||
0.9999822F, 0.99998343F, 0.99998456F, 0.99998564F, 0.99998665F, 0.9999876F, 0.9999885F, 0.9999894F, 0.99999017F, 0.99999094F,
|
||||
0.99999166F, 0.9999923F, 0.99999297F, 0.99999356F, 0.9999941F, 0.9999946F, 0.9999951F, 0.9999955F, 0.99999595F, 0.99999636F,
|
||||
0.9999967F, 0.999997F, 0.9999974F, 0.9999977F, 0.9999979F, 0.99999815F, 0.9999984F, 0.99999857F, 0.9999988F, 0.9999989F,
|
||||
0.9999991F, 0.9999992F, 0.9999994F, 0.99999946F, 0.9999996F, 0.9999997F, 0.99999976F, 0.9999998F, 0.9999999F, 0.99999994F };
|
||||
|
||||
public static final float[] KBD_120 = new float[] {
|
||||
4.523201E-5F, 1.2745647E-4F, 2.5293985E-4F, 4.3351404E-4F, 6.827101E-4F, 0.0010158708F, 0.0014502163F, 0.0020048865F, 0.002700962F, 0.003561459F,
|
||||
0.0046113017F, 0.005877263F, 0.0073878774F, 0.009173328F, 0.0112652965F, 0.013696786F, 0.016501913F, 0.019715669F, 0.023373658F, 0.0275118F,
|
||||
0.03216601F, 0.037371866F, 0.043164253F, 0.04957698F, 0.05664239F, 0.06439101F, 0.072851084F, 0.082048275F, 0.09200519F, 0.102741085F,
|
||||
0.114271455F, 0.12660775F, 0.13975702F, 0.15372172F, 0.1684994F, 0.18408258F, 0.20045857F, 0.21760936F, 0.23551162F, 0.25413665F,
|
||||
0.27345052F, 0.29341415F, 0.3139834F, 0.3351095F, 0.35673913F, 0.37881488F, 0.40127558F, 0.42405677F, 0.44709122F, 0.47030926F,
|
||||
0.4936395F, 0.5170094F, 0.54034567F, 0.5635751F, 0.586625F, 0.60942394F, 0.6319022F, 0.65399253F, 0.6756304F, 0.696755F,
|
||||
0.71730924F, 0.7372405F, 0.756501F, 0.77504814F, 0.79284453F, 0.8098587F, 0.8260648F, 0.8414431F, 0.85597974F, 0.86966664F,
|
||||
0.88250166F, 0.8944884F, 0.9056356F, 0.9159574F, 0.9254725F, 0.93420404F, 0.9421792F, 0.94942844F, 0.9559854F, 0.96188605F,
|
||||
0.96716833F, 0.97187155F, 0.97603595F, 0.9797022F, 0.98291075F, 0.98570174F, 0.9881142F, 0.99018586F, 0.99195284F, 0.99344957F,
|
||||
0.9947081F, 0.99575853F, 0.99662834F, 0.9973428F, 0.99792475F, 0.99839455F, 0.9987703F, 0.99906796F, 0.99930143F, 0.9994825F,
|
||||
0.99962145F, 0.9997268F, 0.9998056F, 0.99986386F, 0.9999062F, 0.9999365F, 0.9999579F, 0.9999727F, 0.9999827F, 0.9999894F,
|
||||
0.9999937F, 0.99999636F, 0.999998F, 0.9999989F, 0.99999946F, 0.99999976F, 0.9999999F, 0.99999994F, 1.0F, 1.0F };
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
class MDCT implements MDCTTables {
|
||||
private final int N;
|
||||
|
||||
private final int N2;
|
||||
|
||||
private final int N4;
|
||||
|
||||
private final int N8;
|
||||
|
||||
private final float[][] sincos;
|
||||
|
||||
private final FFT fft;
|
||||
|
||||
private final float[][] buf;
|
||||
|
||||
private final float[] tmp;
|
||||
|
||||
MDCT(int length) throws AACException {
|
||||
this.N = length;
|
||||
this.N2 = length >> 1;
|
||||
this.N4 = length >> 2;
|
||||
this.N8 = length >> 3;
|
||||
switch (length) {
|
||||
case 2048:
|
||||
this.sincos = MDCT_TABLE_2048;
|
||||
break;
|
||||
case 256:
|
||||
this.sincos = MDCT_TABLE_128;
|
||||
break;
|
||||
case 1920:
|
||||
this.sincos = MDCT_TABLE_1920;
|
||||
break;
|
||||
case 240:
|
||||
this.sincos = MDCT_TABLE_240;
|
||||
default:
|
||||
throw new AACException("unsupported MDCT length: " + length);
|
||||
}
|
||||
this.fft = new FFT(this.N4);
|
||||
this.buf = new float[this.N4][2];
|
||||
this.tmp = new float[2];
|
||||
}
|
||||
|
||||
void process(float[] _in, int inOff, float[] out, int outOff) {
|
||||
for (int j = 0; j < this.N4; j++) {
|
||||
this.buf[j][1] = _in[inOff + 2 * j] * this.sincos[j][0] + _in[inOff + this.N2 - 1 - 2 * j] * this.sincos[j][1];
|
||||
this.buf[j][0] = _in[inOff + this.N2 - 1 - 2 * j] * this.sincos[j][0] - _in[inOff + 2 * j] * this.sincos[j][1];
|
||||
}
|
||||
this.fft.process(this.buf, false);
|
||||
for (int i = 0; i < this.N4; i++) {
|
||||
this.tmp[0] = this.buf[i][0];
|
||||
this.tmp[1] = this.buf[i][1];
|
||||
this.buf[i][1] = this.tmp[1] * this.sincos[i][0] + this.tmp[0] * this.sincos[i][1];
|
||||
this.buf[i][0] = this.tmp[0] * this.sincos[i][0] - this.tmp[1] * this.sincos[i][1];
|
||||
}
|
||||
for (int k = 0; k < this.N8; k += 2) {
|
||||
out[outOff + 2 * k] = this.buf[this.N8 + k][1];
|
||||
out[outOff + 2 + 2 * k] = this.buf[this.N8 + 1 + k][1];
|
||||
out[outOff + 1 + 2 * k] = -this.buf[this.N8 - 1 - k][0];
|
||||
out[outOff + 3 + 2 * k] = -this.buf[this.N8 - 2 - k][0];
|
||||
out[outOff + this.N4 + 2 * k] = this.buf[k][0];
|
||||
out[outOff + this.N4 + 2 + 2 * k] = this.buf[1 + k][0];
|
||||
out[outOff + this.N4 + 1 + 2 * k] = -this.buf[this.N4 - 1 - k][1];
|
||||
out[outOff + this.N4 + 3 + 2 * k] = -this.buf[this.N4 - 2 - k][1];
|
||||
out[outOff + this.N2 + 2 * k] = this.buf[this.N8 + k][0];
|
||||
out[outOff + this.N2 + 2 + 2 * k] = this.buf[this.N8 + 1 + k][0];
|
||||
out[outOff + this.N2 + 1 + 2 * k] = -this.buf[this.N8 - 1 - k][1];
|
||||
out[outOff + this.N2 + 3 + 2 * k] = -this.buf[this.N8 - 2 - k][1];
|
||||
out[outOff + this.N2 + this.N4 + 2 * k] = -this.buf[k][1];
|
||||
out[outOff + this.N2 + this.N4 + 2 + 2 * k] = -this.buf[1 + k][1];
|
||||
out[outOff + this.N2 + this.N4 + 1 + 2 * k] = this.buf[this.N4 - 1 - k][0];
|
||||
out[outOff + this.N2 + this.N4 + 3 + 2 * k] = this.buf[this.N4 - 2 - k][0];
|
||||
}
|
||||
}
|
||||
|
||||
void processForward(float[] _in, float[] out) {
|
||||
for (int i = 0; i < this.N8; i++) {
|
||||
int n = i << 1;
|
||||
this.tmp[0] = _in[this.N - this.N4 - 1 - n] + _in[this.N - this.N4 + n];
|
||||
this.tmp[1] = _in[this.N4 + n] - _in[this.N4 - 1 - n];
|
||||
this.buf[i][0] = this.tmp[0] * this.sincos[i][0] + this.tmp[1] * this.sincos[i][1];
|
||||
this.buf[i][1] = this.tmp[1] * this.sincos[i][0] - this.tmp[0] * this.sincos[i][1];
|
||||
this.buf[i][0] = this.buf[i][0] * (float)this.N;
|
||||
this.buf[i][1] = this.buf[i][1] * (float)this.N;
|
||||
this.tmp[0] = _in[this.N2 - 1 - n] - _in[n];
|
||||
this.tmp[1] = _in[this.N2 + n] + _in[this.N - 1 - n];
|
||||
this.buf[i + this.N8][0] = this.tmp[0] * this.sincos[i + this.N8][0] + this.tmp[1] * this.sincos[i + this.N8][1];
|
||||
this.buf[i + this.N8][1] = this.tmp[1] * this.sincos[i + this.N8][0] - this.tmp[0] * this.sincos[i + this.N8][1];
|
||||
this.buf[i + this.N8][0] = this.buf[i + this.N8][0] * (float)this.N;
|
||||
this.buf[i + this.N8][1] = this.buf[i + this.N8][1] * (float)this.N;
|
||||
}
|
||||
this.fft.process(this.buf, true);
|
||||
for (int k = 0; k < this.N4; k++) {
|
||||
int n = k << 1;
|
||||
this.tmp[0] = this.buf[k][0] * this.sincos[k][0] + this.buf[k][1] * this.sincos[k][1];
|
||||
this.tmp[1] = this.buf[k][1] * this.sincos[k][0] - this.buf[k][0] * this.sincos[k][1];
|
||||
out[n] = -this.tmp[0];
|
||||
out[this.N2 - 1 - n] = this.tmp[1];
|
||||
out[this.N2 + n] = -this.tmp[1];
|
||||
out[this.N - 1 - n] = this.tmp[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
interface MDCTTables {
|
||||
public static final float[][] MDCT_TABLE_2048 = new float[][] {
|
||||
new float[] { 0.031249998F, 1.1984224E-5F }, new float[] { 0.031249814F, 1.0785781E-4F }, new float[] { 0.031249335F, 2.0373038E-4F }, new float[] { 0.031248564F, 2.9960103E-4F }, new float[] { 0.031247498F, 3.9546887E-4F }, new float[] { 0.031246137F, 4.9133296E-4F }, new float[] { 0.031244483F, 5.871925E-4F }, new float[] { 0.031242535F, 6.830464E-4F }, new float[] { 0.031240292F, 7.7889394E-4F }, new float[] { 0.031237755F, 8.7473413E-4F },
|
||||
new float[] { 0.031234924F, 9.705661E-4F }, new float[] { 0.0312318F, 0.0010663889F }, new float[] { 0.03122838F, 0.0011622017F }, new float[] { 0.031224668F, 0.0012580036F }, new float[] { 0.031220661F, 0.0013537935F }, new float[] { 0.031216362F, 0.0014495709F }, new float[] { 0.031211767F, 0.0015453345F }, new float[] { 0.03120688F, 0.0016410836F }, new float[] { 0.031201698F, 0.0017368172F }, new float[] { 0.031196224F, 0.0018325346F },
|
||||
new float[] { 0.031190453F, 0.0019282346F }, new float[] { 0.031184392F, 0.0020239165F }, new float[] { 0.031178035F, 0.0021195794F }, new float[] { 0.031171385F, 0.0022152222F }, new float[] { 0.031164443F, 0.0023108441F }, new float[] { 0.031157207F, 0.0024064444F }, new float[] { 0.031149678F, 0.002502022F }, new float[] { 0.031141855F, 0.0025975762F }, new float[] { 0.03113374F, 0.002693106F }, new float[] { 0.03112533F, 0.00278861F },
|
||||
new float[] { 0.031116627F, 0.002884088F }, new float[] { 0.031107632F, 0.002979539F }, new float[] { 0.031098345F, 0.003074962F }, new float[] { 0.031088766F, 0.003170356F }, new float[] { 0.031078892F, 0.0032657199F }, new float[] { 0.031068727F, 0.0033610533F }, new float[] { 0.03105827F, 0.0034563548F }, new float[] { 0.03104752F, 0.003551624F }, new float[] { 0.031036478F, 0.00364686F }, new float[] { 0.031025143F, 0.0037420613F },
|
||||
new float[] { 0.031013517F, 0.0038372274F }, new float[] { 0.031001598F, 0.0039323573F }, new float[] { 0.030989388F, 0.0040274505F }, new float[] { 0.030976886F, 0.004122506F }, new float[] { 0.030964091F, 0.004217522F }, new float[] { 0.030951008F, 0.0043124985F }, new float[] { 0.03093763F, 0.0044074347F }, new float[] { 0.030923964F, 0.0045023295F }, new float[] { 0.030910006F, 0.0045971815F }, new float[] { 0.030895757F, 0.0046919906F },
|
||||
new float[] { 0.030881215F, 0.004786755F }, new float[] { 0.030866385F, 0.004881475F }, new float[] { 0.030851264F, 0.0049761487F }, new float[] { 0.030835852F, 0.0050707757F }, new float[] { 0.03082015F, 0.005165355F }, new float[] { 0.030804157F, 0.0052598855F }, new float[] { 0.030787876F, 0.0053543663F }, new float[] { 0.030771304F, 0.0054487973F }, new float[] { 0.030754441F, 0.0055431766F }, new float[] { 0.03073729F, 0.0056375037F },
|
||||
new float[] { 0.03071985F, 0.0057317778F }, new float[] { 0.030702122F, 0.0058259983F }, new float[] { 0.030684102F, 0.0059201634F }, new float[] { 0.030665796F, 0.006014273F }, new float[] { 0.0306472F, 0.006108326F }, new float[] { 0.030628316F, 0.0062023215F }, new float[] { 0.030609142F, 0.006296259F }, new float[] { 0.030589683F, 0.0063901367F }, new float[] { 0.030569933F, 0.0064839544F }, new float[] { 0.030549897F, 0.006577711F },
|
||||
new float[] { 0.030529574F, 0.006671406F }, new float[] { 0.030508962F, 0.006765038F }, new float[] { 0.030488063F, 0.0068586064F }, new float[] { 0.030466879F, 0.00695211F }, new float[] { 0.030445406F, 0.0070455484F }, new float[] { 0.030423647F, 0.0071389205F }, new float[] { 0.030401602F, 0.0072322255F }, new float[] { 0.030379271F, 0.007325462F }, new float[] { 0.030356653F, 0.0074186297F }, new float[] { 0.030333752F, 0.007511728F },
|
||||
new float[] { 0.030310562F, 0.007604755F }, new float[] { 0.030287089F, 0.007697711F }, new float[] { 0.03026333F, 0.007790594F }, new float[] { 0.030239286F, 0.007883404F }, new float[] { 0.030214958F, 0.00797614F }, new float[] { 0.030190345F, 0.0080688F }, new float[] { 0.030165449F, 0.008161386F }, new float[] { 0.030140268F, 0.008253893F }, new float[] { 0.030114803F, 0.008346323F }, new float[] { 0.030089056F, 0.008438675F },
|
||||
new float[] { 0.030063024F, 0.008530947F }, new float[] { 0.03003671F, 0.008623139F }, new float[] { 0.030010113F, 0.00871525F }, new float[] { 0.029983234F, 0.008807278F }, new float[] { 0.029956073F, 0.008899224F }, new float[] { 0.02992863F, 0.008991086F }, new float[] { 0.029900905F, 0.009082864F }, new float[] { 0.029872898F, 0.009174556F }, new float[] { 0.02984461F, 0.009266161F }, new float[] { 0.02981604F, 0.00935768F },
|
||||
new float[] { 0.029787192F, 0.009449109F }, new float[] { 0.029758062F, 0.009540451F }, new float[] { 0.029728653F, 0.009631703F }, new float[] { 0.029698964F, 0.009722863F }, new float[] { 0.029668994F, 0.009813933F }, new float[] { 0.029638747F, 0.00990491F }, new float[] { 0.029608218F, 0.009995794F }, new float[] { 0.029577412F, 0.010086584F }, new float[] { 0.029546328F, 0.010177278F }, new float[] { 0.029514967F, 0.010267877F },
|
||||
new float[] { 0.029483326F, 0.010358379F }, new float[] { 0.029451407F, 0.010448785F }, new float[] { 0.029419212F, 0.010539091F }, new float[] { 0.02938674F, 0.010629298F }, new float[] { 0.029353991F, 0.0107194055F }, new float[] { 0.029320966F, 0.010809411F }, new float[] { 0.029287666F, 0.0108993165F }, new float[] { 0.02925409F, 0.010989118F }, new float[] { 0.029220238F, 0.011078817F }, new float[] { 0.029186111F, 0.011168411F },
|
||||
new float[] { 0.02915171F, 0.0112579F }, new float[] { 0.029117033F, 0.011347284F }, new float[] { 0.029082084F, 0.01143656F }, new float[] { 0.02904686F, 0.011525729F }, new float[] { 0.029011363F, 0.011614789F }, new float[] { 0.028975593F, 0.01170374F }, new float[] { 0.028939549F, 0.011792581F }, new float[] { 0.028903235F, 0.0118813105F }, new float[] { 0.028866647F, 0.011969929F }, new float[] { 0.028829789F, 0.012058434F },
|
||||
new float[] { 0.028792657F, 0.012146826F }, new float[] { 0.028755257F, 0.012235103F }, new float[] { 0.028717585F, 0.012323265F }, new float[] { 0.028679641F, 0.012411311F }, new float[] { 0.028641429F, 0.012499241F }, new float[] { 0.028602947F, 0.012587053F }, new float[] { 0.028564196F, 0.012674746F }, new float[] { 0.028525176F, 0.01276232F }, new float[] { 0.028485889F, 0.012849774F }, new float[] { 0.028446332F, 0.012937107F },
|
||||
new float[] { 0.028406506F, 0.013024318F }, new float[] { 0.028366415F, 0.013111407F }, new float[] { 0.028326057F, 0.013198372F }, new float[] { 0.02828543F, 0.013285213F }, new float[] { 0.02824454F, 0.0133719295F }, new float[] { 0.028203381F, 0.013458519F }, new float[] { 0.02816196F, 0.013544983F }, new float[] { 0.028120272F, 0.013631319F }, new float[] { 0.028078318F, 0.013717527F }, new float[] { 0.0280361F, 0.013803605F },
|
||||
new float[] { 0.027993621F, 0.013889553F }, new float[] { 0.027950877F, 0.013975372F }, new float[] { 0.027907869F, 0.014061058F }, new float[] { 0.0278646F, 0.014146612F }, new float[] { 0.027821066F, 0.014232032F }, new float[] { 0.027777273F, 0.014317319F }, new float[] { 0.027733216F, 0.0144024715F }, new float[] { 0.0276889F, 0.014487488F }, new float[] { 0.027644323F, 0.014572368F }, new float[] { 0.027599486F, 0.014657111F },
|
||||
new float[] { 0.02755439F, 0.014741716F }, new float[] { 0.027509032F, 0.014826182F }, new float[] { 0.027463416F, 0.014910509F }, new float[] { 0.027417542F, 0.014994696F }, new float[] { 0.02737141F, 0.015078741F }, new float[] { 0.02732502F, 0.015162644F }, new float[] { 0.027278373F, 0.015246404F }, new float[] { 0.02723147F, 0.015330022F }, new float[] { 0.02718431F, 0.015413495F }, new float[] { 0.027136894F, 0.015496822F },
|
||||
new float[] { 0.027089221F, 0.015580004F }, new float[] { 0.027041296F, 0.015663039F }, new float[] { 0.026993115F, 0.015745927F }, new float[] { 0.02694468F, 0.015828667F }, new float[] { 0.026895992F, 0.015911257F }, new float[] { 0.02684705F, 0.015993698F }, new float[] { 0.026797855F, 0.01607599F }, new float[] { 0.02674841F, 0.016158128F }, new float[] { 0.02669871F, 0.016240114F }, new float[] { 0.026648762F, 0.01632195F },
|
||||
new float[] { 0.026598562F, 0.016403629F }, new float[] { 0.02654811F, 0.016485155F }, new float[] { 0.026497409F, 0.016566526F }, new float[] { 0.02644646F, 0.016647741F }, new float[] { 0.026395261F, 0.0167288F }, new float[] { 0.026343813F, 0.0168097F }, new float[] { 0.026292117F, 0.016890442F }, new float[] { 0.026240176F, 0.016971026F }, new float[] { 0.026187984F, 0.01705145F }, new float[] { 0.026135549F, 0.017131714F },
|
||||
new float[] { 0.026082866F, 0.017211815F }, new float[] { 0.026029939F, 0.017291756F }, new float[] { 0.025976766F, 0.017371533F }, new float[] { 0.025923347F, 0.017451147F }, new float[] { 0.025869686F, 0.017530596F }, new float[] { 0.025815781F, 0.017609881F }, new float[] { 0.025761634F, 0.017688999F }, new float[] { 0.025707243F, 0.017767953F }, new float[] { 0.025652612F, 0.017846737F }, new float[] { 0.025597738F, 0.017925354F },
|
||||
new float[] { 0.025542622F, 0.018003803F }, new float[] { 0.025487268F, 0.018082082F }, new float[] { 0.025431672F, 0.01816019F }, new float[] { 0.02537584F, 0.01823813F }, new float[] { 0.025319764F, 0.018315895F }, new float[] { 0.025263453F, 0.018393489F }, new float[] { 0.025206905F, 0.01847091F }, new float[] { 0.025150118F, 0.018548155F }, new float[] { 0.025093095F, 0.018625228F }, new float[] { 0.025035836F, 0.018702125F },
|
||||
new float[] { 0.02497834F, 0.018778846F }, new float[] { 0.024920609F, 0.01885539F }, new float[] { 0.024862645F, 0.018931756F }, new float[] { 0.024804447F, 0.019007945F }, new float[] { 0.024746014F, 0.019083954F }, new float[] { 0.024687348F, 0.019159785F }, new float[] { 0.024628451F, 0.019235434F }, new float[] { 0.024569321F, 0.019310903F }, new float[] { 0.02450996F, 0.019386189F }, new float[] { 0.02445037F, 0.019461293F },
|
||||
new float[] { 0.024390548F, 0.019536214F }, new float[] { 0.024330497F, 0.01961095F }, new float[] { 0.024270218F, 0.019685503F }, new float[] { 0.024209708F, 0.019759871F }, new float[] { 0.024148973F, 0.019834053F }, new float[] { 0.024088008F, 0.019908046F }, new float[] { 0.024026819F, 0.019981854F }, new float[] { 0.023965402F, 0.020055473F }, new float[] { 0.02390376F, 0.020128904F }, new float[] { 0.023841891F, 0.020202145F },
|
||||
new float[] { 0.0237798F, 0.020275196F }, new float[] { 0.023717485F, 0.020348055F }, new float[] { 0.023654947F, 0.020420725F }, new float[] { 0.023592185F, 0.0204932F }, new float[] { 0.023529202F, 0.020565484F }, new float[] { 0.023465998F, 0.020637574F }, new float[] { 0.023402572F, 0.02070947F }, new float[] { 0.023338927F, 0.02078117F }, new float[] { 0.02327506F, 0.020852676F }, new float[] { 0.023210976F, 0.020923983F },
|
||||
new float[] { 0.023146672F, 0.020995095F }, new float[] { 0.023082152F, 0.02106601F }, new float[] { 0.023017414F, 0.021136725F }, new float[] { 0.022952458F, 0.021207243F }, new float[] { 0.022887288F, 0.02127756F }, new float[] { 0.022821901F, 0.021347677F }, new float[] { 0.0227563F, 0.021417594F }, new float[] { 0.022690484F, 0.021487307F }, new float[] { 0.022624455F, 0.02155682F }, new float[] { 0.022558214F, 0.02162613F },
|
||||
new float[] { 0.02249176F, 0.021695236F }, new float[] { 0.022425095F, 0.021764137F }, new float[] { 0.022358216F, 0.021832833F }, new float[] { 0.02229113F, 0.021901324F }, new float[] { 0.022223832F, 0.02196961F }, new float[] { 0.022156326F, 0.022037689F }, new float[] { 0.022088611F, 0.02210556F }, new float[] { 0.022020688F, 0.022173222F }, new float[] { 0.021952558F, 0.022240676F }, new float[] { 0.021884222F, 0.022307921F },
|
||||
new float[] { 0.021815678F, 0.022374956F }, new float[] { 0.02174693F, 0.02244178F }, new float[] { 0.021677978F, 0.022508394F }, new float[] { 0.02160882F, 0.022574795F }, new float[] { 0.02153946F, 0.022640983F }, new float[] { 0.021469899F, 0.02270696F }, new float[] { 0.021400133F, 0.02277272F }, new float[] { 0.021330167F, 0.022838268F }, new float[] { 0.021259999F, 0.0229036F }, new float[] { 0.021189632F, 0.022968717F },
|
||||
new float[] { 0.021119066F, 0.023033619F }, new float[] { 0.0210483F, 0.023098303F }, new float[] { 0.020977337F, 0.02316277F }, new float[] { 0.020906175F, 0.023227017F }, new float[] { 0.020834817F, 0.023291048F }, new float[] { 0.020763263F, 0.023354858F }, new float[] { 0.020691514F, 0.023418449F }, new float[] { 0.02061957F, 0.02348182F }, new float[] { 0.020547431F, 0.023544969F }, new float[] { 0.020475099F, 0.023607897F },
|
||||
new float[] { 0.020402575F, 0.023670603F }, new float[] { 0.02032986F, 0.023733085F }, new float[] { 0.020256951F, 0.023795344F }, new float[] { 0.020183852F, 0.02385738F }, new float[] { 0.020110564F, 0.023919191F }, new float[] { 0.020037087F, 0.023980778F }, new float[] { 0.01996342F, 0.024042137F }, new float[] { 0.019889567F, 0.02410327F }, new float[] { 0.019815525F, 0.024164177F }, new float[] { 0.019741297F, 0.024224857F },
|
||||
new float[] { 0.019666882F, 0.024285309F }, new float[] { 0.019592285F, 0.024345532F }, new float[] { 0.019517502F, 0.024405524F }, new float[] { 0.019442534F, 0.024465289F }, new float[] { 0.019367384F, 0.024524823F }, new float[] { 0.019292051F, 0.024584126F }, new float[] { 0.019216537F, 0.024643198F }, new float[] { 0.019140843F, 0.024702037F }, new float[] { 0.019064968F, 0.024760643F }, new float[] { 0.018988915F, 0.024819018F },
|
||||
new float[] { 0.01891268F, 0.024877159F }, new float[] { 0.018836271F, 0.024935065F }, new float[] { 0.01875968F, 0.024992736F }, new float[] { 0.018682918F, 0.025050173F }, new float[] { 0.018605975F, 0.025107373F }, new float[] { 0.01852886F, 0.025164336F }, new float[] { 0.01845157F, 0.025221065F }, new float[] { 0.018374106F, 0.025277553F }, new float[] { 0.018296469F, 0.025333805F }, new float[] { 0.01821866F, 0.02538982F },
|
||||
new float[] { 0.01814068F, 0.025445594F }, new float[] { 0.018062528F, 0.025501128F }, new float[] { 0.017984206F, 0.025556425F }, new float[] { 0.017905716F, 0.025611479F }, new float[] { 0.017827056F, 0.025666293F }, new float[] { 0.01774823F, 0.025720865F }, new float[] { 0.017669236F, 0.025775194F }, new float[] { 0.017590076F, 0.025829282F }, new float[] { 0.01751075F, 0.025883125F }, new float[] { 0.01743126F, 0.025936725F },
|
||||
new float[] { 0.017351603F, 0.025990082F }, new float[] { 0.017271785F, 0.026043193F }, new float[] { 0.017191805F, 0.026096059F }, new float[] { 0.017111663F, 0.02614868F }, new float[] { 0.017031359F, 0.026201056F }, new float[] { 0.016950896F, 0.026253184F }, new float[] { 0.016870271F, 0.026305065F }, new float[] { 0.01678949F, 0.026356699F }, new float[] { 0.01670855F, 0.026408084F }, new float[] { 0.016627451F, 0.02645922F },
|
||||
new float[] { 0.016546197F, 0.026510108F }, new float[] { 0.016464788F, 0.026560746F }, new float[] { 0.016383223F, 0.026611134F }, new float[] { 0.016301505F, 0.026661273F }, new float[] { 0.016219633F, 0.026711158F }, new float[] { 0.016137607F, 0.026760794F }, new float[] { 0.016055431F, 0.026810179F }, new float[] { 0.015973102F, 0.02685931F }, new float[] { 0.015890624F, 0.026908187F }, new float[] { 0.015807996F, 0.026956813F },
|
||||
new float[] { 0.01572522F, 0.027005184F }, new float[] { 0.015642295F, 0.027053302F }, new float[] { 0.015559223F, 0.027101165F }, new float[] { 0.015476004F, 0.027148772F }, new float[] { 0.01539264F, 0.027196124F }, new float[] { 0.015309131F, 0.02724322F }, new float[] { 0.015225478F, 0.02729006F }, new float[] { 0.015141682F, 0.027336642F }, new float[] { 0.015057743F, 0.027382966F }, new float[] { 0.014973662F, 0.027429035F },
|
||||
new float[] { 0.0148894405F, 0.027474845F }, new float[] { 0.0148050785F, 0.027520396F }, new float[] { 0.014720578F, 0.027565686F }, new float[] { 0.014635938F, 0.02761072F }, new float[] { 0.014551161F, 0.027655492F }, new float[] { 0.014466247F, 0.027700003F }, new float[] { 0.014381196F, 0.027744256F }, new float[] { 0.01429601F, 0.027788246F }, new float[] { 0.01421069F, 0.027831974F }, new float[] { 0.014125235F, 0.027875442F },
|
||||
new float[] { 0.014039649F, 0.027918646F }, new float[] { 0.013953929F, 0.027961588F }, new float[] { 0.013868079F, 0.028004266F }, new float[] { 0.013782097F, 0.02804668F }, new float[] { 0.013695987F, 0.028088832F }, new float[] { 0.0136097465F, 0.028130718F }, new float[] { 0.013523379F, 0.02817234F }, new float[] { 0.013436884F, 0.028213697F }, new float[] { 0.013350262F, 0.028254787F }, new float[] { 0.013263515F, 0.028295612F },
|
||||
new float[] { 0.013176642F, 0.028336171F }, new float[] { 0.013089647F, 0.028376464F }, new float[] { 0.013002527F, 0.028416488F }, new float[] { 0.012915285F, 0.028456245F }, new float[] { 0.012827922F, 0.028495735F }, new float[] { 0.012740438F, 0.028534956F }, new float[] { 0.012652834F, 0.02857391F }, new float[] { 0.012565111F, 0.028612593F }, new float[] { 0.012477269F, 0.028651008F }, new float[] { 0.012389311F, 0.028689153F },
|
||||
new float[] { 0.012301235F, 0.028727027F }, new float[] { 0.012213044F, 0.028764632F }, new float[] { 0.012124738F, 0.028801966F }, new float[] { 0.012036318F, 0.028839028F }, new float[] { 0.011947785F, 0.02887582F }, new float[] { 0.0118591385F, 0.02891234F }, new float[] { 0.011770381F, 0.028948586F }, new float[] { 0.011681512F, 0.028984562F }, new float[] { 0.011592534F, 0.029020263F }, new float[] { 0.011503447F, 0.029055692F },
|
||||
new float[] { 0.01141425F, 0.029090848F }, new float[] { 0.011324948F, 0.029125728F }, new float[] { 0.011235538F, 0.029160336F }, new float[] { 0.011146022F, 0.029194668F }, new float[] { 0.011056402F, 0.029228726F }, new float[] { 0.010966677F, 0.02926251F }, new float[] { 0.010876849F, 0.029296018F }, new float[] { 0.01078692F, 0.02932925F }, new float[] { 0.010696888F, 0.029362205F }, new float[] { 0.0106067555F, 0.029394884F },
|
||||
new float[] { 0.010516523F, 0.029427288F }, new float[] { 0.010426193F, 0.029459413F }, new float[] { 0.010335763F, 0.02949126F }, new float[] { 0.010245237F, 0.029522832F }, new float[] { 0.010154613F, 0.029554125F }, new float[] { 0.010063895F, 0.02958514F }, new float[] { 0.009973082F, 0.029615877F }, new float[] { 0.009882174F, 0.029646333F }, new float[] { 0.009791174F, 0.029676512F }, new float[] { 0.009700082F, 0.029706411F },
|
||||
new float[] { 0.009608898F, 0.02973603F }, new float[] { 0.009517624F, 0.029765371F }, new float[] { 0.00942626F, 0.02979443F }, new float[] { 0.009334808F, 0.02982321F }, new float[] { 0.009243268F, 0.029851709F }, new float[] { 0.00915164F, 0.029879926F }, new float[] { 0.009059927F, 0.029907862F }, new float[] { 0.008968129F, 0.029935516F }, new float[] { 0.0088762455F, 0.02996289F }, new float[] { 0.008784279F, 0.02998998F },
|
||||
new float[] { 0.00869223F, 0.03001679F }, new float[] { 0.008600098F, 0.030043315F }, new float[] { 0.008507887F, 0.030069558F }, new float[] { 0.008415595F, 0.03009552F }, new float[] { 0.008323223F, 0.030121196F }, new float[] { 0.008230773F, 0.03014659F }, new float[] { 0.008138246F, 0.0301717F }, new float[] { 0.008045643F, 0.030196525F }, new float[] { 0.007952963F, 0.030221067F }, new float[] { 0.007860209F, 0.030245325F },
|
||||
new float[] { 0.00776738F, 0.030269297F }, new float[] { 0.0076744785F, 0.030292984F }, new float[] { 0.007581505F, 0.030316386F }, new float[] { 0.00748846F, 0.030339504F }, new float[] { 0.0073953443F, 0.030362334F }, new float[] { 0.0073021594F, 0.030384881F }, new float[] { 0.0072089056F, 0.03040714F }, new float[] { 0.007115584F, 0.030429114F }, new float[] { 0.007022195F, 0.0304508F }, new float[] { 0.00692874F, 0.030472202F },
|
||||
new float[] { 0.0068352204F, 0.030493315F }, new float[] { 0.006741636F, 0.030514142F }, new float[] { 0.006647988F, 0.030534681F }, new float[] { 0.0065542776F, 0.030554933F }, new float[] { 0.0064605055F, 0.030574897F }, new float[] { 0.006366673F, 0.030594574F }, new float[] { 0.00627278F, 0.030613963F }, new float[] { 0.006178828F, 0.030633064F }, new float[] { 0.0060848184F, 0.030651875F }, new float[] { 0.005990751F, 0.030670399F },
|
||||
new float[] { 0.0058966274F, 0.030688634F }, new float[] { 0.005802448F, 0.03070658F }, new float[] { 0.0057082144F, 0.030724239F }, new float[] { 0.005613927F, 0.030741606F }, new float[] { 0.0055195866F, 0.030758685F }, new float[] { 0.0054251943F, 0.030775474F }, new float[] { 0.0053307507F, 0.030791974F }, new float[] { 0.0052362573F, 0.030808182F }, new float[] { 0.0051417146F, 0.030824102F }, new float[] { 0.0050471234F, 0.030839732F },
|
||||
new float[] { 0.0049524847F, 0.03085507F }, new float[] { 0.004857799F, 0.03087012F }, new float[] { 0.004763068F, 0.030884879F }, new float[] { 0.004668292F, 0.030899346F }, new float[] { 0.0045734723F, 0.030913522F }, new float[] { 0.0044786097F, 0.030927408F }, new float[] { 0.0043837046F, 0.030941002F }, new float[] { 0.004288758F, 0.030954305F }, new float[] { 0.0041937716F, 0.030967318F }, new float[] { 0.0040987455F, 0.03098004F },
|
||||
new float[] { 0.004003681F, 0.030992467F }, new float[] { 0.0039085783F, 0.031004604F }, new float[] { 0.0038134393F, 0.03101645F }, new float[] { 0.0037182642F, 0.031028004F }, new float[] { 0.0036230541F, 0.031039266F }, new float[] { 0.0035278099F, 0.031050235F }, new float[] { 0.0034325325F, 0.031060912F }, new float[] { 0.0033372228F, 0.031071296F }, new float[] { 0.0032418817F, 0.031081388F }, new float[] { 0.00314651F, 0.031091187F },
|
||||
new float[] { 0.003051109F, 0.031100696F }, new float[] { 0.0029556789F, 0.031109909F }, new float[] { 0.002860221F, 0.03111883F }, new float[] { 0.0027647365F, 0.03112746F }, new float[] { 0.0026692257F, 0.031135796F }, new float[] { 0.00257369F, 0.031143837F }, new float[] { 0.00247813F, 0.031151587F }, new float[] { 0.0023825464F, 0.031159043F }, new float[] { 0.0022869406F, 0.031166205F }, new float[] { 0.0021913133F, 0.031173076F },
|
||||
new float[] { 0.0020956653F, 0.031179652F }, new float[] { 0.0019999978F, 0.031185934F }, new float[] { 0.0019043112F, 0.031191923F }, new float[] { 0.0018086068F, 0.031197619F }, new float[] { 0.0017128853F, 0.03120302F }, new float[] { 0.0016171477F, 0.03120813F }, new float[] { 0.0015213949F, 0.031212945F }, new float[] { 0.0014256279F, 0.031217465F }, new float[] { 0.0013298473F, 0.031221692F }, new float[] { 0.0012340542F, 0.031225624F },
|
||||
new float[] { 0.0011382495F, 0.031229263F }, new float[] { 0.0010424341F, 0.031232608F }, new float[] { 9.4660895E-4F, 0.03123566F }, new float[] { 8.507748E-4F, 0.031238416F }, new float[] { 7.549327E-4F, 0.03124088F }, new float[] { 6.590835E-4F, 0.031243049F }, new float[] { 5.632281E-4F, 0.031244924F }, new float[] { 4.6736735E-4F, 0.031246506F }, new float[] { 3.7150222E-4F, 0.03124779F }, new float[] { 2.756336E-4F, 0.031248784F },
|
||||
new float[] { 1.7976238E-4F, 0.031249482F }, new float[] { 8.388947E-5F, 0.031249888F } };
|
||||
|
||||
public static final float[][] MDCT_TABLE_128 = new float[][] {
|
||||
new float[] { 0.08838793F, 2.7117162E-4F }, new float[] { 0.088354655F, 0.0024402384F }, new float[] { 0.08826816F, 0.0046078353F }, new float[] { 0.08812849F, 0.0067726565F }, new float[] { 0.08793574F, 0.008933398F }, new float[] { 0.08769002F, 0.011088759F }, new float[] { 0.08739147F, 0.01323744F }, new float[] { 0.08704029F, 0.015378147F }, new float[] { 0.08663668F, 0.01750959F }, new float[] { 0.08618088F, 0.019630488F },
|
||||
new float[] { 0.08567317F, 0.021739561F }, new float[] { 0.085113846F, 0.023835538F }, new float[] { 0.08450326F, 0.025917158F }, new float[] { 0.08384177F, 0.027983164F }, new float[] { 0.08312978F, 0.030032318F }, new float[] { 0.08236771F, 0.03206338F }, new float[] { 0.08155603F, 0.034075126F }, new float[] { 0.08069522F, 0.03606635F }, new float[] { 0.0797858F, 0.038035847F }, new float[] { 0.07882833F, 0.039982434F },
|
||||
new float[] { 0.07782337F, 0.041904934F }, new float[] { 0.07677153F, 0.043802194F }, new float[] { 0.075673446F, 0.04567307F }, new float[] { 0.07452978F, 0.04751643F }, new float[] { 0.07334123F, 0.049331173F }, new float[] { 0.072108485F, 0.051116202F }, new float[] { 0.07083231F, 0.052870438F }, new float[] { 0.06951348F, 0.054592825F }, new float[] { 0.06815276F, 0.05628233F }, new float[] { 0.066751F, 0.05793793F },
|
||||
new float[] { 0.06530903F, 0.059558634F }, new float[] { 0.063827716F, 0.061143458F }, new float[] { 0.062307958F, 0.06269145F }, new float[] { 0.060750667F, 0.06420168F }, new float[] { 0.059156783F, 0.06567325F }, new float[] { 0.057527263F, 0.06710525F }, new float[] { 0.055863094F, 0.06849682F }, new float[] { 0.05416527F, 0.069847144F }, new float[] { 0.05243482F, 0.07115539F }, new float[] { 0.05067279F, 0.072420776F },
|
||||
new float[] { 0.048880234F, 0.07364254F }, new float[] { 0.047058232F, 0.07481994F }, new float[] { 0.045207888F, 0.07595227F }, new float[] { 0.043330308F, 0.07703885F }, new float[] { 0.04142663F, 0.07807902F }, new float[] { 0.039497998F, 0.07907217F }, new float[] { 0.037545573F, 0.080017686F }, new float[] { 0.035570532F, 0.080915F }, new float[] { 0.033574067F, 0.08176357F }, new float[] { 0.031557377F, 0.08256289F },
|
||||
new float[] { 0.029521678F, 0.08331249F }, new float[] { 0.027468195F, 0.08401189F }, new float[] { 0.025398167F, 0.084660694F }, new float[] { 0.02331284F, 0.0852585F }, new float[] { 0.02121347F, 0.08580495F }, new float[] { 0.019101324F, 0.08629971F }, new float[] { 0.01697767F, 0.08674248F }, new float[] { 0.014843788F, 0.08713301F }, new float[] { 0.012700967F, 0.08747105F }, new float[] { 0.010550494F, 0.08775641F },
|
||||
new float[] { 0.008393667F, 0.0879889F }, new float[] { 0.006231783F, 0.08816839F }, new float[] { 0.004066145F, 0.08829477F }, new float[] { 0.0018980585F, 0.08836797F } };
|
||||
|
||||
public static final float[][] MDCT_TABLE_1920 = new float[][] {
|
||||
new float[] { 0.032274857F, 1.3202404E-5F }, new float[] { 0.03227464F, 1.1882137E-4F }, new float[] { 0.032274082F, 2.2443906E-4F }, new float[] { 0.032273173F, 3.3005435E-4F }, new float[] { 0.03227192F, 4.3566612E-4F }, new float[] { 0.032270323F, 5.412732E-4F }, new float[] { 0.03226838F, 6.468745E-4F }, new float[] { 0.032266088F, 7.524689E-4F }, new float[] { 0.032263454F, 8.580552E-4F }, new float[] { 0.032260474F, 9.636323E-4F },
|
||||
new float[] { 0.032257147F, 0.0010691991F }, new float[] { 0.032253474F, 0.0011747545F }, new float[] { 0.032249458F, 0.0012802972F }, new float[] { 0.032245096F, 0.0013858263F }, new float[] { 0.032240387F, 0.0014913405F }, new float[] { 0.032235336F, 0.0015968387F }, new float[] { 0.032229938F, 0.00170232F }, new float[] { 0.032224193F, 0.0018077828F }, new float[] { 0.032218102F, 0.0019132263F }, new float[] { 0.03221167F, 0.0020186494F },
|
||||
new float[] { 0.032204892F, 0.0021240509F }, new float[] { 0.03219777F, 0.0022294295F }, new float[] { 0.0321903F, 0.0023347845F }, new float[] { 0.03218249F, 0.0024401143F }, new float[] { 0.03217433F, 0.002545418F }, new float[] { 0.03216583F, 0.0026506945F }, new float[] { 0.03215698F, 0.0027559423F }, new float[] { 0.03214779F, 0.002861161F }, new float[] { 0.032138254F, 0.0029663488F }, new float[] { 0.032128375F, 0.0030715049F },
|
||||
new float[] { 0.032118153F, 0.0031766281F }, new float[] { 0.032107584F, 0.0032817174F }, new float[] { 0.032096673F, 0.0033867715F }, new float[] { 0.03208542F, 0.0034917893F }, new float[] { 0.03207382F, 0.0035967696F }, new float[] { 0.03206188F, 0.0037017115F }, new float[] { 0.032049593F, 0.0038066139F }, new float[] { 0.032036964F, 0.003911475F }, new float[] { 0.032023992F, 0.0040162946F }, new float[] { 0.03201068F, 0.004121071F },
|
||||
new float[] { 0.031997018F, 0.004225804F }, new float[] { 0.031983018F, 0.004330491F }, new float[] { 0.031968676F, 0.004435132F }, new float[] { 0.03195399F, 0.0045397254F }, new float[] { 0.031938963F, 0.00464427F }, new float[] { 0.031923596F, 0.004748765F }, new float[] { 0.031907883F, 0.004853209F }, new float[] { 0.03189183F, 0.004957601F }, new float[] { 0.031875435F, 0.0050619403F }, new float[] { 0.0318587F, 0.005166225F },
|
||||
new float[] { 0.031841625F, 0.0052704546F }, new float[] { 0.031824205F, 0.0053746277F }, new float[] { 0.031806447F, 0.005478743F }, new float[] { 0.031788345F, 0.0055827997F }, new float[] { 0.03176991F, 0.0056867967F }, new float[] { 0.031751126F, 0.005790733F }, new float[] { 0.031732008F, 0.005894607F }, new float[] { 0.031712547F, 0.005998418F }, new float[] { 0.031692747F, 0.0061021647F }, new float[] { 0.031672608F, 0.006205846F },
|
||||
new float[] { 0.03165213F, 0.0063094613F }, new float[] { 0.031631313F, 0.0064130086F }, new float[] { 0.031610157F, 0.0065164873F }, new float[] { 0.031588662F, 0.0066198963F }, new float[] { 0.031566832F, 0.0067232344F }, new float[] { 0.03154466F, 0.0068265004F }, new float[] { 0.03152215F, 0.0069296933F }, new float[] { 0.031499304F, 0.007032812F }, new float[] { 0.03147612F, 0.0071358555F }, new float[] { 0.0314526F, 0.0072388225F },
|
||||
new float[] { 0.031428743F, 0.007341712F }, new float[] { 0.03140455F, 0.007444523F }, new float[] { 0.03138002F, 0.0075472537F }, new float[] { 0.031355154F, 0.007649904F }, new float[] { 0.031329952F, 0.0077524725F }, new float[] { 0.031304415F, 0.007854958F }, new float[] { 0.03127854F, 0.007957359F }, new float[] { 0.031252332F, 0.008059675F }, new float[] { 0.031225791F, 0.008161904F }, new float[] { 0.031198913F, 0.008264047F },
|
||||
new float[] { 0.031171702F, 0.0083661005F }, new float[] { 0.031144157F, 0.0084680645F }, new float[] { 0.031116279F, 0.008569938F }, new float[] { 0.031088067F, 0.00867172F }, new float[] { 0.031059522F, 0.008773409F }, new float[] { 0.031030646F, 0.008875004F }, new float[] { 0.031001436F, 0.008976503F }, new float[] { 0.030971894F, 0.009077908F }, new float[] { 0.030942021F, 0.009179214F }, new float[] { 0.030911816F, 0.009280422F },
|
||||
new float[] { 0.030881282F, 0.009381531F }, new float[] { 0.030850416F, 0.009482539F }, new float[] { 0.030819219F, 0.009583446F }, new float[] { 0.030787691F, 0.00968425F }, new float[] { 0.030755835F, 0.009784951F }, new float[] { 0.03072365F, 0.009885546F }, new float[] { 0.030691134F, 0.009986036F }, new float[] { 0.030658292F, 0.010086419F }, new float[] { 0.03062512F, 0.010186694F }, new float[] { 0.03059162F, 0.010286859F },
|
||||
new float[] { 0.030557793F, 0.010386915F }, new float[] { 0.030523637F, 0.01048686F }, new float[] { 0.030489156F, 0.010586691F }, new float[] { 0.030454349F, 0.01068641F }, new float[] { 0.030419214F, 0.010786015F }, new float[] { 0.030383755F, 0.010885503F }, new float[] { 0.030347968F, 0.010984875F }, new float[] { 0.030311858F, 0.01108413F }, new float[] { 0.030275423F, 0.011183266F }, new float[] { 0.030238664F, 0.011282281F },
|
||||
new float[] { 0.03020158F, 0.011381176F }, new float[] { 0.030164175F, 0.01147995F }, new float[] { 0.030126445F, 0.0115786F }, new float[] { 0.030088393F, 0.011677126F }, new float[] { 0.030050019F, 0.011775528F }, new float[] { 0.030011322F, 0.011873803F }, new float[] { 0.029972306F, 0.011971951F }, new float[] { 0.029932966F, 0.012069971F }, new float[] { 0.029893307F, 0.012167862F }, new float[] { 0.029853327F, 0.012265622F },
|
||||
new float[] { 0.029813029F, 0.012363251F }, new float[] { 0.02977241F, 0.012460748F }, new float[] { 0.029731473F, 0.012558111F }, new float[] { 0.029690217F, 0.012655339F }, new float[] { 0.029648645F, 0.012752432F }, new float[] { 0.029606754F, 0.012849389F }, new float[] { 0.029564546F, 0.012946208F }, new float[] { 0.02952202F, 0.013042888F }, new float[] { 0.029479181F, 0.013139429F }, new float[] { 0.029436024F, 0.013235829F },
|
||||
new float[] { 0.029392552F, 0.013332087F }, new float[] { 0.029348766F, 0.013428202F }, new float[] { 0.029304665F, 0.013524174F }, new float[] { 0.02926025F, 0.01362F }, new float[] { 0.029215522F, 0.013715681F }, new float[] { 0.029170481F, 0.013811215F }, new float[] { 0.029125128F, 0.013906601F }, new float[] { 0.029079463F, 0.014001838F }, new float[] { 0.029033488F, 0.014096925F }, new float[] { 0.028987199F, 0.014191861F },
|
||||
new float[] { 0.028940601F, 0.014286646F }, new float[] { 0.028893694F, 0.014381277F }, new float[] { 0.028846476F, 0.014475754F }, new float[] { 0.02879895F, 0.014570076F }, new float[] { 0.028751116F, 0.014664243F }, new float[] { 0.028702972F, 0.014758252F }, new float[] { 0.028654523F, 0.014852103F }, new float[] { 0.028605767F, 0.014945795F }, new float[] { 0.028556703F, 0.015039327F }, new float[] { 0.028507335F, 0.015132697F },
|
||||
new float[] { 0.02845766F, 0.015225907F }, new float[] { 0.028407682F, 0.0153189525F }, new float[] { 0.028357398F, 0.015411834F }, new float[] { 0.028306812F, 0.015504551F }, new float[] { 0.02825592F, 0.015597101F }, new float[] { 0.02820473F, 0.015689485F }, new float[] { 0.028153235F, 0.0157817F }, new float[] { 0.028101439F, 0.015873747F }, new float[] { 0.02804934F, 0.015965624F }, new float[] { 0.027996944F, 0.01605733F },
|
||||
new float[] { 0.027944246F, 0.016148863F }, new float[] { 0.02789125F, 0.016240224F }, new float[] { 0.027837954F, 0.01633141F }, new float[] { 0.02778436F, 0.016422423F }, new float[] { 0.02773047F, 0.016513258F }, new float[] { 0.027676282F, 0.016603917F }, new float[] { 0.027621798F, 0.016694399F }, new float[] { 0.027567018F, 0.016784701F }, new float[] { 0.027511943F, 0.016874824F }, new float[] { 0.027456572F, 0.016964767F },
|
||||
new float[] { 0.027400909F, 0.017054526F }, new float[] { 0.027344951F, 0.017144104F }, new float[] { 0.027288701F, 0.017233498F }, new float[] { 0.027232159F, 0.017322708F }, new float[] { 0.027175324F, 0.017411733F }, new float[] { 0.027118199F, 0.01750057F }, new float[] { 0.027060783F, 0.01758922F }, new float[] { 0.027003078F, 0.017677682F }, new float[] { 0.026945084F, 0.017765954F }, new float[] { 0.0268868F, 0.017854037F },
|
||||
new float[] { 0.02682823F, 0.017941928F }, new float[] { 0.026769372F, 0.018029626F }, new float[] { 0.026710225F, 0.018117134F }, new float[] { 0.026650794F, 0.018204445F }, new float[] { 0.026591077F, 0.018291561F }, new float[] { 0.026531076F, 0.018378483F }, new float[] { 0.026470792F, 0.018465206F }, new float[] { 0.026410222F, 0.018551733F }, new float[] { 0.026349371F, 0.018638061F }, new float[] { 0.026288237F, 0.01872419F },
|
||||
new float[] { 0.026226822F, 0.018810118F }, new float[] { 0.026165126F, 0.018895842F }, new float[] { 0.026103148F, 0.018981367F }, new float[] { 0.026040893F, 0.019066688F }, new float[] { 0.025978358F, 0.019151803F }, new float[] { 0.025915544F, 0.019236716F }, new float[] { 0.025852455F, 0.019321421F }, new float[] { 0.025789086F, 0.019405918F }, new float[] { 0.025725443F, 0.019490208F }, new float[] { 0.025661524F, 0.01957429F },
|
||||
new float[] { 0.02559733F, 0.019658163F }, new float[] { 0.025532862F, 0.019741824F }, new float[] { 0.02546812F, 0.019825274F }, new float[] { 0.025403107F, 0.019908514F }, new float[] { 0.025337819F, 0.019991538F }, new float[] { 0.025272261F, 0.020074349F }, new float[] { 0.025206434F, 0.020156944F }, new float[] { 0.025140336F, 0.020239323F }, new float[] { 0.025073968F, 0.020321487F }, new float[] { 0.025007332F, 0.020403432F },
|
||||
new float[] { 0.024940427F, 0.020485159F }, new float[] { 0.024873257F, 0.020566666F }, new float[] { 0.02480582F, 0.020647954F }, new float[] { 0.024738116F, 0.02072902F }, new float[] { 0.024670148F, 0.020809865F }, new float[] { 0.024601916F, 0.020890485F }, new float[] { 0.02453342F, 0.020970883F }, new float[] { 0.024464663F, 0.021051057F }, new float[] { 0.024395643F, 0.021131003F }, new float[] { 0.02432636F, 0.021210724F },
|
||||
new float[] { 0.024256818F, 0.021290218F }, new float[] { 0.024187017F, 0.021369485F }, new float[] { 0.024116956F, 0.021448523F }, new float[] { 0.024046637F, 0.02152733F }, new float[] { 0.02397606F, 0.021605907F }, new float[] { 0.023905227F, 0.021684252F }, new float[] { 0.023834137F, 0.021762365F }, new float[] { 0.023762792F, 0.021840246F }, new float[] { 0.023691194F, 0.021917893F }, new float[] { 0.02361934F, 0.021995304F },
|
||||
new float[] { 0.023547234F, 0.022072481F }, new float[] { 0.023474876F, 0.022149421F }, new float[] { 0.023402268F, 0.022226123F }, new float[] { 0.023329407F, 0.022302588F }, new float[] { 0.023256298F, 0.022378813F }, new float[] { 0.023182938F, 0.0224548F }, new float[] { 0.023109332F, 0.022530545F }, new float[] { 0.023035476F, 0.022606049F }, new float[] { 0.022961376F, 0.022681313F }, new float[] { 0.022887029F, 0.02275633F },
|
||||
new float[] { 0.022812435F, 0.022831107F }, new float[] { 0.0227376F, 0.022905638F }, new float[] { 0.022662519F, 0.022979924F }, new float[] { 0.022587197F, 0.023053963F }, new float[] { 0.022511631F, 0.023127757F }, new float[] { 0.022435825F, 0.023201302F }, new float[] { 0.02235978F, 0.023274599F }, new float[] { 0.022283494F, 0.023347646F }, new float[] { 0.02220697F, 0.023420444F }, new float[] { 0.022130208F, 0.02349299F },
|
||||
new float[] { 0.022053208F, 0.023565285F }, new float[] { 0.021975974F, 0.023637328F }, new float[] { 0.021898502F, 0.023709117F }, new float[] { 0.021820799F, 0.023780653F }, new float[] { 0.02174286F, 0.023851933F }, new float[] { 0.021664688F, 0.02392296F }, new float[] { 0.021586284F, 0.023993729F }, new float[] { 0.021507649F, 0.024064241F }, new float[] { 0.021428784F, 0.024134494F }, new float[] { 0.02134969F, 0.02420449F },
|
||||
new float[] { 0.021270366F, 0.024274228F }, new float[] { 0.021190817F, 0.024343705F }, new float[] { 0.021111038F, 0.024412923F }, new float[] { 0.021031033F, 0.024481876F }, new float[] { 0.020950805F, 0.024550568F }, new float[] { 0.02087035F, 0.024618998F }, new float[] { 0.020789674F, 0.024687165F }, new float[] { 0.020708775F, 0.024755066F }, new float[] { 0.020627653F, 0.024822703F }, new float[] { 0.02054631F, 0.024890075F },
|
||||
new float[] { 0.020464748F, 0.024957178F }, new float[] { 0.020382967F, 0.025024015F }, new float[] { 0.020300966F, 0.025090585F }, new float[] { 0.020218749F, 0.025156885F }, new float[] { 0.020136315F, 0.025222916F }, new float[] { 0.020053666F, 0.025288677F }, new float[] { 0.0199708F, 0.025354166F }, new float[] { 0.019887723F, 0.025419384F }, new float[] { 0.019804433F, 0.025484331F }, new float[] { 0.019720929F, 0.025549004F },
|
||||
new float[] { 0.019637214F, 0.025613405F }, new float[] { 0.01955329F, 0.02567753F }, new float[] { 0.019469157F, 0.02574138F }, new float[] { 0.019384814F, 0.025804954F }, new float[] { 0.019300263F, 0.025868252F }, new float[] { 0.019215506F, 0.025931275F }, new float[] { 0.019130545F, 0.025994018F }, new float[] { 0.019045377F, 0.026056483F }, new float[] { 0.018960005F, 0.02611867F }, new float[] { 0.018874431F, 0.026180577F },
|
||||
new float[] { 0.018788654F, 0.026242202F }, new float[] { 0.018702677F, 0.026303547F }, new float[] { 0.018616498F, 0.02636461F }, new float[] { 0.018530121F, 0.026425391F }, new float[] { 0.018443543F, 0.02648589F }, new float[] { 0.01835677F, 0.026546104F }, new float[] { 0.018269802F, 0.026606034F }, new float[] { 0.018182635F, 0.02666568F }, new float[] { 0.018095275F, 0.026725039F }, new float[] { 0.01800772F, 0.026784113F },
|
||||
new float[] { 0.017919973F, 0.0268429F }, new float[] { 0.017832035F, 0.026901398F }, new float[] { 0.017743904F, 0.02695961F }, new float[] { 0.017655585F, 0.027017532F }, new float[] { 0.017567076F, 0.027075164F }, new float[] { 0.017478378F, 0.027132507F }, new float[] { 0.017389493F, 0.02718956F }, new float[] { 0.017300423F, 0.02724632F }, new float[] { 0.017211167F, 0.02730279F }, new float[] { 0.017121727F, 0.027358968F },
|
||||
new float[] { 0.017032104F, 0.027414853F }, new float[] { 0.016942298F, 0.027470443F }, new float[] { 0.01685231F, 0.02752574F }, new float[] { 0.016762143F, 0.02758074F }, new float[] { 0.016671795F, 0.027635446F }, new float[] { 0.016581269F, 0.027689857F }, new float[] { 0.016490566F, 0.027743971F }, new float[] { 0.016399685F, 0.027797787F }, new float[] { 0.01630863F, 0.027851306F }, new float[] { 0.0162174F, 0.027904527F },
|
||||
new float[] { 0.016125996F, 0.027957449F }, new float[] { 0.016034419F, 0.02801007F }, new float[] { 0.01594267F, 0.028062394F }, new float[] { 0.01585075F, 0.028114416F }, new float[] { 0.015758662F, 0.028166136F }, new float[] { 0.015666405F, 0.028217556F }, new float[] { 0.015573979F, 0.028268673F }, new float[] { 0.015481387F, 0.028319487F }, new float[] { 0.015388629F, 0.028369997F }, new float[] { 0.015295706F, 0.028420204F },
|
||||
new float[] { 0.015202619F, 0.028470108F }, new float[] { 0.01510937F, 0.028519705F }, new float[] { 0.015015959F, 0.028568998F }, new float[] { 0.014922387F, 0.028617984F }, new float[] { 0.014828655F, 0.028666664F }, new float[] { 0.014734765F, 0.028715037F }, new float[] { 0.014640716F, 0.028763102F }, new float[] { 0.014546511F, 0.02881086F }, new float[] { 0.014452149F, 0.02885831F }, new float[] { 0.014357634F, 0.02890545F },
|
||||
new float[] { 0.014262964F, 0.02895228F }, new float[] { 0.014168141F, 0.0289988F }, new float[] { 0.014073168F, 0.02904501F }, new float[] { 0.013978043F, 0.02909091F }, new float[] { 0.013882768F, 0.029136496F }, new float[] { 0.013787345F, 0.029181771F }, new float[] { 0.013691775F, 0.029226733F }, new float[] { 0.013596057F, 0.029271383F }, new float[] { 0.013500194F, 0.02931572F }, new float[] { 0.013404187F, 0.029359741F },
|
||||
new float[] { 0.013308035F, 0.02940345F }, new float[] { 0.013211742F, 0.029446842F }, new float[] { 0.013115306F, 0.02948992F }, new float[] { 0.013018731F, 0.029532682F }, new float[] { 0.012922016F, 0.029575128F }, new float[] { 0.012825162F, 0.029617256F }, new float[] { 0.012728171F, 0.029659068F }, new float[] { 0.012631045F, 0.029700562F }, new float[] { 0.012533782F, 0.029741738F }, new float[] { 0.012436386F, 0.029782595F },
|
||||
new float[] { 0.012338856F, 0.029823134F }, new float[] { 0.012241194F, 0.029863352F }, new float[] { 0.012143401F, 0.029903252F }, new float[] { 0.012045478F, 0.029942831F }, new float[] { 0.011947426F, 0.02998209F }, new float[] { 0.011849246F, 0.030021027F }, new float[] { 0.011750939F, 0.030059641F }, new float[] { 0.011652507F, 0.030097935F }, new float[] { 0.01155395F, 0.030135907F }, new float[] { 0.011455269F, 0.030173557F },
|
||||
new float[] { 0.011356465F, 0.030210882F }, new float[] { 0.011257539F, 0.030247884F }, new float[] { 0.011158492F, 0.030284563F }, new float[] { 0.011059327F, 0.030320916F }, new float[] { 0.010960043F, 0.030356945F }, new float[] { 0.0108606415F, 0.030392649F }, new float[] { 0.010761124F, 0.030428028F }, new float[] { 0.010661491F, 0.03046308F }, new float[] { 0.010561744F, 0.030497806F }, new float[] { 0.010461884F, 0.030532207F },
|
||||
new float[] { 0.010361912F, 0.030566279F }, new float[] { 0.010261828F, 0.030600024F }, new float[] { 0.0101616355F, 0.030633444F }, new float[] { 0.010061333F, 0.030666532F }, new float[] { 0.009960923F, 0.030699294F }, new float[] { 0.009860408F, 0.030731726F }, new float[] { 0.009759786F, 0.030763831F }, new float[] { 0.009659058F, 0.030795604F }, new float[] { 0.009558229F, 0.03082705F }, new float[] { 0.009457297F, 0.030858163F },
|
||||
new float[] { 0.009356263F, 0.030888947F }, new float[] { 0.009255129F, 0.0309194F }, new float[] { 0.009153896F, 0.030949522F }, new float[] { 0.009052565F, 0.030979311F }, new float[] { 0.008951138F, 0.03100877F }, new float[] { 0.008849614F, 0.031037897F }, new float[] { 0.008747996F, 0.03106669F }, new float[] { 0.008646283F, 0.03109515F }, new float[] { 0.008544479F, 0.03112328F }, new float[] { 0.008442583F, 0.031151075F },
|
||||
new float[] { 0.008340595F, 0.031178536F }, new float[] { 0.00823852F, 0.031205663F }, new float[] { 0.008136355F, 0.031232458F }, new float[] { 0.008034104F, 0.031258915F }, new float[] { 0.007931766F, 0.03128504F }, new float[] { 0.007829344F, 0.03131083F }, new float[] { 0.007726838F, 0.03133628F }, new float[] { 0.007624249F, 0.0313614F }, new float[] { 0.0075215786F, 0.031386185F }, new float[] { 0.007418827F, 0.03141063F },
|
||||
new float[] { 0.0073159966F, 0.03143474F }, new float[] { 0.0072130878F, 0.031458512F }, new float[] { 0.0071101016F, 0.031481948F }, new float[] { 0.007007039F, 0.03150505F }, new float[] { 0.006903902F, 0.03152781F }, new float[] { 0.0068006907F, 0.031550232F }, new float[] { 0.0066974065F, 0.03157232F }, new float[] { 0.0065940507F, 0.031594068F }, new float[] { 0.006490624F, 0.031615477F }, new float[] { 0.006387128F, 0.03163655F },
|
||||
new float[] { 0.006283564F, 0.031657282F }, new float[] { 0.006179932F, 0.031677675F }, new float[] { 0.0060762344F, 0.031697728F }, new float[] { 0.0059724716F, 0.031717446F }, new float[] { 0.0058686445F, 0.031736817F }, new float[] { 0.005764755F, 0.031755853F }, new float[] { 0.005660803F, 0.03177455F }, new float[] { 0.005556791F, 0.031792905F }, new float[] { 0.0054527195F, 0.031810917F }, new float[] { 0.0053485897F, 0.031828593F },
|
||||
new float[] { 0.005244402F, 0.031845924F }, new float[] { 0.005140159F, 0.031862915F }, new float[] { 0.0050358605F, 0.031879567F }, new float[] { 0.004931508F, 0.031895876F }, new float[] { 0.0048271026F, 0.031911843F }, new float[] { 0.004722646F, 0.03192747F }, new float[] { 0.004618138F, 0.03194275F }, new float[] { 0.0045135813F, 0.031957693F }, new float[] { 0.004408976F, 0.031972293F }, new float[] { 0.0043043233F, 0.03198655F },
|
||||
new float[] { 0.004199625F, 0.032000467F }, new float[] { 0.0040948815F, 0.03201404F }, new float[] { 0.0039900937F, 0.032027267F }, new float[] { 0.0038852638F, 0.032040153F }, new float[] { 0.003780392F, 0.032052696F }, new float[] { 0.0036754797F, 0.032064896F }, new float[] { 0.003570528F, 0.03207675F }, new float[] { 0.0034655381F, 0.032088265F }, new float[] { 0.0033605113F, 0.032099433F }, new float[] { 0.0032554483F, 0.03211026F },
|
||||
new float[] { 0.0031503504F, 0.032120742F }, new float[] { 0.003045219F, 0.03213088F }, new float[] { 0.0029400548F, 0.032140672F }, new float[] { 0.002834859F, 0.03215012F }, new float[] { 0.0027296331F, 0.032159224F }, new float[] { 0.0026243778F, 0.032167986F }, new float[] { 0.0025190946F, 0.0321764F }, new float[] { 0.0024137842F, 0.032184474F }, new float[] { 0.002308448F, 0.0321922F }, new float[] { 0.002203087F, 0.03219958F },
|
||||
new float[] { 0.0020977026F, 0.032206617F }, new float[] { 0.0019922957F, 0.03221331F }, new float[] { 0.0018868673F, 0.03221966F }, new float[] { 0.0017814188F, 0.03222566F }, new float[] { 0.0016759513F, 0.03223132F }, new float[] { 0.0015704657F, 0.03223663F }, new float[] { 0.0014649634F, 0.032241598F }, new float[] { 0.0013594454F, 0.032246217F }, new float[] { 0.0012539128F, 0.032250494F }, new float[] { 0.0011483667F, 0.032254424F },
|
||||
new float[] { 0.0010428084F, 0.03225801F }, new float[] { 9.372389E-4F, 0.03226125F }, new float[] { 8.316594E-4F, 0.032264143F }, new float[] { 7.26071E-4F, 0.03226669F }, new float[] { 6.204748E-4F, 0.032268897F }, new float[] { 5.1487196E-4F, 0.032270756F }, new float[] { 4.0926356E-4F, 0.032272268F }, new float[] { 3.0365083E-4F, 0.032273434F }, new float[] { 1.9803483E-4F, 0.032274254F }, new float[] { 9.24167E-5F, 0.03227473F } };
|
||||
|
||||
public static final float[][] MDCT_TABLE_240 = new float[][] {
|
||||
new float[] { 0.09128661F, 2.9873577E-4F }, new float[] { 0.0912475F, 0.0026882382F }, new float[] { 0.091145866F, 0.005075898F }, new float[] { 0.09098176F, 0.007460079F }, new float[] { 0.0907553F, 0.009839147F }, new float[] { 0.09046664F, 0.012211473F }, new float[] { 0.09011598F, 0.014575429F }, new float[] { 0.08970356F, 0.016929395F }, new float[] { 0.089229666F, 0.01927176F }, new float[] { 0.08869461F, 0.021600917F },
|
||||
new float[] { 0.08809877F, 0.023915268F }, new float[] { 0.087442555F, 0.02621323F }, new float[] { 0.086726405F, 0.028493227F }, new float[] { 0.08595082F, 0.030753694F }, new float[] { 0.08511633F, 0.032993086F }, new float[] { 0.0842235F, 0.035209868F }, new float[] { 0.08327296F, 0.037402514F }, new float[] { 0.08226534F, 0.03956953F }, new float[] { 0.08120134F, 0.041709427F }, new float[] { 0.08008169F, 0.04382074F },
|
||||
new float[] { 0.07890715F, 0.045902014F }, new float[] { 0.07767854F, 0.047951832F }, new float[] { 0.07639668F, 0.04996879F }, new float[] { 0.075062476F, 0.051951498F }, new float[] { 0.073676825F, 0.053898603F }, new float[] { 0.07224067F, 0.055808768F }, new float[] { 0.07075501F, 0.05768068F }, new float[] { 0.06922086F, 0.059513066F }, new float[] { 0.06763928F, 0.061304666F }, new float[] { 0.066011325F, 0.06305425F },
|
||||
new float[] { 0.06433814F, 0.06476062F }, new float[] { 0.062620856F, 0.0664226F }, new float[] { 0.060860656F, 0.06803906F }, new float[] { 0.05905875F, 0.06960889F }, new float[] { 0.05721636F, 0.07113101F }, new float[] { 0.05533476F, 0.07260439F }, new float[] { 0.05341524F, 0.07402801F }, new float[] { 0.051459108F, 0.07540089F }, new float[] { 0.04946771F, 0.07672209F }, new float[] { 0.047442406F, 0.07799071F },
|
||||
new float[] { 0.04538459F, 0.079205886F }, new float[] { 0.04329567F, 0.080366775F }, new float[] { 0.041177075F, 0.08147258F }, new float[] { 0.03903026F, 0.082522556F }, new float[] { 0.0368567F, 0.08351597F }, new float[] { 0.034657877F, 0.084452145F }, new float[] { 0.032435298F, 0.08533044F }, new float[] { 0.030190494F, 0.08615026F }, new float[] { 0.027924998F, 0.08691104F }, new float[] { 0.025640363F, 0.08761224F },
|
||||
new float[] { 0.023338156F, 0.08825341F }, new float[] { 0.021019952F, 0.088834085F }, new float[] { 0.018687345F, 0.08935388F }, new float[] { 0.016341928F, 0.08981244F }, new float[] { 0.0139853135F, 0.09020945F }, new float[] { 0.011619112F, 0.090544626F }, new float[] { 0.00924495F, 0.09081775F }, new float[] { 0.0068644495F, 0.09102864F }, new float[] { 0.0044792453F, 0.091177136F }, new float[] { 0.0020909712F, 0.091263145F } };
|
||||
}
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
package net.sourceforge.jaad.aac.filterbank;
|
||||
|
||||
interface SineWindows {
|
||||
public static final float[] SINE_1024 = new float[] {
|
||||
7.669903E-4F, 0.002300969F, 0.0038349426F, 0.005368907F, 0.0069028586F, 0.008436794F, 0.00997071F, 0.011504602F, 0.013038468F, 0.014572302F,
|
||||
0.016106103F, 0.017639864F, 0.019173585F, 0.02070726F, 0.022240888F, 0.023774462F, 0.025307981F, 0.02684144F, 0.028374836F, 0.029908165F,
|
||||
0.031441424F, 0.03297461F, 0.034507714F, 0.036040742F, 0.037573684F, 0.039106537F, 0.040639296F, 0.042171963F, 0.04370453F, 0.04523699F,
|
||||
0.046769347F, 0.048301592F, 0.049833726F, 0.05136574F, 0.052897636F, 0.05442941F, 0.05596105F, 0.057492558F, 0.059023935F, 0.06055517F,
|
||||
0.062086266F, 0.063617215F, 0.06514801F, 0.06667866F, 0.06820914F, 0.06973947F, 0.07126963F, 0.07279963F, 0.07432945F, 0.07585911F,
|
||||
0.07738858F, 0.07891786F, 0.080446966F, 0.08197588F, 0.0835046F, 0.085033126F, 0.08656145F, 0.08808957F, 0.08961748F, 0.09114519F,
|
||||
0.092672676F, 0.09419994F, 0.09572699F, 0.097253814F, 0.09878041F, 0.10030677F, 0.1018329F, 0.10335878F, 0.10488442F, 0.10640982F,
|
||||
0.10793497F, 0.109459855F, 0.11098449F, 0.11250886F, 0.11403298F, 0.115556814F, 0.11708038F, 0.11860368F, 0.12012669F, 0.121649414F,
|
||||
0.12317186F, 0.12469402F, 0.12621588F, 0.12773745F, 0.1292587F, 0.13077967F, 0.13230032F, 0.13382065F, 0.13534068F, 0.13686039F,
|
||||
0.13837977F, 0.13989884F, 0.14141756F, 0.14293596F, 0.14445402F, 0.14597175F, 0.14748912F, 0.14900614F, 0.15052283F, 0.15203916F,
|
||||
0.15355512F, 0.15507074F, 0.15658598F, 0.15810084F, 0.15961535F, 0.16112947F, 0.16264322F, 0.16415659F, 0.16566956F, 0.16718215F,
|
||||
0.16869435F, 0.17020614F, 0.17171754F, 0.17322853F, 0.17473911F, 0.1762493F, 0.17775905F, 0.17926839F, 0.18077731F, 0.1822858F,
|
||||
0.18379387F, 0.1853015F, 0.18680869F, 0.18831545F, 0.18982176F, 0.19132763F, 0.19283305F, 0.19433801F, 0.19584252F, 0.19734657F,
|
||||
0.19885014F, 0.20035325F, 0.2018559F, 0.20335807F, 0.20485975F, 0.20636095F, 0.20786168F, 0.20936191F, 0.21086164F, 0.21236089F,
|
||||
0.21385963F, 0.21535787F, 0.2168556F, 0.21835282F, 0.21984953F, 0.22134572F, 0.2228414F, 0.22433653F, 0.22583115F, 0.22732525F,
|
||||
0.22881879F, 0.23031181F, 0.23180428F, 0.2332962F, 0.23478758F, 0.2362784F, 0.23776866F, 0.23925838F, 0.24074753F, 0.24223611F,
|
||||
0.24372411F, 0.24521154F, 0.24669841F, 0.24818468F, 0.24967039F, 0.2511555F, 0.25264F, 0.25412393F, 0.25560725F, 0.25708997F,
|
||||
0.25857207F, 0.2600536F, 0.26153448F, 0.26301476F, 0.26449442F, 0.26597348F, 0.26745188F, 0.26892966F, 0.2704068F, 0.27188334F,
|
||||
0.2733592F, 0.27483445F, 0.27630904F, 0.27778298F, 0.27925625F, 0.28072888F, 0.28220084F, 0.28367212F, 0.28514278F, 0.28661272F,
|
||||
0.28808203F, 0.28955063F, 0.29101855F, 0.2924858F, 0.29395235F, 0.2954182F, 0.29688337F, 0.29834786F, 0.29981163F, 0.3012747F,
|
||||
0.30273703F, 0.30419868F, 0.3056596F, 0.30711982F, 0.3085793F, 0.31003806F, 0.31149608F, 0.31295338F, 0.31440994F, 0.31586576F,
|
||||
0.31732082F, 0.31877515F, 0.32022873F, 0.32168156F, 0.32313362F, 0.32458493F, 0.32603547F, 0.32748523F, 0.32893425F, 0.3303825F,
|
||||
0.33182994F, 0.3332766F, 0.3347225F, 0.3361676F, 0.3376119F, 0.33905542F, 0.34049815F, 0.34194008F, 0.34338117F, 0.34482148F,
|
||||
0.34626096F, 0.34769964F, 0.3491375F, 0.35057455F, 0.35201076F, 0.35344616F, 0.3548807F, 0.35631442F, 0.3577473F, 0.35917935F,
|
||||
0.3606105F, 0.36204088F, 0.36347038F, 0.364899F, 0.36632678F, 0.36775368F, 0.36917976F, 0.37060493F, 0.37202924F, 0.37345266F,
|
||||
0.37487522F, 0.3762969F, 0.3777177F, 0.3791376F, 0.3805566F, 0.38197473F, 0.38339192F, 0.38480824F, 0.38622364F, 0.38763815F,
|
||||
0.38905174F, 0.3904644F, 0.39187613F, 0.39328697F, 0.39469686F, 0.39610586F, 0.3975139F, 0.398921F, 0.40032718F, 0.4017324F,
|
||||
0.40313667F, 0.40454F, 0.40594238F, 0.4073438F, 0.40874428F, 0.4101438F, 0.41154233F, 0.41293988F, 0.4143365F, 0.41573212F,
|
||||
0.41712677F, 0.41852042F, 0.4199131F, 0.4213048F, 0.4226955F, 0.4240852F, 0.4254739F, 0.4268616F, 0.42824832F, 0.429634F,
|
||||
0.4310187F, 0.43240237F, 0.43378502F, 0.43516666F, 0.43654725F, 0.43792683F, 0.4393054F, 0.4406829F, 0.44205937F, 0.4434348F,
|
||||
0.4448092F, 0.44618255F, 0.44755486F, 0.4489261F, 0.45029628F, 0.45166543F, 0.45303348F, 0.45440048F, 0.4557664F, 0.45713127F,
|
||||
0.45849505F, 0.45985776F, 0.4612194F, 0.46257994F, 0.46393937F, 0.46529773F, 0.466655F, 0.46801114F, 0.46936622F, 0.47072017F,
|
||||
0.47207302F, 0.47342476F, 0.47477537F, 0.47612488F, 0.4774733F, 0.47882056F, 0.48016667F, 0.48151168F, 0.48285556F, 0.4841983F,
|
||||
0.4855399F, 0.48688036F, 0.48821968F, 0.48955783F, 0.49089485F, 0.4922307F, 0.4935654F, 0.49489895F, 0.4962313F, 0.4975625F,
|
||||
0.49889255F, 0.5002214F, 0.50154907F, 0.50287557F, 0.5042009F, 0.50552505F, 0.506848F, 0.5081697F, 0.50949025F, 0.5108096F,
|
||||
0.51212776F, 0.5134447F, 0.51476043F, 0.516075F, 0.5173883F, 0.5187004F, 0.52001125F, 0.52132094F, 0.5226294F, 0.52393657F,
|
||||
0.5252425F, 0.52654725F, 0.52785075F, 0.529153F, 0.530454F, 0.5317537F, 0.5330522F, 0.53434944F, 0.5356455F, 0.53694016F,
|
||||
0.53823364F, 0.53952587F, 0.5408168F, 0.54210645F, 0.5433948F, 0.5446819F, 0.54596776F, 0.5472523F, 0.5485355F, 0.5498175F,
|
||||
0.55109817F, 0.5523775F, 0.55365556F, 0.55493236F, 0.5562078F, 0.55748194F, 0.5587548F, 0.5600263F, 0.5612965F, 0.5625654F,
|
||||
0.56383294F, 0.5650992F, 0.5663641F, 0.56762767F, 0.5688899F, 0.5701508F, 0.57141036F, 0.57266855F, 0.57392544F, 0.57518095F,
|
||||
0.5764351F, 0.5776879F, 0.5789393F, 0.5801894F, 0.5814381F, 0.5826855F, 0.58393145F, 0.58517605F, 0.5864193F, 0.58766115F,
|
||||
0.5889016F, 0.5901407F, 0.5913784F, 0.59261465F, 0.5938496F, 0.59508306F, 0.5963152F, 0.59754586F, 0.5987752F, 0.60000306F,
|
||||
0.60122955F, 0.6024546F, 0.6036782F, 0.6049005F, 0.60612124F, 0.60734063F, 0.6085586F, 0.60977507F, 0.61099017F, 0.6122038F,
|
||||
0.613416F, 0.61462677F, 0.6158361F, 0.6170439F, 0.6182503F, 0.6194553F, 0.62065876F, 0.6218608F, 0.62306136F, 0.6242605F,
|
||||
0.6254581F, 0.62665427F, 0.627849F, 0.6290422F, 0.63023394F, 0.6314242F, 0.63261294F, 0.6338002F, 0.634986F, 0.63617027F,
|
||||
0.63735306F, 0.63853437F, 0.6397142F, 0.64089245F, 0.6420692F, 0.6432445F, 0.64441824F, 0.6455905F, 0.6467612F, 0.6479304F,
|
||||
0.64909804F, 0.6502642F, 0.6514288F, 0.6525919F, 0.6537534F, 0.6549134F, 0.6560719F, 0.6572288F, 0.6583842F, 0.65953803F,
|
||||
0.6606903F, 0.661841F, 0.66299015F, 0.6641378F, 0.6652838F, 0.66642827F, 0.6675712F, 0.6687125F, 0.66985226F, 0.67099047F,
|
||||
0.67212707F, 0.67326206F, 0.6743955F, 0.6755274F, 0.6766576F, 0.6777863F, 0.67891335F, 0.68003887F, 0.6811627F, 0.682285F,
|
||||
0.6834057F, 0.6845247F, 0.6856422F, 0.68675804F, 0.68787223F, 0.6889849F, 0.69009584F, 0.6912052F, 0.6923129F, 0.69341904F,
|
||||
0.6945235F, 0.6956263F, 0.6967275F, 0.6978271F, 0.698925F, 0.70002127F, 0.7011159F, 0.7022089F, 0.7033002F, 0.70438987F,
|
||||
0.7054779F, 0.70656425F, 0.70764893F, 0.70873195F, 0.7098133F, 0.710893F, 0.711971F, 0.7130473F, 0.714122F, 0.71519494F,
|
||||
0.7162663F, 0.7173359F, 0.7184038F, 0.71947F, 0.72053456F, 0.72159743F, 0.7226586F, 0.723718F, 0.72477573F, 0.7258318F,
|
||||
0.7268861F, 0.7279387F, 0.7289896F, 0.7300388F, 0.7310863F, 0.732132F, 0.73317605F, 0.73421836F, 0.73525894F, 0.7362978F,
|
||||
0.7373349F, 0.7383703F, 0.7394039F, 0.74043584F, 0.741466F, 0.7424944F, 0.7435211F, 0.744546F, 0.74556917F, 0.74659055F,
|
||||
0.7476102F, 0.7486281F, 0.7496442F, 0.75065863F, 0.7516712F, 0.75268203F, 0.75369114F, 0.7546984F, 0.7557039F, 0.75670767F,
|
||||
0.7577096F, 0.7587098F, 0.75970817F, 0.76070476F, 0.76169956F, 0.7626926F, 0.7636838F, 0.76467323F, 0.7656609F, 0.7666467F,
|
||||
0.7676307F, 0.7686129F, 0.7695933F, 0.7705719F, 0.7715487F, 0.77252364F, 0.7734968F, 0.7744681F, 0.77543765F, 0.77640533F,
|
||||
0.77737117F, 0.7783352F, 0.77929735F, 0.78025776F, 0.78121626F, 0.7821729F, 0.7831278F, 0.7840808F, 0.7850319F, 0.78598124F,
|
||||
0.7869287F, 0.78787434F, 0.78881806F, 0.78976F, 0.7907F, 0.7916382F, 0.7925745F, 0.79350895F, 0.7944415F, 0.79537225F,
|
||||
0.79630107F, 0.79722804F, 0.79815316F, 0.7990764F, 0.7999977F, 0.80091715F, 0.8018347F, 0.8027504F, 0.8036642F, 0.8045761F,
|
||||
0.8054861F, 0.8063942F, 0.80730045F, 0.8082047F, 0.8091071F, 0.81000763F, 0.81090623F, 0.811803F, 0.81269777F, 0.8135906F,
|
||||
0.81448156F, 0.8153706F, 0.8162577F, 0.8171429F, 0.8180262F, 0.81890756F, 0.81978697F, 0.82066447F, 0.82154006F, 0.8224137F,
|
||||
0.8232854F, 0.82415515F, 0.825023F, 0.8258889F, 0.8267528F, 0.8276148F, 0.8284748F, 0.82933295F, 0.83018905F, 0.83104324F,
|
||||
0.8318955F, 0.8327458F, 0.8335941F, 0.8344404F, 0.8352848F, 0.8361273F, 0.8369677F, 0.8378062F, 0.8386427F, 0.83947724F,
|
||||
0.84030986F, 0.84114045F, 0.841969F, 0.84279567F, 0.8436203F, 0.84444296F, 0.84526366F, 0.8460823F, 0.84689903F, 0.84771377F,
|
||||
0.8485265F, 0.84933716F, 0.8501459F, 0.85095257F, 0.8517573F, 0.85256F, 0.8533607F, 0.8541594F, 0.8549561F, 0.85575074F,
|
||||
0.8565434F, 0.857334F, 0.85812265F, 0.85890925F, 0.8596939F, 0.86047643F, 0.86125696F, 0.86203545F, 0.8628119F, 0.86358637F,
|
||||
0.8643588F, 0.8651292F, 0.86589754F, 0.8666639F, 0.8674281F, 0.86819035F, 0.86895055F, 0.86970866F, 0.8704648F, 0.87121886F,
|
||||
0.87197083F, 0.8727208F, 0.8734687F, 0.87421453F, 0.8749583F, 0.8757F, 0.8764397F, 0.87717724F, 0.8779128F, 0.87864625F,
|
||||
0.87937766F, 0.880107F, 0.8808343F, 0.88155943F, 0.88228256F, 0.8830036F, 0.88372254F, 0.88443947F, 0.88515425F, 0.88586694F,
|
||||
0.8865776F, 0.8872861F, 0.88799256F, 0.88869697F, 0.88939923F, 0.8900994F, 0.8907975F, 0.8914935F, 0.8921874F, 0.8928792F,
|
||||
0.8935689F, 0.8942565F, 0.894942F, 0.89562535F, 0.89630663F, 0.89698577F, 0.8976628F, 0.8983378F, 0.8990106F, 0.8996813F,
|
||||
0.9003499F, 0.9010164F, 0.90168077F, 0.902343F, 0.9030031F, 0.9036611F, 0.90431696F, 0.9049707F, 0.9056223F, 0.90627176F,
|
||||
0.9069191F, 0.90756434F, 0.90820736F, 0.90884835F, 0.9094871F, 0.91012377F, 0.91075826F, 0.91139066F, 0.91202086F, 0.912649F,
|
||||
0.9132749F, 0.91389865F, 0.9145203F, 0.9151398F, 0.9157571F, 0.9163723F, 0.9169853F, 0.91759616F, 0.91820484F, 0.9188114F,
|
||||
0.9194158F, 0.92001796F, 0.92061806F, 0.9212159F, 0.92181164F, 0.9224052F, 0.9229965F, 0.9235858F, 0.92417276F, 0.9247576F,
|
||||
0.9253403F, 0.9259208F, 0.9264991F, 0.92707527F, 0.92764926F, 0.928221F, 0.9287906F, 0.929358F, 0.92992324F, 0.93048626F,
|
||||
0.9310471F, 0.93160576F, 0.9321622F, 0.9327165F, 0.93326855F, 0.93381846F, 0.9343661F, 0.9349116F, 0.93545485F, 0.93599594F,
|
||||
0.9365348F, 0.9370715F, 0.937606F, 0.93813825F, 0.9386683F, 0.9391961F, 0.93972176F, 0.9402452F, 0.9407664F, 0.9412854F,
|
||||
0.9418022F, 0.9423168F, 0.9428291F, 0.9433392F, 0.9438471F, 0.9443528F, 0.9448563F, 0.94535756F, 0.9458566F, 0.9463534F,
|
||||
0.9468479F, 0.94734025F, 0.9478304F, 0.94831824F, 0.9488039F, 0.9492873F, 0.9497685F, 0.95024747F, 0.9507241F, 0.95119864F,
|
||||
0.9516709F, 0.95214087F, 0.9526086F, 0.9530741F, 0.9535374F, 0.95399845F, 0.9544572F, 0.95491374F, 0.95536804F, 0.9558201F,
|
||||
0.95626986F, 0.95671743F, 0.9571627F, 0.9576057F, 0.9580465F, 0.95848507F, 0.9589213F, 0.95935535F, 0.95978713F, 0.96021664F,
|
||||
0.9606439F, 0.96106887F, 0.9614916F, 0.96191204F, 0.9623302F, 0.96274614F, 0.9631598F, 0.9635712F, 0.9639804F, 0.96438724F,
|
||||
0.96479183F, 0.9651941F, 0.9655942F, 0.965992F, 0.96638745F, 0.9667807F, 0.96717167F, 0.96756035F, 0.96794677F, 0.96833086F,
|
||||
0.96871275F, 0.9690923F, 0.9694696F, 0.9698446F, 0.97021735F, 0.9705878F, 0.9709559F, 0.9713218F, 0.9716854F, 0.97204673F,
|
||||
0.97240573F, 0.97276247F, 0.9731169F, 0.973469F, 0.9738189F, 0.97416645F, 0.97451174F, 0.9748547F, 0.9751954F, 0.9755338F,
|
||||
0.9758699F, 0.9762037F, 0.9765352F, 0.9768644F, 0.9771913F, 0.97751594F, 0.9778382F, 0.97815824F, 0.9784759F, 0.97879136F,
|
||||
0.97910446F, 0.97941524F, 0.97972375F, 0.9800299F, 0.9803338F, 0.98063534F, 0.9809346F, 0.9812316F, 0.98152626F, 0.98181856F,
|
||||
0.9821086F, 0.9823963F, 0.9826817F, 0.9829648F, 0.9832456F, 0.983524F, 0.98380023F, 0.98407406F, 0.98434556F, 0.9846148F,
|
||||
0.98488164F, 0.9851462F, 0.9854085F, 0.9856684F, 0.98592603F, 0.9861813F, 0.9864343F, 0.9866849F, 0.9869333F, 0.9871793F,
|
||||
0.98742294F, 0.98766434F, 0.98790336F, 0.9881401F, 0.9883745F, 0.9886065F, 0.9888363F, 0.9890637F, 0.98928875F, 0.9895115F,
|
||||
0.98973197F, 0.98995006F, 0.9901658F, 0.9903792F, 0.99059033F, 0.9907991F, 0.99100554F, 0.9912097F, 0.99141145F, 0.9916109F,
|
||||
0.991808F, 0.9920028F, 0.99219525F, 0.9923853F, 0.99257314F, 0.9927586F, 0.9929417F, 0.99312246F, 0.99330086F, 0.993477F,
|
||||
0.99365073F, 0.99382216F, 0.9939912F, 0.99415797F, 0.99432236F, 0.9944844F, 0.99464417F, 0.9948015F, 0.99495655F, 0.99510926F,
|
||||
0.9952596F, 0.99540764F, 0.9955533F, 0.9956966F, 0.9958376F, 0.99597627F, 0.9961126F, 0.9962465F, 0.9963781F, 0.9965074F,
|
||||
0.9966343F, 0.9967589F, 0.9968811F, 0.997001F, 0.99711853F, 0.99723375F, 0.9973466F, 0.9974571F, 0.9975652F, 0.99767107F,
|
||||
0.9977745F, 0.99787563F, 0.9979744F, 0.9980708F, 0.99816483F, 0.99825656F, 0.9983459F, 0.99843293F, 0.99851763F, 0.99859995F,
|
||||
0.99867994F, 0.99875754F, 0.9988328F, 0.9989057F, 0.9989763F, 0.9990445F, 0.99911034F, 0.9991739F, 0.99923503F, 0.99929386F,
|
||||
0.9993503F, 0.99940443F, 0.99945617F, 0.9995056F, 0.99955267F, 0.9995974F, 0.9996397F, 0.9996797F, 0.99971735F, 0.99975264F,
|
||||
0.9997856F, 0.9998162F, 0.99984443F, 0.9998703F, 0.99989384F, 0.999915F, 0.99993384F, 0.9999503F, 0.9999644F, 0.99997616F,
|
||||
0.9999856F, 0.99999267F, 0.9999974F, 0.9999997F };
|
||||
|
||||
public static final float[] SINE_128 = new float[] {
|
||||
0.0061358847F, 0.01840673F, 0.030674804F, 0.04293826F, 0.055195246F, 0.06744392F, 0.07968244F, 0.091908954F, 0.10412163F, 0.11631863F,
|
||||
0.1284981F, 0.14065824F, 0.15279719F, 0.16491312F, 0.17700422F, 0.18906866F, 0.20110464F, 0.21311031F, 0.22508392F, 0.2370236F,
|
||||
0.24892761F, 0.2607941F, 0.27262136F, 0.28440753F, 0.2961509F, 0.30784965F, 0.31950203F, 0.3311063F, 0.34266073F, 0.35416353F,
|
||||
0.36561298F, 0.37700742F, 0.38834503F, 0.3996242F, 0.41084316F, 0.42200026F, 0.43309382F, 0.44412214F, 0.45508358F, 0.4659765F,
|
||||
0.47679922F, 0.48755017F, 0.49822766F, 0.50883013F, 0.519356F, 0.52980363F, 0.54017144F, 0.55045795F, 0.56066155F, 0.57078075F,
|
||||
0.58081394F, 0.5907597F, 0.60061646F, 0.6103828F, 0.6200572F, 0.62963825F, 0.63912445F, 0.6485144F, 0.6578067F, 0.66699994F,
|
||||
0.6760927F, 0.6850837F, 0.69397146F, 0.70275474F, 0.7114322F, 0.72000253F, 0.72846437F, 0.7368166F, 0.74505776F, 0.7531868F,
|
||||
0.7612024F, 0.76910335F, 0.7768885F, 0.78455657F, 0.79210657F, 0.79953724F, 0.8068476F, 0.8140363F, 0.8211025F, 0.82804507F,
|
||||
0.8348629F, 0.841555F, 0.84812033F, 0.854558F, 0.86086696F, 0.86704624F, 0.873095F, 0.8790122F, 0.8847971F, 0.89044875F,
|
||||
0.89596623F, 0.9013488F, 0.9065957F, 0.91170603F, 0.9166791F, 0.92151403F, 0.9262102F, 0.93076694F, 0.9351835F, 0.9394592F,
|
||||
0.94359344F, 0.9475856F, 0.951435F, 0.9551412F, 0.95870346F, 0.9621214F, 0.96539444F, 0.9685221F, 0.9715039F, 0.97433937F,
|
||||
0.97702813F, 0.9795698F, 0.9819639F, 0.9842101F, 0.9863081F, 0.9882576F, 0.9900582F, 0.99170977F, 0.9932119F, 0.9945646F,
|
||||
0.9957674F, 0.9968203F, 0.99772304F, 0.99847555F, 0.99907774F, 0.9995294F, 0.9998306F, 0.99998116F };
|
||||
|
||||
public static final float[] SINE_960 = new float[] {
|
||||
8.18123E-4F, 0.0024543668F, 0.004090604F, 0.00572683F, 0.0073630414F, 0.008999232F, 0.010635399F, 0.012271538F, 0.013907644F, 0.015543712F,
|
||||
0.017179739F, 0.01881572F, 0.020451652F, 0.022087527F, 0.023723343F, 0.025359096F, 0.026994782F, 0.028630394F, 0.030265931F, 0.031901386F,
|
||||
0.03353676F, 0.035172038F, 0.036807224F, 0.03844231F, 0.040077295F, 0.041712172F, 0.043346938F, 0.044981588F, 0.046616115F, 0.04825052F,
|
||||
0.049884796F, 0.051518936F, 0.05315294F, 0.0547868F, 0.056420516F, 0.05805408F, 0.059687488F, 0.061320737F, 0.06295382F, 0.064586736F,
|
||||
0.06621948F, 0.06785204F, 0.06948443F, 0.071116626F, 0.07274863F, 0.07438044F, 0.07601206F, 0.07764347F, 0.07927467F, 0.08090566F,
|
||||
0.08253644F, 0.08416699F, 0.08579731F, 0.08742741F, 0.089057274F, 0.090686895F, 0.09231628F, 0.093945414F, 0.0955743F, 0.09720293F,
|
||||
0.09883129F, 0.1004594F, 0.10208723F, 0.10371479F, 0.10534207F, 0.10696907F, 0.10859578F, 0.110222206F, 0.11184833F, 0.11347417F,
|
||||
0.11509969F, 0.11672491F, 0.11834981F, 0.1199744F, 0.12159866F, 0.123222604F, 0.12484621F, 0.1264695F, 0.12809242F, 0.12971503F,
|
||||
0.13133727F, 0.13295917F, 0.1345807F, 0.13620189F, 0.1378227F, 0.13944314F, 0.14106323F, 0.14268291F, 0.14430223F, 0.14592116F,
|
||||
0.14753969F, 0.14915784F, 0.15077558F, 0.15239291F, 0.15400985F, 0.15562636F, 0.15724246F, 0.15885815F, 0.16047339F, 0.16208823F,
|
||||
0.1637026F, 0.16531657F, 0.16693008F, 0.16854315F, 0.17015575F, 0.1717679F, 0.1733796F, 0.17499083F, 0.1766016F, 0.1782119F,
|
||||
0.17982171F, 0.18143104F, 0.18303989F, 0.18464825F, 0.18625611F, 0.18786347F, 0.18947034F, 0.19107668F, 0.19268253F, 0.19428785F,
|
||||
0.19589266F, 0.19749694F, 0.19910069F, 0.20070392F, 0.2023066F, 0.20390874F, 0.20551033F, 0.20711137F, 0.20871186F, 0.2103118F,
|
||||
0.21191117F, 0.21350996F, 0.2151082F, 0.21670584F, 0.21830292F, 0.21989942F, 0.22149532F, 0.22309062F, 0.22468533F, 0.22627944F,
|
||||
0.22787294F, 0.22946583F, 0.2310581F, 0.23264977F, 0.2342408F, 0.23583122F, 0.23742099F, 0.23901014F, 0.24059863F, 0.24218649F,
|
||||
0.2437737F, 0.24536026F, 0.24694616F, 0.2485314F, 0.25011596F, 0.25169986F, 0.2532831F, 0.25486565F, 0.25644752F, 0.25802872F,
|
||||
0.2596092F, 0.261189F, 0.2627681F, 0.26434648F, 0.2659242F, 0.26750115F, 0.26907742F, 0.27065295F, 0.27222776F, 0.27380186F,
|
||||
0.2753752F, 0.27694783F, 0.2785197F, 0.2800908F, 0.28166118F, 0.2832308F, 0.2847997F, 0.28636777F, 0.2879351F, 0.2895017F,
|
||||
0.29106748F, 0.2926325F, 0.29419672F, 0.29576015F, 0.2973228F, 0.29888466F, 0.3004457F, 0.30200595F, 0.30356538F, 0.305124F,
|
||||
0.3066818F, 0.3082388F, 0.30979496F, 0.31135032F, 0.3129048F, 0.31445846F, 0.31601128F, 0.31756327F, 0.3191144F, 0.32066464F,
|
||||
0.32221407F, 0.32376263F, 0.3253103F, 0.3268571F, 0.32840303F, 0.3299481F, 0.33149227F, 0.33303556F, 0.33457795F, 0.33611944F,
|
||||
0.33766004F, 0.33919972F, 0.3407385F, 0.3422764F, 0.34381336F, 0.34534937F, 0.3468845F, 0.34841868F, 0.34995192F, 0.35148424F,
|
||||
0.3530156F, 0.35454604F, 0.35607553F, 0.35760406F, 0.3591316F, 0.36065823F, 0.36218387F, 0.36370853F, 0.36523223F, 0.36675495F,
|
||||
0.3682767F, 0.36979744F, 0.3713172F, 0.37283596F, 0.37435374F, 0.3758705F, 0.37738624F, 0.378901F, 0.38041475F, 0.38192746F,
|
||||
0.38343915F, 0.38494983F, 0.38645947F, 0.38796806F, 0.3894756F, 0.39098215F, 0.39248762F, 0.39399204F, 0.3954954F, 0.39699772F,
|
||||
0.39849895F, 0.39999914F, 0.40149826F, 0.4029963F, 0.40449324F, 0.4059891F, 0.4074839F, 0.4089776F, 0.4104702F, 0.4119617F,
|
||||
0.4134521F, 0.41494137F, 0.41642955F, 0.41791663F, 0.41940257F, 0.42088738F, 0.4223711F, 0.42385367F, 0.42533508F, 0.4268154F,
|
||||
0.42829454F, 0.42977253F, 0.43124938F, 0.43272507F, 0.4341996F, 0.435673F, 0.4371452F, 0.43861625F, 0.4400861F, 0.44155478F,
|
||||
0.44302228F, 0.4444886F, 0.44595373F, 0.44741768F, 0.4488804F, 0.45034194F, 0.45180228F, 0.4532614F, 0.4547193F, 0.45617598F,
|
||||
0.45763147F, 0.4590857F, 0.46053872F, 0.4619905F, 0.46344104F, 0.46489033F, 0.4663384F, 0.4677852F, 0.46923077F, 0.47067505F,
|
||||
0.4721181F, 0.4735599F, 0.47500038F, 0.47643963F, 0.4778776F, 0.47931427F, 0.48074967F, 0.48218378F, 0.4836166F, 0.48504812F,
|
||||
0.48647836F, 0.48790726F, 0.48933488F, 0.4907612F, 0.4921862F, 0.49360988F, 0.49503222F, 0.49645326F, 0.49787295F, 0.49929133F,
|
||||
0.50070834F, 0.502124F, 0.50353837F, 0.50495136F, 0.50636303F, 0.50777334F, 0.5091823F, 0.51058984F, 0.51199603F, 0.51340085F,
|
||||
0.5148043F, 0.5162064F, 0.5176071F, 0.5190064F, 0.5204043F, 0.5218008F, 0.523196F, 0.52458966F, 0.525982F, 0.5273729F,
|
||||
0.5287624F, 0.53015053F, 0.5315372F, 0.53292245F, 0.5343062F, 0.53568864F, 0.5370696F, 0.5384491F, 0.53982717F, 0.5412038F,
|
||||
0.542579F, 0.5439527F, 0.545325F, 0.5466958F, 0.5480651F, 0.54943305F, 0.5507994F, 0.5521644F, 0.55352783F, 0.5548898F,
|
||||
0.5562503F, 0.5576093F, 0.5589668F, 0.5603228F, 0.56167734F, 0.5630303F, 0.56438184F, 0.5657318F, 0.56708026F, 0.56842726F,
|
||||
0.56977266F, 0.57111657F, 0.572459F, 0.5737998F, 0.5751391F, 0.5764769F, 0.5778131F, 0.5791478F, 0.58048093F, 0.5818125F,
|
||||
0.5831425F, 0.584471F, 0.58579785F, 0.58712316F, 0.5884469F, 0.5897691F, 0.5910897F, 0.5924087F, 0.59372616F, 0.595042F,
|
||||
0.5963562F, 0.5976689F, 0.59897995F, 0.60028934F, 0.6015972F, 0.6029034F, 0.60420805F, 0.60551107F, 0.6068124F, 0.60811216F,
|
||||
0.6094103F, 0.61070675F, 0.61200166F, 0.61329484F, 0.6145864F, 0.6158764F, 0.6171646F, 0.61845124F, 0.61973625F, 0.62101954F,
|
||||
0.62230116F, 0.6235812F, 0.6248595F, 0.6261361F, 0.62741107F, 0.6286844F, 0.629956F, 0.6312259F, 0.63249415F, 0.63376063F,
|
||||
0.6350255F, 0.63628864F, 0.63755006F, 0.6388098F, 0.6400678F, 0.6413241F, 0.64257866F, 0.64383155F, 0.6450827F, 0.6463321F,
|
||||
0.6475798F, 0.6488257F, 0.65006995F, 0.6513124F, 0.65255314F, 0.65379214F, 0.65502936F, 0.65626484F, 0.65749854F, 0.6587305F,
|
||||
0.6599607F, 0.66118914F, 0.6624158F, 0.6636407F, 0.66486377F, 0.6660851F, 0.66730464F, 0.6685224F, 0.66973835F, 0.67095256F,
|
||||
0.6721649F, 0.6733755F, 0.67458427F, 0.67579126F, 0.6769964F, 0.67819977F, 0.6794013F, 0.680601F, 0.6817989F, 0.68299496F,
|
||||
0.6841892F, 0.6853816F, 0.6865722F, 0.6877609F, 0.6889478F, 0.69013286F, 0.691316F, 0.6924974F, 0.6936769F, 0.6948545F,
|
||||
0.6960303F, 0.69720423F, 0.69837624F, 0.6995464F, 0.7007147F, 0.7018812F, 0.7030457F, 0.7042084F, 0.7053692F, 0.70652807F,
|
||||
0.70768505F, 0.70884013F, 0.70999336F, 0.7111447F, 0.71229404F, 0.71344155F, 0.71458715F, 0.71573085F, 0.7168726F, 0.7180124F,
|
||||
0.71915036F, 0.7202863F, 0.7214204F, 0.72255254F, 0.7236827F, 0.72481096F, 0.7259373F, 0.7270617F, 0.7281841F, 0.72930455F,
|
||||
0.7304231F, 0.73153967F, 0.7326543F, 0.7337669F, 0.7348776F, 0.73598635F, 0.7370931F, 0.73819786F, 0.73930067F, 0.74040145F,
|
||||
0.7415003F, 0.74259716F, 0.743692F, 0.7447849F, 0.7458758F, 0.74696463F, 0.7480515F, 0.7491364F, 0.7502193F, 0.75130016F,
|
||||
0.752379F, 0.7534558F, 0.75453067F, 0.75560343F, 0.75667423F, 0.75774294F, 0.7588097F, 0.7598744F, 0.76093704F, 0.76199764F,
|
||||
0.7630562F, 0.7641128F, 0.76516724F, 0.76621974F, 0.7672701F, 0.7683184F, 0.7693647F, 0.7704089F, 0.7714511F, 0.77249116F,
|
||||
0.77352923F, 0.77456516F, 0.77559906F, 0.7766308F, 0.77766055F, 0.7786882F, 0.77971375F, 0.7807372F, 0.7817586F, 0.7827779F,
|
||||
0.78379506F, 0.7848102F, 0.78582317F, 0.78683406F, 0.7878428F, 0.7888495F, 0.78985405F, 0.7908565F, 0.7918568F, 0.792855F,
|
||||
0.79385114F, 0.7948451F, 0.7958369F, 0.7968266F, 0.7978142F, 0.7987996F, 0.7997829F, 0.800764F, 0.80174303F, 0.8027199F,
|
||||
0.8036946F, 0.8046672F, 0.8056376F, 0.8066058F, 0.8075719F, 0.8085358F, 0.8094976F, 0.81045717F, 0.8114146F, 0.8123699F,
|
||||
0.81332296F, 0.81427383F, 0.81522256F, 0.8161691F, 0.81711346F, 0.8180556F, 0.8189956F, 0.81993335F, 0.82086897F, 0.8218024F,
|
||||
0.8227335F, 0.8236625F, 0.8245893F, 0.8255139F, 0.8264362F, 0.8273564F, 0.8282743F, 0.82919F, 0.8301035F, 0.8310148F,
|
||||
0.83192384F, 0.83283067F, 0.8337353F, 0.83463764F, 0.83553773F, 0.8364357F, 0.8373313F, 0.8382247F, 0.83911586F, 0.8400048F,
|
||||
0.8408915F, 0.8417759F, 0.84265804F, 0.8435379F, 0.8444156F, 0.84529096F, 0.8461641F, 0.84703493F, 0.84790355F, 0.84876984F,
|
||||
0.84963393F, 0.8504957F, 0.8513552F, 0.8522124F, 0.85306734F, 0.85392F, 0.85477036F, 0.8556184F, 0.8564642F, 0.85730773F,
|
||||
0.85814893F, 0.8589878F, 0.8598244F, 0.8606587F, 0.8614907F, 0.8623204F, 0.8631478F, 0.86397284F, 0.8647956F, 0.865616F,
|
||||
0.86643416F, 0.86724997F, 0.86806345F, 0.8688746F, 0.86968344F, 0.87048995F, 0.87129414F, 0.87209594F, 0.8728955F, 0.87369263F,
|
||||
0.87448746F, 0.87527996F, 0.8760701F, 0.8768579F, 0.87764335F, 0.87842643F, 0.8792072F, 0.8799856F, 0.8807616F, 0.8815353F,
|
||||
0.88230664F, 0.8830756F, 0.8838422F, 0.8846064F, 0.8853683F, 0.88612777F, 0.88688487F, 0.88763964F, 0.888392F, 0.889142F,
|
||||
0.8898896F, 0.89063483F, 0.8913776F, 0.8921181F, 0.8928562F, 0.8935918F, 0.89432514F, 0.895056F, 0.8957845F, 0.8965106F,
|
||||
0.89723426F, 0.8979556F, 0.8986745F, 0.89939094F, 0.900105F, 0.9008167F, 0.9015259F, 0.90223277F, 0.9029372F, 0.9036392F,
|
||||
0.9043388F, 0.905036F, 0.90573066F, 0.90642303F, 0.9071129F, 0.9078004F, 0.9084854F, 0.909168F, 0.90984815F, 0.91052586F,
|
||||
0.9112012F, 0.911874F, 0.9125444F, 0.9132124F, 0.9138779F, 0.914541F, 0.9152016F, 0.9158598F, 0.9165155F, 0.9171688F,
|
||||
0.9178196F, 0.91846794F, 0.9191139F, 0.9197573F, 0.92039824F, 0.9210368F, 0.9216728F, 0.9223064F, 0.9229375F, 0.92356616F,
|
||||
0.9241923F, 0.924816F, 0.9254372F, 0.92605597F, 0.9266722F, 0.92728597F, 0.9278973F, 0.9285061F, 0.9291124F, 0.9297162F,
|
||||
0.9303176F, 0.9309164F, 0.93151283F, 0.9321067F, 0.9326981F, 0.9332869F, 0.9338733F, 0.9344572F, 0.93503857F, 0.93561745F,
|
||||
0.9361938F, 0.93676764F, 0.937339F, 0.9379079F, 0.9384742F, 0.939038F, 0.93959934F, 0.9401581F, 0.94071436F, 0.94126815F,
|
||||
0.94181937F, 0.9423681F, 0.94291425F, 0.94345796F, 0.94399905F, 0.9445377F, 0.9450738F, 0.9456073F, 0.9461383F, 0.94666684F,
|
||||
0.9471928F, 0.94771624F, 0.94823706F, 0.94875544F, 0.94927126F, 0.9497845F, 0.9502952F, 0.9508034F, 0.951309F, 0.9518121F,
|
||||
0.95231265F, 0.9528106F, 0.953306F, 0.95379895F, 0.95428926F, 0.954777F, 0.95526224F, 0.95574486F, 0.956225F, 0.95670253F,
|
||||
0.9571775F, 0.95764995F, 0.95811975F, 0.95858705F, 0.9590518F, 0.9595139F, 0.9599735F, 0.9604305F, 0.960885F, 0.96133685F,
|
||||
0.96178615F, 0.9622328F, 0.962677F, 0.96311855F, 0.96355754F, 0.96399397F, 0.96442777F, 0.964859F, 0.9652877F, 0.96571374F,
|
||||
0.96613723F, 0.96655816F, 0.96697646F, 0.9673922F, 0.9678053F, 0.9682159F, 0.9686238F, 0.9690292F, 0.969432F, 0.9698321F,
|
||||
0.97022974F, 0.9706247F, 0.97101706F, 0.9714069F, 0.971794F, 0.9721786F, 0.9725606F, 0.97293997F, 0.9733167F, 0.97369087F,
|
||||
0.97406244F, 0.9744314F, 0.9747977F, 0.97516143F, 0.9755226F, 0.97588104F, 0.97623694F, 0.9765902F, 0.9769409F, 0.97728896F,
|
||||
0.9776344F, 0.97797716F, 0.9783174F, 0.9786549F, 0.9789899F, 0.97932225F, 0.9796519F, 0.97997904F, 0.9803035F, 0.98062533F,
|
||||
0.9809446F, 0.98126113F, 0.98157513F, 0.98188645F, 0.98219514F, 0.9825012F, 0.98280466F, 0.9831055F, 0.9834037F, 0.9836992F,
|
||||
0.98399216F, 0.98428243F, 0.9845701F, 0.98485506F, 0.98513746F, 0.9854172F, 0.9856943F, 0.9859687F, 0.98624057F, 0.98650974F,
|
||||
0.9867763F, 0.98704016F, 0.9873014F, 0.98756003F, 0.987816F, 0.9880693F, 0.98832F, 0.988568F, 0.9888134F, 0.9890561F,
|
||||
0.9892962F, 0.98953366F, 0.98976845F, 0.9900006F, 0.9902301F, 0.99045694F, 0.9906811F, 0.99090266F, 0.99112153F, 0.9913377F,
|
||||
0.99155134F, 0.9917622F, 0.9919705F, 0.9921761F, 0.99237907F, 0.99257934F, 0.992777F, 0.99297196F, 0.9931643F, 0.99335396F,
|
||||
0.99354094F, 0.9937253F, 0.993907F, 0.99408597F, 0.99426234F, 0.994436F, 0.9946071F, 0.9947755F, 0.9949412F, 0.9951042F,
|
||||
0.9952646F, 0.9954223F, 0.99557734F, 0.99572974F, 0.9958795F, 0.9960265F, 0.9961709F, 0.9963126F, 0.9964517F, 0.99658805F,
|
||||
0.99672174F, 0.9968528F, 0.9969812F, 0.9971069F, 0.99722993F, 0.99735034F, 0.997468F, 0.99758303F, 0.9976954F, 0.99780506F,
|
||||
0.9979121F, 0.9980164F, 0.9981181F, 0.9982171F, 0.9983134F, 0.99840707F, 0.9984981F, 0.99858636F, 0.998672F, 0.998755F,
|
||||
0.99883527F, 0.9989129F, 0.9989878F, 0.9990601F, 0.99912965F, 0.9991966F, 0.99926084F, 0.99932235F, 0.99938124F, 0.9994375F,
|
||||
0.99949104F, 0.9995419F, 0.99959004F, 0.9996356F, 0.99967843F, 0.99971855F, 0.99975604F, 0.99979085F, 0.999823F, 0.9998524F,
|
||||
0.9998792F, 0.99990326F, 0.9999247F, 0.99994344F, 0.9999595F, 0.9999729F, 0.9999836F, 0.99999166F, 0.99999696F, 0.99999964F };
|
||||
|
||||
public static final float[] SINE_120 = new float[] {
|
||||
0.006544938F, 0.019633692F, 0.032719083F, 0.045798868F, 0.058870804F, 0.07193265F, 0.08498218F, 0.09801714F, 0.11103531F, 0.12403445F,
|
||||
0.13701235F, 0.14996676F, 0.16289547F, 0.17579629F, 0.18866697F, 0.20150532F, 0.21430916F, 0.22707626F, 0.23980446F, 0.25249156F,
|
||||
0.26513544F, 0.27773383F, 0.29028466F, 0.30278578F, 0.315235F, 0.3276302F, 0.33996925F, 0.35225004F, 0.3644705F, 0.3766285F,
|
||||
0.38872197F, 0.40074882F, 0.41270703F, 0.42459452F, 0.43640924F, 0.4481492F, 0.45981237F, 0.47139674F, 0.48290035F, 0.4943212F,
|
||||
0.5056574F, 0.5169069F, 0.5280678F, 0.5391383F, 0.5501164F, 0.5610002F, 0.57178795F, 0.5824777F, 0.59306765F, 0.6035559F,
|
||||
0.61394083F, 0.62422055F, 0.6343933F, 0.64445734F, 0.65441096F, 0.66425246F, 0.6739801F, 0.6835923F, 0.69308734F, 0.7024637F,
|
||||
0.71171963F, 0.72085357F, 0.72986406F, 0.7387495F, 0.74750835F, 0.7561391F, 0.7646403F, 0.77301043F, 0.78124815F, 0.78935206F,
|
||||
0.79732066F, 0.80515265F, 0.81284666F, 0.82040143F, 0.82781565F, 0.83508795F, 0.8422172F, 0.84920216F, 0.8560416F, 0.8627344F,
|
||||
0.8692793F, 0.8756753F, 0.8819213F, 0.8880161F, 0.8939588F, 0.89974827F, 0.90538365F, 0.9108638F, 0.91618794F, 0.9213551F,
|
||||
0.92636436F, 0.9312149F, 0.93590593F, 0.94043654F, 0.94480604F, 0.94901365F, 0.95305866F, 0.95694035F, 0.9606581F, 0.96421117F,
|
||||
0.9675991F, 0.9708212F, 0.97387695F, 0.9767659F, 0.9794874F, 0.9820411F, 0.98442656F, 0.9866433F, 0.98869103F, 0.99056935F,
|
||||
0.9922779F, 0.99381644F, 0.9951847F, 0.9963825F, 0.99740946F, 0.9982656F, 0.99895066F, 0.9994646F, 0.99980724F, 0.9999786F };
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
class FFT {
|
||||
private static final float[][] FFT_TABLE_128 = new float[][] {
|
||||
new float[] { 1.0F, -0.0F }, new float[] { 0.99879545F, -0.049067676F }, new float[] { 0.9951847F, -0.09801714F }, new float[] { 0.9891765F, -0.14673047F }, new float[] { 0.98078525F, -0.19509032F }, new float[] { 0.97003126F, -0.24298018F }, new float[] { 0.95694035F, -0.29028466F }, new float[] { 0.94154406F, -0.33688986F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.9039893F, -0.42755508F },
|
||||
new float[] { 0.8819213F, -0.47139674F }, new float[] { 0.8577286F, -0.51410276F }, new float[] { 0.8314696F, -0.55557024F }, new float[] { 0.8032075F, -0.5956993F }, new float[] { 0.77301043F, -0.6343933F }, new float[] { 0.7409511F, -0.671559F }, new float[] { 0.70710677F, -0.70710677F }, new float[] { 0.671559F, -0.7409511F }, new float[] { 0.6343933F, -0.77301043F }, new float[] { 0.5956993F, -0.8032075F },
|
||||
new float[] { 0.55557024F, -0.8314696F }, new float[] { 0.51410276F, -0.8577286F }, new float[] { 0.47139674F, -0.8819213F }, new float[] { 0.42755508F, -0.9039893F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.33688986F, -0.94154406F }, new float[] { 0.29028466F, -0.95694035F }, new float[] { 0.24298018F, -0.97003126F }, new float[] { 0.19509032F, -0.98078525F }, new float[] { 0.14673047F, -0.9891765F },
|
||||
new float[] { 0.09801714F, -0.9951847F }, new float[] { 0.049067676F, -0.99879545F }, new float[] { 6.123234E-17F, -1.0F }, new float[] { -0.049067676F, -0.99879545F }, new float[] { -0.09801714F, -0.9951847F }, new float[] { -0.14673047F, -0.9891765F }, new float[] { -0.19509032F, -0.98078525F }, new float[] { -0.24298018F, -0.97003126F }, new float[] { -0.29028466F, -0.95694035F }, new float[] { -0.33688986F, -0.94154406F },
|
||||
new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.42755508F, -0.9039893F }, new float[] { -0.47139674F, -0.8819213F }, new float[] { -0.51410276F, -0.8577286F }, new float[] { -0.55557024F, -0.8314696F }, new float[] { -0.5956993F, -0.8032075F }, new float[] { -0.6343933F, -0.77301043F }, new float[] { -0.671559F, -0.7409511F }, new float[] { -0.70710677F, -0.70710677F }, new float[] { -0.7409511F, -0.671559F },
|
||||
new float[] { -0.77301043F, -0.6343933F }, new float[] { -0.8032075F, -0.5956993F }, new float[] { -0.8314696F, -0.55557024F }, new float[] { -0.8577286F, -0.51410276F }, new float[] { -0.8819213F, -0.47139674F }, new float[] { -0.9039893F, -0.42755508F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { -0.94154406F, -0.33688986F }, new float[] { -0.95694035F, -0.29028466F }, new float[] { -0.97003126F, -0.24298018F },
|
||||
new float[] { -0.98078525F, -0.19509032F }, new float[] { -0.9891765F, -0.14673047F }, new float[] { -0.9951847F, -0.09801714F }, new float[] { -0.99879545F, -0.049067676F } };
|
||||
|
||||
private static final float[][] FFT_TABLE_16 = new float[][] { new float[] { 1.0F, -0.0F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.70710677F, -0.70710677F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 6.123234E-17F, -1.0F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.70710677F, -0.70710677F }, new float[] { -0.9238795F, -0.38268343F } };
|
||||
|
||||
static void process(float[][] _in, int n) {
|
||||
int ln = (int)Math.round(Math.log((double)n) / Math.log(2.0D));
|
||||
float[][] table = (n == 128) ? FFT_TABLE_128 : FFT_TABLE_16;
|
||||
float[][] rev = new float[n][2];
|
||||
int ii = 0;
|
||||
for (int k = 0; k < n; k++) {
|
||||
rev[k][0] = _in[ii][0];
|
||||
rev[k][1] = _in[ii][1];
|
||||
int m = n >> 1;
|
||||
while (ii >= m && m > 0) {
|
||||
ii -= m;
|
||||
m >>= 1;
|
||||
}
|
||||
ii += m;
|
||||
}
|
||||
for (int j = 0; j < n; j++) {
|
||||
_in[j][0] = rev[j][0];
|
||||
_in[j][1] = rev[j][1];
|
||||
}
|
||||
int blocks = n / 2;
|
||||
int size = 2;
|
||||
float[] a = new float[2];
|
||||
for (int i = 0; i < ln; i++) {
|
||||
int size2 = size / 2;
|
||||
int k0 = 0;
|
||||
int k1 = size2;
|
||||
for (int m = 0; m < blocks; m++) {
|
||||
int l = 0;
|
||||
for (int i1 = 0; i1 < size2; i1++) {
|
||||
a[0] = _in[k1][0] * table[l][0] - _in[k1][1] * table[l][1];
|
||||
a[1] = _in[k1][0] * table[l][1] + _in[k1][1] * table[l][0];
|
||||
_in[k1][0] = _in[k0][0] - a[0];
|
||||
_in[k1][1] = _in[k0][1] - a[1];
|
||||
_in[k0][0] = _in[k0][0] + a[0];
|
||||
_in[k0][1] = _in[k0][1] + a[1];
|
||||
l += blocks;
|
||||
k0++;
|
||||
k1++;
|
||||
}
|
||||
k0 += size2;
|
||||
k1 += size2;
|
||||
}
|
||||
blocks /= 2;
|
||||
size *= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
interface GCConstants {
|
||||
public static final int BANDS = 4;
|
||||
|
||||
public static final int MAX_CHANNELS = 5;
|
||||
|
||||
public static final int NPQFTAPS = 96;
|
||||
|
||||
public static final int NPEPARTS = 64;
|
||||
|
||||
public static final int ID_GAIN = 16;
|
||||
|
||||
public static final int[] LN_GAIN = new int[] {
|
||||
-4, -3, -2, -1, 0, 1, 2, 3, 4, 5,
|
||||
6, 7, 8, 9, 10, 11 };
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import org.jcodec.platform.Platform;
|
||||
|
||||
public class GainControl implements GCConstants {
|
||||
private final int frameLen;
|
||||
|
||||
private final int lbLong;
|
||||
|
||||
private final int lbShort;
|
||||
|
||||
private final IMDCT imdct;
|
||||
|
||||
private final IPQF ipqf;
|
||||
|
||||
private final float[] buffer1;
|
||||
|
||||
private final float[] _function;
|
||||
|
||||
private final float[][] buffer2;
|
||||
|
||||
private final float[][] overlap;
|
||||
|
||||
private int maxBand;
|
||||
|
||||
private int[][][] level;
|
||||
|
||||
private int[][][] levelPrev;
|
||||
|
||||
private int[][][] location;
|
||||
|
||||
private int[][][] locationPrev;
|
||||
|
||||
public GainControl(int frameLen) {
|
||||
this.frameLen = frameLen;
|
||||
this.lbLong = frameLen / 4;
|
||||
this.lbShort = this.lbLong / 8;
|
||||
this.imdct = new IMDCT(frameLen);
|
||||
this.ipqf = new IPQF();
|
||||
this.levelPrev = new int[0][][];
|
||||
this.locationPrev = new int[0][][];
|
||||
this.buffer1 = new float[frameLen / 2];
|
||||
this.buffer2 = new float[4][this.lbLong];
|
||||
this._function = new float[this.lbLong * 2];
|
||||
this.overlap = new float[4][this.lbLong * 2];
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in, ICSInfo.WindowSequence winSeq) throws AACException {
|
||||
int wdLen, locBits;
|
||||
this.maxBand = _in.readBits(2) + 1;
|
||||
int locBits2 = 0;
|
||||
switch (winSeq) {
|
||||
case ONLY_LONG_SEQUENCE:
|
||||
wdLen = 1;
|
||||
locBits = 5;
|
||||
locBits2 = 5;
|
||||
break;
|
||||
case EIGHT_SHORT_SEQUENCE:
|
||||
wdLen = 8;
|
||||
locBits = 2;
|
||||
locBits2 = 2;
|
||||
break;
|
||||
case LONG_START_SEQUENCE:
|
||||
wdLen = 2;
|
||||
locBits = 4;
|
||||
locBits2 = 2;
|
||||
break;
|
||||
case LONG_STOP_SEQUENCE:
|
||||
wdLen = 2;
|
||||
locBits = 4;
|
||||
locBits2 = 5;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
this.level = new int[this.maxBand][wdLen][];
|
||||
this.location = new int[this.maxBand][wdLen][];
|
||||
for (int bd = 1; bd < this.maxBand; bd++) {
|
||||
for (int wd = 0; wd < wdLen; wd++) {
|
||||
int len = _in.readBits(3);
|
||||
this.level[bd][wd] = new int[len];
|
||||
this.location[bd][wd] = new int[len];
|
||||
for (int k = 0; k < len; k++) {
|
||||
this.level[bd][wd][k] = _in.readBits(4);
|
||||
int bits = (wd == 0) ? locBits : locBits2;
|
||||
this.location[bd][wd][k] = _in.readBits(bits);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void process(float[] data, int winShape, int winShapePrev, ICSInfo.WindowSequence winSeq) throws AACException {
|
||||
this.imdct.process(data, this.buffer1, winShape, winShapePrev, winSeq);
|
||||
for (int i = 0; i < 4; i++)
|
||||
compensate(this.buffer1, this.buffer2, winSeq, i);
|
||||
this.ipqf.process(this.buffer2, this.frameLen, this.maxBand, data);
|
||||
}
|
||||
|
||||
private void compensate(float[] _in, float[][] out, ICSInfo.WindowSequence winSeq, int band) {
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.EIGHT_SHORT_SEQUENCE)) {
|
||||
for (int k = 0; k < 8; k++) {
|
||||
calculateFunctionData(this.lbShort * 2, band, winSeq, k);
|
||||
for (int m = 0; m < this.lbShort * 2; m++) {
|
||||
int a = band * this.lbLong * 2 + k * this.lbShort * 2 + m;
|
||||
_in[a] = _in[a] * this._function[m];
|
||||
}
|
||||
for (int i = 0; i < this.lbShort; i++) {
|
||||
int a = i + this.lbLong * 7 / 16 + this.lbShort * k;
|
||||
int b = band * this.lbLong * 2 + k * this.lbShort * 2 + i;
|
||||
this.overlap[band][a] = this.overlap[band][a] + _in[b];
|
||||
}
|
||||
for (int j = 0; j < this.lbShort; j++) {
|
||||
int a = j + this.lbLong * 7 / 16 + this.lbShort * (k + 1);
|
||||
int b = band * this.lbLong * 2 + k * this.lbShort * 2 + this.lbShort + j;
|
||||
this.overlap[band][a] = _in[b];
|
||||
}
|
||||
this.locationPrev[band][0] = Platform.copyOfInt(this.location[band][k], (this.location[band][k]).length);
|
||||
this.levelPrev[band][0] = Platform.copyOfInt(this.level[band][k], (this.level[band][k]).length);
|
||||
}
|
||||
System.arraycopy(this.overlap[band], 0, out[band], 0, this.lbLong);
|
||||
System.arraycopy(this.overlap[band], this.lbLong, this.overlap[band], 0, this.lbLong);
|
||||
} else {
|
||||
calculateFunctionData(this.lbLong * 2, band, winSeq, 0);
|
||||
for (int k = 0; k < this.lbLong * 2; k++)
|
||||
_in[band * this.lbLong * 2 + k] = _in[band * this.lbLong * 2 + k] * this._function[k];
|
||||
for (int i = 0; i < this.lbLong; i++)
|
||||
out[band][i] = this.overlap[band][i] + _in[band * this.lbLong * 2 + i];
|
||||
for (int j = 0; j < this.lbLong; j++)
|
||||
this.overlap[band][j] = _in[band * this.lbLong * 2 + this.lbLong + j];
|
||||
int lastBlock = winSeq.equals(ICSInfo.WindowSequence.ONLY_LONG_SEQUENCE) ? 1 : 0;
|
||||
this.locationPrev[band][0] = Platform.copyOfInt(this.location[band][lastBlock], (this.location[band][lastBlock]).length);
|
||||
this.levelPrev[band][0] = Platform.copyOfInt(this.level[band][lastBlock], (this.level[band][lastBlock]).length);
|
||||
}
|
||||
}
|
||||
|
||||
private void calculateFunctionData(int samples, int band, ICSInfo.WindowSequence winSeq, int blockID) {
|
||||
int[] locA = new int[10];
|
||||
float[] levA = new float[10];
|
||||
float[] modFunc = new float[samples];
|
||||
float[] buf1 = new float[samples / 2];
|
||||
float[] buf2 = new float[samples / 2];
|
||||
float[] buf3 = new float[samples / 2];
|
||||
int maxLocGain0 = 0, maxLocGain1 = 0, maxLocGain2 = 0;
|
||||
switch (winSeq) {
|
||||
case ONLY_LONG_SEQUENCE:
|
||||
case EIGHT_SHORT_SEQUENCE:
|
||||
maxLocGain0 = maxLocGain1 = samples / 2;
|
||||
maxLocGain2 = 0;
|
||||
break;
|
||||
case LONG_START_SEQUENCE:
|
||||
maxLocGain0 = samples / 2;
|
||||
maxLocGain1 = samples * 7 / 32;
|
||||
maxLocGain2 = samples / 16;
|
||||
break;
|
||||
case LONG_STOP_SEQUENCE:
|
||||
maxLocGain0 = samples / 16;
|
||||
maxLocGain1 = samples * 7 / 32;
|
||||
maxLocGain2 = samples / 2;
|
||||
break;
|
||||
}
|
||||
calculateFMD(band, 0, true, maxLocGain0, samples, locA, levA, buf1);
|
||||
int block = winSeq.equals(ICSInfo.WindowSequence.EIGHT_SHORT_SEQUENCE) ? blockID : 0;
|
||||
float secLevel = calculateFMD(band, block, false, maxLocGain1, samples, locA, levA, buf2);
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.LONG_START_SEQUENCE) || winSeq.equals(ICSInfo.WindowSequence.LONG_STOP_SEQUENCE))
|
||||
calculateFMD(band, 1, false, maxLocGain2, samples, locA, levA, buf3);
|
||||
int flatLen = 0;
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.LONG_STOP_SEQUENCE)) {
|
||||
flatLen = samples / 2 - maxLocGain0 - maxLocGain1;
|
||||
for (int m = 0; m < flatLen; m++)
|
||||
modFunc[m] = 1.0F;
|
||||
}
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.ONLY_LONG_SEQUENCE) || winSeq.equals(ICSInfo.WindowSequence.EIGHT_SHORT_SEQUENCE))
|
||||
levA[0] = 1.0F;
|
||||
for (int k = 0; k < maxLocGain0; k++)
|
||||
modFunc[k + flatLen] = levA[0] * secLevel * buf1[k];
|
||||
for (int j = 0; j < maxLocGain1; j++)
|
||||
modFunc[j + flatLen + maxLocGain0] = levA[0] * buf2[j];
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.LONG_START_SEQUENCE)) {
|
||||
for (int m = 0; m < maxLocGain2; m++)
|
||||
modFunc[m + maxLocGain0 + maxLocGain1] = buf3[m];
|
||||
flatLen = samples / 2 - maxLocGain1 - maxLocGain2;
|
||||
for (int n = 0; n < flatLen; n++)
|
||||
modFunc[n + maxLocGain0 + maxLocGain1 + maxLocGain2] = 1.0F;
|
||||
} else if (winSeq.equals(ICSInfo.WindowSequence.LONG_STOP_SEQUENCE)) {
|
||||
for (int m = 0; m < maxLocGain2; m++)
|
||||
modFunc[m + flatLen + maxLocGain0 + maxLocGain1] = buf3[m];
|
||||
}
|
||||
for (int i = 0; i < samples; i++)
|
||||
this._function[i] = 1.0F / modFunc[i];
|
||||
}
|
||||
|
||||
private float calculateFMD(int bd, int wd, boolean prev, int maxLocGain, int samples, int[] loc, float[] lev, float[] fmd) {
|
||||
int[] m = new int[samples / 2];
|
||||
int[] lct = prev ? this.locationPrev[bd][wd] : this.location[bd][wd];
|
||||
int[] lvl = prev ? this.levelPrev[bd][wd] : this.level[bd][wd];
|
||||
int length = lct.length;
|
||||
for (int k = 0; k < length; k++) {
|
||||
loc[k + 1] = 8 * lct[k];
|
||||
int lngain = getGainChangePointID(lvl[k]);
|
||||
if (lngain < 0) {
|
||||
lev[k + 1] = 1.0F / (float)Math.pow(2.0D, (double)-lngain);
|
||||
} else {
|
||||
lev[k + 1] = (float)Math.pow(2.0D, (double)lngain);
|
||||
}
|
||||
}
|
||||
loc[0] = 0;
|
||||
if (length == 0) {
|
||||
lev[0] = 1.0F;
|
||||
} else {
|
||||
lev[0] = lev[1];
|
||||
}
|
||||
float secLevel = lev[0];
|
||||
loc[length + 1] = maxLocGain;
|
||||
lev[length + 1] = 1.0F;
|
||||
for (int j = 0; j < maxLocGain; j++) {
|
||||
m[j] = 0;
|
||||
for (int n = 0; n <= length + 1; n++) {
|
||||
if (loc[n] <= j)
|
||||
m[j] = n;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < maxLocGain; i++) {
|
||||
if (i >= loc[m[i]] && i <= loc[m[i]] + 7) {
|
||||
fmd[i] = interpolateGain(lev[m[i]], lev[m[i] + 1], i - loc[m[i]]);
|
||||
} else {
|
||||
fmd[i] = lev[m[i] + 1];
|
||||
}
|
||||
}
|
||||
return secLevel;
|
||||
}
|
||||
|
||||
private int getGainChangePointID(int lngain) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (lngain == LN_GAIN[i])
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private float interpolateGain(float alev0, float alev1, int iloc) {
|
||||
float a0 = (float)(Math.log((double)alev0) / Math.log(2.0D));
|
||||
float a1 = (float)(Math.log((double)alev1) / Math.log(2.0D));
|
||||
return (float)Math.pow(2.0D, (double)(((float)(8 - iloc) * a0 + (float)iloc * a1) / 8.0F));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
|
||||
class IMDCT implements GCConstants, IMDCTTables, Windows {
|
||||
private static final float[][] LONG_WINDOWS = new float[][] { SINE_256, KBD_256 };
|
||||
|
||||
private static final float[][] SHORT_WINDOWS = new float[][] { SINE_32, KBD_32 };
|
||||
|
||||
private final int frameLen;
|
||||
|
||||
private final int shortFrameLen;
|
||||
|
||||
private final int lbLong;
|
||||
|
||||
private final int lbShort;
|
||||
|
||||
private final int lbMid;
|
||||
|
||||
IMDCT(int frameLen) {
|
||||
this.frameLen = frameLen;
|
||||
this.lbLong = frameLen / 4;
|
||||
this.shortFrameLen = frameLen / 8;
|
||||
this.lbShort = this.shortFrameLen / 4;
|
||||
this.lbMid = (this.lbLong - this.lbShort) / 2;
|
||||
}
|
||||
|
||||
void process(float[] _in, float[] out, int winShape, int winShapePrev, ICSInfo.WindowSequence winSeq) throws AACException {
|
||||
float[] buf = new float[this.frameLen];
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.EIGHT_SHORT_SEQUENCE)) {
|
||||
for (int b = 0; b < 4; b++) {
|
||||
for (int j = 0; j < 8; j++) {
|
||||
for (int k = 0; k < this.lbShort; k++) {
|
||||
if (b % 2 == 0) {
|
||||
buf[this.lbLong * b + this.lbShort * j + k] = _in[this.shortFrameLen * j + this.lbShort * b + k];
|
||||
} else {
|
||||
buf[this.lbLong * b + this.lbShort * j + k] = _in[this.shortFrameLen * j + this.lbShort * b + this.lbShort - 1 - k];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int b = 0; b < 4; b++) {
|
||||
for (int j = 0; j < this.lbLong; j++) {
|
||||
if (b % 2 == 0) {
|
||||
buf[this.lbLong * b + j] = _in[this.lbLong * b + j];
|
||||
} else {
|
||||
buf[this.lbLong * b + j] = _in[this.lbLong * b + this.lbLong - 1 - j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
process2(buf, out, winSeq, winShape, winShapePrev, i);
|
||||
}
|
||||
|
||||
private void process2(float[] _in, float[] out, ICSInfo.WindowSequence winSeq, int winShape, int winShapePrev, int band) throws AACException {
|
||||
int i;
|
||||
float[] bufIn = new float[this.lbLong];
|
||||
float[] bufOut = new float[this.lbLong * 2];
|
||||
float[] window = new float[this.lbLong * 2];
|
||||
float[] window1 = new float[this.lbShort * 2];
|
||||
float[] window2 = new float[this.lbShort * 2];
|
||||
switch (winSeq) {
|
||||
case ONLY_LONG_SEQUENCE:
|
||||
for (i = 0; i < this.lbLong; i++) {
|
||||
window[i] = LONG_WINDOWS[winShapePrev][i];
|
||||
window[this.lbLong * 2 - 1 - i] = LONG_WINDOWS[winShape][i];
|
||||
}
|
||||
break;
|
||||
case EIGHT_SHORT_SEQUENCE:
|
||||
for (i = 0; i < this.lbShort; i++) {
|
||||
window1[i] = SHORT_WINDOWS[winShapePrev][i];
|
||||
window1[this.lbShort * 2 - 1 - i] = SHORT_WINDOWS[winShape][i];
|
||||
window2[i] = SHORT_WINDOWS[winShape][i];
|
||||
window2[this.lbShort * 2 - 1 - i] = SHORT_WINDOWS[winShape][i];
|
||||
}
|
||||
break;
|
||||
case LONG_START_SEQUENCE:
|
||||
for (i = 0; i < this.lbLong; i++)
|
||||
window[i] = LONG_WINDOWS[winShapePrev][i];
|
||||
for (i = 0; i < this.lbMid; i++)
|
||||
window[i + this.lbLong] = 1.0F;
|
||||
for (i = 0; i < this.lbShort; i++)
|
||||
window[i + this.lbMid + this.lbLong] = SHORT_WINDOWS[winShape][this.lbShort - 1 - i];
|
||||
for (i = 0; i < this.lbMid; i++)
|
||||
window[i + this.lbMid + this.lbLong + this.lbShort] = 0.0F;
|
||||
break;
|
||||
case LONG_STOP_SEQUENCE:
|
||||
for (i = 0; i < this.lbMid; i++)
|
||||
window[i] = 0.0F;
|
||||
for (i = 0; i < this.lbShort; i++)
|
||||
window[i + this.lbMid] = SHORT_WINDOWS[winShapePrev][i];
|
||||
for (i = 0; i < this.lbMid; i++)
|
||||
window[i + this.lbMid + this.lbShort] = 1.0F;
|
||||
for (i = 0; i < this.lbLong; i++)
|
||||
window[i + this.lbMid + this.lbShort + this.lbMid] = LONG_WINDOWS[winShape][this.lbLong - 1 - i];
|
||||
break;
|
||||
}
|
||||
if (winSeq.equals(ICSInfo.WindowSequence.EIGHT_SHORT_SEQUENCE)) {
|
||||
for (int j = 0; j < 8; j++) {
|
||||
for (int m = 0; m < this.lbShort; m++)
|
||||
bufIn[m] = _in[band * this.lbLong + j * this.lbShort + m];
|
||||
if (j == 0) {
|
||||
System.arraycopy(window1, 0, window, 0, this.lbShort * 2);
|
||||
} else {
|
||||
System.arraycopy(window2, 0, window, 0, this.lbShort * 2);
|
||||
}
|
||||
imdct(bufIn, bufOut, window, this.lbShort);
|
||||
for (int k = 0; k < this.lbShort * 2; k++)
|
||||
out[band * this.lbLong * 2 + j * this.lbShort * 2 + k] = bufOut[k] / 32.0F;
|
||||
}
|
||||
} else {
|
||||
for (int k = 0; k < this.lbLong; k++)
|
||||
bufIn[k] = _in[band * this.lbLong + k];
|
||||
imdct(bufIn, bufOut, window, this.lbLong);
|
||||
for (int j = 0; j < this.lbLong * 2; j++)
|
||||
out[band * this.lbLong * 2 + j] = bufOut[j] / 256.0F;
|
||||
}
|
||||
}
|
||||
|
||||
private void imdct(float[] _in, float[] out, float[] window, int n) throws AACException {
|
||||
float[][] table, table2;
|
||||
int n2 = n / 2;
|
||||
if (n == 256) {
|
||||
table = IMDCT_TABLE_256;
|
||||
table2 = IMDCT_POST_TABLE_256;
|
||||
} else if (n == 32) {
|
||||
table = IMDCT_TABLE_32;
|
||||
table2 = IMDCT_POST_TABLE_32;
|
||||
} else {
|
||||
throw new AACException("gain control: unexpected IMDCT length");
|
||||
}
|
||||
float[] tmp = new float[n];
|
||||
for (int i3 = 0; i3 < n2; i3++)
|
||||
tmp[i3] = _in[2 * i3];
|
||||
for (int i2 = n2; i2 < n; i2++)
|
||||
tmp[i2] = -_in[2 * n - 1 - 2 * i2];
|
||||
float[][] buf = new float[n2][2];
|
||||
for (int i1 = 0; i1 < n2; i1++) {
|
||||
buf[i1][0] = table[i1][0] * tmp[2 * i1] - table[i1][1] * tmp[2 * i1 + 1];
|
||||
buf[i1][1] = table[i1][0] * tmp[2 * i1 + 1] + table[i1][1] * tmp[2 * i1];
|
||||
}
|
||||
FFT.process(buf, n2);
|
||||
for (int m = 0; m < n2; m++) {
|
||||
tmp[m] = table2[m][0] * buf[m][0] + table2[m][1] * buf[n2 - 1 - m][0] + table2[m][2] * buf[m][1] + table2[m][3] * buf[n2 - 1 - m][1];
|
||||
tmp[n - 1 - m] = table2[m][2] * buf[m][0] - table2[m][3] * buf[n2 - 1 - m][0] - table2[m][0] * buf[m][1] + table2[m][1] * buf[n2 - 1 - m][1];
|
||||
}
|
||||
System.arraycopy(tmp, n2, out, 0, n2);
|
||||
for (int k = n2; k < n * 3 / 2; k++)
|
||||
out[k] = -tmp[n * 3 / 2 - 1 - k];
|
||||
for (int j = n * 3 / 2; j < n * 2; j++)
|
||||
out[j] = -tmp[j - n * 3 / 2];
|
||||
for (int i = 0; i < n; i++)
|
||||
out[i] = out[i] * window[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
interface IMDCTTables {
|
||||
public static final float[][] IMDCT_TABLE_256 = new float[][] {
|
||||
new float[] { 1.0F, -0.0F }, new float[] { 0.9996988F, -0.024541229F }, new float[] { 0.99879545F, -0.049067676F }, new float[] { 0.99729043F, -0.07356457F }, new float[] { 0.9951847F, -0.09801714F }, new float[] { 0.99247956F, -0.12241068F }, new float[] { 0.9891765F, -0.14673047F }, new float[] { 0.98527765F, -0.1709619F }, new float[] { 0.98078525F, -0.19509032F }, new float[] { 0.9757021F, -0.21910124F },
|
||||
new float[] { 0.97003126F, -0.2429802F }, new float[] { 0.96377605F, -0.26671278F }, new float[] { 0.95694035F, -0.29028466F }, new float[] { 0.94952816F, -0.31368175F }, new float[] { 0.94154406F, -0.33688986F }, new float[] { 0.9329928F, -0.35989505F }, new float[] { 0.9238795F, -0.38268346F }, new float[] { 0.9142097F, -0.40524134F }, new float[] { 0.9039893F, -0.42755508F }, new float[] { 0.8932243F, -0.44961134F },
|
||||
new float[] { 0.88192123F, -0.47139674F }, new float[] { 0.87008697F, -0.49289823F }, new float[] { 0.8577286F, -0.51410276F }, new float[] { 0.8448536F, -0.53499764F }, new float[] { 0.8314696F, -0.55557024F }, new float[] { 0.8175848F, -0.5758082F }, new float[] { 0.8032075F, -0.5956993F }, new float[] { 0.7883464F, -0.61523163F }, new float[] { 0.77301043F, -0.63439333F }, new float[] { 0.7572088F, -0.65317285F },
|
||||
new float[] { 0.7409511F, -0.671559F }, new float[] { 0.7242471F, -0.68954057F }, new float[] { 0.70710677F, -0.70710677F }, new float[] { 0.6895405F, -0.7242471F }, new float[] { 0.6715589F, -0.7409512F }, new float[] { 0.6531728F, -0.7572089F }, new float[] { 0.6343933F, -0.77301043F }, new float[] { 0.6152316F, -0.7883464F }, new float[] { 0.5956993F, -0.8032075F }, new float[] { 0.57580817F, -0.8175848F },
|
||||
new float[] { 0.5555702F, -0.83146966F }, new float[] { 0.53499764F, -0.8448536F }, new float[] { 0.5141027F, -0.85772866F }, new float[] { 0.4928982F, -0.87008697F }, new float[] { 0.47139665F, -0.8819213F }, new float[] { 0.4496113F, -0.8932243F }, new float[] { 0.4275551F, -0.9039893F }, new float[] { 0.40524128F, -0.9142098F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.35989496F, -0.9329928F },
|
||||
new float[] { 0.33688983F, -0.94154406F }, new float[] { 0.31368166F, -0.9495282F }, new float[] { 0.29028463F, -0.95694035F }, new float[] { 0.26671275F, -0.96377605F }, new float[] { 0.24298012F, -0.97003126F }, new float[] { 0.21910122F, -0.9757021F }, new float[] { 0.19509023F, -0.9807853F }, new float[] { 0.17096186F, -0.98527765F }, new float[] { 0.1467305F, -0.9891765F }, new float[] { 0.122410625F, -0.99247956F },
|
||||
new float[] { 0.098017134F, -0.9951847F }, new float[] { 0.07356449F, -0.99729043F }, new float[] { 0.04906765F, -0.99879545F }, new float[] { 0.024541136F, -0.9996988F }, new float[] { -4.371139E-8F, -1.0F }, new float[] { -0.024541223F, -0.9996988F }, new float[] { -0.04906774F, -0.99879545F }, new float[] { -0.073564574F, -0.99729043F }, new float[] { -0.09801722F, -0.9951847F }, new float[] { -0.12241071F, -0.9924795F },
|
||||
new float[] { -0.14673057F, -0.9891765F }, new float[] { -0.17096195F, -0.98527765F }, new float[] { -0.19509032F, -0.98078525F }, new float[] { -0.21910131F, -0.9757021F }, new float[] { -0.2429802F, -0.97003126F }, new float[] { -0.26671284F, -0.96377605F }, new float[] { -0.29028472F, -0.9569403F }, new float[] { -0.31368172F, -0.94952816F }, new float[] { -0.33688992F, -0.94154406F }, new float[] { -0.35989505F, -0.9329928F },
|
||||
new float[] { -0.38268352F, -0.9238795F }, new float[] { -0.40524134F, -0.9142097F }, new float[] { -0.42755508F, -0.9039893F }, new float[] { -0.44961137F, -0.8932243F }, new float[] { -0.47139683F, -0.88192123F }, new float[] { -0.49289817F, -0.870087F }, new float[] { -0.51410276F, -0.8577286F }, new float[] { -0.5349977F, -0.8448535F }, new float[] { -0.55557036F, -0.83146954F }, new float[] { -0.57580817F, -0.8175848F },
|
||||
new float[] { -0.59569937F, -0.8032075F }, new float[] { -0.6152317F, -0.78834635F }, new float[] { -0.6343933F, -0.7730105F }, new float[] { -0.65317285F, -0.7572088F }, new float[] { -0.67155904F, -0.74095106F }, new float[] { -0.6895407F, -0.724247F }, new float[] { -0.70710677F, -0.70710677F }, new float[] { -0.72424716F, -0.6895405F }, new float[] { -0.74095124F, -0.67155886F }, new float[] { -0.7572088F, -0.65317285F },
|
||||
new float[] { -0.7730105F, -0.6343933F }, new float[] { -0.78834647F, -0.6152315F }, new float[] { -0.80320764F, -0.59569913F }, new float[] { -0.8175848F, -0.57580817F }, new float[] { -0.83146966F, -0.5555702F }, new float[] { -0.84485364F, -0.53499746F }, new float[] { -0.8577286F, -0.51410276F }, new float[] { -0.870087F, -0.49289814F }, new float[] { -0.88192135F, -0.47139663F }, new float[] { -0.8932243F, -0.44961137F },
|
||||
new float[] { -0.9039893F, -0.42755505F }, new float[] { -0.9142098F, -0.40524122F }, new float[] { -0.9238796F, -0.38268328F }, new float[] { -0.9329928F, -0.35989505F }, new float[] { -0.9415441F, -0.3368898F }, new float[] { -0.9495282F, -0.3136816F }, new float[] { -0.95694035F, -0.29028472F }, new float[] { -0.96377605F, -0.26671273F }, new float[] { -0.97003126F, -0.24298008F }, new float[] { -0.97570217F, -0.21910107F },
|
||||
new float[] { -0.9807853F, -0.19509031F }, new float[] { -0.98527765F, -0.17096181F }, new float[] { -0.9891765F, -0.14673033F }, new float[] { -0.9924795F, -0.1224107F }, new float[] { -0.9951847F, -0.0980171F }, new float[] { -0.9972905F, -0.07356445F }, new float[] { -0.99879545F, -0.049067486F }, new float[] { -0.9996988F, -0.02454121F } };
|
||||
|
||||
public static final float[][] IMDCT_TABLE_32 = new float[][] {
|
||||
new float[] { 1.0F, -0.0F }, new float[] { 0.98078525F, -0.19509032F }, new float[] { 0.9238795F, -0.38268346F }, new float[] { 0.8314696F, -0.55557024F }, new float[] { 0.70710677F, -0.70710677F }, new float[] { 0.5555702F, -0.83146966F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.19509023F, -0.9807853F }, new float[] { -4.371139E-8F, -1.0F }, new float[] { -0.19509032F, -0.98078525F },
|
||||
new float[] { -0.38268352F, -0.9238795F }, new float[] { -0.55557036F, -0.83146954F }, new float[] { -0.70710677F, -0.70710677F }, new float[] { -0.83146966F, -0.5555702F }, new float[] { -0.9238796F, -0.38268328F }, new float[] { -0.9807853F, -0.19509031F } };
|
||||
|
||||
public static final float[][] IMDCT_POST_TABLE_256 = new float[][] {
|
||||
new float[] { 0.49232805F, 0.50766724F, 0.50147516F, 0.49840719F }, new float[] { 0.47697723F, 0.5229804F, 0.50407255F, 0.4948688F }, new float[] { 0.46162924F, 0.5382531F, 0.50619966F, 0.49086043F }, new float[] { 0.44629848F, 0.5534709F, 0.50785726F, 0.4863832F }, new float[] { 0.43099934F, 0.5686195F, 0.5090466F, 0.48143846F }, new float[] { 0.41574615F, 0.58368444F, 0.5097693F, 0.47602817F }, new float[] { 0.40055317F, 0.5986516F, 0.5100275F, 0.47015458F }, new float[] { 0.38543463F, 0.6135067F, 0.50982374F, 0.46382055F }, new float[] { 0.37040454F, 0.6282357F, 0.5091608F, 0.45702913F }, new float[] { 0.35547704F, 0.64282453F, 0.50804234F, 0.4497841F },
|
||||
new float[] { 0.34066594F, 0.65725935F, 0.506472F, 0.44208938F }, new float[] { 0.32598507F, 0.6715264F, 0.5044541F, 0.43394947F }, new float[] { 0.31144798F, 0.6856121F, 0.5019932F, 0.42536932F }, new float[] { 0.29706824F, 0.6995029F, 0.4990945F, 0.41635424F }, new float[] { 0.2828591F, 0.7131856F, 0.49576342F, 0.40690988F }, new float[] { 0.26883373F, 0.726647F, 0.4920059F, 0.39704242F }, new float[] { 0.25500503F, 0.73987424F, 0.48782825F, 0.3867584F }, new float[] { 0.24138579F, 0.7528547F, 0.48323712F, 0.3760647F }, new float[] { 0.22798851F, 0.76557565F, 0.4782396F, 0.36496866F }, new float[] { 0.21482554F, 0.7780249F, 0.47284314F, 0.35347793F },
|
||||
new float[] { 0.20190886F, 0.79019046F, 0.46705556F, 0.3416006F }, new float[] { 0.18925038F, 0.8020605F, 0.4608851F, 0.3293451F }, new float[] { 0.17686158F, 0.8136235F, 0.45434028F, 0.3167202F }, new float[] { 0.16475382F, 0.8248682F, 0.44743007F, 0.30373502F }, new float[] { 0.15293804F, 0.8357836F, 0.44016364F, 0.2903991F }, new float[] { 0.14142501F, 0.84635913F, 0.4325506F, 0.2767222F }, new float[] { 0.13022512F, 0.85658425F, 0.42460087F, 0.26271448F }, new float[] { 0.11934847F, 0.86644906F, 0.41632465F, 0.24838635F }, new float[] { 0.10880476F, 0.8759437F, 0.40773243F, 0.23374856F }, new float[] { 0.09860358F, 0.8850589F, 0.39883506F, 0.21881217F },
|
||||
new float[] { 0.08875397F, 0.89378536F, 0.38964373F, 0.20358856F }, new float[] { 0.0792647F, 0.9021145F, 0.38016963F, 0.18808924F }, new float[] { 0.07014418F, 0.91003793F, 0.37042463F, 0.1723262F }, new float[] { 0.061400414F, 0.91754776F, 0.36042035F, 0.1563114F }, new float[] { 0.05304113F, 0.92463624F, 0.35016915F, 0.14005733F }, new float[] { 0.0450736F, 0.9312961F, 0.3396833F, 0.12357649F }, new float[] { 0.037504703F, 0.9375206F, 0.32897532F, 0.106881686F }, new float[] { 0.03034103F, 0.9433032F, 0.3180581F, 0.08998602F }, new float[] { 0.023588628F, 0.94863784F, 0.30694458F, 0.07290262F }, new float[] { 0.01725325F, 0.95351887F, 0.29564792F, 0.055644885F },
|
||||
new float[] { 0.011340171F, 0.95794106F, 0.28418133F, 0.038226277F }, new float[] { 0.005854279F, 0.9618995F, 0.27255845F, 0.020660654F }, new float[] { 8.0010295E-4F, 0.96538985F, 0.26079288F, 0.0029617846F }, new float[] { -0.003818363F, 0.9684081F, 0.24889828F, -0.014856413F }, new float[] { -0.007997453F, 0.9709507F, 0.23688862F, -0.0327797F }, new float[] { -0.011734039F, 0.9730145F, 0.22477779F, -0.050794043F }, new float[] { -0.015025228F, 0.97459674F, 0.21258F, -0.06888495F }, new float[] { -0.017868847F, 0.97569525F, 0.20030917F, -0.08703829F }, new float[] { -0.020262927F, 0.9763082F, 0.1879797F, -0.10523948F }, new float[] { -0.022206068F, 0.9764342F, 0.17560576F, -0.12347408F },
|
||||
new float[] { -0.023697197F, 0.9760722F, 0.16320162F, -0.14172764F }, new float[] { -0.024735779F, 0.9752219F, 0.15078172F, -0.15998542F }, new float[] { -0.025321692F, 0.97388303F, 0.13836022F, -0.17823319F }, new float[] { -0.025455266F, 0.97205615F, 0.12595156F, -0.19645613F }, new float[] { -0.025137246F, 0.96974206F, 0.113570005F, -0.21463984F }, new float[] { -0.024368823F, 0.966942F, 0.10122979F, -0.23276988F }, new float[] { -0.023151666F, 0.96365774F, 0.088945225F, -0.25083166F }, new float[] { -0.021487802F, 0.9598913F, 0.07673041F, -0.26881093F }, new float[] { -0.019379854F, 0.9556455F, 0.06459953F, -0.28669322F }, new float[] { -0.016830623F, 0.95092314F, 0.0525665F, -0.3044645F },
|
||||
new float[] { -0.013843596F, 0.9457279F, 0.04064539F, -0.32211035F }, new float[] { -0.010422587F, 0.9400635F, 0.02884984F, -0.33961698F }, new float[] { -0.0065717697F, 0.9339343F, 0.017193556F, -0.35697052F }, new float[] { -0.002295822F, 0.92734504F, 0.0056901723F, -0.374157F }, new float[] { 0.0024001896F, 0.92030096F, -0.0056470186F, -0.3911631F }, new float[] { 0.0075107515F, 0.91280746F, -0.016804636F, -0.40797502F }, new float[] { 0.013030022F, 0.90487075F, -0.027769819F, -0.4245798F }, new float[] { 0.018951744F, 0.896497F, -0.038529605F, -0.44096428F }, new float[] { 0.025269121F, 0.88769305F, -0.049071252F, -0.4571154F }, new float[] { 0.03197518F, 0.8784661F, -0.059382424F, -0.47302073F },
|
||||
new float[] { 0.03906241F, 0.86882365F, -0.06945078F, -0.48866767F }, new float[] { 0.046523094F, 0.85877365F, -0.07926449F, -0.5040442F }, new float[] { 0.054348946F, 0.84832436F, -0.08881168F, -0.51913816F }, new float[] { 0.06253144F, 0.8374845F, -0.09808087F, -0.533938F }, new float[] { 0.07106161F, 0.82626295F, -0.107060805F, -0.5484321F }, new float[] { 0.079930276F, 0.81466925F, -0.11574057F, -0.56260943F }, new float[] { 0.0891279F, 0.8027128F, -0.124109596F, -0.57645917F }, new float[] { 0.098644555F, 0.7904038F, -0.13215744F, -0.58997077F }, new float[] { 0.10847002F, 0.7777525F, -0.13987413F, -0.6031339F }, new float[] { 0.11859363F, 0.7647697F, -0.14724979F, -0.61593866F },
|
||||
new float[] { 0.12900484F, 0.75146604F, -0.15427522F, -0.6283754F }, new float[] { 0.13969228F, 0.73785305F, -0.16094121F, -0.640435F }, new float[] { 0.15064475F, 0.7239419F, -0.16723916F, -0.65210843F }, new float[] { 0.16185057F, 0.7097445F, -0.17316064F, -0.6633872F }, new float[] { 0.1732978F, 0.6952729F, -0.1786977F, -0.674263F }, new float[] { 0.18497421F, 0.6805394F, -0.18384269F, -0.684728F }, new float[] { 0.19686763F, 0.6655563F, -0.18858838F, -0.69477504F }, new float[] { 0.20896536F, 0.65033644F, -0.1929279F, -0.7043968F }, new float[] { 0.22125456F, 0.6348928F, -0.19685477F, -0.71358657F }, new float[] { 0.23372234F, 0.61923826F, -0.20036295F, -0.7223382F },
|
||||
new float[] { 0.24635552F, 0.6033862F, -0.20344675F, -0.7306459F }, new float[] { 0.2591407F, 0.58735025F, -0.20610088F, -0.73850405F }, new float[] { 0.27206418F, 0.5711441F, -0.2083205F, -0.7459076F }, new float[] { 0.28511274F, 0.554781F, -0.21010125F, -0.752852F }, new float[] { 0.2982724F, 0.5382753F, -0.21143904F, -0.75933313F }, new float[] { 0.31152916F, 0.521641F, -0.21233031F, -0.765347F }, new float[] { 0.3248692F, 0.50489205F, -0.21277195F, -0.7708905F }, new float[] { 0.33827832F, 0.48804274F, -0.2127612F, -0.77596056F }, new float[] { 0.3517424F, 0.47110736F, -0.21229571F, -0.7805547F }, new float[] { 0.365247F, 0.4541005F, -0.21137378F, -0.78467095F },
|
||||
new float[] { 0.37877813F, 0.43703625F, -0.20999387F, -0.78830767F }, new float[] { 0.39232132F, 0.41992924F, -0.20815507F, -0.79146373F }, new float[] { 0.40586197F, 0.40279418F, -0.20585686F, -0.79413843F }, new float[] { 0.4193862F, 0.3856451F, -0.20309913F, -0.79633147F }, new float[] { 0.43287942F, 0.36849675F, -0.19988227F, -0.798043F }, new float[] { 0.4463272F, 0.3513636F, -0.19620705F, -0.79927367F }, new float[] { 0.45971522F, 0.33426026F, -0.19207478F, -0.80002457F }, new float[] { 0.47302932F, 0.3172009F, -0.18748704F, -0.80029714F }, new float[] { 0.48625526F, 0.30019996F, -0.18244597F, -0.8000933F }, new float[] { 0.49937868F, 0.2832719F, -0.17695424F, -0.79941547F },
|
||||
new float[] { 0.51238585F, 0.2664307F, -0.1710147F, -0.79826653F }, new float[] { 0.52526253F, 0.24969055F, -0.16463086F, -0.7966496F }, new float[] { 0.53799486F, 0.23306563F, -0.15780658F, -0.7945684F }, new float[] { 0.5505693F, 0.21656957F, -0.15054607F, -0.7920271F }, new float[] { 0.5629722F, 0.20021626F, -0.14285406F, -0.7890301F }, new float[] { 0.5751899F, 0.18401925F, -0.13473573F, -0.7855824F }, new float[] { 0.5872092F, 0.1679922F, -0.12619662F, -0.78168947F }, new float[] { 0.599017F, 0.15214804F, -0.117242515F, -0.77735686F }, new float[] { 0.61060053F, 0.13650006F, -0.10787988F, -0.7725909F }, new float[] { 0.62194663F, 0.121061325F, -0.09811556F, -0.7673981F },
|
||||
new float[] { 0.6330432F, 0.10584408F, -0.08795637F, -0.7617854F }, new float[] { 0.64387786F, 0.09086105F, -0.07741001F, -0.7557601F }, new float[] { 0.6544384F, 0.0761244F, -0.06648436F, -0.7493299F }, new float[] { 0.6647129F, 0.061646253F, -0.055187732F, -0.74250305F }, new float[] { 0.67469F, 0.047438115F, -0.043528587F, -0.7352879F }, new float[] { 0.6843584F, 0.03351158F, -0.031515926F, -0.7276931F }, new float[] { 0.693707F, 0.01987794F, -0.019159257F, -0.71972805F }, new float[] { 0.70272505F, 0.006547779F, -0.0064679384F, -0.711402F } };
|
||||
|
||||
public static final float[][] IMDCT_POST_TABLE_32 = new float[][] {
|
||||
new float[] { 0.43864408F, 0.56105477F, 0.5085104F, 0.48396915F }, new float[] { 0.3186977F, 0.67859274F, 0.5032787F, 0.4297141F }, new float[] { 0.20833567F, 0.7841439F, 0.46999773F, 0.34758708F }, new float[] { 0.114034384F, 0.87124324F, 0.41206735F, 0.24110544F }, new float[] { 0.041238904F, 0.9344632F, 0.33435628F, 0.115255035F }, new float[] { -0.0059630573F, 0.9697391F, 0.24290696F, -0.023805834F }, new float[] { -0.02508533F, 0.9746135F, 0.14457026F, -0.16911149F }, new float[] { -0.015391618F, 0.9483844F, 0.046591163F, -0.3133039F }, new float[] { 0.022061408F, 0.8921483F, -0.043828517F, -0.44906986F }, new float[] { 0.0844886F, 0.8087357F, -0.119964585F, -0.5695759F },
|
||||
new float[] { 0.16754475F, 0.7025422F, -0.1759777F, -0.66887593F }, new float[] { 0.26558587F, 0.57926774F, -0.20726526F, -0.7422629F }, new float[] { 0.37201017F, 0.44557464F, -0.21074113F, -0.7865493F }, new float[] { 0.4796542F, 0.30869222F, -0.18502301F, -0.80025464F }, new float[] { 0.5812251F, 0.17598371F, -0.13051844F, -0.7836913F }, new float[] { 0.66973937F, 0.054507732F, -0.049402922F, -0.73894346F } };
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
class IPQF implements GCConstants, PQFTables {
|
||||
private final float[] buf = new float[4];
|
||||
|
||||
private final float[][] tmp1 = new float[2][24];
|
||||
|
||||
private final float[][] tmp2 = new float[2][24];
|
||||
|
||||
void process(float[][] _in, int frameLen, int maxBand, float[] out) {
|
||||
for (int j = 0; j < frameLen; j++)
|
||||
out[j] = 0.0F;
|
||||
for (int i = 0; i < frameLen / 4; i++) {
|
||||
for (int k = 0; k < 4; k++)
|
||||
this.buf[k] = _in[k][i];
|
||||
performSynthesis(this.buf, out, i * 4);
|
||||
}
|
||||
}
|
||||
|
||||
private void performSynthesis(float[] _in, float[] out, int outOff) {
|
||||
int kk = 12;
|
||||
for (int j = 0; j < 2; j++) {
|
||||
for (int k = 0; k < 23; k++) {
|
||||
this.tmp1[j][k] = this.tmp1[j][k + 1];
|
||||
this.tmp2[j][k] = this.tmp2[j][k + 1];
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 2; i++) {
|
||||
float acc = 0.0F;
|
||||
for (int m = 0; m < 4; m++)
|
||||
acc += COEFS_Q0[i][m] * _in[m];
|
||||
this.tmp1[i][23] = acc;
|
||||
acc = 0.0F;
|
||||
for (int k = 0; k < 4; k++)
|
||||
acc += COEFS_Q1[i][k] * _in[k];
|
||||
this.tmp2[i][23] = acc;
|
||||
}
|
||||
for (int n = 0; n < 2; n++) {
|
||||
float acc = 0.0F;
|
||||
for (int i2 = 0; i2 < 12; i2++)
|
||||
acc += COEFS_T0[n][i2] * this.tmp1[n][23 - 2 * i2];
|
||||
for (int i1 = 0; i1 < 12; i1++)
|
||||
acc += COEFS_T1[n][i1] * this.tmp2[n][22 - 2 * i1];
|
||||
out[outOff + n] = acc;
|
||||
acc = 0.0F;
|
||||
for (int m = 0; m < 12; m++)
|
||||
acc += COEFS_T0[3 - n][m] * this.tmp1[n][23 - 2 * m];
|
||||
for (int k = 0; k < 12; k++)
|
||||
acc -= COEFS_T1[3 - n][k] * this.tmp2[n][22 - 2 * k];
|
||||
out[outOff + 4 - 1 - n] = acc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
interface PQFTables {
|
||||
public static final float[] PROTO_TABLE = new float[] {
|
||||
1.2206911E-5F, 1.7261988E-5F, 1.2300094E-5F, -1.0833943E-5F, -5.77725E-5F, -1.2764768E-4F, -2.0965187E-4F, -2.8166673E-4F, -3.123486E-4F, -2.673852E-4F,
|
||||
-1.19494245E-4F, 1.396514E-4F, 4.886414E-4F, 8.7044627E-4F, 0.001194943F, 0.0013519708F, 0.0012346314F, 7.695321E-4F, -5.2242434E-5F, -0.0011516092F,
|
||||
-0.002353847F, -0.0034033123F, -0.004002855F, -0.0038745415F, -0.0028321072F, -8.503889E-4F, 0.0018856751F, 0.004968874F, 0.0078056706F, 0.0097027905F,
|
||||
0.009996043F, 0.008201936F, 0.0041642073F, -0.0018364454F, -0.0090384865F, -0.016241528F, -0.021939551F, -0.02453318F, -0.022591664F, -0.015122066F,
|
||||
-0.0017971713F, 0.016903413F, 0.039672315F, 0.064487524F, 0.08885003F, 0.11011329F, 0.12585402F, 0.13422394F, 0.13422394F, 0.12585402F,
|
||||
0.11011329F, 0.08885003F, 0.064487524F, 0.039672315F, 0.016903413F, -0.0017971713F, -0.015122066F, -0.022591664F, -0.02453318F, -0.021939551F,
|
||||
-0.016241528F, -0.0090384865F, -0.0018364454F, 0.0041642073F, 0.008201936F, 0.009996043F, 0.0097027905F, 0.0078056706F, 0.004968874F, 0.0018856751F,
|
||||
-8.503889E-4F, -0.0028321072F, -0.0038745415F, -0.004002855F, -0.0034033123F, -0.002353847F, -0.0011516092F, -5.2242434E-5F, 7.695321E-4F, 0.0012346314F,
|
||||
0.0013519708F, 0.001194943F, 8.7044627E-4F, 4.886414E-4F, 1.396514E-4F, -1.19494245E-4F, -2.673852E-4F, -3.123486E-4F, -2.8166673E-4F, -2.0965187E-4F,
|
||||
-1.2764768E-4F, -5.77725E-5F, -1.0833943E-5F, 1.2300094E-5F, 1.7261988E-5F, 1.2206911E-5F };
|
||||
|
||||
public static final float[][] COEFS_Q0 = new float[][] { new float[] { 1.6629392F, -0.39018065F, -1.9615706F, -1.11114F }, new float[] { 1.9615705F, 1.6629392F, 1.1111404F, 0.39018047F }, new float[] { 1.9615705F, 1.6629392F, 1.1111404F, 0.39018047F }, new float[] { 1.6629392F, -0.39018065F, -1.9615706F, -1.11114F } };
|
||||
|
||||
public static final float[][] COEFS_Q1 = new float[][] { new float[] { 1.1111404F, -1.9615706F, 0.39018083F, 1.6629387F }, new float[] { 0.39018047F, -1.11114F, 1.6629387F, -1.9615704F }, new float[] { -0.39018065F, 1.1111408F, -1.6629395F, 1.9615709F }, new float[] { -1.1111407F, 1.9615705F, -0.39018044F, -1.6629392F } };
|
||||
|
||||
public static final float[][] COEFS_T0 = new float[][] { new float[] {
|
||||
4.8827646E-5F, 0.0012493944F, 0.0049385256F, 0.011328429F, 0.016656829F, 0.0071886852F, 0.53689575F, 0.060488265F, 0.032807745F, 0.015498166F,
|
||||
0.0054078833F, 0.0011266669F }, new float[] {
|
||||
6.904795E-5F, 0.0010695409F, 0.0030781284F, 0.0034015556F, -0.0073457817F, -0.067613654F, 0.50341606F, 0.090366654F, 0.03998417F, 0.01601142F,
|
||||
0.004779772F, 8.386075E-4F }, new float[] {
|
||||
4.9200375E-5F, 4.7797698E-4F, -2.0896974E-4F, -0.0075427005F, -0.036153946F, -0.15868926F, 0.44045317F, 0.09813272F, 0.038811162F, 0.013613249F,
|
||||
0.003481785F, 5.1059073E-4F }, new float[] {
|
||||
-4.333577E-5F, -5.586056E-4F, -0.004606437F, -0.019875497F, -0.06496611F, -0.2579501F, 0.35540012F, 0.087758206F, 0.031222682F, 0.009415388F,
|
||||
0.0019545655F, 2.3109E-4F } };
|
||||
|
||||
public static final float[][] COEFS_T1 = new float[][] { new float[] {
|
||||
-2.3109E-4F, -0.0019545655F, -0.009415388F, -0.031222682F, -0.087758206F, -0.35540012F, 0.2579501F, 0.06496611F, 0.019875497F, 0.004606437F,
|
||||
5.586056E-4F, 4.333577E-5F }, new float[] {
|
||||
-5.1059073E-4F, -0.003481785F, -0.013613249F, -0.038811162F, -0.09813272F, -0.44045317F, 0.15868926F, 0.036153946F, 0.0075427005F, 2.0896974E-4F,
|
||||
-4.7797698E-4F, -4.9200375E-5F }, new float[] {
|
||||
-8.386075E-4F, -0.004779772F, -0.01601142F, -0.03998417F, -0.090366654F, -0.50341606F, 0.067613654F, 0.0073457817F, -0.0034015556F, -0.0030781284F,
|
||||
-0.0010695409F, -6.904795E-5F }, new float[] {
|
||||
-0.0011266669F, -0.0054078833F, -0.015498166F, -0.032807745F, -0.060488265F, -0.53689575F, -0.0071886852F, -0.016656829F, -0.011328429F, -0.0049385256F,
|
||||
-0.0012493944F, -4.8827646E-5F } };
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package net.sourceforge.jaad.aac.gain;
|
||||
|
||||
interface Windows {
|
||||
public static final float[] SINE_256 = new float[] {
|
||||
0.0030679568F, 0.009203754F, 0.015339206F, 0.02147408F, 0.027608145F, 0.033741172F, 0.039872926F, 0.04600318F, 0.052131705F, 0.058258265F,
|
||||
0.06438263F, 0.070504576F, 0.076623864F, 0.08274026F, 0.08885355F, 0.0949635F, 0.10106986F, 0.10717242F, 0.11327095F, 0.119365215F,
|
||||
0.12545498F, 0.13154003F, 0.13762012F, 0.14369503F, 0.14976454F, 0.1558284F, 0.1618864F, 0.16793829F, 0.17398387F, 0.1800229F,
|
||||
0.18605515F, 0.1920804F, 0.1980984F, 0.20410897F, 0.21011184F, 0.2161068F, 0.22209363F, 0.22807208F, 0.23404196F, 0.24000302F,
|
||||
0.24595505F, 0.2518978F, 0.2578311F, 0.26375467F, 0.2696683F, 0.27557182F, 0.28146493F, 0.28734747F, 0.29321915F, 0.29907984F,
|
||||
0.30492923F, 0.31076714F, 0.31659338F, 0.3224077F, 0.32820985F, 0.33399966F, 0.33977687F, 0.34554133F, 0.35129276F, 0.35703096F,
|
||||
0.36275572F, 0.36846682F, 0.37416407F, 0.3798472F, 0.38551605F, 0.39117038F, 0.39681F, 0.40243465F, 0.40804416F, 0.41363832F,
|
||||
0.4192169F, 0.42477968F, 0.4303265F, 0.4358571F, 0.44137126F, 0.44686884F, 0.45234957F, 0.4578133F, 0.4632598F, 0.46868882F,
|
||||
0.4741002F, 0.47949377F, 0.48486924F, 0.49022648F, 0.49556527F, 0.50088537F, 0.50618666F, 0.5114688F, 0.5167318F, 0.5219753F,
|
||||
0.52719915F, 0.5324031F, 0.53758705F, 0.5427508F, 0.54789406F, 0.5530167F, 0.5581185F, 0.56319934F, 0.56825894F, 0.57329714F,
|
||||
0.57831377F, 0.58330864F, 0.5882816F, 0.5932323F, 0.5981607F, 0.6030666F, 0.6079498F, 0.6128101F, 0.6176473F, 0.62246126F,
|
||||
0.6272518F, 0.63201874F, 0.63676184F, 0.64148104F, 0.64617604F, 0.65084666F, 0.65549284F, 0.66011435F, 0.664711F, 0.6692826F,
|
||||
0.673829F, 0.67835003F, 0.68284553F, 0.68731534F, 0.6917592F, 0.6961771F, 0.7005688F, 0.70493406F, 0.7092728F, 0.71358484F,
|
||||
0.71787006F, 0.7221282F, 0.7263591F, 0.73056275F, 0.7347389F, 0.7388873F, 0.74300796F, 0.7471006F, 0.75116515F, 0.7552014F,
|
||||
0.7592092F, 0.7631884F, 0.7671389F, 0.7710605F, 0.7749531F, 0.7788165F, 0.7826506F, 0.7864552F, 0.7902302F, 0.7939755F,
|
||||
0.79769087F, 0.80137616F, 0.80503136F, 0.80865616F, 0.8122506F, 0.81581444F, 0.8193475F, 0.8228498F, 0.82632107F, 0.8297612F,
|
||||
0.8331702F, 0.83654773F, 0.8398938F, 0.84320825F, 0.8464909F, 0.84974176F, 0.8529606F, 0.85614735F, 0.8593018F, 0.86242396F,
|
||||
0.8655136F, 0.8685707F, 0.8715951F, 0.87458664F, 0.8775453F, 0.8804709F, 0.88336337F, 0.88622254F, 0.88904834F, 0.8918407F,
|
||||
0.8945995F, 0.89732456F, 0.9000159F, 0.9026733F, 0.90529674F, 0.9078861F, 0.9104413F, 0.9129622F, 0.9154487F, 0.9179008F,
|
||||
0.9203183F, 0.9227011F, 0.92504925F, 0.9273625F, 0.9296409F, 0.9318843F, 0.9340925F, 0.93626565F, 0.93840355F, 0.94050604F,
|
||||
0.9425732F, 0.9446048F, 0.9466009F, 0.9485614F, 0.95048606F, 0.952375F, 0.9542281F, 0.95604527F, 0.95782644F, 0.95957154F,
|
||||
0.96128047F, 0.96295327F, 0.9645898F, 0.96619F, 0.9677538F, 0.96928126F, 0.97077215F, 0.9722265F, 0.97364426F, 0.97502536F,
|
||||
0.97636974F, 0.97767735F, 0.9789482F, 0.9801821F, 0.9813792F, 0.9825393F, 0.9836624F, 0.9847485F, 0.9857975F, 0.9868094F,
|
||||
0.98778415F, 0.98872167F, 0.989622F, 0.9904851F, 0.99131083F, 0.9920993F, 0.9928504F, 0.9935641F, 0.99424046F, 0.9948793F,
|
||||
0.9954808F, 0.9960447F, 0.9965711F, 0.99706006F, 0.99751145F, 0.9979253F, 0.99830157F, 0.99864024F, 0.9989413F, 0.99920475F,
|
||||
0.9994306F, 0.9996188F, 0.9997694F, 0.99988234F, 0.9999576F, 0.9999953F };
|
||||
|
||||
public static final float[] SINE_32 = new float[] {
|
||||
0.024541229F, 0.07356457F, 0.12241068F, 0.17096189F, 0.21910124F, 0.26671275F, 0.31368175F, 0.35989505F, 0.4052413F, 0.44961134F,
|
||||
0.4928982F, 0.53499764F, 0.57580817F, 0.6152316F, 0.65317285F, 0.68954057F, 0.7242471F, 0.7572088F, 0.7883464F, 0.8175848F,
|
||||
0.8448536F, 0.87008697F, 0.8932243F, 0.9142098F, 0.9329928F, 0.94952816F, 0.96377605F, 0.9757021F, 0.98527765F, 0.99247956F,
|
||||
0.99729043F, 0.9996988F };
|
||||
|
||||
public static final float[] KBD_256 = new float[] {
|
||||
5.85123E-4F, 9.6421497E-4F, 0.0013558208F, 0.001777185F, 0.0022352533F, 0.00273423F, 0.0032773002F, 0.0038671999F, 0.0045064446F, 0.0051974338F,
|
||||
0.005942505F, 0.00674396F, 0.007604081F, 0.008525138F, 0.009509392F, 0.010559099F, 0.011676508F, 0.012863862F, 0.014123397F, 0.015457335F,
|
||||
0.01686789F, 0.018357255F, 0.019927613F, 0.02158112F, 0.023319913F, 0.0251461F, 0.027061762F, 0.029068947F, 0.031169666F, 0.03336589F,
|
||||
0.035659555F, 0.038052544F, 0.040546697F, 0.043143805F, 0.045845594F, 0.048653748F, 0.05156988F, 0.054595537F, 0.057732213F, 0.060981322F,
|
||||
0.06434421F, 0.06782214F, 0.07141632F, 0.07512784F, 0.07895775F, 0.082906984F, 0.086976394F, 0.09116676F, 0.095478736F, 0.09991292F,
|
||||
0.10446978F, 0.10914971F, 0.11395299F, 0.118879795F, 0.123930216F, 0.12910421F, 0.13440166F, 0.13982232F, 0.14536583F, 0.15103175F,
|
||||
0.1568195F, 0.16272838F, 0.16875762F, 0.17490631F, 0.18117344F, 0.18755788F, 0.19405837F, 0.20067358F, 0.20740204F, 0.21424216F,
|
||||
0.22119227F, 0.22825058F, 0.23541516F, 0.242684F, 0.25005502F, 0.25752598F, 0.26509452F, 0.27275825F, 0.28051463F, 0.28836104F,
|
||||
0.29629478F, 0.304313F, 0.31241283F, 0.32059127F, 0.32884523F, 0.33717158F, 0.34556705F, 0.35402837F, 0.3625521F, 0.37113485F,
|
||||
0.37977302F, 0.38846308F, 0.3972014F, 0.40598422F, 0.41480786F, 0.42366847F, 0.43256226F, 0.4414853F, 0.4504337F, 0.4594035F,
|
||||
0.46839076F, 0.47739145F, 0.4864016F, 0.49541712F, 0.50443405F, 0.5134483F, 0.5224558F, 0.5314526F, 0.54043466F, 0.5493979F,
|
||||
0.5583384F, 0.56725216F, 0.5761352F, 0.58498365F, 0.59379363F, 0.6025613F, 0.6112828F, 0.6199545F, 0.62857264F, 0.6371336F,
|
||||
0.6456338F, 0.6540698F, 0.66243804F, 0.67073524F, 0.67895806F, 0.68710333F, 0.69516784F, 0.7031487F, 0.7110428F, 0.71884745F,
|
||||
0.72655976F, 0.73417705F, 0.7416969F, 0.7491167F, 0.7564342F, 0.76364714F, 0.7707534F, 0.77775085F, 0.78463775F, 0.79141223F,
|
||||
0.79807264F, 0.8046174F, 0.8110451F, 0.81735444F, 0.8235442F, 0.8296133F, 0.83556086F, 0.841386F, 0.84708804F, 0.8526664F,
|
||||
0.85812056F, 0.8634502F, 0.8686552F, 0.87373537F, 0.8786907F, 0.88352144F, 0.8882277F, 0.89280987F, 0.8972685F, 0.90160406F,
|
||||
0.90581733F, 0.909909F, 0.91388005F, 0.91773146F, 0.92146426F, 0.9250797F, 0.928579F, 0.9319635F, 0.93523467F, 0.93839407F,
|
||||
0.9414432F, 0.9443838F, 0.94721764F, 0.9499464F, 0.9525721F, 0.95509654F, 0.95752174F, 0.9598498F, 0.9620826F, 0.96422243F,
|
||||
0.9662714F, 0.9682316F, 0.9701054F, 0.9718949F, 0.9736024F, 0.9752302F, 0.9767806F, 0.9782558F, 0.9796582F, 0.98099F,
|
||||
0.98225355F, 0.9834512F, 0.9845851F, 0.9856576F, 0.9866709F, 0.98762727F, 0.9885289F, 0.989378F, 0.9901766F, 0.9909269F,
|
||||
0.99163103F, 0.9922909F, 0.99290866F, 0.99348617F, 0.99402535F, 0.99452806F, 0.9949962F, 0.9954315F, 0.99583566F, 0.9962104F,
|
||||
0.9965573F, 0.99687797F, 0.9971739F, 0.9974466F, 0.9976974F, 0.9979278F, 0.9981389F, 0.9983321F, 0.9985086F, 0.9986694F,
|
||||
0.9988157F, 0.9989485F, 0.99906886F, 0.99917763F, 0.99927574F, 0.999364F, 0.99944323F, 0.9995141F, 0.9995774F, 0.9996338F,
|
||||
0.9996838F, 0.9997281F, 0.9997671F, 0.9998014F, 0.9998315F, 0.9998577F, 0.99988055F, 0.9999003F, 0.99991727F, 0.9999318F,
|
||||
0.99994427F, 0.99995476F, 0.99996364F, 0.9999711F, 0.99997723F, 0.99998236F, 0.99998647F, 0.99998987F, 0.99999255F, 0.99999464F,
|
||||
0.99999624F, 0.9999975F, 0.99999845F, 0.9999991F, 0.9999995F, 0.9999998F };
|
||||
|
||||
public static final float[] KBD_32 = new float[] {
|
||||
8.7591405E-5F, 9.32176E-4F, 0.0032114612F, 0.008100989F, 0.017124029F, 0.032072075F, 0.054830786F, 0.08713618F, 0.13029234F, 0.18489555F,
|
||||
0.2506163F, 0.32608742F, 0.40893167F, 0.4959415F, 0.583394F, 0.6674602F, 0.7446455F, 0.8121893F, 0.86835593F, 0.912565F,
|
||||
0.9453396F, 0.9680865F, 0.98275816F, 0.99147564F, 0.9961964F, 0.99849564F, 0.99948555F, 0.9998534F, 0.99996716F, 0.9999948F,
|
||||
0.9999996F, 1.0F };
|
||||
}
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
package net.sourceforge.jaad.aac.huffman;
|
||||
|
||||
interface Codebooks {
|
||||
public static final int[][] HCB1 = new int[][] {
|
||||
new int[] { 1, 0, 0, 0, 0, 0 }, new int[] { 5, 16, 1, 0, 0, 0 }, new int[] { 5, 17, -1, 0, 0, 0 }, new int[] { 5, 18, 0, 0, 0, -1 }, new int[] { 5, 19, 0, 1, 0, 0 }, new int[] { 5, 20, 0, 0, 0, 1 }, new int[] { 5, 21, 0, 0, -1, 0 }, new int[] { 5, 22, 0, 0, 1, 0 }, new int[] { 5, 23, 0, -1, 0, 0 }, new int[] { 7, 96, 1, -1, 0, 0 },
|
||||
new int[] { 7, 97, -1, 1, 0, 0 }, new int[] { 7, 98, 0, 0, -1, 1 }, new int[] { 7, 99, 0, 1, -1, 0 }, new int[] { 7, 100, 0, -1, 1, 0 }, new int[] { 7, 101, 0, 0, 1, -1 }, new int[] { 7, 102, 1, 1, 0, 0 }, new int[] { 7, 103, 0, 0, -1, -1 }, new int[] { 7, 104, -1, -1, 0, 0 }, new int[] { 7, 105, 0, -1, -1, 0 }, new int[] { 7, 106, 1, 0, -1, 0 },
|
||||
new int[] { 7, 107, 0, 1, 0, -1 }, new int[] { 7, 108, -1, 0, 1, 0 }, new int[] { 7, 109, 0, 0, 1, 1 }, new int[] { 7, 110, 1, 0, 1, 0 }, new int[] { 7, 111, 0, -1, 0, 1 }, new int[] { 7, 112, 0, 1, 1, 0 }, new int[] { 7, 113, 0, 1, 0, 1 }, new int[] { 7, 114, -1, 0, -1, 0 }, new int[] { 7, 115, 1, 0, 0, 1 }, new int[] { 7, 116, -1, 0, 0, -1 },
|
||||
new int[] { 7, 117, 1, 0, 0, -1 }, new int[] { 7, 118, -1, 0, 0, 1 }, new int[] { 7, 119, 0, -1, 0, -1 }, new int[] { 9, 480, 1, 1, -1, 0 }, new int[] { 9, 481, -1, 1, -1, 0 }, new int[] { 9, 482, 1, -1, 1, 0 }, new int[] { 9, 483, 0, 1, 1, -1 }, new int[] { 9, 484, 0, 1, -1, 1 }, new int[] { 9, 485, 0, -1, 1, 1 }, new int[] { 9, 486, 0, -1, 1, -1 },
|
||||
new int[] { 9, 487, 1, -1, -1, 0 }, new int[] { 9, 488, 1, 0, -1, 1 }, new int[] { 9, 489, 0, 1, -1, -1 }, new int[] { 9, 490, -1, 1, 1, 0 }, new int[] { 9, 491, -1, 0, 1, -1 }, new int[] { 9, 492, -1, -1, 1, 0 }, new int[] { 9, 493, 0, -1, -1, 1 }, new int[] { 9, 494, 1, -1, 0, 1 }, new int[] { 9, 495, 1, -1, 0, -1 }, new int[] { 9, 496, -1, 1, 0, -1 },
|
||||
new int[] { 9, 497, -1, -1, -1, 0 }, new int[] { 9, 498, 0, -1, -1, -1 }, new int[] { 9, 499, 0, 1, 1, 1 }, new int[] { 9, 500, 1, 0, 1, -1 }, new int[] { 9, 501, 1, 1, 0, 1 }, new int[] { 9, 502, -1, 1, 0, 1 }, new int[] { 9, 503, 1, 1, 1, 0 }, new int[] { 10, 1008, -1, -1, 0, 1 }, new int[] { 10, 1009, -1, 0, -1, -1 }, new int[] { 10, 1010, 1, 1, 0, -1 },
|
||||
new int[] { 10, 1011, 1, 0, -1, -1 }, new int[] { 10, 1012, -1, 0, -1, 1 }, new int[] { 10, 1013, -1, -1, 0, -1 }, new int[] { 10, 1014, -1, 0, 1, 1 }, new int[] { 10, 1015, 1, 0, 1, 1 }, new int[] { 11, 2032, 1, -1, 1, -1 }, new int[] { 11, 2033, -1, 1, -1, 1 }, new int[] { 11, 2034, -1, 1, 1, -1 }, new int[] { 11, 2035, 1, -1, -1, 1 }, new int[] { 11, 2036, 1, 1, 1, 1 },
|
||||
new int[] { 11, 2037, -1, -1, 1, 1 }, new int[] { 11, 2038, 1, 1, -1, -1 }, new int[] { 11, 2039, -1, -1, 1, -1 }, new int[] { 11, 2040, -1, -1, -1, -1 }, new int[] { 11, 2041, 1, 1, -1, 1 }, new int[] { 11, 2042, 1, -1, 1, 1 }, new int[] { 11, 2043, -1, 1, 1, 1 }, new int[] { 11, 2044, -1, 1, -1, -1 }, new int[] { 11, 2045, -1, -1, -1, 1 }, new int[] { 11, 2046, 1, -1, -1, -1 },
|
||||
new int[] { 11, 2047, 1, 1, 1, -1 } };
|
||||
|
||||
public static final int[][] HCB2 = new int[][] {
|
||||
new int[] { 3, 0, 0, 0, 0, 0 }, new int[] { 4, 2, 1, 0, 0, 0 }, new int[] { 5, 6, -1, 0, 0, 0 }, new int[] { 5, 7, 0, 0, 0, 1 }, new int[] { 5, 8, 0, 0, -1, 0 }, new int[] { 5, 9, 0, 0, 0, -1 }, new int[] { 5, 10, 0, -1, 0, 0 }, new int[] { 5, 11, 0, 0, 1, 0 }, new int[] { 5, 12, 0, 1, 0, 0 }, new int[] { 6, 26, 0, -1, 1, 0 },
|
||||
new int[] { 6, 27, -1, 1, 0, 0 }, new int[] { 6, 28, 0, 1, -1, 0 }, new int[] { 6, 29, 0, 0, 1, -1 }, new int[] { 6, 30, 0, 1, 0, -1 }, new int[] { 6, 31, 0, 0, -1, 1 }, new int[] { 6, 32, -1, 0, 0, -1 }, new int[] { 6, 33, 1, -1, 0, 0 }, new int[] { 6, 34, 1, 0, -1, 0 }, new int[] { 6, 35, -1, -1, 0, 0 }, new int[] { 6, 36, 0, 0, -1, -1 },
|
||||
new int[] { 6, 37, 1, 0, 1, 0 }, new int[] { 6, 38, 1, 0, 0, 1 }, new int[] { 6, 39, 0, -1, 0, 1 }, new int[] { 6, 40, -1, 0, 1, 0 }, new int[] { 6, 41, 0, 1, 0, 1 }, new int[] { 6, 42, 0, -1, -1, 0 }, new int[] { 6, 43, -1, 0, 0, 1 }, new int[] { 6, 44, 0, -1, 0, -1 }, new int[] { 6, 45, -1, 0, -1, 0 }, new int[] { 6, 46, 1, 1, 0, 0 },
|
||||
new int[] { 6, 47, 0, 1, 1, 0 }, new int[] { 6, 48, 0, 0, 1, 1 }, new int[] { 6, 49, 1, 0, 0, -1 }, new int[] { 7, 100, 0, 1, -1, 1 }, new int[] { 7, 101, 1, 0, -1, 1 }, new int[] { 7, 102, -1, 1, -1, 0 }, new int[] { 7, 103, 0, -1, 1, -1 }, new int[] { 7, 104, 1, -1, 1, 0 }, new int[] { 7, 105, 1, 1, 0, -1 }, new int[] { 7, 106, 1, 0, 1, 1 },
|
||||
new int[] { 7, 107, -1, 1, 1, 0 }, new int[] { 7, 108, 0, -1, -1, 1 }, new int[] { 7, 109, 1, 1, 1, 0 }, new int[] { 7, 110, -1, 0, 1, -1 }, new int[] { 7, 111, -1, -1, -1, 0 }, new int[] { 7, 112, -1, 0, -1, 1 }, new int[] { 7, 113, 1, -1, -1, 0 }, new int[] { 7, 114, 1, 1, -1, 0 }, new int[] { 8, 230, 1, -1, 0, 1 }, new int[] { 8, 231, -1, 1, 0, -1 },
|
||||
new int[] { 8, 232, -1, -1, 1, 0 }, new int[] { 8, 233, -1, 0, 1, 1 }, new int[] { 8, 234, -1, -1, 0, 1 }, new int[] { 8, 235, -1, -1, 0, -1 }, new int[] { 8, 236, 0, -1, -1, -1 }, new int[] { 8, 237, 1, 0, 1, -1 }, new int[] { 8, 238, 1, 0, -1, -1 }, new int[] { 8, 239, 0, 1, -1, -1 }, new int[] { 8, 240, 0, 1, 1, 1 }, new int[] { 8, 241, -1, 1, 0, 1 },
|
||||
new int[] { 8, 242, -1, 0, -1, -1 }, new int[] { 8, 243, 0, 1, 1, -1 }, new int[] { 8, 244, 1, -1, 0, -1 }, new int[] { 8, 245, 0, -1, 1, 1 }, new int[] { 8, 246, 1, 1, 0, 1 }, new int[] { 8, 247, 1, -1, 1, -1 }, new int[] { 8, 248, -1, 1, -1, 1 }, new int[] { 9, 498, 1, -1, -1, 1 }, new int[] { 9, 499, -1, -1, -1, -1 }, new int[] { 9, 500, -1, 1, 1, -1 },
|
||||
new int[] { 9, 501, -1, 1, 1, 1 }, new int[] { 9, 502, 1, 1, 1, 1 }, new int[] { 9, 503, -1, -1, 1, -1 }, new int[] { 9, 504, 1, -1, 1, 1 }, new int[] { 9, 505, -1, 1, -1, -1 }, new int[] { 9, 506, -1, -1, 1, 1 }, new int[] { 9, 507, 1, 1, -1, -1 }, new int[] { 9, 508, 1, -1, -1, -1 }, new int[] { 9, 509, -1, -1, -1, 1 }, new int[] { 9, 510, 1, 1, -1, 1 },
|
||||
new int[] { 9, 511, 1, 1, 1, -1 } };
|
||||
|
||||
public static final int[][] HCB3 = new int[][] {
|
||||
new int[] { 1, 0, 0, 0, 0, 0 }, new int[] { 4, 8, 1, 0, 0, 0 }, new int[] { 4, 9, 0, 0, 0, 1 }, new int[] { 4, 10, 0, 1, 0, 0 }, new int[] { 4, 11, 0, 0, 1, 0 }, new int[] { 5, 24, 1, 1, 0, 0 }, new int[] { 5, 25, 0, 0, 1, 1 }, new int[] { 6, 52, 0, 1, 1, 0 }, new int[] { 6, 53, 0, 1, 0, 1 }, new int[] { 6, 54, 1, 0, 1, 0 },
|
||||
new int[] { 6, 55, 0, 1, 1, 1 }, new int[] { 6, 56, 1, 0, 0, 1 }, new int[] { 6, 57, 1, 1, 1, 0 }, new int[] { 7, 116, 1, 1, 1, 1 }, new int[] { 7, 117, 1, 0, 1, 1 }, new int[] { 7, 118, 1, 1, 0, 1 }, new int[] { 8, 238, 2, 0, 0, 0 }, new int[] { 8, 239, 0, 0, 0, 2 }, new int[] { 8, 240, 0, 0, 1, 2 }, new int[] { 8, 241, 2, 1, 0, 0 },
|
||||
new int[] { 8, 242, 1, 2, 1, 0 }, new int[] { 9, 486, 0, 0, 2, 1 }, new int[] { 9, 487, 0, 1, 2, 1 }, new int[] { 9, 488, 1, 2, 0, 0 }, new int[] { 9, 489, 0, 1, 1, 2 }, new int[] { 9, 490, 2, 1, 1, 0 }, new int[] { 9, 491, 0, 0, 2, 0 }, new int[] { 9, 492, 0, 2, 1, 0 }, new int[] { 9, 493, 0, 1, 2, 0 }, new int[] { 9, 494, 0, 2, 0, 0 },
|
||||
new int[] { 9, 495, 0, 1, 0, 2 }, new int[] { 9, 496, 2, 0, 1, 0 }, new int[] { 9, 497, 1, 2, 1, 1 }, new int[] { 9, 498, 0, 2, 1, 1 }, new int[] { 9, 499, 1, 1, 2, 0 }, new int[] { 9, 500, 1, 1, 2, 1 }, new int[] { 10, 1002, 1, 2, 0, 1 }, new int[] { 10, 1003, 1, 0, 2, 0 }, new int[] { 10, 1004, 1, 0, 2, 1 }, new int[] { 10, 1005, 0, 2, 0, 1 },
|
||||
new int[] { 10, 1006, 2, 1, 1, 1 }, new int[] { 10, 1007, 1, 1, 1, 2 }, new int[] { 10, 1008, 2, 1, 0, 1 }, new int[] { 10, 1009, 1, 0, 1, 2 }, new int[] { 10, 1010, 0, 0, 2, 2 }, new int[] { 10, 1011, 0, 1, 2, 2 }, new int[] { 10, 1012, 2, 2, 1, 0 }, new int[] { 10, 1013, 1, 2, 2, 0 }, new int[] { 10, 1014, 1, 0, 0, 2 }, new int[] { 10, 1015, 2, 0, 0, 1 },
|
||||
new int[] { 10, 1016, 0, 2, 2, 1 }, new int[] { 11, 2034, 2, 2, 0, 0 }, new int[] { 11, 2035, 1, 2, 2, 1 }, new int[] { 11, 2036, 1, 1, 0, 2 }, new int[] { 11, 2037, 2, 0, 1, 1 }, new int[] { 11, 2038, 1, 1, 2, 2 }, new int[] { 11, 2039, 2, 2, 1, 1 }, new int[] { 11, 2040, 0, 2, 2, 0 }, new int[] { 11, 2041, 0, 2, 1, 2 }, new int[] { 12, 4084, 1, 0, 2, 2 },
|
||||
new int[] { 12, 4085, 2, 2, 0, 1 }, new int[] { 12, 4086, 2, 1, 2, 0 }, new int[] { 12, 4087, 2, 2, 2, 0 }, new int[] { 12, 4088, 0, 2, 2, 2 }, new int[] { 12, 4089, 2, 2, 2, 1 }, new int[] { 12, 4090, 2, 1, 2, 1 }, new int[] { 12, 4091, 1, 2, 1, 2 }, new int[] { 12, 4092, 1, 2, 2, 2 }, new int[] { 13, 8186, 0, 2, 0, 2 }, new int[] { 13, 8187, 2, 0, 2, 0 },
|
||||
new int[] { 13, 8188, 1, 2, 0, 2 }, new int[] { 14, 16378, 2, 0, 2, 1 }, new int[] { 14, 16379, 2, 1, 1, 2 }, new int[] { 14, 16380, 2, 1, 0, 2 }, new int[] { 15, 32762, 2, 2, 2, 2 }, new int[] { 15, 32763, 2, 2, 1, 2 }, new int[] { 15, 32764, 2, 1, 2, 2 }, new int[] { 15, 32765, 2, 0, 1, 2 }, new int[] { 15, 32766, 2, 0, 0, 2 }, new int[] { 16, 65534, 2, 2, 0, 2 },
|
||||
new int[] { 16, 65535, 2, 0, 2, 2 } };
|
||||
|
||||
public static final int[][] HCB4 = new int[][] {
|
||||
new int[] { 4, 0, 1, 1, 1, 1 }, new int[] { 4, 1, 0, 1, 1, 1 }, new int[] { 4, 2, 1, 1, 0, 1 }, new int[] { 4, 3, 1, 1, 1, 0 }, new int[] { 4, 4, 1, 0, 1, 1 }, new int[] { 4, 5, 1, 0, 0, 0 }, new int[] { 4, 6, 1, 1, 0, 0 }, new int[] { 4, 7, 0, 0, 0, 0 }, new int[] { 4, 8, 0, 0, 1, 1 }, new int[] { 4, 9, 1, 0, 1, 0 },
|
||||
new int[] { 5, 20, 1, 0, 0, 1 }, new int[] { 5, 21, 0, 1, 1, 0 }, new int[] { 5, 22, 0, 0, 0, 1 }, new int[] { 5, 23, 0, 1, 0, 1 }, new int[] { 5, 24, 0, 0, 1, 0 }, new int[] { 5, 25, 0, 1, 0, 0 }, new int[] { 7, 104, 2, 1, 1, 1 }, new int[] { 7, 105, 1, 1, 2, 1 }, new int[] { 7, 106, 1, 2, 1, 1 }, new int[] { 7, 107, 1, 1, 1, 2 },
|
||||
new int[] { 7, 108, 2, 1, 1, 0 }, new int[] { 7, 109, 2, 1, 0, 1 }, new int[] { 7, 110, 1, 2, 1, 0 }, new int[] { 7, 111, 2, 0, 1, 1 }, new int[] { 7, 112, 0, 1, 2, 1 }, new int[] { 8, 226, 0, 1, 1, 2 }, new int[] { 8, 227, 1, 1, 2, 0 }, new int[] { 8, 228, 0, 2, 1, 1 }, new int[] { 8, 229, 1, 0, 1, 2 }, new int[] { 8, 230, 1, 2, 0, 1 },
|
||||
new int[] { 8, 231, 1, 1, 0, 2 }, new int[] { 8, 232, 1, 0, 2, 1 }, new int[] { 8, 233, 2, 1, 0, 0 }, new int[] { 8, 234, 2, 0, 1, 0 }, new int[] { 8, 235, 1, 2, 0, 0 }, new int[] { 8, 236, 2, 0, 0, 1 }, new int[] { 8, 237, 0, 1, 0, 2 }, new int[] { 8, 238, 0, 2, 1, 0 }, new int[] { 8, 239, 0, 0, 1, 2 }, new int[] { 8, 240, 0, 1, 2, 0 },
|
||||
new int[] { 8, 241, 0, 2, 0, 1 }, new int[] { 8, 242, 1, 0, 0, 2 }, new int[] { 8, 243, 0, 0, 2, 1 }, new int[] { 8, 244, 1, 0, 2, 0 }, new int[] { 8, 245, 2, 0, 0, 0 }, new int[] { 8, 246, 0, 0, 0, 2 }, new int[] { 9, 494, 0, 2, 0, 0 }, new int[] { 9, 495, 0, 0, 2, 0 }, new int[] { 9, 496, 1, 2, 2, 1 }, new int[] { 9, 497, 2, 2, 1, 1 },
|
||||
new int[] { 9, 498, 2, 1, 2, 1 }, new int[] { 9, 499, 1, 1, 2, 2 }, new int[] { 9, 500, 1, 2, 1, 2 }, new int[] { 9, 501, 2, 1, 1, 2 }, new int[] { 10, 1004, 1, 2, 2, 0 }, new int[] { 10, 1005, 2, 2, 1, 0 }, new int[] { 10, 1006, 2, 1, 2, 0 }, new int[] { 10, 1007, 0, 2, 2, 1 }, new int[] { 10, 1008, 0, 1, 2, 2 }, new int[] { 10, 1009, 2, 2, 0, 1 },
|
||||
new int[] { 10, 1010, 0, 2, 1, 2 }, new int[] { 10, 1011, 2, 0, 2, 1 }, new int[] { 10, 1012, 1, 0, 2, 2 }, new int[] { 10, 1013, 2, 2, 2, 1 }, new int[] { 10, 1014, 1, 2, 0, 2 }, new int[] { 10, 1015, 2, 0, 1, 2 }, new int[] { 10, 1016, 2, 1, 0, 2 }, new int[] { 10, 1017, 1, 2, 2, 2 }, new int[] { 11, 2036, 2, 1, 2, 2 }, new int[] { 11, 2037, 2, 2, 1, 2 },
|
||||
new int[] { 11, 2038, 0, 2, 2, 0 }, new int[] { 11, 2039, 2, 2, 0, 0 }, new int[] { 11, 2040, 0, 0, 2, 2 }, new int[] { 11, 2041, 2, 0, 2, 0 }, new int[] { 11, 2042, 0, 2, 0, 2 }, new int[] { 11, 2043, 2, 0, 0, 2 }, new int[] { 11, 2044, 2, 2, 2, 2 }, new int[] { 11, 2045, 0, 2, 2, 2 }, new int[] { 11, 2046, 2, 2, 2, 0 }, new int[] { 12, 4094, 2, 2, 0, 2 },
|
||||
new int[] { 12, 4095, 2, 0, 2, 2 } };
|
||||
|
||||
public static final int[][] HCB5 = new int[][] {
|
||||
new int[] { 1, 0, 0, 0 }, new int[] { 4, 8, -1, 0 }, new int[] { 4, 9, 1, 0 }, new int[] { 4, 10, 0, 1 }, new int[] { 4, 11, 0, -1 }, new int[] { 5, 24, 1, -1 }, new int[] { 5, 25, -1, 1 }, new int[] { 5, 26, -1, -1 }, new int[] { 5, 27, 1, 1 }, new int[] { 7, 112, -2, 0 },
|
||||
new int[] { 7, 113, 0, 2 }, new int[] { 7, 114, 2, 0 }, new int[] { 7, 115, 0, -2 }, new int[] { 8, 232, -2, -1 }, new int[] { 8, 233, 2, 1 }, new int[] { 8, 234, -1, -2 }, new int[] { 8, 235, 1, 2 }, new int[] { 8, 236, -2, 1 }, new int[] { 8, 237, 2, -1 }, new int[] { 8, 238, -1, 2 },
|
||||
new int[] { 8, 239, 1, -2 }, new int[] { 8, 240, -3, 0 }, new int[] { 8, 241, 3, 0 }, new int[] { 8, 242, 0, -3 }, new int[] { 8, 243, 0, 3 }, new int[] { 9, 488, -3, -1 }, new int[] { 9, 489, 1, 3 }, new int[] { 9, 490, 3, 1 }, new int[] { 9, 491, -1, -3 }, new int[] { 9, 492, -3, 1 },
|
||||
new int[] { 9, 493, 3, -1 }, new int[] { 9, 494, 1, -3 }, new int[] { 9, 495, -1, 3 }, new int[] { 9, 496, -2, 2 }, new int[] { 9, 497, 2, 2 }, new int[] { 9, 498, -2, -2 }, new int[] { 9, 499, 2, -2 }, new int[] { 10, 1000, -3, -2 }, new int[] { 10, 1001, 3, -2 }, new int[] { 10, 1002, -2, 3 },
|
||||
new int[] { 10, 1003, 2, -3 }, new int[] { 10, 1004, 3, 2 }, new int[] { 10, 1005, 2, 3 }, new int[] { 10, 1006, -3, 2 }, new int[] { 10, 1007, -2, -3 }, new int[] { 10, 1008, 0, -4 }, new int[] { 10, 1009, -4, 0 }, new int[] { 10, 1010, 4, 1 }, new int[] { 10, 1011, 4, 0 }, new int[] { 11, 2024, -4, -1 },
|
||||
new int[] { 11, 2025, 0, 4 }, new int[] { 11, 2026, 4, -1 }, new int[] { 11, 2027, -1, -4 }, new int[] { 11, 2028, 1, 4 }, new int[] { 11, 2029, -1, 4 }, new int[] { 11, 2030, -4, 1 }, new int[] { 11, 2031, 1, -4 }, new int[] { 11, 2032, 3, -3 }, new int[] { 11, 2033, -3, -3 }, new int[] { 11, 2034, -3, 3 },
|
||||
new int[] { 11, 2035, -2, 4 }, new int[] { 11, 2036, -4, -2 }, new int[] { 11, 2037, 4, 2 }, new int[] { 11, 2038, 2, -4 }, new int[] { 11, 2039, 2, 4 }, new int[] { 11, 2040, 3, 3 }, new int[] { 11, 2041, -4, 2 }, new int[] { 12, 4084, -2, -4 }, new int[] { 12, 4085, 4, -2 }, new int[] { 12, 4086, 3, -4 },
|
||||
new int[] { 12, 4087, -4, -3 }, new int[] { 12, 4088, -4, 3 }, new int[] { 12, 4089, 3, 4 }, new int[] { 12, 4090, -3, 4 }, new int[] { 12, 4091, 4, 3 }, new int[] { 12, 4092, 4, -3 }, new int[] { 12, 4093, -3, -4 }, new int[] { 13, 8188, 4, -4 }, new int[] { 13, 8189, -4, 4 }, new int[] { 13, 8190, 4, 4 },
|
||||
new int[] { 13, 8191, -4, -4 } };
|
||||
|
||||
public static final int[][] HCB6 = new int[][] {
|
||||
new int[] { 4, 0, 0, 0 }, new int[] { 4, 1, 1, 0 }, new int[] { 4, 2, 0, -1 }, new int[] { 4, 3, 0, 1 }, new int[] { 4, 4, -1, 0 }, new int[] { 4, 5, 1, 1 }, new int[] { 4, 6, -1, 1 }, new int[] { 4, 7, 1, -1 }, new int[] { 4, 8, -1, -1 }, new int[] { 6, 36, 2, -1 },
|
||||
new int[] { 6, 37, 2, 1 }, new int[] { 6, 38, -2, 1 }, new int[] { 6, 39, -2, -1 }, new int[] { 6, 40, -2, 0 }, new int[] { 6, 41, -1, 2 }, new int[] { 6, 42, 2, 0 }, new int[] { 6, 43, 1, -2 }, new int[] { 6, 44, 1, 2 }, new int[] { 6, 45, 0, -2 }, new int[] { 6, 46, -1, -2 },
|
||||
new int[] { 6, 47, 0, 2 }, new int[] { 6, 48, 2, -2 }, new int[] { 6, 49, -2, 2 }, new int[] { 6, 50, -2, -2 }, new int[] { 6, 51, 2, 2 }, new int[] { 7, 104, -3, 1 }, new int[] { 7, 105, 3, 1 }, new int[] { 7, 106, 3, -1 }, new int[] { 7, 107, -1, 3 }, new int[] { 7, 108, -3, -1 },
|
||||
new int[] { 7, 109, 1, 3 }, new int[] { 7, 110, 1, -3 }, new int[] { 7, 111, -1, -3 }, new int[] { 7, 112, 3, 0 }, new int[] { 7, 113, -3, 0 }, new int[] { 7, 114, 0, -3 }, new int[] { 7, 115, 0, 3 }, new int[] { 7, 116, 3, 2 }, new int[] { 8, 234, -3, -2 }, new int[] { 8, 235, -2, 3 },
|
||||
new int[] { 8, 236, 2, 3 }, new int[] { 8, 237, 3, -2 }, new int[] { 8, 238, 2, -3 }, new int[] { 8, 239, -2, -3 }, new int[] { 8, 240, -3, 2 }, new int[] { 8, 241, 3, 3 }, new int[] { 9, 484, 3, -3 }, new int[] { 9, 485, -3, -3 }, new int[] { 9, 486, -3, 3 }, new int[] { 9, 487, 1, -4 },
|
||||
new int[] { 9, 488, -1, -4 }, new int[] { 9, 489, 4, 1 }, new int[] { 9, 490, -4, 1 }, new int[] { 9, 491, -4, -1 }, new int[] { 9, 492, 1, 4 }, new int[] { 9, 493, 4, -1 }, new int[] { 9, 494, -1, 4 }, new int[] { 9, 495, 0, -4 }, new int[] { 9, 496, -4, 2 }, new int[] { 9, 497, -4, -2 },
|
||||
new int[] { 9, 498, 2, 4 }, new int[] { 9, 499, -2, -4 }, new int[] { 9, 500, -4, 0 }, new int[] { 9, 501, 4, 2 }, new int[] { 9, 502, 4, -2 }, new int[] { 9, 503, -2, 4 }, new int[] { 9, 504, 4, 0 }, new int[] { 9, 505, 2, -4 }, new int[] { 9, 506, 0, 4 }, new int[] { 10, 1014, -3, -4 },
|
||||
new int[] { 10, 1015, -3, 4 }, new int[] { 10, 1016, 3, -4 }, new int[] { 10, 1017, 4, -3 }, new int[] { 10, 1018, 3, 4 }, new int[] { 10, 1019, 4, 3 }, new int[] { 10, 1020, -4, 3 }, new int[] { 10, 1021, -4, -3 }, new int[] { 11, 2044, 4, 4 }, new int[] { 11, 2045, -4, 4 }, new int[] { 11, 2046, -4, -4 },
|
||||
new int[] { 11, 2047, 4, -4 } };
|
||||
|
||||
public static final int[][] HCB7 = new int[][] {
|
||||
new int[] { 1, 0, 0, 0 }, new int[] { 3, 4, 1, 0 }, new int[] { 3, 5, 0, 1 }, new int[] { 4, 12, 1, 1 }, new int[] { 6, 52, 2, 1 }, new int[] { 6, 53, 1, 2 }, new int[] { 6, 54, 2, 0 }, new int[] { 6, 55, 0, 2 }, new int[] { 7, 112, 3, 1 }, new int[] { 7, 113, 1, 3 },
|
||||
new int[] { 7, 114, 2, 2 }, new int[] { 7, 115, 3, 0 }, new int[] { 7, 116, 0, 3 }, new int[] { 8, 234, 2, 3 }, new int[] { 8, 235, 3, 2 }, new int[] { 8, 236, 1, 4 }, new int[] { 8, 237, 4, 1 }, new int[] { 8, 238, 1, 5 }, new int[] { 8, 239, 5, 1 }, new int[] { 8, 240, 3, 3 },
|
||||
new int[] { 8, 241, 2, 4 }, new int[] { 8, 242, 0, 4 }, new int[] { 8, 243, 4, 0 }, new int[] { 9, 488, 4, 2 }, new int[] { 9, 489, 2, 5 }, new int[] { 9, 490, 5, 2 }, new int[] { 9, 491, 0, 5 }, new int[] { 9, 492, 6, 1 }, new int[] { 9, 493, 5, 0 }, new int[] { 9, 494, 1, 6 },
|
||||
new int[] { 9, 495, 4, 3 }, new int[] { 9, 496, 3, 5 }, new int[] { 9, 497, 3, 4 }, new int[] { 9, 498, 5, 3 }, new int[] { 9, 499, 2, 6 }, new int[] { 9, 500, 6, 2 }, new int[] { 9, 501, 1, 7 }, new int[] { 10, 1004, 3, 6 }, new int[] { 10, 1005, 0, 6 }, new int[] { 10, 1006, 6, 0 },
|
||||
new int[] { 10, 1007, 4, 4 }, new int[] { 10, 1008, 7, 1 }, new int[] { 10, 1009, 4, 5 }, new int[] { 10, 1010, 7, 2 }, new int[] { 10, 1011, 5, 4 }, new int[] { 10, 1012, 6, 3 }, new int[] { 10, 1013, 2, 7 }, new int[] { 10, 1014, 7, 3 }, new int[] { 10, 1015, 6, 4 }, new int[] { 10, 1016, 5, 5 },
|
||||
new int[] { 10, 1017, 4, 6 }, new int[] { 10, 1018, 3, 7 }, new int[] { 11, 2038, 7, 0 }, new int[] { 11, 2039, 0, 7 }, new int[] { 11, 2040, 6, 5 }, new int[] { 11, 2041, 5, 6 }, new int[] { 11, 2042, 7, 4 }, new int[] { 11, 2043, 4, 7 }, new int[] { 11, 2044, 5, 7 }, new int[] { 11, 2045, 7, 5 },
|
||||
new int[] { 12, 4092, 7, 6 }, new int[] { 12, 4093, 6, 6 }, new int[] { 12, 4094, 6, 7 }, new int[] { 12, 4095, 7, 7 } };
|
||||
|
||||
public static final int[][] HCB8 = new int[][] {
|
||||
new int[] { 3, 0, 1, 1 }, new int[] { 4, 2, 2, 1 }, new int[] { 4, 3, 1, 0 }, new int[] { 4, 4, 1, 2 }, new int[] { 4, 5, 0, 1 }, new int[] { 4, 6, 2, 2 }, new int[] { 5, 14, 0, 0 }, new int[] { 5, 15, 2, 0 }, new int[] { 5, 16, 0, 2 }, new int[] { 5, 17, 3, 1 },
|
||||
new int[] { 5, 18, 1, 3 }, new int[] { 5, 19, 3, 2 }, new int[] { 5, 20, 2, 3 }, new int[] { 6, 42, 3, 3 }, new int[] { 6, 43, 4, 1 }, new int[] { 6, 44, 1, 4 }, new int[] { 6, 45, 4, 2 }, new int[] { 6, 46, 2, 4 }, new int[] { 6, 47, 3, 0 }, new int[] { 6, 48, 0, 3 },
|
||||
new int[] { 6, 49, 4, 3 }, new int[] { 6, 50, 3, 4 }, new int[] { 6, 51, 5, 2 }, new int[] { 7, 104, 5, 1 }, new int[] { 7, 105, 2, 5 }, new int[] { 7, 106, 1, 5 }, new int[] { 7, 107, 5, 3 }, new int[] { 7, 108, 3, 5 }, new int[] { 7, 109, 4, 4 }, new int[] { 7, 110, 5, 4 },
|
||||
new int[] { 7, 111, 0, 4 }, new int[] { 7, 112, 4, 5 }, new int[] { 7, 113, 4, 0 }, new int[] { 7, 114, 2, 6 }, new int[] { 7, 115, 6, 2 }, new int[] { 7, 116, 6, 1 }, new int[] { 7, 117, 1, 6 }, new int[] { 8, 236, 3, 6 }, new int[] { 8, 237, 6, 3 }, new int[] { 8, 238, 5, 5 },
|
||||
new int[] { 8, 239, 5, 0 }, new int[] { 8, 240, 6, 4 }, new int[] { 8, 241, 0, 5 }, new int[] { 8, 242, 4, 6 }, new int[] { 8, 243, 7, 1 }, new int[] { 8, 244, 7, 2 }, new int[] { 8, 245, 2, 7 }, new int[] { 8, 246, 6, 5 }, new int[] { 8, 247, 7, 3 }, new int[] { 8, 248, 1, 7 },
|
||||
new int[] { 8, 249, 5, 6 }, new int[] { 8, 250, 3, 7 }, new int[] { 9, 502, 6, 6 }, new int[] { 9, 503, 7, 4 }, new int[] { 9, 504, 6, 0 }, new int[] { 9, 505, 4, 7 }, new int[] { 9, 506, 0, 6 }, new int[] { 9, 507, 7, 5 }, new int[] { 9, 508, 7, 6 }, new int[] { 9, 509, 6, 7 },
|
||||
new int[] { 10, 1020, 5, 7 }, new int[] { 10, 1021, 7, 0 }, new int[] { 10, 1022, 0, 7 }, new int[] { 10, 1023, 7, 7 } };
|
||||
|
||||
public static final int[][] HCB9 = new int[][] {
|
||||
new int[] { 1, 0, 0, 0 }, new int[] { 3, 4, 1, 0 }, new int[] { 3, 5, 0, 1 }, new int[] { 4, 12, 1, 1 }, new int[] { 6, 52, 2, 1 }, new int[] { 6, 53, 1, 2 }, new int[] { 6, 54, 2, 0 }, new int[] { 6, 55, 0, 2 }, new int[] { 7, 112, 3, 1 }, new int[] { 7, 113, 2, 2 },
|
||||
new int[] { 7, 114, 1, 3 }, new int[] { 8, 230, 3, 0 }, new int[] { 8, 231, 0, 3 }, new int[] { 8, 232, 2, 3 }, new int[] { 8, 233, 3, 2 }, new int[] { 8, 234, 1, 4 }, new int[] { 8, 235, 4, 1 }, new int[] { 8, 236, 2, 4 }, new int[] { 8, 237, 1, 5 }, new int[] { 9, 476, 4, 2 },
|
||||
new int[] { 9, 477, 3, 3 }, new int[] { 9, 478, 0, 4 }, new int[] { 9, 479, 4, 0 }, new int[] { 9, 480, 5, 1 }, new int[] { 9, 481, 2, 5 }, new int[] { 9, 482, 1, 6 }, new int[] { 9, 483, 3, 4 }, new int[] { 9, 484, 5, 2 }, new int[] { 9, 485, 6, 1 }, new int[] { 9, 486, 4, 3 },
|
||||
new int[] { 10, 974, 0, 5 }, new int[] { 10, 975, 2, 6 }, new int[] { 10, 976, 5, 0 }, new int[] { 10, 977, 1, 7 }, new int[] { 10, 978, 3, 5 }, new int[] { 10, 979, 1, 8 }, new int[] { 10, 980, 8, 1 }, new int[] { 10, 981, 4, 4 }, new int[] { 10, 982, 5, 3 }, new int[] { 10, 983, 6, 2 },
|
||||
new int[] { 10, 984, 7, 1 }, new int[] { 10, 985, 0, 6 }, new int[] { 10, 986, 8, 2 }, new int[] { 10, 987, 2, 8 }, new int[] { 10, 988, 3, 6 }, new int[] { 10, 989, 2, 7 }, new int[] { 10, 990, 4, 5 }, new int[] { 10, 991, 9, 1 }, new int[] { 10, 992, 1, 9 }, new int[] { 10, 993, 7, 2 },
|
||||
new int[] { 11, 1988, 6, 0 }, new int[] { 11, 1989, 5, 4 }, new int[] { 11, 1990, 6, 3 }, new int[] { 11, 1991, 8, 3 }, new int[] { 11, 1992, 0, 7 }, new int[] { 11, 1993, 9, 2 }, new int[] { 11, 1994, 3, 8 }, new int[] { 11, 1995, 4, 6 }, new int[] { 11, 1996, 3, 7 }, new int[] { 11, 1997, 0, 8 },
|
||||
new int[] { 11, 1998, 10, 1 }, new int[] { 11, 1999, 6, 4 }, new int[] { 11, 2000, 2, 9 }, new int[] { 11, 2001, 5, 5 }, new int[] { 11, 2002, 8, 0 }, new int[] { 11, 2003, 7, 0 }, new int[] { 11, 2004, 7, 3 }, new int[] { 11, 2005, 10, 2 }, new int[] { 11, 2006, 9, 3 }, new int[] { 11, 2007, 8, 4 },
|
||||
new int[] { 11, 2008, 1, 10 }, new int[] { 11, 2009, 7, 4 }, new int[] { 11, 2010, 6, 5 }, new int[] { 11, 2011, 5, 6 }, new int[] { 11, 2012, 4, 8 }, new int[] { 11, 2013, 4, 7 }, new int[] { 11, 2014, 3, 9 }, new int[] { 11, 2015, 11, 1 }, new int[] { 11, 2016, 5, 8 }, new int[] { 11, 2017, 9, 0 },
|
||||
new int[] { 11, 2018, 8, 5 }, new int[] { 12, 4038, 10, 3 }, new int[] { 12, 4039, 2, 10 }, new int[] { 12, 4040, 0, 9 }, new int[] { 12, 4041, 11, 2 }, new int[] { 12, 4042, 9, 4 }, new int[] { 12, 4043, 6, 6 }, new int[] { 12, 4044, 12, 1 }, new int[] { 12, 4045, 4, 9 }, new int[] { 12, 4046, 8, 6 },
|
||||
new int[] { 12, 4047, 1, 11 }, new int[] { 12, 4048, 9, 5 }, new int[] { 12, 4049, 10, 4 }, new int[] { 12, 4050, 5, 7 }, new int[] { 12, 4051, 7, 5 }, new int[] { 12, 4052, 2, 11 }, new int[] { 12, 4053, 1, 12 }, new int[] { 12, 4054, 12, 2 }, new int[] { 12, 4055, 11, 3 }, new int[] { 12, 4056, 3, 10 },
|
||||
new int[] { 12, 4057, 5, 9 }, new int[] { 12, 4058, 6, 7 }, new int[] { 12, 4059, 8, 7 }, new int[] { 12, 4060, 11, 4 }, new int[] { 12, 4061, 0, 10 }, new int[] { 12, 4062, 7, 6 }, new int[] { 12, 4063, 12, 3 }, new int[] { 12, 4064, 10, 0 }, new int[] { 12, 4065, 10, 5 }, new int[] { 12, 4066, 4, 10 },
|
||||
new int[] { 12, 4067, 6, 8 }, new int[] { 12, 4068, 2, 12 }, new int[] { 12, 4069, 9, 6 }, new int[] { 12, 4070, 9, 7 }, new int[] { 12, 4071, 4, 11 }, new int[] { 12, 4072, 11, 0 }, new int[] { 12, 4073, 6, 9 }, new int[] { 12, 4074, 3, 11 }, new int[] { 12, 4075, 5, 10 }, new int[] { 13, 8152, 8, 8 },
|
||||
new int[] { 13, 8153, 7, 8 }, new int[] { 13, 8154, 12, 5 }, new int[] { 13, 8155, 3, 12 }, new int[] { 13, 8156, 11, 5 }, new int[] { 13, 8157, 7, 7 }, new int[] { 13, 8158, 12, 4 }, new int[] { 13, 8159, 11, 6 }, new int[] { 13, 8160, 10, 6 }, new int[] { 13, 8161, 4, 12 }, new int[] { 13, 8162, 7, 9 },
|
||||
new int[] { 13, 8163, 5, 11 }, new int[] { 13, 8164, 0, 11 }, new int[] { 13, 8165, 12, 6 }, new int[] { 13, 8166, 6, 10 }, new int[] { 13, 8167, 12, 0 }, new int[] { 13, 8168, 10, 7 }, new int[] { 13, 8169, 5, 12 }, new int[] { 13, 8170, 7, 10 }, new int[] { 13, 8171, 9, 8 }, new int[] { 13, 8172, 0, 12 },
|
||||
new int[] { 13, 8173, 11, 7 }, new int[] { 13, 8174, 8, 9 }, new int[] { 13, 8175, 9, 9 }, new int[] { 13, 8176, 10, 8 }, new int[] { 13, 8177, 7, 11 }, new int[] { 13, 8178, 12, 7 }, new int[] { 13, 8179, 6, 11 }, new int[] { 13, 8180, 8, 11 }, new int[] { 13, 8181, 11, 8 }, new int[] { 13, 8182, 7, 12 },
|
||||
new int[] { 13, 8183, 6, 12 }, new int[] { 14, 16368, 8, 10 }, new int[] { 14, 16369, 10, 9 }, new int[] { 14, 16370, 8, 12 }, new int[] { 14, 16371, 9, 10 }, new int[] { 14, 16372, 9, 11 }, new int[] { 14, 16373, 9, 12 }, new int[] { 14, 16374, 10, 11 }, new int[] { 14, 16375, 12, 9 }, new int[] { 14, 16376, 10, 10 },
|
||||
new int[] { 14, 16377, 11, 9 }, new int[] { 14, 16378, 12, 8 }, new int[] { 14, 16379, 11, 10 }, new int[] { 14, 16380, 12, 10 }, new int[] { 14, 16381, 12, 11 }, new int[] { 15, 32764, 10, 12 }, new int[] { 15, 32765, 11, 11 }, new int[] { 15, 32766, 11, 12 }, new int[] { 15, 32767, 12, 12 } };
|
||||
|
||||
public static final int[][] HCB10 = new int[][] {
|
||||
new int[] { 4, 0, 1, 1 }, new int[] { 4, 1, 1, 2 }, new int[] { 4, 2, 2, 1 }, new int[] { 5, 6, 2, 2 }, new int[] { 5, 7, 1, 0 }, new int[] { 5, 8, 0, 1 }, new int[] { 5, 9, 1, 3 }, new int[] { 5, 10, 3, 2 }, new int[] { 5, 11, 3, 1 }, new int[] { 5, 12, 2, 3 },
|
||||
new int[] { 5, 13, 3, 3 }, new int[] { 6, 28, 2, 0 }, new int[] { 6, 29, 0, 2 }, new int[] { 6, 30, 2, 4 }, new int[] { 6, 31, 4, 2 }, new int[] { 6, 32, 1, 4 }, new int[] { 6, 33, 4, 1 }, new int[] { 6, 34, 0, 0 }, new int[] { 6, 35, 4, 3 }, new int[] { 6, 36, 3, 4 },
|
||||
new int[] { 6, 37, 3, 0 }, new int[] { 6, 38, 0, 3 }, new int[] { 6, 39, 4, 4 }, new int[] { 6, 40, 2, 5 }, new int[] { 6, 41, 5, 2 }, new int[] { 7, 84, 1, 5 }, new int[] { 7, 85, 5, 1 }, new int[] { 7, 86, 5, 3 }, new int[] { 7, 87, 3, 5 }, new int[] { 7, 88, 5, 4 },
|
||||
new int[] { 7, 89, 4, 5 }, new int[] { 7, 90, 6, 2 }, new int[] { 7, 91, 2, 6 }, new int[] { 7, 92, 6, 3 }, new int[] { 7, 93, 4, 0 }, new int[] { 7, 94, 6, 1 }, new int[] { 7, 95, 0, 4 }, new int[] { 7, 96, 1, 6 }, new int[] { 7, 97, 3, 6 }, new int[] { 7, 98, 5, 5 },
|
||||
new int[] { 7, 99, 6, 4 }, new int[] { 7, 100, 4, 6 }, new int[] { 8, 202, 6, 5 }, new int[] { 8, 203, 7, 2 }, new int[] { 8, 204, 3, 7 }, new int[] { 8, 205, 2, 7 }, new int[] { 8, 206, 5, 6 }, new int[] { 8, 207, 8, 2 }, new int[] { 8, 208, 7, 3 }, new int[] { 8, 209, 5, 0 },
|
||||
new int[] { 8, 210, 7, 1 }, new int[] { 8, 211, 0, 5 }, new int[] { 8, 212, 8, 1 }, new int[] { 8, 213, 1, 7 }, new int[] { 8, 214, 8, 3 }, new int[] { 8, 215, 7, 4 }, new int[] { 8, 216, 4, 7 }, new int[] { 8, 217, 2, 8 }, new int[] { 8, 218, 6, 6 }, new int[] { 8, 219, 7, 5 },
|
||||
new int[] { 8, 220, 1, 8 }, new int[] { 8, 221, 3, 8 }, new int[] { 8, 222, 8, 4 }, new int[] { 8, 223, 4, 8 }, new int[] { 8, 224, 5, 7 }, new int[] { 8, 225, 8, 5 }, new int[] { 8, 226, 5, 8 }, new int[] { 9, 454, 7, 6 }, new int[] { 9, 455, 6, 7 }, new int[] { 9, 456, 9, 2 },
|
||||
new int[] { 9, 457, 6, 0 }, new int[] { 9, 458, 6, 8 }, new int[] { 9, 459, 9, 3 }, new int[] { 9, 460, 3, 9 }, new int[] { 9, 461, 9, 1 }, new int[] { 9, 462, 2, 9 }, new int[] { 9, 463, 0, 6 }, new int[] { 9, 464, 8, 6 }, new int[] { 9, 465, 9, 4 }, new int[] { 9, 466, 4, 9 },
|
||||
new int[] { 9, 467, 10, 2 }, new int[] { 9, 468, 1, 9 }, new int[] { 9, 469, 7, 7 }, new int[] { 9, 470, 8, 7 }, new int[] { 9, 471, 9, 5 }, new int[] { 9, 472, 7, 8 }, new int[] { 9, 473, 10, 3 }, new int[] { 9, 474, 5, 9 }, new int[] { 9, 475, 10, 4 }, new int[] { 9, 476, 2, 10 },
|
||||
new int[] { 9, 477, 10, 1 }, new int[] { 9, 478, 3, 10 }, new int[] { 9, 479, 9, 6 }, new int[] { 9, 480, 6, 9 }, new int[] { 9, 481, 8, 0 }, new int[] { 9, 482, 4, 10 }, new int[] { 9, 483, 7, 0 }, new int[] { 9, 484, 11, 2 }, new int[] { 10, 970, 7, 9 }, new int[] { 10, 971, 11, 3 },
|
||||
new int[] { 10, 972, 10, 6 }, new int[] { 10, 973, 1, 10 }, new int[] { 10, 974, 11, 1 }, new int[] { 10, 975, 9, 7 }, new int[] { 10, 976, 0, 7 }, new int[] { 10, 977, 8, 8 }, new int[] { 10, 978, 10, 5 }, new int[] { 10, 979, 3, 11 }, new int[] { 10, 980, 5, 10 }, new int[] { 10, 981, 8, 9 },
|
||||
new int[] { 10, 982, 11, 5 }, new int[] { 10, 983, 0, 8 }, new int[] { 10, 984, 11, 4 }, new int[] { 10, 985, 2, 11 }, new int[] { 10, 986, 7, 10 }, new int[] { 10, 987, 6, 10 }, new int[] { 10, 988, 10, 7 }, new int[] { 10, 989, 4, 11 }, new int[] { 10, 990, 1, 11 }, new int[] { 10, 991, 12, 2 },
|
||||
new int[] { 10, 992, 9, 8 }, new int[] { 10, 993, 12, 3 }, new int[] { 10, 994, 11, 6 }, new int[] { 10, 995, 5, 11 }, new int[] { 10, 996, 12, 4 }, new int[] { 10, 997, 11, 7 }, new int[] { 10, 998, 12, 5 }, new int[] { 10, 999, 3, 12 }, new int[] { 10, 1000, 6, 11 }, new int[] { 10, 1001, 9, 0 },
|
||||
new int[] { 10, 1002, 10, 8 }, new int[] { 10, 1003, 10, 0 }, new int[] { 10, 1004, 12, 1 }, new int[] { 10, 1005, 0, 9 }, new int[] { 10, 1006, 4, 12 }, new int[] { 10, 1007, 9, 9 }, new int[] { 10, 1008, 12, 6 }, new int[] { 10, 1009, 2, 12 }, new int[] { 10, 1010, 8, 10 }, new int[] { 11, 2022, 9, 10 },
|
||||
new int[] { 11, 2023, 1, 12 }, new int[] { 11, 2024, 11, 8 }, new int[] { 11, 2025, 12, 7 }, new int[] { 11, 2026, 7, 11 }, new int[] { 11, 2027, 5, 12 }, new int[] { 11, 2028, 6, 12 }, new int[] { 11, 2029, 10, 9 }, new int[] { 11, 2030, 8, 11 }, new int[] { 11, 2031, 12, 8 }, new int[] { 11, 2032, 0, 10 },
|
||||
new int[] { 11, 2033, 7, 12 }, new int[] { 11, 2034, 11, 0 }, new int[] { 11, 2035, 10, 10 }, new int[] { 11, 2036, 11, 9 }, new int[] { 11, 2037, 11, 10 }, new int[] { 11, 2038, 0, 11 }, new int[] { 11, 2039, 11, 11 }, new int[] { 11, 2040, 9, 11 }, new int[] { 11, 2041, 10, 11 }, new int[] { 11, 2042, 12, 0 },
|
||||
new int[] { 11, 2043, 8, 12 }, new int[] { 12, 4088, 12, 9 }, new int[] { 12, 4089, 10, 12 }, new int[] { 12, 4090, 9, 12 }, new int[] { 12, 4091, 11, 12 }, new int[] { 12, 4092, 12, 11 }, new int[] { 12, 4093, 0, 12 }, new int[] { 12, 4094, 12, 10 }, new int[] { 12, 4095, 12, 12 } };
|
||||
|
||||
public static final int[][] HCB11 = new int[][] {
|
||||
new int[] { 4, 0, 0, 0 }, new int[] { 4, 1, 1, 1 }, new int[] { 5, 4, 16, 16 }, new int[] { 5, 5, 1, 0 }, new int[] { 5, 6, 0, 1 }, new int[] { 5, 7, 2, 1 }, new int[] { 5, 8, 1, 2 }, new int[] { 5, 9, 2, 2 }, new int[] { 6, 20, 1, 3 }, new int[] { 6, 21, 3, 1 },
|
||||
new int[] { 6, 22, 3, 2 }, new int[] { 6, 23, 2, 0 }, new int[] { 6, 24, 2, 3 }, new int[] { 6, 25, 0, 2 }, new int[] { 6, 26, 3, 3 }, new int[] { 7, 54, 4, 1 }, new int[] { 7, 55, 1, 4 }, new int[] { 7, 56, 4, 2 }, new int[] { 7, 57, 2, 4 }, new int[] { 7, 58, 4, 3 },
|
||||
new int[] { 7, 59, 3, 4 }, new int[] { 7, 60, 3, 0 }, new int[] { 7, 61, 0, 3 }, new int[] { 7, 62, 5, 1 }, new int[] { 7, 63, 5, 2 }, new int[] { 7, 64, 2, 5 }, new int[] { 7, 65, 4, 4 }, new int[] { 7, 66, 1, 5 }, new int[] { 7, 67, 5, 3 }, new int[] { 7, 68, 3, 5 },
|
||||
new int[] { 7, 69, 5, 4 }, new int[] { 8, 140, 4, 5 }, new int[] { 8, 141, 6, 2 }, new int[] { 8, 142, 2, 6 }, new int[] { 8, 143, 6, 1 }, new int[] { 8, 144, 6, 3 }, new int[] { 8, 145, 3, 6 }, new int[] { 8, 146, 1, 6 }, new int[] { 8, 147, 4, 16 }, new int[] { 8, 148, 3, 16 },
|
||||
new int[] { 8, 149, 16, 5 }, new int[] { 8, 150, 16, 3 }, new int[] { 8, 151, 16, 4 }, new int[] { 8, 152, 6, 4 }, new int[] { 8, 153, 16, 6 }, new int[] { 8, 154, 4, 0 }, new int[] { 8, 155, 4, 6 }, new int[] { 8, 156, 0, 4 }, new int[] { 8, 157, 2, 16 }, new int[] { 8, 158, 5, 5 },
|
||||
new int[] { 8, 159, 5, 16 }, new int[] { 8, 160, 16, 7 }, new int[] { 8, 161, 16, 2 }, new int[] { 8, 162, 16, 8 }, new int[] { 8, 163, 2, 7 }, new int[] { 8, 164, 7, 2 }, new int[] { 8, 165, 3, 7 }, new int[] { 8, 166, 6, 5 }, new int[] { 8, 167, 5, 6 }, new int[] { 8, 168, 6, 16 },
|
||||
new int[] { 8, 169, 16, 10 }, new int[] { 8, 170, 7, 3 }, new int[] { 8, 171, 7, 1 }, new int[] { 8, 172, 16, 9 }, new int[] { 8, 173, 7, 16 }, new int[] { 8, 174, 1, 16 }, new int[] { 8, 175, 1, 7 }, new int[] { 8, 176, 4, 7 }, new int[] { 8, 177, 16, 11 }, new int[] { 8, 178, 7, 4 },
|
||||
new int[] { 8, 179, 16, 12 }, new int[] { 8, 180, 8, 16 }, new int[] { 8, 181, 16, 1 }, new int[] { 8, 182, 6, 6 }, new int[] { 8, 183, 9, 16 }, new int[] { 8, 184, 2, 8 }, new int[] { 8, 185, 5, 7 }, new int[] { 8, 186, 10, 16 }, new int[] { 8, 187, 16, 13 }, new int[] { 8, 188, 8, 3 },
|
||||
new int[] { 8, 189, 8, 2 }, new int[] { 8, 190, 3, 8 }, new int[] { 8, 191, 5, 0 }, new int[] { 8, 192, 16, 14 }, new int[] { 8, 193, 11, 16 }, new int[] { 8, 194, 7, 5 }, new int[] { 8, 195, 4, 8 }, new int[] { 8, 196, 6, 7 }, new int[] { 8, 197, 7, 6 }, new int[] { 8, 198, 0, 5 },
|
||||
new int[] { 9, 398, 8, 4 }, new int[] { 9, 399, 16, 15 }, new int[] { 9, 400, 12, 16 }, new int[] { 9, 401, 1, 8 }, new int[] { 9, 402, 8, 1 }, new int[] { 9, 403, 14, 16 }, new int[] { 9, 404, 5, 8 }, new int[] { 9, 405, 13, 16 }, new int[] { 9, 406, 3, 9 }, new int[] { 9, 407, 8, 5 },
|
||||
new int[] { 9, 408, 7, 7 }, new int[] { 9, 409, 2, 9 }, new int[] { 9, 410, 8, 6 }, new int[] { 9, 411, 9, 2 }, new int[] { 9, 412, 9, 3 }, new int[] { 9, 413, 15, 16 }, new int[] { 9, 414, 4, 9 }, new int[] { 9, 415, 6, 8 }, new int[] { 9, 416, 6, 0 }, new int[] { 9, 417, 9, 4 },
|
||||
new int[] { 9, 418, 5, 9 }, new int[] { 9, 419, 8, 7 }, new int[] { 9, 420, 7, 8 }, new int[] { 9, 421, 1, 9 }, new int[] { 9, 422, 10, 3 }, new int[] { 9, 423, 0, 6 }, new int[] { 9, 424, 10, 2 }, new int[] { 9, 425, 9, 1 }, new int[] { 9, 426, 9, 5 }, new int[] { 9, 427, 4, 10 },
|
||||
new int[] { 9, 428, 2, 10 }, new int[] { 9, 429, 9, 6 }, new int[] { 9, 430, 3, 10 }, new int[] { 9, 431, 6, 9 }, new int[] { 9, 432, 10, 4 }, new int[] { 9, 433, 8, 8 }, new int[] { 9, 434, 10, 5 }, new int[] { 9, 435, 9, 7 }, new int[] { 9, 436, 11, 3 }, new int[] { 9, 437, 1, 10 },
|
||||
new int[] { 9, 438, 7, 0 }, new int[] { 9, 439, 10, 6 }, new int[] { 9, 440, 7, 9 }, new int[] { 9, 441, 3, 11 }, new int[] { 9, 442, 5, 10 }, new int[] { 9, 443, 10, 1 }, new int[] { 9, 444, 4, 11 }, new int[] { 9, 445, 11, 2 }, new int[] { 9, 446, 13, 2 }, new int[] { 9, 447, 6, 10 },
|
||||
new int[] { 9, 448, 13, 3 }, new int[] { 9, 449, 2, 11 }, new int[] { 9, 450, 16, 0 }, new int[] { 9, 451, 5, 11 }, new int[] { 9, 452, 11, 5 }, new int[] { 10, 906, 11, 4 }, new int[] { 10, 907, 9, 8 }, new int[] { 10, 908, 7, 10 }, new int[] { 10, 909, 8, 9 }, new int[] { 10, 910, 0, 16 },
|
||||
new int[] { 10, 911, 4, 13 }, new int[] { 10, 912, 0, 7 }, new int[] { 10, 913, 3, 13 }, new int[] { 10, 914, 11, 6 }, new int[] { 10, 915, 13, 1 }, new int[] { 10, 916, 13, 4 }, new int[] { 10, 917, 12, 3 }, new int[] { 10, 918, 2, 13 }, new int[] { 10, 919, 13, 5 }, new int[] { 10, 920, 8, 10 },
|
||||
new int[] { 10, 921, 6, 11 }, new int[] { 10, 922, 10, 8 }, new int[] { 10, 923, 10, 7 }, new int[] { 10, 924, 14, 2 }, new int[] { 10, 925, 12, 4 }, new int[] { 10, 926, 1, 11 }, new int[] { 10, 927, 4, 12 }, new int[] { 10, 928, 11, 1 }, new int[] { 10, 929, 3, 12 }, new int[] { 10, 930, 1, 13 },
|
||||
new int[] { 10, 931, 12, 2 }, new int[] { 10, 932, 7, 11 }, new int[] { 10, 933, 3, 14 }, new int[] { 10, 934, 5, 12 }, new int[] { 10, 935, 5, 13 }, new int[] { 10, 936, 14, 4 }, new int[] { 10, 937, 4, 14 }, new int[] { 10, 938, 11, 7 }, new int[] { 10, 939, 14, 3 }, new int[] { 10, 940, 12, 5 },
|
||||
new int[] { 10, 941, 13, 6 }, new int[] { 10, 942, 12, 6 }, new int[] { 10, 943, 8, 0 }, new int[] { 10, 944, 11, 8 }, new int[] { 10, 945, 2, 12 }, new int[] { 10, 946, 9, 9 }, new int[] { 10, 947, 14, 5 }, new int[] { 10, 948, 6, 13 }, new int[] { 10, 949, 10, 10 }, new int[] { 10, 950, 15, 2 },
|
||||
new int[] { 10, 951, 8, 11 }, new int[] { 10, 952, 9, 10 }, new int[] { 10, 953, 14, 6 }, new int[] { 10, 954, 10, 9 }, new int[] { 10, 955, 5, 14 }, new int[] { 10, 956, 11, 9 }, new int[] { 10, 957, 14, 1 }, new int[] { 10, 958, 2, 14 }, new int[] { 10, 959, 6, 12 }, new int[] { 10, 960, 1, 12 },
|
||||
new int[] { 10, 961, 13, 8 }, new int[] { 10, 962, 0, 8 }, new int[] { 10, 963, 13, 7 }, new int[] { 10, 964, 7, 12 }, new int[] { 10, 965, 12, 7 }, new int[] { 10, 966, 7, 13 }, new int[] { 10, 967, 15, 3 }, new int[] { 10, 968, 12, 1 }, new int[] { 10, 969, 6, 14 }, new int[] { 10, 970, 2, 15 },
|
||||
new int[] { 10, 971, 15, 5 }, new int[] { 10, 972, 15, 4 }, new int[] { 10, 973, 1, 14 }, new int[] { 10, 974, 9, 11 }, new int[] { 10, 975, 4, 15 }, new int[] { 10, 976, 14, 7 }, new int[] { 10, 977, 8, 13 }, new int[] { 10, 978, 13, 9 }, new int[] { 10, 979, 8, 12 }, new int[] { 10, 980, 5, 15 },
|
||||
new int[] { 10, 981, 3, 15 }, new int[] { 10, 982, 10, 11 }, new int[] { 10, 983, 11, 10 }, new int[] { 10, 984, 12, 8 }, new int[] { 10, 985, 15, 6 }, new int[] { 10, 986, 15, 7 }, new int[] { 10, 987, 8, 14 }, new int[] { 10, 988, 15, 1 }, new int[] { 10, 989, 7, 14 }, new int[] { 10, 990, 9, 0 },
|
||||
new int[] { 10, 991, 0, 9 }, new int[] { 10, 992, 9, 13 }, new int[] { 10, 993, 9, 12 }, new int[] { 10, 994, 12, 9 }, new int[] { 10, 995, 14, 8 }, new int[] { 10, 996, 10, 13 }, new int[] { 10, 997, 14, 9 }, new int[] { 10, 998, 12, 10 }, new int[] { 10, 999, 6, 15 }, new int[] { 10, 1000, 7, 15 },
|
||||
new int[] { 11, 2002, 9, 14 }, new int[] { 11, 2003, 15, 8 }, new int[] { 11, 2004, 11, 11 }, new int[] { 11, 2005, 11, 14 }, new int[] { 11, 2006, 1, 15 }, new int[] { 11, 2007, 10, 12 }, new int[] { 11, 2008, 10, 14 }, new int[] { 11, 2009, 13, 11 }, new int[] { 11, 2010, 13, 10 }, new int[] { 11, 2011, 11, 13 },
|
||||
new int[] { 11, 2012, 11, 12 }, new int[] { 11, 2013, 8, 15 }, new int[] { 11, 2014, 14, 11 }, new int[] { 11, 2015, 13, 12 }, new int[] { 11, 2016, 12, 13 }, new int[] { 11, 2017, 15, 9 }, new int[] { 11, 2018, 14, 10 }, new int[] { 11, 2019, 10, 0 }, new int[] { 11, 2020, 12, 11 }, new int[] { 11, 2021, 9, 15 },
|
||||
new int[] { 11, 2022, 0, 10 }, new int[] { 11, 2023, 12, 12 }, new int[] { 11, 2024, 11, 0 }, new int[] { 11, 2025, 12, 14 }, new int[] { 11, 2026, 10, 15 }, new int[] { 11, 2027, 13, 13 }, new int[] { 11, 2028, 0, 13 }, new int[] { 11, 2029, 14, 12 }, new int[] { 11, 2030, 15, 10 }, new int[] { 11, 2031, 15, 11 },
|
||||
new int[] { 11, 2032, 11, 15 }, new int[] { 11, 2033, 14, 13 }, new int[] { 11, 2034, 13, 0 }, new int[] { 11, 2035, 0, 11 }, new int[] { 11, 2036, 13, 14 }, new int[] { 11, 2037, 15, 12 }, new int[] { 11, 2038, 15, 13 }, new int[] { 11, 2039, 12, 15 }, new int[] { 11, 2040, 14, 0 }, new int[] { 11, 2041, 14, 14 },
|
||||
new int[] { 11, 2042, 13, 15 }, new int[] { 11, 2043, 12, 0 }, new int[] { 11, 2044, 14, 15 }, new int[] { 12, 4090, 0, 14 }, new int[] { 12, 4091, 0, 12 }, new int[] { 12, 4092, 15, 14 }, new int[] { 12, 4093, 15, 0 }, new int[] { 12, 4094, 0, 15 }, new int[] { 12, 4095, 15, 15 } };
|
||||
|
||||
public static final int[][] HCB_SF = new int[][] {
|
||||
new int[] { 1, 0, 60 }, new int[] { 3, 4, 59 }, new int[] { 4, 10, 61 }, new int[] { 4, 11, 58 }, new int[] { 4, 12, 62 }, new int[] { 5, 26, 57 }, new int[] { 5, 27, 63 }, new int[] { 6, 56, 56 }, new int[] { 6, 57, 64 }, new int[] { 6, 58, 55 },
|
||||
new int[] { 6, 59, 65 }, new int[] { 7, 120, 66 }, new int[] { 7, 121, 54 }, new int[] { 7, 122, 67 }, new int[] { 8, 246, 53 }, new int[] { 8, 247, 68 }, new int[] { 8, 248, 52 }, new int[] { 8, 249, 69 }, new int[] { 8, 250, 51 }, new int[] { 9, 502, 70 },
|
||||
new int[] { 9, 503, 50 }, new int[] { 9, 504, 49 }, new int[] { 9, 505, 71 }, new int[] { 10, 1012, 72 }, new int[] { 10, 1013, 48 }, new int[] { 10, 1014, 73 }, new int[] { 10, 1015, 47 }, new int[] { 10, 1016, 74 }, new int[] { 10, 1017, 46 }, new int[] { 11, 2036, 76 },
|
||||
new int[] { 11, 2037, 75 }, new int[] { 11, 2038, 77 }, new int[] { 11, 2039, 78 }, new int[] { 11, 2040, 45 }, new int[] { 11, 2041, 43 }, new int[] { 12, 4084, 44 }, new int[] { 12, 4085, 79 }, new int[] { 12, 4086, 42 }, new int[] { 12, 4087, 41 }, new int[] { 12, 4088, 80 },
|
||||
new int[] { 12, 4089, 40 }, new int[] { 13, 8180, 81 }, new int[] { 13, 8181, 39 }, new int[] { 13, 8182, 82 }, new int[] { 13, 8183, 38 }, new int[] { 13, 8184, 83 }, new int[] { 14, 16370, 37 }, new int[] { 14, 16371, 35 }, new int[] { 14, 16372, 85 }, new int[] { 14, 16373, 33 },
|
||||
new int[] { 14, 16374, 36 }, new int[] { 14, 16375, 34 }, new int[] { 14, 16376, 84 }, new int[] { 14, 16377, 32 }, new int[] { 15, 32756, 87 }, new int[] { 15, 32757, 89 }, new int[] { 15, 32758, 30 }, new int[] { 15, 32759, 31 }, new int[] { 16, 65520, 86 }, new int[] { 16, 65521, 29 },
|
||||
new int[] { 16, 65522, 26 }, new int[] { 16, 65523, 27 }, new int[] { 16, 65524, 28 }, new int[] { 16, 65525, 24 }, new int[] { 16, 65526, 88 }, new int[] { 17, 131054, 25 }, new int[] { 17, 131055, 22 }, new int[] { 17, 131056, 23 }, new int[] { 18, 262114, 90 }, new int[] { 18, 262115, 21 },
|
||||
new int[] { 18, 262116, 19 }, new int[] { 18, 262117, 3 }, new int[] { 18, 262118, 1 }, new int[] { 18, 262119, 2 }, new int[] { 18, 262120, 0 }, new int[] { 19, 524242, 98 }, new int[] { 19, 524243, 99 }, new int[] { 19, 524244, 100 }, new int[] { 19, 524245, 101 }, new int[] { 19, 524246, 102 },
|
||||
new int[] { 19, 524247, 117 }, new int[] { 19, 524248, 97 }, new int[] { 19, 524249, 91 }, new int[] { 19, 524250, 92 }, new int[] { 19, 524251, 93 }, new int[] { 19, 524252, 94 }, new int[] { 19, 524253, 95 }, new int[] { 19, 524254, 96 }, new int[] { 19, 524255, 104 }, new int[] { 19, 524256, 111 },
|
||||
new int[] { 19, 524257, 112 }, new int[] { 19, 524258, 113 }, new int[] { 19, 524259, 114 }, new int[] { 19, 524260, 115 }, new int[] { 19, 524261, 116 }, new int[] { 19, 524262, 110 }, new int[] { 19, 524263, 105 }, new int[] { 19, 524264, 106 }, new int[] { 19, 524265, 107 }, new int[] { 19, 524266, 108 },
|
||||
new int[] { 19, 524267, 109 }, new int[] { 19, 524268, 118 }, new int[] { 19, 524269, 6 }, new int[] { 19, 524270, 8 }, new int[] { 19, 524271, 9 }, new int[] { 19, 524272, 10 }, new int[] { 19, 524273, 5 }, new int[] { 19, 524274, 103 }, new int[] { 19, 524275, 120 }, new int[] { 19, 524276, 119 },
|
||||
new int[] { 19, 524277, 4 }, new int[] { 19, 524278, 7 }, new int[] { 19, 524279, 15 }, new int[] { 19, 524280, 16 }, new int[] { 19, 524281, 18 }, new int[] { 19, 524282, 20 }, new int[] { 19, 524283, 17 }, new int[] { 19, 524284, 11 }, new int[] { 19, 524285, 12 }, new int[] { 19, 524286, 14 },
|
||||
new int[] { 19, 524287, 13 } };
|
||||
|
||||
public static final int[][][] CODEBOOKS = new int[][][] {
|
||||
HCB1, HCB2, HCB3, HCB4, HCB5, HCB6, HCB7, HCB8, HCB9, HCB10,
|
||||
HCB11 };
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package net.sourceforge.jaad.aac.huffman;
|
||||
|
||||
public interface HCB {
|
||||
public static final int ZERO_HCB = 0;
|
||||
|
||||
public static final int ESCAPE_HCB = 11;
|
||||
|
||||
public static final int NOISE_HCB = 13;
|
||||
|
||||
public static final int INTENSITY_HCB2 = 14;
|
||||
|
||||
public static final int INTENSITY_HCB = 15;
|
||||
|
||||
public static final int FIRST_PAIR_HCB = 5;
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package net.sourceforge.jaad.aac.huffman;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
|
||||
public class Huffman implements Codebooks {
|
||||
private static final boolean[] UNSIGNED = new boolean[] {
|
||||
false, false, true, true, false, false, true, true, true, true,
|
||||
true };
|
||||
|
||||
private static final int QUAD_LEN = 4;
|
||||
|
||||
private static final int PAIR_LEN = 2;
|
||||
|
||||
private static int findOffset(IBitStream _in, int[][] table) throws AACException {
|
||||
int off = 0;
|
||||
int len = table[off][0];
|
||||
int cw = _in.readBits(len);
|
||||
while (cw != table[off][1]) {
|
||||
off++;
|
||||
int j = table[off][0] - len;
|
||||
len = table[off][0];
|
||||
cw <<= j;
|
||||
cw |= _in.readBits(j);
|
||||
}
|
||||
return off;
|
||||
}
|
||||
|
||||
private static void signValues(IBitStream _in, int[] data, int off, int len) throws AACException {
|
||||
for (int i = off; i < off + len; i++) {
|
||||
if (data[i] != 0 &&
|
||||
_in.readBool())
|
||||
data[i] = -data[i];
|
||||
}
|
||||
}
|
||||
|
||||
private static int getEscape(IBitStream _in, int s) throws AACException {
|
||||
boolean neg = (s < 0);
|
||||
int i = 4;
|
||||
while (_in.readBool())
|
||||
i++;
|
||||
int j = _in.readBits(i) | 1 << i;
|
||||
return neg ? -j : j;
|
||||
}
|
||||
|
||||
public static int decodeScaleFactor(IBitStream _in) throws AACException {
|
||||
int offset = findOffset(_in, HCB_SF);
|
||||
return HCB_SF[offset][2];
|
||||
}
|
||||
|
||||
public static void decodeSpectralData(IBitStream _in, int cb, int[] data, int off) throws AACException {
|
||||
int[][] HCB = CODEBOOKS[cb - 1];
|
||||
int offset = findOffset(_in, HCB);
|
||||
data[off] = HCB[offset][2];
|
||||
data[off + 1] = HCB[offset][3];
|
||||
if (cb < 5) {
|
||||
data[off + 2] = HCB[offset][4];
|
||||
data[off + 3] = HCB[offset][5];
|
||||
}
|
||||
if (cb < 11) {
|
||||
if (UNSIGNED[cb - 1])
|
||||
signValues(_in, data, off, (cb < 5) ? 4 : 2);
|
||||
} else if (cb == 11 || cb > 15) {
|
||||
signValues(_in, data, off, (cb < 5) ? 4 : 2);
|
||||
if (Math.abs(data[off]) == 16)
|
||||
data[off] = getEscape(_in, data[off]);
|
||||
if (Math.abs(data[off + 1]) == 16)
|
||||
data[off + 1] = getEscape(_in, data[off + 1]);
|
||||
} else {
|
||||
throw new AACException("Huffman: unknown spectral codebook: " + cb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,932 @@
|
|||
package net.sourceforge.jaad.aac.ps;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
|
||||
public class PS implements PSConstants, PSTables, PSHuffmanTables {
|
||||
boolean enable_iid;
|
||||
|
||||
boolean enable_icc;
|
||||
|
||||
boolean enable_ext;
|
||||
|
||||
int iid_mode;
|
||||
|
||||
int icc_mode;
|
||||
|
||||
int nr_iid_par;
|
||||
|
||||
int nr_ipdopd_par;
|
||||
|
||||
int nr_icc_par;
|
||||
|
||||
int frame_class;
|
||||
|
||||
int num_env;
|
||||
|
||||
int[] border_position;
|
||||
|
||||
boolean[] iid_dt;
|
||||
|
||||
boolean[] icc_dt;
|
||||
|
||||
boolean enable_ipdopd;
|
||||
|
||||
int ipd_mode;
|
||||
|
||||
boolean[] ipd_dt;
|
||||
|
||||
boolean[] opd_dt;
|
||||
|
||||
int[] iid_index_prev;
|
||||
|
||||
int[] icc_index_prev;
|
||||
|
||||
int[] ipd_index_prev;
|
||||
|
||||
int[] opd_index_prev;
|
||||
|
||||
int[][] iid_index;
|
||||
|
||||
int[][] icc_index;
|
||||
|
||||
int[][] ipd_index;
|
||||
|
||||
int[][] opd_index;
|
||||
|
||||
int[] ipd_index_1;
|
||||
|
||||
int[] opd_index_1;
|
||||
|
||||
int[] ipd_index_2;
|
||||
|
||||
int[] opd_index_2;
|
||||
|
||||
int ps_data_available;
|
||||
|
||||
public boolean header_read;
|
||||
|
||||
PSFilterbank hyb;
|
||||
|
||||
boolean use34hybrid_bands;
|
||||
|
||||
int numTimeSlotsRate;
|
||||
|
||||
int num_groups;
|
||||
|
||||
int num_hybrid_groups;
|
||||
|
||||
int nr_par_bands;
|
||||
|
||||
int nr_allpass_bands;
|
||||
|
||||
int decay_cutoff;
|
||||
|
||||
int[] group_border;
|
||||
|
||||
int[] map_group2bk;
|
||||
|
||||
int saved_delay;
|
||||
|
||||
int[] delay_buf_index_ser;
|
||||
|
||||
int[] num_sample_delay_ser;
|
||||
|
||||
int[] delay_D;
|
||||
|
||||
int[] delay_buf_index_delay;
|
||||
|
||||
float[][][] delay_Qmf;
|
||||
|
||||
float[][][] delay_SubQmf;
|
||||
|
||||
float[][][][] delay_Qmf_ser;
|
||||
|
||||
float[][][][] delay_SubQmf_ser;
|
||||
|
||||
float alpha_decay;
|
||||
|
||||
float alpha_smooth;
|
||||
|
||||
float[] P_PeakDecayNrg;
|
||||
|
||||
float[] P_prev;
|
||||
|
||||
float[] P_SmoothPeakDecayDiffNrg_prev;
|
||||
|
||||
float[][] h11_prev;
|
||||
|
||||
float[][] h12_prev;
|
||||
|
||||
float[][] h21_prev;
|
||||
|
||||
float[][] h22_prev;
|
||||
|
||||
int phase_hist;
|
||||
|
||||
float[][][] ipd_prev;
|
||||
|
||||
float[][][] opd_prev;
|
||||
|
||||
public PS(SampleFrequency sr, int numTimeSlotsRate) {
|
||||
this.border_position = new int[6];
|
||||
this.iid_dt = new boolean[5];
|
||||
this.icc_dt = new boolean[5];
|
||||
this.ipd_dt = new boolean[5];
|
||||
this.opd_dt = new boolean[5];
|
||||
this.iid_index_prev = new int[34];
|
||||
this.icc_index_prev = new int[34];
|
||||
this.ipd_index_prev = new int[17];
|
||||
this.opd_index_prev = new int[17];
|
||||
this.iid_index = new int[5][34];
|
||||
this.icc_index = new int[5][34];
|
||||
this.ipd_index = new int[5][17];
|
||||
this.opd_index = new int[5][17];
|
||||
this.ipd_index_1 = new int[17];
|
||||
this.opd_index_1 = new int[17];
|
||||
this.ipd_index_2 = new int[17];
|
||||
this.opd_index_2 = new int[17];
|
||||
this.delay_buf_index_ser = new int[3];
|
||||
this.num_sample_delay_ser = new int[3];
|
||||
this.delay_D = new int[64];
|
||||
this.delay_buf_index_delay = new int[64];
|
||||
this.delay_Qmf = new float[14][64][2];
|
||||
this.delay_SubQmf = new float[2][32][2];
|
||||
this.delay_Qmf_ser = new float[3][5][64][2];
|
||||
this.delay_SubQmf_ser = new float[3][5][32][2];
|
||||
this.P_PeakDecayNrg = new float[34];
|
||||
this.P_prev = new float[34];
|
||||
this.P_SmoothPeakDecayDiffNrg_prev = new float[34];
|
||||
this.h11_prev = new float[50][2];
|
||||
this.h12_prev = new float[50][2];
|
||||
this.h21_prev = new float[50][2];
|
||||
this.h22_prev = new float[50][2];
|
||||
this.ipd_prev = new float[20][2][2];
|
||||
this.opd_prev = new float[20][2][2];
|
||||
this.hyb = new PSFilterbank(numTimeSlotsRate);
|
||||
this.numTimeSlotsRate = numTimeSlotsRate;
|
||||
this.ps_data_available = 0;
|
||||
this.saved_delay = 0;
|
||||
for (int i1 = 0; i1 < 64; i1++)
|
||||
this.delay_buf_index_delay[i1] = 0;
|
||||
for (int n = 0; n < 3; n++) {
|
||||
this.delay_buf_index_ser[n] = 0;
|
||||
this.num_sample_delay_ser[n] = delay_length_d[n];
|
||||
}
|
||||
int short_delay_band = 35;
|
||||
this.nr_allpass_bands = 22;
|
||||
this.alpha_decay = 0.7659283F;
|
||||
this.alpha_smooth = 0.25F;
|
||||
for (int m = 0; m < short_delay_band; m++)
|
||||
this.delay_D[m] = 14;
|
||||
for (int k = short_delay_band; k < 64; k++)
|
||||
this.delay_D[k] = 1;
|
||||
for (int j = 0; j < 50; j++) {
|
||||
this.h11_prev[j][0] = 1.0F;
|
||||
this.h12_prev[j][1] = 1.0F;
|
||||
this.h11_prev[j][0] = 1.0F;
|
||||
this.h12_prev[j][1] = 1.0F;
|
||||
}
|
||||
this.phase_hist = 0;
|
||||
for (int i = 0; i < 20; i++) {
|
||||
this.ipd_prev[i][0][0] = 0.0F;
|
||||
this.ipd_prev[i][0][1] = 0.0F;
|
||||
this.ipd_prev[i][1][0] = 0.0F;
|
||||
this.ipd_prev[i][1][1] = 0.0F;
|
||||
this.opd_prev[i][0][0] = 0.0F;
|
||||
this.opd_prev[i][0][1] = 0.0F;
|
||||
this.opd_prev[i][1][0] = 0.0F;
|
||||
this.opd_prev[i][1][1] = 0.0F;
|
||||
}
|
||||
}
|
||||
|
||||
public int decode(IBitStream ld) throws AACException {
|
||||
long bits = (long)ld.getPosition();
|
||||
if (ld.readBool()) {
|
||||
this.header_read = true;
|
||||
this.use34hybrid_bands = false;
|
||||
this.enable_iid = ld.readBool();
|
||||
if (this.enable_iid) {
|
||||
this.iid_mode = ld.readBits(3);
|
||||
this.nr_iid_par = nr_iid_par_tab[this.iid_mode];
|
||||
this.nr_ipdopd_par = nr_ipdopd_par_tab[this.iid_mode];
|
||||
if (this.iid_mode == 2 || this.iid_mode == 5)
|
||||
this.use34hybrid_bands = true;
|
||||
this.ipd_mode = this.iid_mode;
|
||||
}
|
||||
this.enable_icc = ld.readBool();
|
||||
if (this.enable_icc) {
|
||||
this.icc_mode = ld.readBits(3);
|
||||
this.nr_icc_par = nr_icc_par_tab[this.icc_mode];
|
||||
if (this.icc_mode == 2 || this.icc_mode == 5)
|
||||
this.use34hybrid_bands = true;
|
||||
}
|
||||
this.enable_ext = ld.readBool();
|
||||
}
|
||||
if (!this.header_read) {
|
||||
this.ps_data_available = 0;
|
||||
return 1;
|
||||
}
|
||||
this.frame_class = ld.readBit();
|
||||
int tmp = ld.readBits(2);
|
||||
this.num_env = num_env_tab[this.frame_class][tmp];
|
||||
if (this.frame_class != 0)
|
||||
for (int n = 1; n < this.num_env + 1; n++)
|
||||
this.border_position[n] = ld.readBits(5) + 1;
|
||||
if (this.enable_iid)
|
||||
for (int n = 0; n < this.num_env; n++) {
|
||||
this.iid_dt[n] = ld.readBool();
|
||||
if (this.iid_mode < 3) {
|
||||
huff_data(ld, this.iid_dt[n], this.nr_iid_par, t_huff_iid_def, f_huff_iid_def, this.iid_index[n]);
|
||||
} else {
|
||||
huff_data(ld, this.iid_dt[n], this.nr_iid_par, t_huff_iid_fine, f_huff_iid_fine, this.iid_index[n]);
|
||||
}
|
||||
}
|
||||
if (this.enable_icc)
|
||||
for (int n = 0; n < this.num_env; n++) {
|
||||
this.icc_dt[n] = ld.readBool();
|
||||
huff_data(ld, this.icc_dt[n], this.nr_icc_par, t_huff_icc, f_huff_icc, this.icc_index[n]);
|
||||
}
|
||||
if (this.enable_ext) {
|
||||
int cnt = ld.readBits(4);
|
||||
if (cnt == 15)
|
||||
cnt += ld.readBits(8);
|
||||
int num_bits_left = 8 * cnt;
|
||||
while (num_bits_left > 7) {
|
||||
int ps_extension_id = ld.readBits(2);
|
||||
num_bits_left -= 2;
|
||||
num_bits_left -= ps_extension(ld, ps_extension_id, num_bits_left);
|
||||
}
|
||||
ld.skipBits(num_bits_left);
|
||||
}
|
||||
int bits2 = (int)((long)ld.getPosition() - bits);
|
||||
this.ps_data_available = 1;
|
||||
return bits2;
|
||||
}
|
||||
|
||||
private int ps_extension(IBitStream ld, int ps_extension_id, int num_bits_left) throws AACException {
|
||||
long bits = (long)ld.getPosition();
|
||||
if (ps_extension_id == 0) {
|
||||
this.enable_ipdopd = ld.readBool();
|
||||
if (this.enable_ipdopd)
|
||||
for (int n = 0; n < this.num_env; n++) {
|
||||
this.ipd_dt[n] = ld.readBool();
|
||||
huff_data(ld, this.ipd_dt[n], this.nr_ipdopd_par, t_huff_ipd, f_huff_ipd, this.ipd_index[n]);
|
||||
this.opd_dt[n] = ld.readBool();
|
||||
huff_data(ld, this.opd_dt[n], this.nr_ipdopd_par, t_huff_opd, f_huff_opd, this.opd_index[n]);
|
||||
}
|
||||
ld.readBit();
|
||||
}
|
||||
int bits2 = (int)((long)ld.getPosition() - bits);
|
||||
return bits2;
|
||||
}
|
||||
|
||||
private void huff_data(IBitStream ld, boolean dt, int nr_par, int[][] t_huff, int[][] f_huff, int[] par) throws AACException {
|
||||
if (dt) {
|
||||
for (int n = 0; n < nr_par; n++)
|
||||
par[n] = ps_huff_dec(ld, t_huff);
|
||||
} else {
|
||||
par[0] = ps_huff_dec(ld, f_huff);
|
||||
for (int n = 1; n < nr_par; n++)
|
||||
par[n] = ps_huff_dec(ld, f_huff);
|
||||
}
|
||||
}
|
||||
|
||||
private int ps_huff_dec(IBitStream ld, int[][] t_huff) throws AACException {
|
||||
int index = 0;
|
||||
while (index >= 0) {
|
||||
int bit = ld.readBit();
|
||||
index = t_huff[index][bit];
|
||||
}
|
||||
return index + 31;
|
||||
}
|
||||
|
||||
private int delta_clip(int i, int min, int max) {
|
||||
if (i < min)
|
||||
return min;
|
||||
if (i > max)
|
||||
return max;
|
||||
return i;
|
||||
}
|
||||
|
||||
private void delta_decode(boolean enable, int[] index, int[] index_prev, boolean dt_flag, int nr_par, int stride, int min_index, int max_index) {
|
||||
if (enable) {
|
||||
if (!dt_flag) {
|
||||
index[0] = 0 + index[0];
|
||||
index[0] = delta_clip(index[0], min_index, max_index);
|
||||
for (int i = 1; i < nr_par; i++) {
|
||||
index[i] = index[i - 1] + index[i];
|
||||
index[i] = delta_clip(index[i], min_index, max_index);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < nr_par; i++) {
|
||||
index[i] = index_prev[i * stride] + index[i];
|
||||
index[i] = delta_clip(index[i], min_index, max_index);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < nr_par; i++)
|
||||
index[i] = 0;
|
||||
}
|
||||
if (stride == 2)
|
||||
for (int i = (nr_par << 1) - 1; i > 0; i--)
|
||||
index[i] = index[i >> 1];
|
||||
}
|
||||
|
||||
private void delta_modulo_decode(boolean enable, int[] index, int[] index_prev, boolean dt_flag, int nr_par, int stride, int and_modulo) {
|
||||
if (enable) {
|
||||
if (!dt_flag) {
|
||||
index[0] = 0 + index[0];
|
||||
index[0] = index[0] & and_modulo;
|
||||
for (int i = 1; i < nr_par; i++) {
|
||||
index[i] = index[i - 1] + index[i];
|
||||
index[i] = index[i] & and_modulo;
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < nr_par; i++) {
|
||||
index[i] = index_prev[i * stride] + index[i];
|
||||
index[i] = index[i] & and_modulo;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < nr_par; i++)
|
||||
index[i] = 0;
|
||||
}
|
||||
if (stride == 2) {
|
||||
index[0] = 0;
|
||||
for (int i = (nr_par << 1) - 1; i > 0; i--)
|
||||
index[i] = index[i >> 1];
|
||||
}
|
||||
}
|
||||
|
||||
private void map20indexto34(int[] index, int bins) {
|
||||
index[1] = (index[0] + index[1]) / 2;
|
||||
index[2] = index[1];
|
||||
index[3] = index[2];
|
||||
index[4] = (index[2] + index[3]) / 2;
|
||||
index[5] = index[3];
|
||||
index[6] = index[4];
|
||||
index[7] = index[4];
|
||||
index[8] = index[5];
|
||||
index[9] = index[5];
|
||||
index[10] = index[6];
|
||||
index[11] = index[7];
|
||||
index[12] = index[8];
|
||||
index[13] = index[8];
|
||||
index[14] = index[9];
|
||||
index[15] = index[9];
|
||||
index[16] = index[10];
|
||||
if (bins == 34) {
|
||||
index[17] = index[11];
|
||||
index[18] = index[12];
|
||||
index[19] = index[13];
|
||||
index[20] = index[14];
|
||||
index[21] = index[14];
|
||||
index[22] = index[15];
|
||||
index[23] = index[15];
|
||||
index[24] = index[16];
|
||||
index[25] = index[16];
|
||||
index[26] = index[17];
|
||||
index[27] = index[17];
|
||||
index[28] = index[18];
|
||||
index[29] = index[18];
|
||||
index[30] = index[18];
|
||||
index[31] = index[18];
|
||||
index[32] = index[19];
|
||||
index[33] = index[19];
|
||||
}
|
||||
}
|
||||
|
||||
private void ps_data_decode() {
|
||||
if (this.ps_data_available == 0)
|
||||
this.num_env = 0;
|
||||
for (int env = 0; env < this.num_env; env++) {
|
||||
int[] iid_index_prev, icc_index_prev, ipd_index_prev, opd_index_prev;
|
||||
int num_iid_steps = (this.iid_mode < 3) ? 7 : 15;
|
||||
if (env == 0) {
|
||||
iid_index_prev = this.iid_index_prev;
|
||||
icc_index_prev = this.icc_index_prev;
|
||||
ipd_index_prev = this.ipd_index_prev;
|
||||
opd_index_prev = this.opd_index_prev;
|
||||
} else {
|
||||
iid_index_prev = this.iid_index[env - 1];
|
||||
icc_index_prev = this.icc_index[env - 1];
|
||||
ipd_index_prev = this.ipd_index[env - 1];
|
||||
opd_index_prev = this.opd_index[env - 1];
|
||||
}
|
||||
delta_decode(this.enable_iid, this.iid_index[env], iid_index_prev, this.iid_dt[env], this.nr_iid_par, (
|
||||
|
||||
this.iid_mode == 0 || this.iid_mode == 3) ? 2 : 1, -num_iid_steps, num_iid_steps);
|
||||
delta_decode(this.enable_icc, this.icc_index[env], icc_index_prev, this.icc_dt[env], this.nr_icc_par, (
|
||||
|
||||
this.icc_mode == 0 || this.icc_mode == 3) ? 2 : 1, 0, 7);
|
||||
delta_modulo_decode(this.enable_ipdopd, this.ipd_index[env], ipd_index_prev, this.ipd_dt[env], this.nr_ipdopd_par, 1, 7);
|
||||
delta_modulo_decode(this.enable_ipdopd, this.opd_index[env], opd_index_prev, this.opd_dt[env], this.nr_ipdopd_par, 1, 7);
|
||||
}
|
||||
if (this.num_env == 0) {
|
||||
this.num_env = 1;
|
||||
if (this.enable_iid) {
|
||||
for (int k = 0; k < 34; k++)
|
||||
this.iid_index[0][k] = this.iid_index_prev[k];
|
||||
} else {
|
||||
for (int k = 0; k < 34; k++)
|
||||
this.iid_index[0][k] = 0;
|
||||
}
|
||||
if (this.enable_icc) {
|
||||
for (int k = 0; k < 34; k++)
|
||||
this.icc_index[0][k] = this.icc_index_prev[k];
|
||||
} else {
|
||||
for (int k = 0; k < 34; k++)
|
||||
this.icc_index[0][k] = 0;
|
||||
}
|
||||
if (this.enable_ipdopd) {
|
||||
for (int k = 0; k < 17; k++) {
|
||||
this.ipd_index[0][k] = this.ipd_index_prev[k];
|
||||
this.opd_index[0][k] = this.opd_index_prev[k];
|
||||
}
|
||||
} else {
|
||||
for (int k = 0; k < 17; k++) {
|
||||
this.ipd_index[0][k] = 0;
|
||||
this.opd_index[0][k] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < 34; j++)
|
||||
this.iid_index_prev[j] = this.iid_index[this.num_env - 1][j];
|
||||
for (int i = 0; i < 34; i++)
|
||||
this.icc_index_prev[i] = this.icc_index[this.num_env - 1][i];
|
||||
for (int bin = 0; bin < 17; bin++) {
|
||||
this.ipd_index_prev[bin] = this.ipd_index[this.num_env - 1][bin];
|
||||
this.opd_index_prev[bin] = this.opd_index[this.num_env - 1][bin];
|
||||
}
|
||||
this.ps_data_available = 0;
|
||||
if (this.frame_class == 0) {
|
||||
this.border_position[0] = 0;
|
||||
for (int k = 1; k < this.num_env; k++)
|
||||
this.border_position[k] = k * this.numTimeSlotsRate / this.num_env;
|
||||
this.border_position[this.num_env] = this.numTimeSlotsRate;
|
||||
} else {
|
||||
this.border_position[0] = 0;
|
||||
if (this.border_position[this.num_env] < this.numTimeSlotsRate) {
|
||||
for (int m = 0; m < 34; m++) {
|
||||
this.iid_index[this.num_env][m] = this.iid_index[this.num_env - 1][m];
|
||||
this.icc_index[this.num_env][m] = this.icc_index[this.num_env - 1][m];
|
||||
}
|
||||
for (int n = 0; n < 17; n++) {
|
||||
this.ipd_index[this.num_env][n] = this.ipd_index[this.num_env - 1][n];
|
||||
this.opd_index[this.num_env][n] = this.opd_index[this.num_env - 1][n];
|
||||
}
|
||||
this.num_env++;
|
||||
this.border_position[this.num_env] = this.numTimeSlotsRate;
|
||||
}
|
||||
for (int k = 1; k < this.num_env; k++) {
|
||||
int thr = this.numTimeSlotsRate - (this.num_env - k);
|
||||
if (this.border_position[k] > thr) {
|
||||
this.border_position[k] = thr;
|
||||
} else {
|
||||
thr = this.border_position[k - 1] + 1;
|
||||
if (this.border_position[k] < thr)
|
||||
this.border_position[k] = thr;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.use34hybrid_bands)
|
||||
for (int k = 0; k < this.num_env; k++) {
|
||||
if (this.iid_mode != 2 && this.iid_mode != 5)
|
||||
map20indexto34(this.iid_index[k], 34);
|
||||
if (this.icc_mode != 2 && this.icc_mode != 5)
|
||||
map20indexto34(this.icc_index[k], 34);
|
||||
if (this.ipd_mode != 2 && this.ipd_mode != 5) {
|
||||
map20indexto34(this.ipd_index[k], 17);
|
||||
map20indexto34(this.opd_index[k], 17);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ps_decorrelate(float[][][] X_left, float[][][] X_right, float[][][] X_hybrid_left, float[][][] X_hybrid_right) {
|
||||
float[][] Phi_Fract_SubQmf;
|
||||
int temp_delay = 0;
|
||||
int[] temp_delay_ser = new int[3];
|
||||
float[][] P = new float[32][34];
|
||||
float[][] G_TransientRatio = new float[32][34];
|
||||
float[] inputLeft = new float[2];
|
||||
if (this.use34hybrid_bands) {
|
||||
Phi_Fract_SubQmf = Phi_Fract_SubQmf34;
|
||||
} else {
|
||||
Phi_Fract_SubQmf = Phi_Fract_SubQmf20;
|
||||
}
|
||||
for (int n = 0; n < 32; n++) {
|
||||
for (int j = 0; j < 34; j++)
|
||||
P[n][j] = 0.0F;
|
||||
}
|
||||
for (int i = 0; i < this.num_groups; i++) {
|
||||
int j = 0xFFFFEFFF & this.map_group2bk[i];
|
||||
int maxsb = (i < this.num_hybrid_groups) ? (this.group_border[i] + 1) : this.group_border[i + 1];
|
||||
for (int sb = this.group_border[i]; sb < maxsb; sb++) {
|
||||
for (int k = this.border_position[0]; k < this.border_position[this.num_env]; k++) {
|
||||
if (i < this.num_hybrid_groups) {
|
||||
inputLeft[0] = X_hybrid_left[k][sb][0];
|
||||
inputLeft[1] = X_hybrid_left[k][sb][1];
|
||||
} else {
|
||||
inputLeft[0] = X_left[k][sb][0];
|
||||
inputLeft[1] = X_left[k][sb][1];
|
||||
}
|
||||
P[k][j] = P[k][j] + inputLeft[0] * inputLeft[0] + inputLeft[1] * inputLeft[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int bk = 0; bk < this.nr_par_bands; bk++) {
|
||||
for (int j = this.border_position[0]; j < this.border_position[this.num_env]; j++) {
|
||||
float gamma = 1.5F;
|
||||
this.P_PeakDecayNrg[bk] = this.P_PeakDecayNrg[bk] * this.alpha_decay;
|
||||
if (this.P_PeakDecayNrg[bk] < P[j][bk])
|
||||
this.P_PeakDecayNrg[bk] = P[j][bk];
|
||||
float P_SmoothPeakDecayDiffNrg = this.P_SmoothPeakDecayDiffNrg_prev[bk];
|
||||
P_SmoothPeakDecayDiffNrg += (this.P_PeakDecayNrg[bk] - P[j][bk] - this.P_SmoothPeakDecayDiffNrg_prev[bk]) * this.alpha_smooth;
|
||||
this.P_SmoothPeakDecayDiffNrg_prev[bk] = P_SmoothPeakDecayDiffNrg;
|
||||
float nrg = this.P_prev[bk];
|
||||
nrg += (P[j][bk] - this.P_prev[bk]) * this.alpha_smooth;
|
||||
this.P_prev[bk] = nrg;
|
||||
if (P_SmoothPeakDecayDiffNrg * gamma <= nrg) {
|
||||
G_TransientRatio[j][bk] = 1.0F;
|
||||
} else {
|
||||
G_TransientRatio[j][bk] = nrg / (P_SmoothPeakDecayDiffNrg * gamma);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int gr = 0; gr < this.num_groups; gr++) {
|
||||
int maxsb;
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
maxsb = this.group_border[gr] + 1;
|
||||
} else {
|
||||
maxsb = this.group_border[gr + 1];
|
||||
}
|
||||
for (int sb = this.group_border[gr]; sb < maxsb; sb++) {
|
||||
float g_DecaySlope;
|
||||
float[] g_DecaySlope_filt = new float[3];
|
||||
if (gr < this.num_hybrid_groups || sb <= this.decay_cutoff) {
|
||||
g_DecaySlope = 1.0F;
|
||||
} else {
|
||||
int decay = this.decay_cutoff - sb;
|
||||
if (decay <= -20) {
|
||||
g_DecaySlope = 0.0F;
|
||||
} else {
|
||||
g_DecaySlope = 1.0F + 0.05F * (float)decay;
|
||||
}
|
||||
}
|
||||
for (int i1 = 0; i1 < 3; i1++)
|
||||
g_DecaySlope_filt[i1] = g_DecaySlope * filter_a[i1];
|
||||
temp_delay = this.saved_delay;
|
||||
for (int j = 0; j < 3; j++)
|
||||
temp_delay_ser[j] = this.delay_buf_index_ser[j];
|
||||
for (int k = this.border_position[0]; k < this.border_position[this.num_env]; k++) {
|
||||
float[] tmp = new float[2], tmp0 = new float[2], R0 = new float[2];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
inputLeft[0] = X_hybrid_left[k][sb][0];
|
||||
inputLeft[1] = X_hybrid_left[k][sb][1];
|
||||
} else {
|
||||
inputLeft[0] = X_left[k][sb][0];
|
||||
inputLeft[1] = X_left[k][sb][1];
|
||||
}
|
||||
if (sb > this.nr_allpass_bands && gr >= this.num_hybrid_groups) {
|
||||
tmp[0] = this.delay_Qmf[this.delay_buf_index_delay[sb]][sb][0];
|
||||
tmp[1] = this.delay_Qmf[this.delay_buf_index_delay[sb]][sb][1];
|
||||
R0[0] = tmp[0];
|
||||
R0[1] = tmp[1];
|
||||
this.delay_Qmf[this.delay_buf_index_delay[sb]][sb][0] = inputLeft[0];
|
||||
this.delay_Qmf[this.delay_buf_index_delay[sb]][sb][1] = inputLeft[1];
|
||||
} else {
|
||||
float[] Phi_Fract = new float[2];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
tmp0[0] = this.delay_SubQmf[temp_delay][sb][0];
|
||||
tmp0[1] = this.delay_SubQmf[temp_delay][sb][1];
|
||||
this.delay_SubQmf[temp_delay][sb][0] = inputLeft[0];
|
||||
this.delay_SubQmf[temp_delay][sb][1] = inputLeft[1];
|
||||
Phi_Fract[0] = Phi_Fract_SubQmf[sb][0];
|
||||
Phi_Fract[1] = Phi_Fract_SubQmf[sb][1];
|
||||
} else {
|
||||
tmp0[0] = this.delay_Qmf[temp_delay][sb][0];
|
||||
tmp0[1] = this.delay_Qmf[temp_delay][sb][1];
|
||||
this.delay_Qmf[temp_delay][sb][0] = inputLeft[0];
|
||||
this.delay_Qmf[temp_delay][sb][1] = inputLeft[1];
|
||||
Phi_Fract[0] = Phi_Fract_Qmf[sb][0];
|
||||
Phi_Fract[1] = Phi_Fract_Qmf[sb][1];
|
||||
}
|
||||
tmp[0] = tmp[0] * Phi_Fract[0] + tmp0[1] * Phi_Fract[1];
|
||||
tmp[1] = tmp0[1] * Phi_Fract[0] - tmp0[0] * Phi_Fract[1];
|
||||
R0[0] = tmp[0];
|
||||
R0[1] = tmp[1];
|
||||
for (int i3 = 0; i3 < 3; i3++) {
|
||||
float[] Q_Fract_allpass = new float[2], tmp2 = new float[2];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
tmp0[0] = this.delay_SubQmf_ser[i3][temp_delay_ser[i3]][sb][0];
|
||||
tmp0[1] = this.delay_SubQmf_ser[i3][temp_delay_ser[i3]][sb][1];
|
||||
if (this.use34hybrid_bands) {
|
||||
Q_Fract_allpass[0] = Q_Fract_allpass_SubQmf34[sb][i3][0];
|
||||
Q_Fract_allpass[1] = Q_Fract_allpass_SubQmf34[sb][i3][1];
|
||||
} else {
|
||||
Q_Fract_allpass[0] = Q_Fract_allpass_SubQmf20[sb][i3][0];
|
||||
Q_Fract_allpass[1] = Q_Fract_allpass_SubQmf20[sb][i3][1];
|
||||
}
|
||||
} else {
|
||||
tmp0[0] = this.delay_Qmf_ser[i3][temp_delay_ser[i3]][sb][0];
|
||||
tmp0[1] = this.delay_Qmf_ser[i3][temp_delay_ser[i3]][sb][1];
|
||||
Q_Fract_allpass[0] = Q_Fract_allpass_Qmf[sb][i3][0];
|
||||
Q_Fract_allpass[1] = Q_Fract_allpass_Qmf[sb][i3][1];
|
||||
}
|
||||
tmp[0] = tmp0[0] * Q_Fract_allpass[0] + tmp0[1] * Q_Fract_allpass[1];
|
||||
tmp[1] = tmp0[1] * Q_Fract_allpass[0] - tmp0[0] * Q_Fract_allpass[1];
|
||||
tmp[0] = tmp[0] + -(g_DecaySlope_filt[i3] * R0[0]);
|
||||
tmp[1] = tmp[1] + -(g_DecaySlope_filt[i3] * R0[1]);
|
||||
tmp2[0] = R0[0] + g_DecaySlope_filt[i3] * tmp[0];
|
||||
tmp2[1] = R0[1] + g_DecaySlope_filt[i3] * tmp[1];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
this.delay_SubQmf_ser[i3][temp_delay_ser[i3]][sb][0] = tmp2[0];
|
||||
this.delay_SubQmf_ser[i3][temp_delay_ser[i3]][sb][1] = tmp2[1];
|
||||
} else {
|
||||
this.delay_Qmf_ser[i3][temp_delay_ser[i3]][sb][0] = tmp2[0];
|
||||
this.delay_Qmf_ser[i3][temp_delay_ser[i3]][sb][1] = tmp2[1];
|
||||
}
|
||||
R0[0] = tmp[0];
|
||||
R0[1] = tmp[1];
|
||||
}
|
||||
}
|
||||
bk = 0xFFFFEFFF & this.map_group2bk[gr];
|
||||
R0[0] = G_TransientRatio[k][bk] * R0[0];
|
||||
R0[1] = G_TransientRatio[k][bk] * R0[1];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
X_hybrid_right[k][sb][0] = R0[0];
|
||||
X_hybrid_right[k][sb][1] = R0[1];
|
||||
} else {
|
||||
X_right[k][sb][0] = R0[0];
|
||||
X_right[k][sb][1] = R0[1];
|
||||
}
|
||||
if (++temp_delay >= 2)
|
||||
temp_delay = 0;
|
||||
if (sb > this.nr_allpass_bands && gr >= this.num_hybrid_groups) {
|
||||
this.delay_buf_index_delay[sb] = this.delay_buf_index_delay[sb] + 1;
|
||||
if (this.delay_buf_index_delay[sb] + 1 >= this.delay_D[sb])
|
||||
this.delay_buf_index_delay[sb] = 0;
|
||||
}
|
||||
for (int i2 = 0; i2 < 3; i2++) {
|
||||
temp_delay_ser[i2] = temp_delay_ser[i2] + 1;
|
||||
if (temp_delay_ser[i2] + 1 >= this.num_sample_delay_ser[i2])
|
||||
temp_delay_ser[i2] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.saved_delay = temp_delay;
|
||||
for (int m = 0; m < 3; m++)
|
||||
this.delay_buf_index_ser[m] = temp_delay_ser[m];
|
||||
}
|
||||
|
||||
private float magnitude_c(float[] c) {
|
||||
return (float)Math.sqrt((double)(c[0] * c[0] + c[1] * c[1]));
|
||||
}
|
||||
|
||||
private void ps_mix_phase(float[][][] X_left, float[][][] X_right, float[][][] X_hybrid_left, float[][][] X_hybrid_right) {
|
||||
int nr_ipdopd_par;
|
||||
float[] sf_iid;
|
||||
int no_iid_steps;
|
||||
int bk = 0;
|
||||
float[] h11 = new float[2], h12 = new float[2], h21 = new float[2], h22 = new float[2];
|
||||
float[] H11 = new float[2], H12 = new float[2], H21 = new float[2], H22 = new float[2];
|
||||
float[] deltaH11 = new float[2], deltaH12 = new float[2], deltaH21 = new float[2], deltaH22 = new float[2];
|
||||
float[] tempLeft = new float[2];
|
||||
float[] tempRight = new float[2];
|
||||
float[] phaseLeft = new float[2];
|
||||
float[] phaseRight = new float[2];
|
||||
if (this.iid_mode >= 3) {
|
||||
no_iid_steps = 15;
|
||||
sf_iid = sf_iid_fine;
|
||||
} else {
|
||||
no_iid_steps = 7;
|
||||
sf_iid = sf_iid_normal;
|
||||
}
|
||||
if (this.ipd_mode == 0 || this.ipd_mode == 3) {
|
||||
nr_ipdopd_par = 11;
|
||||
} else {
|
||||
nr_ipdopd_par = this.nr_ipdopd_par;
|
||||
}
|
||||
for (int gr = 0; gr < this.num_groups; gr++) {
|
||||
bk = 0xFFFFEFFF & this.map_group2bk[gr];
|
||||
int maxsb = (gr < this.num_hybrid_groups) ? (this.group_border[gr] + 1) : this.group_border[gr + 1];
|
||||
for (int env = 0; env < this.num_env; env++) {
|
||||
if (this.icc_mode < 3) {
|
||||
float cosb, sinb;
|
||||
float c_1 = sf_iid[no_iid_steps + this.iid_index[env][bk]];
|
||||
float c_2 = sf_iid[no_iid_steps - this.iid_index[env][bk]];
|
||||
float cosa = cos_alphas[this.icc_index[env][bk]];
|
||||
float sina = sin_alphas[this.icc_index[env][bk]];
|
||||
if (this.iid_mode >= 3) {
|
||||
if (this.iid_index[env][bk] < 0) {
|
||||
cosb = cos_betas_fine[-this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sinb = -sin_betas_fine[-this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
} else {
|
||||
cosb = cos_betas_fine[this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sinb = sin_betas_fine[this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
}
|
||||
} else if (this.iid_index[env][bk] < 0) {
|
||||
cosb = cos_betas_normal[-this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sinb = -sin_betas_normal[-this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
} else {
|
||||
cosb = cos_betas_normal[this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sinb = sin_betas_normal[this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
}
|
||||
float ab1 = cosb * cosa;
|
||||
float ab2 = sinb * sina;
|
||||
float ab3 = sinb * cosa;
|
||||
float ab4 = cosb * sina;
|
||||
h11[0] = c_2 * (ab1 - ab2);
|
||||
h12[0] = c_1 * (ab1 + ab2);
|
||||
h21[0] = c_2 * (ab3 + ab4);
|
||||
h22[0] = c_1 * (ab3 - ab4);
|
||||
} else {
|
||||
float sina, cosa, cosg, sing;
|
||||
if (this.iid_mode >= 3) {
|
||||
int abs_iid = Math.abs(this.iid_index[env][bk]);
|
||||
cosa = sincos_alphas_B_fine[no_iid_steps + this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sina = sincos_alphas_B_fine[30 - (no_iid_steps + this.iid_index[env][bk])][this.icc_index[env][bk]];
|
||||
cosg = cos_gammas_fine[abs_iid][this.icc_index[env][bk]];
|
||||
sing = sin_gammas_fine[abs_iid][this.icc_index[env][bk]];
|
||||
} else {
|
||||
int abs_iid = Math.abs(this.iid_index[env][bk]);
|
||||
cosa = sincos_alphas_B_normal[no_iid_steps + this.iid_index[env][bk]][this.icc_index[env][bk]];
|
||||
sina = sincos_alphas_B_normal[14 - (no_iid_steps + this.iid_index[env][bk])][this.icc_index[env][bk]];
|
||||
cosg = cos_gammas_normal[abs_iid][this.icc_index[env][bk]];
|
||||
sing = sin_gammas_normal[abs_iid][this.icc_index[env][bk]];
|
||||
}
|
||||
h11[0] = 1.4142135F * cosa * cosg;
|
||||
h12[0] = 1.4142135F * sina * cosg;
|
||||
h21[0] = 1.4142135F * -cosa * sing;
|
||||
h22[0] = 1.4142135F * sina * sing;
|
||||
}
|
||||
if (this.enable_ipdopd && bk < nr_ipdopd_par) {
|
||||
int i = this.phase_hist;
|
||||
tempLeft[0] = this.ipd_prev[bk][i][0] * 0.25F;
|
||||
tempLeft[1] = this.ipd_prev[bk][i][1] * 0.25F;
|
||||
tempRight[0] = this.opd_prev[bk][i][0] * 0.25F;
|
||||
tempRight[1] = this.opd_prev[bk][i][1] * 0.25F;
|
||||
this.ipd_prev[bk][i][0] = ipdopd_cos_tab[Math.abs(this.ipd_index[env][bk])];
|
||||
this.ipd_prev[bk][i][1] = ipdopd_sin_tab[Math.abs(this.ipd_index[env][bk])];
|
||||
this.opd_prev[bk][i][0] = ipdopd_cos_tab[Math.abs(this.opd_index[env][bk])];
|
||||
this.opd_prev[bk][i][1] = ipdopd_sin_tab[Math.abs(this.opd_index[env][bk])];
|
||||
tempLeft[0] = tempLeft[0] + this.ipd_prev[bk][i][0];
|
||||
tempLeft[1] = tempLeft[1] + this.ipd_prev[bk][i][1];
|
||||
tempRight[0] = tempRight[0] + this.opd_prev[bk][i][0];
|
||||
tempRight[1] = tempRight[1] + this.opd_prev[bk][i][1];
|
||||
if (i == 0)
|
||||
i = 2;
|
||||
i--;
|
||||
tempLeft[0] = tempLeft[0] + this.ipd_prev[bk][i][0] * 0.5F;
|
||||
tempLeft[1] = tempLeft[1] + this.ipd_prev[bk][i][1] * 0.5F;
|
||||
tempRight[0] = tempRight[0] + this.opd_prev[bk][i][0] * 0.5F;
|
||||
tempRight[1] = tempRight[1] + this.opd_prev[bk][i][1] * 0.5F;
|
||||
float xy = magnitude_c(tempRight);
|
||||
float pq = magnitude_c(tempLeft);
|
||||
if (xy != 0.0F) {
|
||||
phaseLeft[0] = tempRight[0] / xy;
|
||||
phaseLeft[1] = tempRight[1] / xy;
|
||||
} else {
|
||||
phaseLeft[0] = 0.0F;
|
||||
phaseLeft[1] = 0.0F;
|
||||
}
|
||||
float xypq = xy * pq;
|
||||
if (xypq != 0.0F) {
|
||||
float tmp1 = tempRight[0] * tempLeft[0] + tempRight[1] * tempLeft[1];
|
||||
float tmp2 = tempRight[1] * tempLeft[0] - tempRight[0] * tempLeft[1];
|
||||
phaseRight[0] = tmp1 / xypq;
|
||||
phaseRight[1] = tmp2 / xypq;
|
||||
} else {
|
||||
phaseRight[0] = 0.0F;
|
||||
phaseRight[1] = 0.0F;
|
||||
}
|
||||
h11[1] = h11[0] * phaseLeft[1];
|
||||
h12[1] = h12[0] * phaseRight[1];
|
||||
h21[1] = h21[0] * phaseLeft[1];
|
||||
h22[1] = h22[0] * phaseRight[1];
|
||||
h11[0] = h11[0] * phaseLeft[0];
|
||||
h12[0] = h12[0] * phaseRight[0];
|
||||
h21[0] = h21[0] * phaseLeft[0];
|
||||
h22[0] = h22[0] * phaseRight[0];
|
||||
}
|
||||
float L = (float)(this.border_position[env + 1] - this.border_position[env]);
|
||||
deltaH11[0] = (h11[0] - this.h11_prev[gr][0]) / L;
|
||||
deltaH12[0] = (h12[0] - this.h12_prev[gr][0]) / L;
|
||||
deltaH21[0] = (h21[0] - this.h21_prev[gr][0]) / L;
|
||||
deltaH22[0] = (h22[0] - this.h22_prev[gr][0]) / L;
|
||||
H11[0] = this.h11_prev[gr][0];
|
||||
H12[0] = this.h12_prev[gr][0];
|
||||
H21[0] = this.h21_prev[gr][0];
|
||||
H22[0] = this.h22_prev[gr][0];
|
||||
this.h11_prev[gr][0] = h11[0];
|
||||
this.h12_prev[gr][0] = h12[0];
|
||||
this.h21_prev[gr][0] = h21[0];
|
||||
this.h22_prev[gr][0] = h22[0];
|
||||
if (this.enable_ipdopd && bk < nr_ipdopd_par) {
|
||||
deltaH11[1] = (h11[1] - this.h11_prev[gr][1]) / L;
|
||||
deltaH12[1] = (h12[1] - this.h12_prev[gr][1]) / L;
|
||||
deltaH21[1] = (h21[1] - this.h21_prev[gr][1]) / L;
|
||||
deltaH22[1] = (h22[1] - this.h22_prev[gr][1]) / L;
|
||||
H11[1] = this.h11_prev[gr][1];
|
||||
H12[1] = this.h12_prev[gr][1];
|
||||
H21[1] = this.h21_prev[gr][1];
|
||||
H22[1] = this.h22_prev[gr][1];
|
||||
if ((0x1000 & this.map_group2bk[gr]) != 0) {
|
||||
deltaH11[1] = -deltaH11[1];
|
||||
deltaH12[1] = -deltaH12[1];
|
||||
deltaH21[1] = -deltaH21[1];
|
||||
deltaH22[1] = -deltaH22[1];
|
||||
H11[1] = -H11[1];
|
||||
H12[1] = -H12[1];
|
||||
H21[1] = -H21[1];
|
||||
H22[1] = -H22[1];
|
||||
}
|
||||
this.h11_prev[gr][1] = h11[1];
|
||||
this.h12_prev[gr][1] = h12[1];
|
||||
this.h21_prev[gr][1] = h21[1];
|
||||
this.h22_prev[gr][1] = h22[1];
|
||||
}
|
||||
for (int n = this.border_position[env]; n < this.border_position[env + 1]; n++) {
|
||||
H11[0] = H11[0] + deltaH11[0];
|
||||
H12[0] = H12[0] + deltaH12[0];
|
||||
H21[0] = H21[0] + deltaH21[0];
|
||||
H22[0] = H22[0] + deltaH22[0];
|
||||
if (this.enable_ipdopd && bk < nr_ipdopd_par) {
|
||||
H11[1] = H11[1] + deltaH11[1];
|
||||
H12[1] = H12[1] + deltaH12[1];
|
||||
H21[1] = H21[1] + deltaH21[1];
|
||||
H22[1] = H22[1] + deltaH22[1];
|
||||
}
|
||||
for (int sb = this.group_border[gr]; sb < maxsb; sb++) {
|
||||
float[] inLeft = new float[2], inRight = new float[2];
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
inLeft[0] = X_hybrid_left[n][sb][0];
|
||||
inLeft[1] = X_hybrid_left[n][sb][1];
|
||||
inRight[0] = X_hybrid_right[n][sb][0];
|
||||
inRight[1] = X_hybrid_right[n][sb][1];
|
||||
} else {
|
||||
inLeft[0] = X_left[n][sb][0];
|
||||
inLeft[1] = X_left[n][sb][1];
|
||||
inRight[0] = X_right[n][sb][0];
|
||||
inRight[1] = X_right[n][sb][1];
|
||||
}
|
||||
tempLeft[0] = H11[0] * inLeft[0] + H21[0] * inRight[0];
|
||||
tempLeft[1] = H11[0] * inLeft[1] + H21[0] * inRight[1];
|
||||
tempRight[0] = H12[0] * inLeft[0] + H22[0] * inRight[0];
|
||||
tempRight[1] = H12[0] * inLeft[1] + H22[0] * inRight[1];
|
||||
if (this.enable_ipdopd && bk < nr_ipdopd_par) {
|
||||
tempLeft[0] = tempLeft[0] - (H11[1] * inLeft[1] + H21[1] * inRight[1]);
|
||||
tempLeft[1] = tempLeft[1] + H11[1] * inLeft[0] + H21[1] * inRight[0];
|
||||
tempRight[0] = tempRight[0] - (H12[1] * inLeft[1] + H22[1] * inRight[1]);
|
||||
tempRight[1] = tempRight[1] + H12[1] * inLeft[0] + H22[1] * inRight[0];
|
||||
}
|
||||
if (gr < this.num_hybrid_groups) {
|
||||
X_hybrid_left[n][sb][0] = tempLeft[0];
|
||||
X_hybrid_left[n][sb][1] = tempLeft[1];
|
||||
X_hybrid_right[n][sb][0] = tempRight[0];
|
||||
X_hybrid_right[n][sb][1] = tempRight[1];
|
||||
} else {
|
||||
X_left[n][sb][0] = tempLeft[0];
|
||||
X_left[n][sb][1] = tempLeft[1];
|
||||
X_right[n][sb][0] = tempRight[0];
|
||||
X_right[n][sb][1] = tempRight[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.phase_hist++;
|
||||
if (this.phase_hist == 2)
|
||||
this.phase_hist = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int process(float[][][] X_left, float[][][] X_right) {
|
||||
float[][][] X_hybrid_left = new float[32][32][2];
|
||||
float[][][] X_hybrid_right = new float[32][32][2];
|
||||
ps_data_decode();
|
||||
if (this.use34hybrid_bands) {
|
||||
this.group_border = group_border34;
|
||||
this.map_group2bk = map_group2bk34;
|
||||
this.num_groups = 50;
|
||||
this.num_hybrid_groups = 32;
|
||||
this.nr_par_bands = 34;
|
||||
this.decay_cutoff = 5;
|
||||
} else {
|
||||
this.group_border = group_border20;
|
||||
this.map_group2bk = map_group2bk20;
|
||||
this.num_groups = 22;
|
||||
this.num_hybrid_groups = 10;
|
||||
this.nr_par_bands = 20;
|
||||
this.decay_cutoff = 3;
|
||||
}
|
||||
this.hyb.hybrid_analysis(X_left, X_hybrid_left, this.use34hybrid_bands, this.numTimeSlotsRate);
|
||||
ps_decorrelate(X_left, X_right, X_hybrid_left, X_hybrid_right);
|
||||
ps_mix_phase(X_left, X_right, X_hybrid_left, X_hybrid_right);
|
||||
this.hyb.hybrid_synthesis(X_left, X_hybrid_left, this.use34hybrid_bands, this.numTimeSlotsRate);
|
||||
this.hyb.hybrid_synthesis(X_right, X_hybrid_right, this.use34hybrid_bands, this.numTimeSlotsRate);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package net.sourceforge.jaad.aac.ps;
|
||||
|
||||
interface PSConstants {
|
||||
public static final int MAX_PS_ENVELOPES = 5;
|
||||
|
||||
public static final int NO_ALLPASS_LINKS = 3;
|
||||
|
||||
public static final int NEGATE_IPD_MASK = 4096;
|
||||
|
||||
public static final float DECAY_SLOPE = 0.05F;
|
||||
|
||||
public static final float COEF_SQRT2 = 1.4142135F;
|
||||
}
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
package net.sourceforge.jaad.aac.ps;
|
||||
|
||||
class PSFilterbank implements PSTables {
|
||||
private int frame_len;
|
||||
|
||||
private int[] resolution20;
|
||||
|
||||
private int[] resolution34;
|
||||
|
||||
private float[][] work;
|
||||
|
||||
private float[][][] buffer;
|
||||
|
||||
private float[][][] temp;
|
||||
|
||||
PSFilterbank(int numTimeSlotsRate) {
|
||||
this.resolution20 = new int[3];
|
||||
this.resolution34 = new int[5];
|
||||
this.resolution34[0] = 12;
|
||||
this.resolution34[1] = 8;
|
||||
this.resolution34[2] = 4;
|
||||
this.resolution34[3] = 4;
|
||||
this.resolution34[4] = 4;
|
||||
this.resolution20[0] = 8;
|
||||
this.resolution20[1] = 2;
|
||||
this.resolution20[2] = 2;
|
||||
this.frame_len = numTimeSlotsRate;
|
||||
this.work = new float[this.frame_len + 12][2];
|
||||
this.buffer = new float[5][2][2];
|
||||
this.temp = new float[this.frame_len][12][2];
|
||||
}
|
||||
|
||||
void hybrid_analysis(float[][][] X, float[][][] X_hybrid, boolean use34, int numTimeSlotsRate) {
|
||||
int offset = 0;
|
||||
int qmf_bands = use34 ? 5 : 3;
|
||||
int[] resolution = use34 ? this.resolution34 : this.resolution20;
|
||||
for (int band = 0; band < qmf_bands; band++) {
|
||||
for (int k = 0; k < 12; k++) {
|
||||
this.work[k][0] = this.buffer[band][k][0];
|
||||
this.work[k][1] = this.buffer[band][k][1];
|
||||
}
|
||||
for (int j = 0; j < this.frame_len; j++) {
|
||||
this.work[12 + j][0] = X[j + 6][band][0];
|
||||
this.work[12 + j][0] = X[j + 6][band][0];
|
||||
}
|
||||
for (int i = 0; i < 12; i++) {
|
||||
this.buffer[band][i][0] = this.work[this.frame_len + i][0];
|
||||
this.buffer[band][i][1] = this.work[this.frame_len + i][1];
|
||||
}
|
||||
switch (resolution[band]) {
|
||||
case 2:
|
||||
channel_filter2(this.frame_len, p2_13_20, this.work, this.temp);
|
||||
break;
|
||||
case 4:
|
||||
channel_filter4(this.frame_len, p4_13_34, this.work, this.temp);
|
||||
break;
|
||||
case 8:
|
||||
channel_filter8(this.frame_len, use34 ? p8_13_34 : p8_13_20, this.work, this.temp);
|
||||
break;
|
||||
case 12:
|
||||
channel_filter12(this.frame_len, p12_13_34, this.work, this.temp);
|
||||
break;
|
||||
}
|
||||
for (int n = 0; n < this.frame_len; n++) {
|
||||
for (int m = 0; m < resolution[band]; m++) {
|
||||
X_hybrid[n][offset + m][0] = this.temp[n][m][0];
|
||||
X_hybrid[n][offset + m][1] = this.temp[n][m][1];
|
||||
}
|
||||
}
|
||||
offset += resolution[band];
|
||||
}
|
||||
if (!use34)
|
||||
for (int n = 0; n < numTimeSlotsRate; n++) {
|
||||
X_hybrid[n][3][0] = X_hybrid[n][3][0] + X_hybrid[n][4][0];
|
||||
X_hybrid[n][3][1] = X_hybrid[n][3][1] + X_hybrid[n][4][1];
|
||||
X_hybrid[n][4][0] = 0.0F;
|
||||
X_hybrid[n][4][1] = 0.0F;
|
||||
X_hybrid[n][2][0] = X_hybrid[n][2][0] + X_hybrid[n][5][0];
|
||||
X_hybrid[n][2][1] = X_hybrid[n][2][1] + X_hybrid[n][5][1];
|
||||
X_hybrid[n][5][0] = 0.0F;
|
||||
X_hybrid[n][5][1] = 0.0F;
|
||||
}
|
||||
}
|
||||
|
||||
static void channel_filter2(int frame_len, float[] filter, float[][] buffer, float[][][] X_hybrid) {
|
||||
for (int i = 0; i < frame_len; i++) {
|
||||
float r0 = filter[0] * (buffer[0 + i][0] + buffer[12 + i][0]);
|
||||
float r1 = filter[1] * (buffer[1 + i][0] + buffer[11 + i][0]);
|
||||
float r2 = filter[2] * (buffer[2 + i][0] + buffer[10 + i][0]);
|
||||
float r3 = filter[3] * (buffer[3 + i][0] + buffer[9 + i][0]);
|
||||
float r4 = filter[4] * (buffer[4 + i][0] + buffer[8 + i][0]);
|
||||
float r5 = filter[5] * (buffer[5 + i][0] + buffer[7 + i][0]);
|
||||
float r6 = filter[6] * buffer[6 + i][0];
|
||||
float i0 = filter[0] * (buffer[0 + i][1] + buffer[12 + i][1]);
|
||||
float i1 = filter[1] * (buffer[1 + i][1] + buffer[11 + i][1]);
|
||||
float i2 = filter[2] * (buffer[2 + i][1] + buffer[10 + i][1]);
|
||||
float i3 = filter[3] * (buffer[3 + i][1] + buffer[9 + i][1]);
|
||||
float i4 = filter[4] * (buffer[4 + i][1] + buffer[8 + i][1]);
|
||||
float i5 = filter[5] * (buffer[5 + i][1] + buffer[7 + i][1]);
|
||||
float i6 = filter[6] * buffer[6 + i][1];
|
||||
X_hybrid[i][0][0] = r0 + r1 + r2 + r3 + r4 + r5 + r6;
|
||||
X_hybrid[i][0][1] = i0 + i1 + i2 + i3 + i4 + i5 + i6;
|
||||
X_hybrid[i][1][0] = r0 - r1 + r2 - r3 + r4 - r5 + r6;
|
||||
X_hybrid[i][1][1] = i0 - i1 + i2 - i3 + i4 - i5 + i6;
|
||||
}
|
||||
}
|
||||
|
||||
static void channel_filter4(int frame_len, float[] filter, float[][] buffer, float[][][] X_hybrid) {
|
||||
float[] input_re1 = new float[2], input_re2 = new float[2];
|
||||
float[] input_im1 = new float[2], input_im2 = new float[2];
|
||||
for (int i = 0; i < frame_len; i++) {
|
||||
input_re1[0] = -(filter[2] * (buffer[i + 2][0] + buffer[i + 10][0])) + filter[6] * buffer[i + 6][0];
|
||||
input_re1[1] = -0.70710677F * (filter[1] * (buffer[i + 1][0] + buffer[i + 11][0]) + filter[3] * (buffer[i + 3][0] + buffer[i + 9][0]) - filter[5] * (buffer[i + 5][0] + buffer[i + 7][0]));
|
||||
input_im1[0] = filter[0] * (buffer[i + 0][1] - buffer[i + 12][1]) - filter[4] * (buffer[i + 4][1] - buffer[i + 8][1]);
|
||||
input_im1[1] = 0.70710677F * (filter[1] * (buffer[i + 1][1] - buffer[i + 11][1]) - filter[3] * (buffer[i + 3][1] - buffer[i + 9][1]) - filter[5] * (buffer[i + 5][1] - buffer[i + 7][1]));
|
||||
input_re2[0] = filter[0] * (buffer[i + 0][0] - buffer[i + 12][0]) - filter[4] * (buffer[i + 4][0] - buffer[i + 8][0]);
|
||||
input_re2[1] = 0.70710677F * (filter[1] * (buffer[i + 1][0] - buffer[i + 11][0]) - filter[3] * (buffer[i + 3][0] - buffer[i + 9][0]) - filter[5] * (buffer[i + 5][0] - buffer[i + 7][0]));
|
||||
input_im2[0] = -(filter[2] * (buffer[i + 2][1] + buffer[i + 10][1])) + filter[6] * buffer[i + 6][1];
|
||||
input_im2[1] = -0.70710677F * (filter[1] * (buffer[i + 1][1] + buffer[i + 11][1]) + filter[3] * (buffer[i + 3][1] + buffer[i + 9][1]) - filter[5] * (buffer[i + 5][1] + buffer[i + 7][1]));
|
||||
X_hybrid[i][0][0] = input_re1[0] + input_re1[1] + input_im1[0] + input_im1[1];
|
||||
X_hybrid[i][0][1] = -input_re2[0] - input_re2[1] + input_im2[0] + input_im2[1];
|
||||
X_hybrid[i][1][0] = input_re1[0] - input_re1[1] - input_im1[0] + input_im1[1];
|
||||
X_hybrid[i][1][1] = input_re2[0] - input_re2[1] + input_im2[0] - input_im2[1];
|
||||
X_hybrid[i][2][0] = input_re1[0] - input_re1[1] + input_im1[0] - input_im1[1];
|
||||
X_hybrid[i][2][1] = -input_re2[0] + input_re2[1] + input_im2[0] - input_im2[1];
|
||||
X_hybrid[i][3][0] = input_re1[0] + input_re1[1] - input_im1[0] - input_im1[1];
|
||||
X_hybrid[i][3][1] = input_re2[0] + input_re2[1] + input_im2[0] + input_im2[1];
|
||||
}
|
||||
}
|
||||
|
||||
static void DCT3_4_unscaled(float[] y, float[] x) {
|
||||
float f0 = x[2] * 0.70710677F;
|
||||
float f1 = x[0] - f0;
|
||||
float f2 = x[0] + f0;
|
||||
float f3 = x[1] + x[3];
|
||||
float f4 = x[1] * 1.306563F;
|
||||
float f5 = f3 * -0.9238795F;
|
||||
float f6 = x[3] * -0.5411961F;
|
||||
float f7 = f4 + f5;
|
||||
float f8 = f6 - f5;
|
||||
y[3] = f2 - f8;
|
||||
y[0] = f2 + f8;
|
||||
y[2] = f1 - f7;
|
||||
y[1] = f1 + f7;
|
||||
}
|
||||
|
||||
void channel_filter8(int frame_len, float[] filter, float[][] buffer, float[][][] X_hybrid) {
|
||||
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 (int 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 (int m = 0; m < 4; m++)
|
||||
x[m] = input_re1[m] - input_im1[3 - m];
|
||||
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 (int k = 0; k < 4; k++)
|
||||
x[k] = input_re1[k] + input_im1[3 - k];
|
||||
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 (int j = 0; j < 4; j++)
|
||||
x[j] = input_im2[j] + input_re2[3 - j];
|
||||
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 (int 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 DCT3_6_unscaled(float[] y, float[] x) {
|
||||
float f0 = x[3] * 0.70710677F;
|
||||
float f1 = x[0] + f0;
|
||||
float f2 = x[0] - f0;
|
||||
float f3 = (x[1] - x[5]) * 0.70710677F;
|
||||
float f4 = x[2] * 0.8660254F + x[4] * 0.5F;
|
||||
float f5 = f4 - x[4];
|
||||
float f6 = x[1] * 0.9659258F + x[5] * 0.25881904F;
|
||||
float f7 = f6 - f3;
|
||||
y[0] = f1 + f6 + f4;
|
||||
y[1] = f2 + f3 - x[4];
|
||||
y[2] = f7 + f2 - f5;
|
||||
y[3] = f1 - f7 - f5;
|
||||
y[4] = f1 - f3 - x[4];
|
||||
y[5] = f2 - f6 + f4;
|
||||
}
|
||||
|
||||
void channel_filter12(int frame_len, float[] filter, float[][] buffer, float[][][] X_hybrid) {
|
||||
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 (int i = 0; i < frame_len; i++) {
|
||||
for (int j = 0; j < 6; j++) {
|
||||
if (j == 0) {
|
||||
input_re1[0] = buffer[6 + i][0] * filter[6];
|
||||
input_re2[0] = buffer[6 + i][1] * filter[6];
|
||||
} else {
|
||||
input_re1[6 - j] = (buffer[j + i][0] + buffer[12 - j + i][0]) * filter[j];
|
||||
input_re2[6 - j] = (buffer[j + i][1] + buffer[12 - j + i][1]) * filter[j];
|
||||
}
|
||||
input_im2[j] = (buffer[j + i][0] - buffer[12 - j + i][0]) * filter[j];
|
||||
input_im1[j] = (buffer[j + i][1] - buffer[12 - j + i][1]) * filter[j];
|
||||
}
|
||||
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 (int 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 hybrid_synthesis(float[][][] X, float[][][] X_hybrid, boolean use34, int numTimeSlotsRate) {
|
||||
int offset = 0;
|
||||
int qmf_bands = use34 ? 5 : 3;
|
||||
int[] resolution = use34 ? this.resolution34 : this.resolution20;
|
||||
for (int band = 0; band < qmf_bands; band++) {
|
||||
for (int n = 0; n < this.frame_len; n++) {
|
||||
X[n][band][0] = 0.0F;
|
||||
X[n][band][1] = 0.0F;
|
||||
for (int k = 0; k < resolution[band]; k++) {
|
||||
X[n][band][0] = X[n][band][0] + X_hybrid[n][offset + k][0];
|
||||
X[n][band][1] = X[n][band][1] + X_hybrid[n][offset + k][1];
|
||||
}
|
||||
}
|
||||
offset += resolution[band];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package net.sourceforge.jaad.aac.ps;
|
||||
|
||||
interface PSHuffmanTables {
|
||||
public static final int[][] f_huff_iid_def = new int[][] {
|
||||
new int[] { -31, 1 }, new int[] { 2, 3 }, new int[] { -30, -32 }, new int[] { 4, 5 }, new int[] { -29, -33 }, new int[] { 6, 7 }, new int[] { -28, -34 }, new int[] { 8, 9 }, new int[] { -35, -27 }, new int[] { -26, 10 },
|
||||
new int[] { -36, 11 }, new int[] { -25, 12 }, new int[] { -37, 13 }, new int[] { -38, 14 }, new int[] { -24, 15 }, new int[] { 16, 17 }, new int[] { -23, -39 }, new int[] { 18, 19 }, new int[] { -22, -21 }, new int[] { 20, 21 },
|
||||
new int[] { -40, -20 }, new int[] { 22, 23 }, new int[] { -41, 24 }, new int[] { 25, 26 }, new int[] { -42, -45 }, new int[] { -44, -43 }, new int[] { -19, 27 }, new int[] { -18, -17 } };
|
||||
|
||||
public static final int[][] t_huff_iid_def = new int[][] {
|
||||
new int[] { -31, 1 }, new int[] { -32, 2 }, new int[] { -30, 3 }, new int[] { -33, 4 }, new int[] { -29, 5 }, new int[] { -34, 6 }, new int[] { -28, 7 }, new int[] { -35, 8 }, new int[] { -27, 9 }, new int[] { -36, 10 },
|
||||
new int[] { -26, 11 }, new int[] { -37, 12 }, new int[] { -25, 13 }, new int[] { -24, 14 }, new int[] { -38, 15 }, new int[] { 16, 17 }, new int[] { -23, -39 }, new int[] { 18, 19 }, new int[] { 20, 21 }, new int[] { 22, 23 },
|
||||
new int[] { -22, -45 }, new int[] { -44, -43 }, new int[] { 24, 25 }, new int[] { 26, 27 }, new int[] { -42, -41 }, new int[] { -40, -21 }, new int[] { -20, -19 }, new int[] { -18, -17 } };
|
||||
|
||||
public static final int[][] f_huff_iid_fine = new int[][] {
|
||||
new int[] { 1, -31 }, new int[] { 2, 3 }, new int[] { 4, -32 }, new int[] { -30, 5 }, new int[] { -33, -29 }, new int[] { 6, 7 }, new int[] { -34, -28 }, new int[] { 8, 9 }, new int[] { -35, -27 }, new int[] { 10, 11 },
|
||||
new int[] { -36, -26 }, new int[] { 12, 13 }, new int[] { -37, -25 }, new int[] { 14, 15 }, new int[] { -24, 16 }, new int[] { 17, 18 }, new int[] { 19, -39 }, new int[] { -23, 20 }, new int[] { 21, -38 }, new int[] { -21, 22 },
|
||||
new int[] { 23, -40 }, new int[] { -22, 24 }, new int[] { -42, -20 }, new int[] { 25, 26 }, new int[] { 27, -41 }, new int[] { 28, -43 }, new int[] { -19, 29 }, new int[] { 30, 31 }, new int[] { 32, -45 }, new int[] { -17, 33 },
|
||||
new int[] { 34, -44 }, new int[] { -18, 35 }, new int[] { 36, 37 }, new int[] { 38, -46 }, new int[] { -16, 39 }, new int[] { 40, 41 }, new int[] { 42, 43 }, new int[] { -48, -14 }, new int[] { 44, 45 }, new int[] { 46, 47 },
|
||||
new int[] { 48, 49 }, new int[] { -47, -15 }, new int[] { -52, -10 }, new int[] { -50, -12 }, new int[] { -49, -13 }, new int[] { 50, 51 }, new int[] { 52, 53 }, new int[] { 54, 55 }, new int[] { 56, 57 }, new int[] { 58, 59 },
|
||||
new int[] { -57, -56 }, new int[] { -59, -58 }, new int[] { -53, -9 }, new int[] { -55, -54 }, new int[] { -6, -5 }, new int[] { -8, -7 }, new int[] { -2, -1 }, new int[] { -4, -3 }, new int[] { -61, -60 }, new int[] { -51, -11 } };
|
||||
|
||||
public static final int[][] t_huff_iid_fine = new int[][] {
|
||||
new int[] { 1, -31 }, new int[] { -30, 2 }, new int[] { 3, -32 }, new int[] { 4, 5 }, new int[] { 6, 7 }, new int[] { -33, -29 }, new int[] { 8, -34 }, new int[] { -28, 9 }, new int[] { -35, -27 }, new int[] { 10, 11 },
|
||||
new int[] { -26, 12 }, new int[] { 13, 14 }, new int[] { -37, -25 }, new int[] { 15, 16 }, new int[] { 17, -36 }, new int[] { 18, -38 }, new int[] { -24, 19 }, new int[] { 20, 21 }, new int[] { -22, 22 }, new int[] { 23, 24 },
|
||||
new int[] { -39, -23 }, new int[] { 25, 26 }, new int[] { -20, 27 }, new int[] { 28, 29 }, new int[] { -41, -21 }, new int[] { 30, 31 }, new int[] { 32, -40 }, new int[] { 33, -44 }, new int[] { -18, 34 }, new int[] { 35, 36 },
|
||||
new int[] { 37, -43 }, new int[] { -19, 38 }, new int[] { 39, -42 }, new int[] { 40, 41 }, new int[] { 42, 43 }, new int[] { 44, 45 }, new int[] { 46, -46 }, new int[] { -16, 47 }, new int[] { -45, -17 }, new int[] { 48, 49 },
|
||||
new int[] { -52, -51 }, new int[] { -13, -12 }, new int[] { -50, -49 }, new int[] { 50, 51 }, new int[] { 52, 53 }, new int[] { 54, 55 }, new int[] { 56, -48 }, new int[] { -14, 57 }, new int[] { 58, -47 }, new int[] { -15, 59 },
|
||||
new int[] { -57, -5 }, new int[] { -59, -58 }, new int[] { -2, -1 }, new int[] { -4, -3 }, new int[] { -61, -60 }, new int[] { -56, -6 }, new int[] { -55, -7 }, new int[] { -54, -8 }, new int[] { -53, -9 }, new int[] { -11, -10 } };
|
||||
|
||||
public static final int[][] f_huff_icc = new int[][] {
|
||||
new int[] { -31, 1 }, new int[] { -30, 2 }, new int[] { -32, 3 }, new int[] { -29, 4 }, new int[] { -33, 5 }, new int[] { -28, 6 }, new int[] { -34, 7 }, new int[] { -27, 8 }, new int[] { -26, 9 }, new int[] { -35, 10 },
|
||||
new int[] { -25, 11 }, new int[] { -36, 12 }, new int[] { -24, 13 }, new int[] { -37, -38 } };
|
||||
|
||||
public static final int[][] t_huff_icc = new int[][] {
|
||||
new int[] { -31, 1 }, new int[] { -30, 2 }, new int[] { -32, 3 }, new int[] { -29, 4 }, new int[] { -33, 5 }, new int[] { -28, 6 }, new int[] { -34, 7 }, new int[] { -27, 8 }, new int[] { -35, 9 }, new int[] { -26, 10 },
|
||||
new int[] { -36, 11 }, new int[] { -25, 12 }, new int[] { -37, 13 }, new int[] { -38, -24 } };
|
||||
|
||||
public static final int[][] f_huff_ipd = new int[][] { new int[] { 1, -31 }, new int[] { 2, 3 }, new int[] { -30, 4 }, new int[] { 5, 6 }, new int[] { -27, -26 }, new int[] { -28, -25 }, new int[] { -29, -24 } };
|
||||
|
||||
public static final int[][] t_huff_ipd = new int[][] { new int[] { 1, -31 }, new int[] { 2, 3 }, new int[] { 4, 5 }, new int[] { -30, -24 }, new int[] { -26, 6 }, new int[] { -29, -25 }, new int[] { -27, -28 } };
|
||||
|
||||
public static final int[][] f_huff_opd = new int[][] { new int[] { 1, -31 }, new int[] { 2, 3 }, new int[] { -24, -30 }, new int[] { 4, 5 }, new int[] { -28, -25 }, new int[] { -29, 6 }, new int[] { -26, -27 } };
|
||||
|
||||
public static final int[][] t_huff_opd = new int[][] { new int[] { 1, -31 }, new int[] { 2, 3 }, new int[] { 4, 5 }, new int[] { -30, -24 }, new int[] { -26, -29 }, new int[] { -25, 6 }, new int[] { -27, -28 } };
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
package net.sourceforge.jaad.aac.ps;
|
||||
|
||||
interface PSTables extends PSConstants {
|
||||
public static final int[] nr_iid_par_tab = new int[] { 10, 20, 34, 10, 20, 34, 0, 0 };
|
||||
|
||||
public static final int[] nr_icc_par_tab = new int[] { 10, 20, 34, 10, 20, 34, 0, 0 };
|
||||
|
||||
public static final int[] nr_ipdopd_par_tab = new int[] { 5, 11, 17, 5, 11, 17, 0, 0 };
|
||||
|
||||
public static final int[][] num_env_tab = new int[][] { new int[] { 0, 1, 2, 4 }, new int[] { 1, 2, 3, 4 } };
|
||||
|
||||
public static final float[] filter_a = new float[] { 0.6514391F, 0.5647181F, 0.48954165F };
|
||||
|
||||
public static final int[] group_border20 = new int[] {
|
||||
6, 7, 0, 1, 2, 3, 9, 8, 10, 11,
|
||||
3, 4, 5, 6, 7, 8, 9, 11, 14, 18,
|
||||
23, 35, 64 };
|
||||
|
||||
public static final int[] group_border34 = new int[] {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
||||
30, 31, 5, 6, 7, 8, 9, 10, 11, 13,
|
||||
15, 17, 19, 21, 24, 27, 30, 33, 37, 41,
|
||||
64 };
|
||||
|
||||
public static final int[] map_group2bk20 = new int[] {
|
||||
4097, 4096, 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
|
||||
18, 19 };
|
||||
|
||||
public static final int[] map_group2bk34 = new int[] {
|
||||
0, 1, 2, 3, 4, 5, 6, 6, 7, 4098,
|
||||
4097, 4096, 10, 10, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 9, 14, 11, 12, 13, 14, 15,
|
||||
16, 13, 16, 17, 18, 19, 20, 21, 22, 23,
|
||||
24, 25, 26, 27, 28, 29, 30, 31, 32, 33 };
|
||||
|
||||
public static final int[] delay_length_d = new int[] { 3, 4, 5 };
|
||||
|
||||
public static final float[] p8_13_20 = new float[] { 0.0074608293F, 0.02270421F, 0.04546866F, 0.07266114F, 0.098851085F, 0.1179371F, 0.125F };
|
||||
|
||||
public static final float[] p2_13_20 = new float[] { 0.0F, 0.018994875F, 0.0F, -0.072931394F, 0.0F, 0.30596632F, 0.5F };
|
||||
|
||||
public static final float[] p12_13_34 = new float[] { 0.0408118F, 0.03812811F, 0.051449083F, 0.06399831F, 0.07428314F, 0.08100348F, 0.083333336F };
|
||||
|
||||
public static final float[] p8_13_34 = new float[] { 0.015656756F, 0.037527163F, 0.054178912F, 0.08417044F, 0.10307344F, 0.122224525F, 0.125F };
|
||||
|
||||
public static final float[] p4_13_34 = new float[] { -0.059082113F, -0.048714984F, 0.0F, 0.07778724F, 0.16486304F, 0.23279856F, 0.25F };
|
||||
|
||||
public static final float[][] Phi_Fract_Qmf = new float[][] {
|
||||
new float[] { 0.81814975F, 0.57500523F }, new float[] { -0.26387304F, 0.9645574F }, new float[] { -0.9969173F, 0.0784591F }, new float[] { -0.41151437F, -0.9114033F }, new float[] { 0.7181263F, -0.6959128F }, new float[] { 0.8980276F, 0.43993917F }, new float[] { -0.10973431F, 0.993961F }, new float[] { -0.9723699F, 0.23344536F }, new float[] { -0.5490228F, -0.8358074F }, new float[] { 0.60042024F, -0.79968464F },
|
||||
new float[] { 0.955793F, 0.29404032F }, new float[] { 0.047106452F, 0.99888986F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { -0.6730125F, -0.7396311F }, new float[] { 0.4679298F, -0.88376564F }, new float[] { 0.9900237F, 0.14090124F }, new float[] { 0.2027873F, 0.97922283F }, new float[] { -0.85264015F, 0.52249855F }, new float[] { -0.78043044F, -0.62524265F }, new float[] { 0.32391742F, -0.94608533F },
|
||||
new float[] { 0.9998766F, -0.015707318F }, new float[] { 0.35347486F, 0.93544406F }, new float[] { -0.76040596F, 0.64944804F }, new float[] { -0.86863154F, -0.49545866F }, new float[] { 0.1719291F, -0.9851093F }, new float[] { 0.9851093F, -0.1719291F }, new float[] { 0.49545866F, 0.86863154F }, new float[] { -0.64944804F, 0.76040596F }, new float[] { -0.93544406F, -0.35347486F }, new float[] { 0.015707318F, -0.9998766F },
|
||||
new float[] { 0.94608533F, -0.32391742F }, new float[] { 0.62524265F, 0.78043044F }, new float[] { -0.52249855F, 0.85264015F }, new float[] { -0.97922283F, -0.2027873F }, new float[] { -0.14090124F, -0.9900237F }, new float[] { 0.88376564F, -0.4679298F }, new float[] { 0.7396311F, 0.6730125F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { -0.99888986F, -0.047106452F }, new float[] { -0.29404032F, -0.955793F },
|
||||
new float[] { 0.79968464F, -0.60042024F }, new float[] { 0.8358074F, 0.5490228F }, new float[] { -0.23344536F, 0.9723699F }, new float[] { -0.993961F, 0.10973431F }, new float[] { -0.43993917F, -0.8980276F }, new float[] { 0.6959128F, -0.7181263F }, new float[] { 0.9114033F, 0.41151437F }, new float[] { -0.0784591F, 0.9969173F }, new float[] { -0.9645574F, 0.26387304F }, new float[] { -0.57500523F, -0.81814975F },
|
||||
new float[] { 0.57500523F, -0.81814975F }, new float[] { 0.9645574F, 0.26387304F }, new float[] { 0.0784591F, 0.9969173F }, new float[] { -0.9114033F, 0.41151437F }, new float[] { -0.6959128F, -0.7181263F }, new float[] { 0.43993917F, -0.8980276F }, new float[] { 0.993961F, 0.10973431F }, new float[] { 0.23344536F, 0.9723699F }, new float[] { -0.8358074F, 0.5490228F }, new float[] { -0.79968464F, -0.60042024F },
|
||||
new float[] { 0.29404032F, -0.955793F }, new float[] { 0.99888986F, -0.047106452F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { -0.7396311F, 0.6730125F } };
|
||||
|
||||
public static final float[][] Phi_Fract_SubQmf20 = new float[][] {
|
||||
new float[] { 0.988295F, 0.15255463F }, new float[] { 0.89629304F, 0.4434623F }, new float[] { 0.72085357F, 0.69308734F }, new float[] { 0.4783087F, 0.87819177F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 0.89629304F, -0.4434623F }, new float[] { 0.988295F, -0.15255463F }, new float[] { -0.54244155F, 0.84009355F }, new float[] { 0.039259817F, 0.999229F },
|
||||
new float[] { -0.9268566F, 0.37541556F }, new float[] { -0.97417337F, -0.22580127F } };
|
||||
|
||||
public static final float[][] Phi_Fract_SubQmf34 = new float[][] {
|
||||
new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 1.0F, 0.0F },
|
||||
new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { -0.77051324F, 0.637424F }, new float[] { -0.77051324F, 0.637424F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.33873793F, 0.9408808F },
|
||||
new float[] { -0.77051324F, 0.637424F }, new float[] { -0.77051324F, 0.637424F }, new float[] { -0.86074203F, -0.5090414F }, new float[] { 0.33873793F, 0.9408808F }, new float[] { 0.18738131F, -0.9822872F }, new float[] { -0.77051324F, 0.637424F }, new float[] { -0.86074203F, -0.5090414F }, new float[] { -0.86074203F, -0.5090414F }, new float[] { 0.18738131F, -0.9822872F }, new float[] { 0.18738131F, -0.9822872F },
|
||||
new float[] { 0.98768836F, -0.15643446F }, new float[] { -0.86074203F, -0.5090414F } };
|
||||
|
||||
public static final float[][][] Q_Fract_allpass_Qmf = new float[][][] {
|
||||
new float[][] { new float[] { 0.7804304F, 0.62524265F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { 0.8550929F, 0.5184748F } }, new float[][] { new float[] { -0.4399392F, 0.89802754F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { -0.06435815F, 0.9979269F } }, new float[][] { new float[] { -0.9723699F, -0.23344542F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { -0.91460717F, 0.40434358F } }, new float[][] { new float[] { 0.015707396F, -0.9998766F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { -0.7814115F, -0.624016F } }, new float[][] { new float[] { 0.97922283F, -0.20278719F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { 0.19200818F, -0.98139334F } }, new float[][] { new float[] { 0.41151425F, 0.9114033F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { 0.95896834F, -0.28351322F } }, new float[][] { new float[] { -0.79968476F, 0.6004201F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { 0.69478387F, 0.7192186F } }, new float[][] { new float[] { -0.76040584F, -0.64944816F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { -0.31647703F, 0.9486002F } }, new float[][] { new float[] { 0.46793F, -0.8837655F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { -0.9874414F, 0.15798566F } }, new float[][] { new float[] { 0.96455735F, 0.26387325F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { -0.59664506F, -0.80250525F } },
|
||||
new float[][] { new float[] { -0.047106687F, 0.99888986F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.43570253F, -0.9000907F } }, new float[][] { new float[] { -0.9851094F, 0.17192885F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { 0.9995547F, -0.029840596F } }, new float[][] { new float[] { -0.3826832F, -0.9238796F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { 0.48862115F, 0.87249607F } }, new float[][] { new float[] { 0.81814986F, -0.575005F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { -0.54770935F, 0.83666867F } }, new float[][] { new float[] { 0.7396309F, 0.67301273F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { -0.9951074F, -0.098798856F } }, new float[][] { new float[] { -0.49545896F, 0.86863136F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { -0.3725018F, -0.9280315F } }, new float[][] { new float[] { -0.9557929F, -0.29404068F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { 0.6506418F, -0.75938475F } }, new float[][] { new float[] { 0.07845949F, -0.9969173F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { 0.97417337F, 0.22580142F } }, new float[][] { new float[] { 0.99002373F, -0.14090082F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.25021085F, 0.9681914F } }, new float[][] { new float[] { 0.35347444F, 0.9354442F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { -0.7427945F, 0.6695195F } },
|
||||
new float[][] { new float[] { -0.8358076F, 0.54902244F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.9370993F, -0.34906292F } }, new float[][] { new float[] { -0.71812594F, -0.69591314F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { -0.12377448F, -0.99231035F } }, new float[][] { new float[] { 0.522499F, -0.8526399F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { 0.82264066F, -0.5685617F } }, new float[][] { new float[] { 0.9460852F, 0.32391793F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.8844995F, 0.4665412F } }, new float[][] { new float[] { -0.109734856F, 0.9939609F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { -0.004712592F, 0.9999889F } }, new float[][] { new float[] { -0.99396104F, 0.10973374F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { -0.88885736F, 0.458184F } }, new float[][] { new float[] { -0.32391685F, -0.9460856F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { -0.81724536F, -0.5762899F } }, new float[][] { new float[] { 0.8526405F, -0.522498F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { 0.13312158F, -0.9910997F } }, new float[][] { new float[] { 0.69591236F, 0.7181267F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { 0.9403476F, -0.3402152F } }, new float[][] { new float[] { -0.5490234F, 0.835807F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { 0.7364512F, 0.67649066F } },
|
||||
new float[][] { new float[] { -0.93544376F, -0.35347548F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { -0.25932503F, 0.9657901F } }, new float[][] { new float[] { 0.14090194F, -0.99002355F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { -0.9762583F, 0.21660973F } }, new float[][] { new float[] { 0.99691737F, -0.07845837F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { -0.6434556F, -0.7654834F } }, new float[][] { new float[] { 0.2940396F, 0.95579326F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { 0.38123202F, -0.9244794F } }, new float[][] { new float[] { -0.8686319F, 0.495458F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.9959944F, -0.0894155F } }, new float[][] { new float[] { -0.6730119F, -0.73963165F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { 0.5397994F, 0.8417937F } }, new float[][] { new float[] { 0.57500595F, -0.81814927F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.49682277F, 0.86785203F } }, new float[][] { new float[] { 0.9238792F, 0.3826842F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { -0.999229F, -0.039260153F } }, new float[][] { new float[] { -0.17192996F, 0.98510915F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { -0.42719975F, -0.9041573F } }, new float[][] { new float[] { -0.9988899F, 0.047105566F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.60418224F, -0.79684615F } },
|
||||
new float[][] { new float[] { -0.26387218F, -0.96455765F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { 0.9859085F, 0.16728535F } }, new float[][] { new float[] { 0.88376606F, -0.46792898F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { 0.30752236F, 0.9515409F } }, new float[][] { new float[] { 0.6494473F, 0.7604066F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { -0.7015317F, 0.71263826F } }, new float[][] { new float[] { -0.600421F, 0.79968405F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { -0.9562536F, -0.29253897F } }, new float[][] { new float[] { -0.9114029F, -0.41151527F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.18274994F, -0.9831594F } }, new float[][] { new float[] { 0.2027883F, -0.9792226F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { 0.78725827F, -0.6166234F } }, new float[][] { new float[] { 0.9998767F, -0.015706273F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { 0.9107556F, 0.41294587F } }, new float[][] { new float[] { 0.23344433F, 0.97237015F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.054949753F, 0.99848914F } }, new float[][] { new float[] { -0.8980281F, 0.4399382F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { -0.8599416F, 0.5103925F } }, new float[][] { new float[] { -0.6252418F, -0.7804311F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { -0.8501682F, -0.5265111F } },
|
||||
new float[][] { new float[] { 0.62524354F, -0.7804297F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.07376083F, -0.99727595F } }, new float[][] { new float[] { 0.89802706F, 0.4399402F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { 0.9183775F, -0.39570537F } }, new float[][] { new float[] { -0.23344651F, 0.9723697F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { 0.77549547F, 0.63135314F } }, new float[][] { new float[] { -0.9998766F, -0.01570852F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { -0.20124936F, 0.97954005F } }, new float[][] { new float[] { -0.2027861F, -0.9792231F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { -0.96159786F, 0.27446228F } }, new float[][] { new float[] { 0.9114038F, -0.4115132F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { -0.68797433F, -0.725735F } }, new float[][] { new float[] { 0.6004192F, 0.7996854F }, new float[] { 0.38268343F, 0.9238795F }, new float[] { 0.3254036F, -0.94557524F } }, new float[][] { new float[] { -0.64944905F, 0.7604051F }, new float[] { -0.9238795F, -0.38268343F }, new float[] { 0.9888866F, -0.14867193F } }, new float[][] { new float[] { -0.88376504F, -0.46793097F }, new float[] { 0.9238795F, -0.38268343F }, new float[] { 0.5890549F, 0.808093F } }, new float[][] { new float[] { 0.26387435F, -0.96455705F }, new float[] { -0.38268343F, 0.9238795F }, new float[] { -0.4441666F, 0.89594424F } },
|
||||
new float[][] { new float[] { 0.9988898F, 0.04710781F }, new float[] { -0.38268343F, -0.9238795F }, new float[] { -0.9997915F, 0.020418389F } }, new float[][] { new float[] { 0.17192774F, 0.98510957F }, new float[] { 0.9238795F, 0.38268343F }, new float[] { -0.4803761F, -0.8770626F } }, new float[][] { new float[] { -0.92388004F, 0.38268214F }, new float[] { -0.9238795F, 0.38268343F }, new float[] { 0.5555707F, -0.8314693F } }, new float[][] { new float[] { -0.5750041F, -0.8181505F }, new float[] { 0.38268343F, -0.9238795F }, new float[] { 0.99413204F, 0.10817343F } } };
|
||||
|
||||
public static final float[][][] Q_Fract_allpass_SubQmf20 = new float[][][] {
|
||||
new float[][] { new float[] { 0.9857769F, 0.16805927F }, new float[] { 0.95694035F, 0.29028466F }, new float[] { 0.99073005F, 0.13584526F } }, new float[][] { new float[] { 0.87440807F, 0.4851912F }, new float[] { 0.6343933F, 0.77301043F }, new float[] { 0.9175986F, 0.39750826F } }, new float[][] { new float[] { 0.6642524F, 0.74750835F }, new float[] { 0.09801714F, 0.9951847F }, new float[] { 0.7767339F, 0.62982893F } }, new float[][] { new float[] { 0.3790524F, 0.9253752F }, new float[] { -0.47139674F, 0.8819213F }, new float[] { 0.578534F, 0.8156583F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 0.87440807F, -0.4851912F }, new float[] { 0.6343933F, -0.77301043F }, new float[] { 0.9175986F, -0.39750826F } }, new float[][] { new float[] { 0.9857769F, -0.16805927F }, new float[] { 0.95694035F, -0.29028466F }, new float[] { 0.99073005F, -0.13584526F } }, new float[][] { new float[] { -0.71263856F, 0.7015314F }, new float[] { -0.55557024F, -0.8314696F }, new float[] { -0.33059677F, 0.9437721F } }, new float[][] { new float[] { -0.117537424F, 0.99306846F }, new float[] { -0.98078525F, 0.19509032F }, new float[] { 0.20663111F, 0.97841895F } },
|
||||
new float[][] { new float[] { -0.99479216F, 0.101924405F }, new float[] { 0.55557024F, -0.8314696F }, new float[] { -0.772013F, 0.6356067F } }, new float[][] { new float[] { -0.8400935F, -0.5424416F }, new float[] { 0.98078525F, 0.19509032F }, new float[] { -0.98968893F, 0.14323351F } } };
|
||||
|
||||
public static final float[][][] Q_Fract_allpass_SubQmf34 = new float[][][] {
|
||||
new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } },
|
||||
new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { -0.90482706F, 0.42577925F }, new float[] { -0.0F, -1.0F }, new float[] { -0.57243216F, 0.8199521F } }, new float[][] { new float[] { -0.90482706F, 0.42577925F }, new float[] { -0.0F, -1.0F }, new float[] { -0.57243216F, 0.8199521F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F }, new float[] { 1.0F, 0.0F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } },
|
||||
new float[][] { new float[] { -0.90482706F, 0.42577925F }, new float[] { -0.0F, -1.0F }, new float[] { -0.57243216F, 0.8199521F } }, new float[][] { new float[] { -0.90482706F, 0.42577925F }, new float[] { -0.0F, -1.0F }, new float[] { -0.57243216F, 0.8199521F } }, new float[][] { new float[] { -0.612907F, -0.79015505F }, new float[] { 0.70710677F, 0.70710677F }, new float[] { -0.991716F, -0.12844945F } }, new float[][] { new float[] { 0.21814322F, 0.97591674F }, new float[] { -0.70710677F, 0.70710677F }, new float[] { 0.46236774F, 0.88668823F } }, new float[][] { new float[] { 0.63742405F, -0.7705132F }, new float[] { -1.0F, 0.0F }, new float[] { -0.34464288F, -0.9387339F } }, new float[][] { new float[] { -0.90482706F, 0.42577925F }, new float[] { -0.0F, -1.0F }, new float[] { -0.57243216F, 0.8199521F } }, new float[][] { new float[] { -0.612907F, -0.79015505F }, new float[] { 0.70710677F, 0.70710677F }, new float[] { -0.991716F, -0.12844945F } }, new float[][] { new float[] { -0.612907F, -0.79015505F }, new float[] { 0.70710677F, 0.70710677F }, new float[] { -0.991716F, -0.12844945F } }, new float[][] { new float[] { 0.63742405F, -0.7705132F }, new float[] { -1.0F, 0.0F }, new float[] { -0.34464288F, -0.9387339F } }, new float[][] { new float[] { 0.63742405F, -0.7705132F }, new float[] { -1.0F, 0.0F }, new float[] { -0.34464288F, -0.9387339F } },
|
||||
new float[][] { new float[] { 0.89100647F, 0.4539906F }, new float[] { 0.70710677F, -0.70710677F }, new float[] { 0.67301255F, -0.73963106F } }, new float[][] { new float[] { -0.612907F, -0.79015505F }, new float[] { 0.70710677F, 0.70710677F }, new float[] { -0.991716F, -0.12844945F } } };
|
||||
|
||||
public static final float[] cos_alphas = new float[] { 1.0F, 0.98412395F, 0.95947385F, 0.8946843F, 0.8269341F, 0.70710677F, 0.4533211F, 0.0F };
|
||||
|
||||
public static final float[] sin_alphas = new float[] { 0.0F, 0.17748243F, 0.28179777F, 0.446699F, 0.56229883F, 0.70710677F, 0.8913473F, 1.0F };
|
||||
|
||||
public static final float[][] cos_betas_normal = new float[][] { new float[] { 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F }, new float[] { 1.0F, 0.9995872F, 0.9989419F, 0.99722046F, 0.9953791F, 0.99201125F, 0.98434085F, 0.9681727F }, new float[] { 1.0F, 0.9984498F, 0.99602795F, 0.98957384F, 0.98268145F, 0.9701058F, 0.94160986F, 0.8822106F }, new float[] { 1.0F, 0.9959399F, 0.9896038F, 0.97275895F, 0.95483553F, 0.922307F, 0.849435F, 0.70130056F }, new float[] { 1.0F, 0.9932417F, 0.9827072F, 0.9547731F, 0.9251669F, 0.8717462F, 0.7535521F, 0.51988274F }, new float[] { 1.0F, 0.99020684F, 0.9749614F, 0.9346539F, 0.8921231F, 0.8158851F, 0.64959645F, 0.33133706F }, new float[] { 1.0F, 0.9880511F, 0.96946704F, 0.9204348F, 0.8688623F, 0.77685165F, 0.5782162F, 0.20699704F }, new float[] { 1.0F, 0.9858997F, 0.9639899F, 0.90630347F, 0.84582144F, 0.7384262F, 0.5089811F, 0.09054659F } };
|
||||
|
||||
public static final float[][] sin_betas_normal = new float[][] { new float[] { 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F }, new float[] { 0.0F, -0.028731337F, -0.045989715F, -0.07450743F, -0.09602333F, -0.12614924F, -0.17627579F, -0.25028294F }, new float[] { 0.0F, -0.05566011F, -0.08904127F, -0.14402643F, -0.18530284F, -0.24268231F, -0.33670583F, -0.47085506F }, new float[] { 0.0F, -0.09002074F, -0.14382043F, -0.23181884F, -0.29713482F, -0.38645792F, -0.52769333F, -0.7128657F }, new float[] { 0.0F, -0.116063975F, -0.18516637F, -0.2973354F, -0.37956056F, -0.48995778F, -0.6573882F, -0.8542376F }, new float[] { 0.0F, -0.1396083F, -0.22237422F, -0.35555896F, -0.45179233F, -0.57821405F, -0.76027924F, -0.94351244F }, new float[] { 0.0F, -0.15412669F, -0.2452217F, -0.39089614F, -0.49505386F, -0.6296836F, -0.8158836F, -0.9783416F }, new float[] { 0.0F, -0.16733736F, -0.2659389F, -0.4226275F, -0.5334661F, -0.6743343F, -0.8607777F, -0.9958922F } };
|
||||
|
||||
public static final float[][] cos_betas_fine = new float[][] {
|
||||
new float[] { 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F }, new float[] { 1.0F, 0.9995872F, 0.9989419F, 0.99722046F, 0.9953791F, 0.99201125F, 0.98434085F, 0.9681727F }, new float[] { 1.0F, 0.9984498F, 0.99602795F, 0.98957384F, 0.98268145F, 0.9701058F, 0.94160986F, 0.8822106F }, new float[] { 1.0F, 0.9968361F, 0.9918968F, 0.97875404F, 0.96475154F, 0.9392903F, 0.8820167F, 0.76453257F }, new float[] { 1.0F, 0.9950263F, 0.9872675F, 0.9666585F, 0.94475883F, 0.9050918F, 0.8165997F, 0.6383825F }, new float[] { 1.0F, 0.9932417F, 0.9827072F, 0.9547731F, 0.9251669F, 0.8717462F, 0.7535521F, 0.51988274F }, new float[] { 1.0F, 0.9908828F, 0.9766856F, 0.93912494F, 0.89945316F, 0.82823527F, 0.6723983F, 0.37194732F }, new float[] { 1.0F, 0.98902404F, 0.971946F, 0.92684484F, 0.87933886F, 0.7944023F, 0.6101812F, 0.2621501F }, new float[] { 1.0F, 0.987635F, 0.96840733F, 0.91769737F, 0.864393F, 0.7693796F, 0.56467205F, 0.18388996F }, new float[] { 1.0F, 0.9866247F, 0.965835F, 0.9110591F, 0.8535668F, 0.75131655F, 0.5320915F, 0.1289531F },
|
||||
new float[] { 1.0F, 0.9858997F, 0.9639899F, 0.90630347F, 0.84582144F, 0.7384262F, 0.5089811F, 0.09054659F }, new float[] { 1.0F, 0.9851246F, 0.962018F, 0.9012266F, 0.8375623F, 0.7247108F, 0.48452044F, 0.0504115F }, new float[] { 1.0F, 0.984687F, 0.96090525F, 0.89836395F, 0.8329098F, 0.71699834F, 0.47082454F, 0.028173251F }, new float[] { 1.0F, 0.9844406F, 0.96027887F, 0.8967534F, 0.83029366F, 0.7126658F, 0.46314928F, 0.015785115F }, new float[] { 1.0F, 0.98430204F, 0.95992655F, 0.89584774F, 0.8288229F, 0.7102316F, 0.45884293F, 0.008857806F }, new float[] { 1.0F, 0.98422414F, 0.9597284F, 0.89533854F, 0.82799613F, 0.70886356F, 0.45642468F, 0.0049751354F } };
|
||||
|
||||
public static final float[][] sin_betas_fine = new float[][] {
|
||||
new float[] { 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F }, new float[] { 0.0F, -0.028731337F, -0.045989715F, -0.07450743F, -0.09602333F, -0.12614924F, -0.17627579F, -0.25028294F }, new float[] { 0.0F, -0.05566011F, -0.08904127F, -0.14402643F, -0.18530284F, -0.24268231F, -0.33670583F, -0.47085506F }, new float[] { 0.0F, -0.07948406F, -0.12704612F, -0.20503783F, -0.26316252F, -0.3431235F, -0.47121814F, -0.64458513F }, new float[] { 0.0F, -0.099612646F, -0.15906878F, -0.25606918F, -0.3277662F, -0.42521614F, -0.57720435F, -0.7697193F }, new float[] { 0.0F, -0.116063975F, -0.18516637F, -0.2973354F, -0.37956056F, -0.48995778F, -0.6573882F, -0.8542376F }, new float[] { 0.0F, -0.13472667F, -0.21467477F, -0.34357587F, -0.43701714F, -0.5603805F, -0.7401895F, -0.9282538F }, new float[] { 0.0F, -0.14775485F, -0.23520416F, -0.37544465F, -0.4761966F, -0.6073919F, -0.7922619F, -0.9650271F }, new float[] { 0.0F, -0.15677059F, -0.24937364F, -0.39728013F, -0.5028168F, -0.63879186F, -0.82531536F, -0.9829468F }, new float[] { 0.0F, -0.16300823F, -0.2591579F, -0.41227582F, -0.5209834F, -0.65994203F, -0.84668684F, -0.9916507F },
|
||||
new float[] { 0.0F, -0.16733736F, -0.2659389F, -0.4226275F, -0.5334661F, -0.6743343F, -0.8607777F, -0.9958922F }, new float[] { 0.0F, -0.17184179F, -0.27298594F, -0.43334824F, -0.5463418F, -0.6890532F, -0.87477994F, -0.9987285F }, new float[] { 0.0F, -0.1743317F, -0.27687746F, -0.43925187F, -0.5534087F, -0.6970749F, -0.8822269F, -0.99960303F }, new float[] { 0.0F, -0.1757175F, -0.27904215F, -0.44253063F, -0.5573262F, -0.7015037F, -0.8862803F, -0.9998754F }, new float[] { 0.0F, -0.17649214F, -0.28025177F, -0.44436115F, -0.559511F, -0.7039681F, -0.8885174F, -0.9999608F }, new float[] { 0.0F, -0.17692624F, -0.28092957F, -0.4453863F, -0.5607338F, -0.70534563F, -0.88976204F, -0.9999876F } };
|
||||
|
||||
public static final float[][] sincos_alphas_B_normal = new float[][] {
|
||||
new float[] { 0.05614541F, 0.052638587F, 0.047293734F, 0.033841062F, 0.020726107F, 0.0028205635F, 0.0028205635F, 0.0028205635F }, new float[] { 0.12490651F, 0.11736977F, 0.10578883F, 0.07619851F, 0.04687327F, 0.0063956105F, 0.0063956105F, 0.0063956105F }, new float[] { 0.19566931F, 0.18460901F, 0.16736451F, 0.122062184F, 0.07573625F, 0.010388263F, 0.010388263F, 0.010388263F }, new float[] { 0.30151132F, 0.28705257F, 0.2637739F, 0.19845739F, 0.12607498F, 0.017560013F, 0.017560013F, 0.017560013F }, new float[] { 0.40784496F, 0.39298525F, 0.36805892F, 0.29110292F, 0.19345124F, 0.027868671F, 0.027868671F, 0.027868671F }, new float[] { 0.53361714F, 0.5226638F, 0.5033653F, 0.43491626F, 0.32246822F, 0.052199904F, 0.052199904F, 0.052199904F }, new float[] { 0.62198323F, 0.6161847F, 0.6057251F, 0.5654343F, 0.482615F, 0.10580447F, 0.10580447F, 0.10580447F }, new float[] { 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F }, new float[] { 0.78303057F, 0.78760165F, 0.79567397F, 0.82479334F, 0.8758326F, 0.994387F, 0.994387F, 0.994387F }, new float[] { 0.8457262F, 0.8525389F, 0.86407375F, 0.9004709F, 0.9465803F, 0.99863666F, 0.99863666F, 0.99863666F },
|
||||
new float[] { 0.9130512F, 0.91954476F, 0.9298024F, 0.95669174F, 0.98110986F, 0.9996116F, 0.9996116F, 0.9996116F }, new float[] { 0.9534626F, 0.9579148F, 0.9645845F, 0.9801095F, 0.9920207F, 0.9998458F, 0.9998458F, 0.9998458F }, new float[] { 0.9806699F, 0.98281205F, 0.9858951F, 0.9925224F, 0.9971279F, 0.99994606F, 0.99994606F, 0.99994606F }, new float[] { 0.9921685F, 0.99308825F, 0.99438864F, 0.99709266F, 0.99890083F, 0.99997956F, 0.99997956F, 0.99997956F }, new float[] { 0.9984226F, 0.99861366F, 0.99888104F, 0.9994272F, 0.9997852F, 0.999996F, 0.999996F, 0.999996F } };
|
||||
|
||||
public static final float[][] sincos_alphas_B_fine = new float[][] {
|
||||
new float[] { 0.0031622157F, 0.0029630181F, 0.0026599893F, 0.0019002703F, 0.0011626042F, 1.580278E-4F, 1.580278E-4F, 1.580278E-4F }, new float[] { 0.0056232675F, 0.0052689826F, 0.0047302824F, 0.0033791757F, 0.0020674015F, 2.81171E-4F, 2.81171E-4F, 2.81171E-4F }, new float[] { 0.009999422F, 0.0093696695F, 0.008411742F, 0.0060093794F, 0.003676601F, 5.000392E-4F, 5.000392E-4F, 5.000392E-4F }, new float[] { 0.01777992F, 0.01666071F, 0.014958138F, 0.010687581F, 0.0065392544F, 8.893767E-4F, 8.893767E-4F, 8.893767E-4F }, new float[] { 0.03160697F, 0.029621158F, 0.02659873F, 0.019011382F, 0.011634997F, 0.0015826974F, 0.0015826974F, 0.0015826974F }, new float[] { 0.05614541F, 0.052638587F, 0.047293734F, 0.033841062F, 0.020726107F, 0.0028205635F, 0.0028205635F, 0.0028205635F }, new float[] { 0.07918341F, 0.07427981F, 0.06679073F, 0.047870528F, 0.029350074F, 0.0039966754F, 0.0039966754F, 0.0039966754F }, new float[] { 0.11150212F, 0.1047142F, 0.094305314F, 0.067812055F, 0.041666914F, 0.0056813215F, 0.0056813215F, 0.0056813215F }, new float[] { 0.1565355F, 0.14732584F, 0.1330924F, 0.09632822F, 0.05945091F, 0.008127795F, 0.008127795F, 0.008127795F }, new float[] { 0.21846437F, 0.20645796F, 0.18762654F, 0.13757442F, 0.08568967F, 0.0117817335F, 0.0117817335F, 0.0117817335F },
|
||||
new float[] { 0.30151132F, 0.28705257F, 0.2637739F, 0.19845739F, 0.12607498F, 0.017560013F, 0.017560013F, 0.017560013F }, new float[] { 0.36987412F, 0.35477272F, 0.32982522F, 0.2556266F, 0.166599F, 0.023634454F, 0.023634454F, 0.023634454F }, new float[] { 0.4480624F, 0.433941F, 0.4098614F, 0.33227092F, 0.22667848F, 0.033409413F, 0.033409413F, 0.033409413F }, new float[] { 0.53361714F, 0.5226638F, 0.5033653F, 0.43491626F, 0.32246822F, 0.052199904F, 0.052199904F, 0.052199904F }, new float[] { 0.62198323F, 0.6161847F, 0.6057251F, 0.5654343F, 0.482615F, 0.10580447F, 0.10580447F, 0.10580447F }, new float[] { 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F, 0.70710677F }, new float[] { 0.78303057F, 0.78760165F, 0.79567397F, 0.82479334F, 0.8758326F, 0.994387F, 0.994387F, 0.994387F }, new float[] { 0.8457262F, 0.8525389F, 0.86407375F, 0.9004709F, 0.9465803F, 0.99863666F, 0.99863666F, 0.99863666F }, new float[] { 0.8940022F, 0.90094125F, 0.91214776F, 0.94318396F, 0.97396964F, 0.99944174F, 0.99944174F, 0.99944174F }, new float[] { 0.92908186F, 0.93495256F, 0.944042F, 0.9667756F, 0.98602474F, 0.9997207F, 0.9997207F, 0.9997207F },
|
||||
new float[] { 0.9534626F, 0.9579148F, 0.9645845F, 0.9801095F, 0.9920207F, 0.9998458F, 0.9998458F, 0.9998458F }, new float[] { 0.9758449F, 0.9784555F, 0.98224044F, 0.99049145F, 0.99632186F, 0.9999306F, 0.9999306F, 0.9999306F }, new float[] { 0.9876723F, 0.989088F, 0.99110365F, 0.99534965F, 0.99823123F, 0.999967F, 0.999967F, 0.999967F }, new float[] { 0.99376416F, 0.99450237F, 0.9955433F, 0.9976981F, 0.99913156F, 0.99998385F, 0.99998385F, 0.99998385F }, new float[] { 0.9968601F, 0.99723744F, 0.99776703F, 0.99885356F, 0.9995692F, 0.999992F, 0.999992F, 0.999992F }, new float[] { 0.9984226F, 0.99861366F, 0.99888104F, 0.9994272F, 0.9997852F, 0.999996F, 0.999996F, 0.999996F }, new float[] { 0.9995004F, 0.9995612F, 0.9996462F, 0.9998193F, 0.9999323F, 0.99999875F, 0.99999875F, 0.99999875F }, new float[] { 0.9998419F, 0.9998612F, 0.9998881F, 0.9999429F, 0.9999786F, 0.9999996F, 0.9999996F, 0.9999996F }, new float[] { 0.99995F, 0.99995613F, 0.9999646F, 0.99998194F, 0.99999326F, 0.9999999F, 0.9999999F, 0.9999999F }, new float[] { 0.9999842F, 0.9999861F, 0.9999888F, 0.9999943F, 0.99999785F, 0.99999994F, 0.99999994F, 0.99999994F },
|
||||
new float[] { 0.999995F, 0.9999956F, 0.9999965F, 0.9999982F, 0.99999934F, 1.0F, 1.0F, 1.0F } };
|
||||
|
||||
public static final float[][] cos_gammas_normal = new float[][] { new float[] { 1.0F, 0.98412395F, 0.95947385F, 0.8946843F, 0.8269341F, 0.72456884F, 0.72456884F, 0.72456884F }, new float[] { 1.0F, 0.9849691F, 0.9617777F, 0.9020941F, 0.84368306F, 0.7846833F, 0.7846833F, 0.7846833F }, new float[] { 1.0F, 0.98716563F, 0.9676775F, 0.9199103F, 0.8785067F, 0.8464232F, 0.8464232F, 0.8464232F }, new float[] { 1.0F, 0.9913534F, 0.9786F, 0.94960636F, 0.9277157F, 0.9133354F, 0.9133354F, 0.9133354F }, new float[] { 1.0F, 0.9948924F, 0.9875319F, 0.97163296F, 0.9604805F, 0.953595F, 0.953595F, 0.953595F }, new float[] { 1.0F, 0.9977406F, 0.99454236F, 0.9878737F, 0.983398F, 0.98072076F, 0.98072076F, 0.98072076F }, new float[] { 1.0F, 0.9990607F, 0.99774176F, 0.99503237F, 0.9932453F, 0.99218845F, 0.99218845F, 0.99218845F }, new float[] { 1.0F, 0.9998082F, 0.99954003F, 0.99899364F, 0.99863654F, 0.99842656F, 0.99842656F, 0.99842656F } };
|
||||
|
||||
public static final float[][] cos_gammas_fine = new float[][] {
|
||||
new float[] { 1.0F, 0.98412395F, 0.95947385F, 0.8946843F, 0.8269341F, 0.72456884F, 0.72456884F, 0.72456884F }, new float[] { 1.0F, 0.9849691F, 0.9617777F, 0.9020941F, 0.84368306F, 0.7846833F, 0.7846833F, 0.7846833F }, new float[] { 1.0F, 0.98716563F, 0.9676775F, 0.9199103F, 0.8785067F, 0.8464232F, 0.8464232F, 0.8464232F }, new float[] { 1.0F, 0.9899597F, 0.97500986F, 0.9402334F, 0.9129699F, 0.8943766F, 0.8943766F, 0.8943766F }, new float[] { 1.0F, 0.99266076F, 0.9819296F, 0.95801604F, 0.94049937F, 0.9293004F, 0.9293004F, 0.9293004F }, new float[] { 1.0F, 0.9948924F, 0.9875319F, 0.97163296F, 0.9604805F, 0.953595F, 0.953595F, 0.953595F }, new float[] { 1.0F, 0.99720746F, 0.9932414F, 0.9849198F, 0.97929263F, 0.97590923F, 0.97590923F, 0.97590923F }, new float[] { 1.0F, 0.99853617F, 0.9964742F, 0.9922136F, 0.98938453F, 0.98770416F, 0.98770416F, 0.98770416F }, new float[] { 1.0F, 0.99924946F, 0.9981967F, 0.9960387F, 0.9946186F, 0.99378F, 0.99378F, 0.99378F }, new float[] { 1.0F, 0.9996195F, 0.9990869F, 0.9979996F, 0.9972874F, 0.99686795F, 0.99686795F, 0.99686795F },
|
||||
new float[] { 1.0F, 0.9998082F, 0.99954003F, 0.99899364F, 0.99863654F, 0.99842656F, 0.99842656F, 0.99842656F }, new float[] { 1.0F, 0.9999391F, 0.999854F, 0.99968094F, 0.999568F, 0.99950165F, 0.99950165F, 0.99950165F }, new float[] { 1.0F, 0.9999807F, 0.9999538F, 0.999899F, 0.99986327F, 0.99984235F, 0.99984235F, 0.99984235F }, new float[] { 1.0F, 0.9999939F, 0.9999854F, 0.99996805F, 0.9999568F, 0.9999501F, 0.9999501F, 0.9999501F }, new float[] { 1.0F, 0.9999981F, 0.99999535F, 0.99998987F, 0.99998635F, 0.9999842F, 0.9999842F, 0.9999842F }, new float[] { 1.0F, 0.9999994F, 0.99999857F, 0.9999968F, 0.99999565F, 0.999995F, 0.999995F, 0.999995F } };
|
||||
|
||||
public static final float[][] sin_gammas_normal = new float[][] { new float[] { 0.0F, 0.17748243F, 0.28179777F, 0.446699F, 0.56229883F, 0.6892024F, 0.6892024F, 0.6892024F }, new float[] { 0.0F, 0.17273088F, 0.27383152F, 0.43153927F, 0.53684163F, 0.6198969F, 0.6198969F, 0.6198969F }, new float[] { 0.0F, 0.1596999F, 0.252191F, 0.39212888F, 0.47773004F, 0.53251076F, 0.53251076F, 0.53251076F }, new float[] { 0.0F, 0.13121906F, 0.20577173F, 0.31344506F, 0.37328747F, 0.40720809F, 0.40720809F, 0.40720809F }, new float[] { 0.0F, 0.100940704F, 0.1574189F, 0.23649386F, 0.2783472F, 0.30109245F, 0.30109245F, 0.30109245F }, new float[] { 0.0F, 0.06718363F, 0.10433334F, 0.15525985F, 0.1814615F, 0.19541448F, 0.19541448F, 0.19541448F }, new float[] { 0.0F, 0.043332487F, 0.06716661F, 0.09955164F, 0.11603327F, 0.12474787F, 0.12474787F, 0.12474787F }, new float[] { 0.0F, 0.019586058F, 0.030326985F, 0.04485193F, 0.052202202F, 0.056075003F, 0.056075003F, 0.056075003F } };
|
||||
|
||||
public static final float[][] sin_gammas_fine = new float[][] {
|
||||
new float[] { 0.0F, 0.17748243F, 0.28179777F, 0.446699F, 0.56229883F, 0.6892024F, 0.6892024F, 0.6892024F }, new float[] { 0.0F, 0.17273088F, 0.27383152F, 0.43153927F, 0.53684163F, 0.6198969F, 0.6198969F, 0.6198969F }, new float[] { 0.0F, 0.1596999F, 0.252191F, 0.39212888F, 0.47773004F, 0.53251076F, 0.53251076F, 0.53251076F }, new float[] { 0.0F, 0.14134967F, 0.22216155F, 0.34053072F, 0.40802696F, 0.44731477F, 0.44731477F, 0.44731477F }, new float[] { 0.0F, 0.12093227F, 0.18924671F, 0.2867147F, 0.33979544F, 0.36932462F, 0.36932462F, 0.36932462F }, new float[] { 0.0F, 0.100940704F, 0.1574189F, 0.23649386F, 0.2783472F, 0.30109245F, 0.30109245F, 0.30109245F }, new float[] { 0.0F, 0.07468114F, 0.11606665F, 0.17301174F, 0.20244971F, 0.21817683F, 0.21817683F, 0.21817683F }, new float[] { 0.0F, 0.05408753F, 0.08389972F, 0.12454762F, 0.14532112F, 0.1563347F, 0.1563347F, 0.1563347F }, new float[] { 0.0F, 0.038737107F, 0.06002761F, 0.08892122F, 0.103604406F, 0.11136096F, 0.11136096F, 0.11136096F }, new float[] { 0.0F, 0.02758461F, 0.042723317F, 0.063219815F, 0.07360646F, 0.07908376F, 0.07908376F, 0.07908376F },
|
||||
new float[] { 0.0F, 0.019586058F, 0.030326985F, 0.04485193F, 0.052202202F, 0.056075003F, 0.056075003F, 0.056075003F }, new float[] { 0.0F, 0.011036395F, 0.017085798F, 0.025259212F, 0.029391602F, 0.031567305F, 0.031567305F, 0.031567305F }, new float[] { 0.0F, 0.0062101283F, 0.00961382F, 0.014210965F, 0.016534565F, 0.017757632F, 0.017757632F, 0.017757632F }, new float[] { 0.0F, 0.0034934508F, 0.0054071187F, 0.007992832F, 0.009299404F, 0.009987163F, 0.009987163F, 0.009987163F }, new float[] { 0.0F, 0.0019645398F, 0.0030419906F, 0.004495151F, 0.0052291853F, 0.00561665F, 0.00561665F, 0.00561665F }, new float[] { 0.0F, 0.0011053943F, 0.0017089869F, 0.002528367F, 0.0029398552F, 0.0031573684F, 0.0031573684F, 0.0031573684F } };
|
||||
|
||||
public static final float[] sf_iid_normal = new float[] {
|
||||
1.4119828F, 1.4031382F, 1.3868767F, 1.3483998F, 1.2912494F, 1.1960374F, 1.1073724F, 1.0F, 0.87961715F, 0.75464857F,
|
||||
0.5767799F, 0.42640144F, 0.2767183F, 0.17664462F, 0.07940163F };
|
||||
|
||||
public static final float[] sf_iid_fine = new float[] {
|
||||
1.4142065F, 1.4141912F, 1.4141428F, 1.41399F, 1.413507F, 1.4119828F, 1.409773F, 1.4053948F, 1.3967797F, 1.380053F,
|
||||
1.3483998F, 1.3139201F, 1.2643101F, 1.1960374F, 1.1073724F, 1.0F, 0.87961715F, 0.75464857F, 0.6336561F, 0.52308106F,
|
||||
0.42640144F, 0.3089554F, 0.22137465F, 0.15768789F, 0.11198225F, 0.07940163F, 0.044699017F, 0.025144693F, 0.014141428F, 0.007952581F,
|
||||
0.0044721137F };
|
||||
|
||||
public static final float[] ipdopd_cos_tab = new float[] { 1.0F, 0.70710677F, 0.0F, -0.70710677F, -1.0F, -0.70710677F, -0.0F, 0.70710677F, 1.0F };
|
||||
|
||||
public static final float[] ipdopd_sin_tab = new float[] { 0.0F, 0.70710677F, 1.0F, 0.70710677F, 0.0F, -0.70710677F, -1.0F, -0.70710677F, -0.0F };
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
class AnalysisFilterbank implements FilterbankTable {
|
||||
private float[] x;
|
||||
|
||||
private int x_index;
|
||||
|
||||
private int channels;
|
||||
|
||||
AnalysisFilterbank(int channels) {
|
||||
this.channels = channels;
|
||||
this.x = new float[2 * channels * 10];
|
||||
this.x_index = 0;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
Arrays.fill(this.x, 0.0F);
|
||||
}
|
||||
|
||||
void sbr_qmf_analysis_32(SBR sbr, float[] input, float[][][] X, int offset, int kx) {
|
||||
float[] u = new float[64];
|
||||
float[] in_real = new float[32], in_imag = new float[32];
|
||||
float[] out_real = new float[32], out_imag = new float[32];
|
||||
int _in = 0;
|
||||
for (int l = 0; l < sbr.numTimeSlotsRate; l++) {
|
||||
for (int k = 31; k >= 0; k--) {
|
||||
this.x[this.x_index + k + 320] = input[_in++];
|
||||
this.x[this.x_index + k] = input[_in++];
|
||||
}
|
||||
for (int j = 0; j < 64; j++)
|
||||
u[j] = this.x[this.x_index + j] * qmf_c[2 * j] + this.x[this.x_index + j + 64] * qmf_c[2 * (j + 64)] + this.x[this.x_index + j + 128] * qmf_c[2 * (j + 128)] + this.x[this.x_index + j + 192] * qmf_c[2 * (j + 192)] + this.x[this.x_index + j + 256] * qmf_c[2 * (j + 256)];
|
||||
this.x_index -= 32;
|
||||
if (this.x_index < 0)
|
||||
this.x_index = 288;
|
||||
in_imag[31] = u[1];
|
||||
in_real[0] = u[0];
|
||||
for (int i = 1; i < 31; i++) {
|
||||
in_imag[31 - i] = u[i + 1];
|
||||
in_real[i] = -u[64 - i];
|
||||
}
|
||||
in_imag[0] = u[32];
|
||||
in_real[31] = -u[33];
|
||||
DCT.dct4_kernel(in_real, in_imag, out_real, out_imag);
|
||||
for (int n = 0; n < 16; n++) {
|
||||
if (2 * n + 1 < kx) {
|
||||
X[l + offset][2 * n][0] = 2.0F * out_real[n];
|
||||
X[l + offset][2 * n][1] = 2.0F * out_imag[n];
|
||||
X[l + offset][2 * n + 1][0] = -2.0F * out_imag[31 - n];
|
||||
X[l + offset][2 * n + 1][1] = -2.0F * out_real[31 - n];
|
||||
} else {
|
||||
if (2 * n < kx) {
|
||||
X[l + offset][2 * n][0] = 2.0F * out_real[n];
|
||||
X[l + offset][2 * n][1] = 2.0F * out_imag[n];
|
||||
} else {
|
||||
X[l + offset][2 * n][0] = 0.0F;
|
||||
X[l + offset][2 * n][1] = 0.0F;
|
||||
}
|
||||
X[l + offset][2 * n + 1][0] = 0.0F;
|
||||
X[l + offset][2 * n + 1][1] = 0.0F;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,199 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
class DCT {
|
||||
private static final int n = 32;
|
||||
|
||||
private static final float[] w_array_real = new float[] {
|
||||
1.0F, 0.98078525F, 0.9238795F, 0.8314696F, 0.70710677F, 0.5555702F, 0.3826834F, 0.19509028F, 0.0F, -0.19509037F,
|
||||
-0.3826835F, -0.5555703F, -0.7071068F, -0.83146966F, -0.92387956F, -0.9807853F };
|
||||
|
||||
private static final float[] w_array_imag = new float[] {
|
||||
0.0F, -0.19509032F, -0.38268346F, -0.55557024F, -0.70710677F, -0.83146966F, -0.92387956F, -0.9807853F, -1.0F, -0.98078525F,
|
||||
-0.9238795F, -0.8314696F, -0.7071067F, -0.5555702F, -0.38268337F, -0.19509023F };
|
||||
|
||||
private static final float[] dct4_64_tab = new float[] {
|
||||
0.9999247F, 0.9981181F, 0.993907F, 0.9873014F, 0.9783174F, 0.96697646F, 0.953306F, 0.937339F, 0.9191139F, 0.8986745F,
|
||||
0.8760701F, 0.8513552F, 0.82458925F, 0.7958369F, 0.76516724F, 0.7326543F, 0.69837624F, 0.66241574F, 0.62485945F, 0.58579785F,
|
||||
0.545325F, 0.5035384F, 0.46053872F, 0.41642955F, 0.37131715F, 0.32531023F, 0.2785196F, 0.23105814F, 0.18303989F, 0.13458069F,
|
||||
0.08579727F, 0.036807165F, -1.0121963F, -1.0594388F, -1.1041292F, -1.1461595F, -1.1854287F, -1.2218422F, -1.255312F, -1.2857577F,
|
||||
-1.313106F, -1.3372908F, -1.3582538F, -1.3759449F, -1.390321F, -1.4013479F, -1.4089987F, -1.4132552F, -1.4141071F, -1.4115522F,
|
||||
-1.4055967F, -1.396255F, -1.3835497F, -1.3675113F, -1.3481784F, -1.3255975F, -1.2998233F, -1.2709177F, -1.2389501F, -1.2039981F,
|
||||
-1.1661453F, -1.1254834F, -1.0821099F, -1.0361296F, -0.9876532F, -0.9367974F, -0.88368475F, -0.8284433F, -0.771206F, -0.71211076F,
|
||||
-0.6513001F, -0.58892035F, -0.5251218F, -0.46005824F, -0.39388633F, -0.32676548F, -0.25885743F, -0.19032592F, -0.121335685F, -0.052053273F,
|
||||
0.017354608F, 0.086720645F, 0.15587783F, 0.22465932F, 0.29289973F, 0.3604344F, 0.42710093F, 0.49273846F, 0.5571889F, 0.62029713F,
|
||||
0.681911F, 0.74188185F, 0.8000656F, 0.856322F, 0.91051537F, 0.96251523F, 1.0F, 0.99879545F, 0.9951847F, 0.9891765F,
|
||||
0.98078525F, 0.97003126F, 0.95694035F, 0.94154406F, 0.9238795F, 0.9039893F, 0.88192123F, 0.8577286F, 0.8314696F, 0.8032075F,
|
||||
0.77301043F, 0.7409511F, 0.70710677F, 0.6715589F, 0.6343933F, 0.5956993F, 0.5555702F, 0.5141027F, 0.47139665F, 0.4275551F,
|
||||
0.38268343F, 0.33688983F, 0.29028463F, 0.24298012F, 0.19509023F, 0.1467305F, 0.098017134F, 0.04906765F, -1.0F, -1.0478631F,
|
||||
-1.0932019F, -1.1359069F, -1.1758755F, -1.2130115F, -1.247225F, -1.2784339F, -1.3065629F, -1.3315444F, -1.353318F, -1.3718314F,
|
||||
-1.3870399F, -1.3989068F, -1.4074037F, -1.4125102F, 0.0F, -1.4125102F, -1.4074037F, -1.3989068F, -1.3870399F, -1.3718314F,
|
||||
-1.353318F, -1.3315444F, -1.3065629F, -1.2784339F, -1.247225F, -1.2130114F, -1.1758755F, -1.135907F, -1.0932019F, -1.0478631F,
|
||||
-1.0F, -0.9497278F, -0.89716756F, -0.842446F, -0.78569496F, -0.7270511F, -0.66665566F, -0.6046542F, -0.54119605F, -0.47643423F,
|
||||
-0.4105245F, -0.34362584F, -0.27589935F, -0.2075082F, -0.1386171F, -0.069392145F, 0.0F, 0.069392264F, 0.13861716F, 0.2075082F,
|
||||
0.27589947F, 0.34362596F, 0.41052464F, 0.4764342F, 0.5411961F, 0.6046542F, 0.6666557F, 0.72705114F, 0.7856951F, 0.842446F,
|
||||
0.89716756F, 0.9497278F };
|
||||
|
||||
private static final int[] bit_rev_tab = new int[] {
|
||||
0, 16, 8, 24, 4, 20, 12, 28, 2, 18,
|
||||
10, 26, 6, 22, 14, 30, 1, 17, 9, 25,
|
||||
5, 21, 13, 29, 3, 19, 11, 27, 7, 23,
|
||||
15, 31 };
|
||||
|
||||
private static void fft_dif(float[] Real, float[] Imag) {
|
||||
for (int i4 = 0; i4 < 16; i4++) {
|
||||
float point1_real = Real[i4];
|
||||
float point1_imag = Imag[i4];
|
||||
int i5 = i4 + 16;
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
float f1 = w_array_real[i4];
|
||||
float w_imag = w_array_imag[i4];
|
||||
point1_real -= point2_real;
|
||||
point1_imag -= point2_imag;
|
||||
Real[i4] = Real[i4] + point2_real;
|
||||
Imag[i4] = Imag[i4] + point2_imag;
|
||||
Real[i5] = point1_real * f1 - point1_imag * w_imag;
|
||||
Imag[i5] = point1_real * w_imag + point1_imag * f1;
|
||||
}
|
||||
for (int j = 0, w_index = 0; j < 8; j++, w_index += 2) {
|
||||
float f1 = w_array_real[w_index];
|
||||
float w_imag = w_array_imag[w_index];
|
||||
i4 = j;
|
||||
float point1_real = Real[i4];
|
||||
float point1_imag = Imag[i4];
|
||||
int i5 = i4 + 8;
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
point1_real -= point2_real;
|
||||
point1_imag -= point2_imag;
|
||||
Real[i4] = Real[i4] + point2_real;
|
||||
Imag[i4] = Imag[i4] + point2_imag;
|
||||
Real[i5] = point1_real * f1 - point1_imag * w_imag;
|
||||
Imag[i5] = point1_real * w_imag + point1_imag * f1;
|
||||
i4 = j + 16;
|
||||
point1_real = Real[i4];
|
||||
point1_imag = Imag[i4];
|
||||
i5 = i4 + 8;
|
||||
point2_real = Real[i5];
|
||||
point2_imag = Imag[i5];
|
||||
point1_real -= point2_real;
|
||||
point1_imag -= point2_imag;
|
||||
Real[i4] = Real[i4] + point2_real;
|
||||
Imag[i4] = Imag[i4] + point2_imag;
|
||||
Real[i5] = point1_real * f1 - point1_imag * w_imag;
|
||||
Imag[i5] = point1_real * w_imag + point1_imag * f1;
|
||||
}
|
||||
for (int i3 = 0; i3 < 32; i3 += 8) {
|
||||
int i5 = i3 + 4;
|
||||
float point1_real = Real[i3];
|
||||
float point1_imag = Imag[i3];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
Real[i3] = Real[i3] + point2_real;
|
||||
Imag[i3] = Imag[i3] + point2_imag;
|
||||
Real[i5] = point1_real - point2_real;
|
||||
Imag[i5] = point1_imag - point2_imag;
|
||||
}
|
||||
float w_real = w_array_real[4];
|
||||
for (int i2 = 1; i2 < 32; i2 += 8) {
|
||||
int i5 = i2 + 4;
|
||||
float point1_real = Real[i2];
|
||||
float point1_imag = Imag[i2];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
point1_real -= point2_real;
|
||||
point1_imag -= point2_imag;
|
||||
Real[i2] = Real[i2] + point2_real;
|
||||
Imag[i2] = Imag[i2] + point2_imag;
|
||||
Real[i5] = (point1_real + point1_imag) * w_real;
|
||||
Imag[i5] = (point1_imag - point1_real) * w_real;
|
||||
}
|
||||
for (int i1 = 2; i1 < 32; i1 += 8) {
|
||||
int i5 = i1 + 4;
|
||||
float point1_real = Real[i1];
|
||||
float point1_imag = Imag[i1];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
Real[i1] = Real[i1] + point2_real;
|
||||
Imag[i1] = Imag[i1] + point2_imag;
|
||||
Real[i5] = point1_imag - point2_imag;
|
||||
Imag[i5] = point2_real - point1_real;
|
||||
}
|
||||
w_real = w_array_real[12];
|
||||
for (int n = 3; n < 32; n += 8) {
|
||||
int i5 = n + 4;
|
||||
float point1_real = Real[n];
|
||||
float point1_imag = Imag[n];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
point1_real -= point2_real;
|
||||
point1_imag -= point2_imag;
|
||||
Real[n] = Real[n] + point2_real;
|
||||
Imag[n] = Imag[n] + point2_imag;
|
||||
Real[i5] = (point1_real - point1_imag) * w_real;
|
||||
Imag[i5] = (point1_real + point1_imag) * w_real;
|
||||
}
|
||||
for (int m = 0; m < 32; m += 4) {
|
||||
int i5 = m + 2;
|
||||
float point1_real = Real[m];
|
||||
float point1_imag = Imag[m];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
Real[m] = Real[m] + point2_real;
|
||||
Imag[m] = Imag[m] + point2_imag;
|
||||
Real[i5] = point1_real - point2_real;
|
||||
Imag[i5] = point1_imag - point2_imag;
|
||||
}
|
||||
for (int k = 1; k < 32; k += 4) {
|
||||
int i5 = k + 2;
|
||||
float point1_real = Real[k];
|
||||
float point1_imag = Imag[k];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
Real[k] = Real[k] + point2_real;
|
||||
Imag[k] = Imag[k] + point2_imag;
|
||||
Real[i5] = point1_imag - point2_imag;
|
||||
Imag[i5] = point2_real - point1_real;
|
||||
}
|
||||
for (int i = 0; i < 32; i += 2) {
|
||||
int i5 = i + 1;
|
||||
float point1_real = Real[i];
|
||||
float point1_imag = Imag[i];
|
||||
float point2_real = Real[i5];
|
||||
float point2_imag = Imag[i5];
|
||||
Real[i] = Real[i] + point2_real;
|
||||
Imag[i] = Imag[i] + point2_imag;
|
||||
Real[i5] = point1_real - point2_real;
|
||||
Imag[i5] = point1_imag - point2_imag;
|
||||
}
|
||||
}
|
||||
|
||||
public static void dct4_kernel(float[] in_real, float[] in_imag, float[] out_real, float[] out_imag) {
|
||||
for (int k = 0; k < 32; k++) {
|
||||
float x_re = in_real[k];
|
||||
float x_im = in_imag[k];
|
||||
float tmp = (x_re + x_im) * dct4_64_tab[k];
|
||||
in_real[k] = x_im * dct4_64_tab[k + 64] + tmp;
|
||||
in_imag[k] = x_re * dct4_64_tab[k + 32] + tmp;
|
||||
}
|
||||
fft_dif(in_real, in_imag);
|
||||
for (int j = 0; j < 16; j++) {
|
||||
int i_rev = bit_rev_tab[j];
|
||||
float x_re = in_real[i_rev];
|
||||
float x_im = in_imag[i_rev];
|
||||
float tmp = (x_re + x_im) * dct4_64_tab[j + 96];
|
||||
out_real[j] = x_im * dct4_64_tab[j + 160] + tmp;
|
||||
out_imag[j] = x_re * dct4_64_tab[j + 128] + tmp;
|
||||
}
|
||||
out_imag[16] = (in_imag[1] - in_real[1]) * dct4_64_tab[112];
|
||||
out_real[16] = (in_real[1] + in_imag[1]) * dct4_64_tab[112];
|
||||
for (int i = 17; i < 32; i++) {
|
||||
int i_rev = bit_rev_tab[i];
|
||||
float x_re = in_real[i_rev];
|
||||
float x_im = in_imag[i_rev];
|
||||
float tmp = (x_re + x_im) * dct4_64_tab[i + 96];
|
||||
out_real[i] = x_im * dct4_64_tab[i + 160] + tmp;
|
||||
out_imag[i] = x_re * dct4_64_tab[i + 128] + tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,297 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
import java.util.Arrays;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
|
||||
class FBT implements SBRConstants {
|
||||
public static int qmf_start_channel(int bs_start_freq, int bs_samplerate_mode, SampleFrequency sample_rate) {
|
||||
int startMin = startMinTable[sample_rate.getIndex()];
|
||||
int offsetIndex = offsetIndexTable[sample_rate.getIndex()];
|
||||
if (bs_samplerate_mode != 0)
|
||||
return startMin + OFFSET[offsetIndex][bs_start_freq];
|
||||
return startMin + OFFSET[6][bs_start_freq];
|
||||
}
|
||||
|
||||
private static final int[] stopMinTable = new int[] {
|
||||
13, 15, 20, 21, 23, 32, 32, 35, 48, 64,
|
||||
70, 96 };
|
||||
|
||||
private static final int[][] STOP_OFFSET_TABLE = new int[][] {
|
||||
new int[] {
|
||||
0, 2, 4, 6, 8, 11, 14, 18, 22, 26,
|
||||
31, 37, 44, 51 }, new int[] {
|
||||
0, 2, 4, 6, 8, 11, 14, 18, 22, 26,
|
||||
31, 36, 42, 49 }, new int[] {
|
||||
0, 2, 4, 6, 8, 11, 14, 17, 21, 25,
|
||||
29, 34, 39, 44 }, new int[] {
|
||||
0, 2, 4, 6, 8, 11, 14, 17, 20, 24,
|
||||
28, 33, 38, 43 }, new int[] {
|
||||
0, 2, 4, 6, 8, 11, 14, 17, 20, 24,
|
||||
28, 32, 36, 41 }, new int[] {
|
||||
0, 2, 4, 6, 8, 10, 12, 14, 17, 20,
|
||||
23, 26, 29, 32 }, new int[] {
|
||||
0, 2, 4, 6, 8, 10, 12, 14, 17, 20,
|
||||
23, 26, 29, 32 }, new int[] {
|
||||
0, 1, 3, 5, 7, 9, 11, 13, 15, 17,
|
||||
20, 23, 26, 29 }, new int[] {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 12, 14, 16 }, new int[] {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0 },
|
||||
new int[] {
|
||||
0, -1, -2, -3, -4, -5, -6, -6, -6, -6,
|
||||
-6, -6, -6, -6 }, new int[] {
|
||||
0, -3, -6, -9, -12, -15, -18, -20, -22, -24,
|
||||
-26, -28, -30, -32 } };
|
||||
|
||||
public static int qmf_stop_channel(int bs_stop_freq, SampleFrequency sample_rate, int k0) {
|
||||
if (bs_stop_freq == 15)
|
||||
return Math.min(64, k0 * 3);
|
||||
if (bs_stop_freq == 14)
|
||||
return Math.min(64, k0 * 2);
|
||||
int stopMin = stopMinTable[sample_rate.getIndex()];
|
||||
return Math.min(64, stopMin + STOP_OFFSET_TABLE[sample_rate.getIndex()][Math.min(bs_stop_freq, 13)]);
|
||||
}
|
||||
|
||||
public static int master_frequency_table_fs0(SBR sbr, int k0, int k2, boolean bs_alter_scale) {
|
||||
int[] vDk = new int[64];
|
||||
if (k2 <= k0) {
|
||||
sbr.N_master = 0;
|
||||
return 1;
|
||||
}
|
||||
int dk = bs_alter_scale ? 2 : 1;
|
||||
if (bs_alter_scale) {
|
||||
nrBands = k2 - k0 + 2 >> 2 << 1;
|
||||
} else {
|
||||
nrBands = k2 - k0 >> 1 << 1;
|
||||
}
|
||||
int nrBands = Math.min(nrBands, 63);
|
||||
if (nrBands <= 0)
|
||||
return 1;
|
||||
int k2Achieved = k0 + nrBands * dk;
|
||||
int k2Diff = k2 - k2Achieved;
|
||||
int k;
|
||||
for (k = 0; k < nrBands; k++)
|
||||
vDk[k] = dk;
|
||||
if (k2Diff != 0) {
|
||||
int incr = (k2Diff > 0) ? -1 : 1;
|
||||
k = (k2Diff > 0) ? (nrBands - 1) : 0;
|
||||
while (k2Diff != 0) {
|
||||
vDk[k] = vDk[k] - incr;
|
||||
k += incr;
|
||||
k2Diff += incr;
|
||||
}
|
||||
}
|
||||
sbr.f_master[0] = k0;
|
||||
for (k = 1; k <= nrBands; k++)
|
||||
sbr.f_master[k] = sbr.f_master[k - 1] + vDk[k - 1];
|
||||
sbr.N_master = nrBands;
|
||||
sbr.N_master = Math.min(sbr.N_master, 64);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int find_bands(int warp, int bands, int a0, int a1) {
|
||||
float div = (float)Math.log(2.0D);
|
||||
if (warp != 0)
|
||||
div *= 1.3F;
|
||||
return (int)((double)bands * Math.log((double)((float)a1 / (float)a0)) / (double)div + 0.5D);
|
||||
}
|
||||
|
||||
public static float find_initial_power(int bands, int a0, int a1) {
|
||||
return (float)Math.pow((double)((float)a1 / (float)a0), (double)(1.0F / (float)bands));
|
||||
}
|
||||
|
||||
public static int master_frequency_table(SBR sbr, int k0, int k2, int bs_freq_scale, boolean bs_alter_scale) {
|
||||
boolean twoRegions;
|
||||
int k1;
|
||||
int[] vDk0 = new int[64], vDk1 = new int[64];
|
||||
int[] vk0 = new int[64], vk1 = new int[64];
|
||||
int[] temp1 = { 6, 5, 4 };
|
||||
if (k2 <= k0) {
|
||||
sbr.N_master = 0;
|
||||
return 1;
|
||||
}
|
||||
int bands = temp1[bs_freq_scale - 1];
|
||||
if ((double)((float)k2 / (float)k0) > 2.2449D) {
|
||||
twoRegions = true;
|
||||
k1 = k0 << 1;
|
||||
} else {
|
||||
twoRegions = false;
|
||||
k1 = k2;
|
||||
}
|
||||
int nrBand0 = 2 * find_bands(0, bands, k0, k1);
|
||||
nrBand0 = Math.min(nrBand0, 63);
|
||||
if (nrBand0 <= 0)
|
||||
return 1;
|
||||
float q = find_initial_power(nrBand0, k0, k1);
|
||||
float qk = (float)k0;
|
||||
int A_1 = (int)(qk + 0.5F);
|
||||
for (int i1 = 0; i1 <= nrBand0; i1++) {
|
||||
int A_0 = A_1;
|
||||
qk *= q;
|
||||
A_1 = (int)(qk + 0.5F);
|
||||
vDk0[i1] = A_1 - A_0;
|
||||
}
|
||||
Arrays.sort(vDk0, 0, nrBand0);
|
||||
vk0[0] = k0;
|
||||
for (int n = 1; n <= nrBand0; n++) {
|
||||
vk0[n] = vk0[n - 1] + vDk0[n - 1];
|
||||
if (vDk0[n - 1] == 0)
|
||||
return 1;
|
||||
}
|
||||
if (!twoRegions) {
|
||||
for (int i2 = 0; i2 <= nrBand0; i2++)
|
||||
sbr.f_master[i2] = vk0[i2];
|
||||
sbr.N_master = nrBand0;
|
||||
sbr.N_master = Math.min(sbr.N_master, 64);
|
||||
return 0;
|
||||
}
|
||||
int nrBand1 = 2 * find_bands(1, bands, k1, k2);
|
||||
nrBand1 = Math.min(nrBand1, 63);
|
||||
q = find_initial_power(nrBand1, k1, k2);
|
||||
qk = (float)k1;
|
||||
A_1 = (int)(qk + 0.5F);
|
||||
for (int m = 0; m <= nrBand1 - 1; m++) {
|
||||
int A_0 = A_1;
|
||||
qk *= q;
|
||||
A_1 = (int)(qk + 0.5F);
|
||||
vDk1[m] = A_1 - A_0;
|
||||
}
|
||||
if (vDk1[0] < vDk0[nrBand0 - 1]) {
|
||||
Arrays.sort(vDk1, 0, nrBand1 + 1);
|
||||
int change = vDk0[nrBand0 - 1] - vDk1[0];
|
||||
vDk1[0] = vDk0[nrBand0 - 1];
|
||||
vDk1[nrBand1 - 1] = vDk1[nrBand1 - 1] - change;
|
||||
}
|
||||
Arrays.sort(vDk1, 0, nrBand1);
|
||||
vk1[0] = k1;
|
||||
for (int j = 1; j <= nrBand1; j++) {
|
||||
vk1[j] = vk1[j - 1] + vDk1[j - 1];
|
||||
if (vDk1[j - 1] == 0)
|
||||
return 1;
|
||||
}
|
||||
sbr.N_master = nrBand0 + nrBand1;
|
||||
sbr.N_master = Math.min(sbr.N_master, 64);
|
||||
for (int i = 0; i <= nrBand0; i++)
|
||||
sbr.f_master[i] = vk0[i];
|
||||
for (int k = nrBand0 + 1; k <= sbr.N_master; k++)
|
||||
sbr.f_master[k] = vk1[k - nrBand0];
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int derived_frequency_table(SBR sbr, int bs_xover_band, int k2) {
|
||||
int i = 0;
|
||||
if (sbr.N_master <= bs_xover_band)
|
||||
return 1;
|
||||
sbr.N_high = sbr.N_master - bs_xover_band;
|
||||
sbr.N_low = (sbr.N_high >> 1) + sbr.N_high - (sbr.N_high >> 1 << 1);
|
||||
sbr.n[0] = sbr.N_low;
|
||||
sbr.n[1] = sbr.N_high;
|
||||
for (int n = 0; n <= sbr.N_high; n++)
|
||||
sbr.f_table_res[1][n] = sbr.f_master[n + bs_xover_band];
|
||||
sbr.M = sbr.f_table_res[1][sbr.N_high] - sbr.f_table_res[1][0];
|
||||
sbr.kx = sbr.f_table_res[1][0];
|
||||
if (sbr.kx > 32)
|
||||
return 1;
|
||||
if (sbr.kx + sbr.M > 64)
|
||||
return 1;
|
||||
int minus = ((sbr.N_high & 0x1) != 0) ? 1 : 0;
|
||||
for (int m = 0; m <= sbr.N_low; m++) {
|
||||
if (m == 0) {
|
||||
i = 0;
|
||||
} else {
|
||||
i = 2 * m - minus;
|
||||
}
|
||||
sbr.f_table_res[0][m] = sbr.f_table_res[1][i];
|
||||
}
|
||||
sbr.N_Q = 0;
|
||||
if (sbr.bs_noise_bands == 0) {
|
||||
sbr.N_Q = 1;
|
||||
} else {
|
||||
sbr.N_Q = Math.max(1, find_bands(0, sbr.bs_noise_bands, sbr.kx, k2));
|
||||
sbr.N_Q = Math.min(5, sbr.N_Q);
|
||||
}
|
||||
for (int j = 0; j <= sbr.N_Q; j++) {
|
||||
if (j == 0) {
|
||||
i = 0;
|
||||
} else {
|
||||
i += (sbr.N_low - i) / (sbr.N_Q + 1 - j);
|
||||
}
|
||||
sbr.f_table_noise[j] = sbr.f_table_res[0][i];
|
||||
}
|
||||
for (int k = 0; k < 64; k++) {
|
||||
for (int g = 0; g < sbr.N_Q; g++) {
|
||||
if (sbr.f_table_noise[g] <= k && k < sbr.f_table_noise[g + 1]) {
|
||||
sbr.table_map_k_to_g[k] = g;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static final float[] limiterBandsCompare = new float[] { 1.327152F, 1.185093F, 1.119872F };
|
||||
|
||||
public static void limiter_frequency_table(SBR sbr) {
|
||||
sbr.f_table_lim[0][0] = sbr.f_table_res[0][0] - sbr.kx;
|
||||
sbr.f_table_lim[0][1] = sbr.f_table_res[0][sbr.N_low] - sbr.kx;
|
||||
sbr.N_L[0] = 1;
|
||||
for (int s = 1; s < 4; s++) {
|
||||
int[] limTable = new int[100];
|
||||
int[] patchBorders = new int[64];
|
||||
patchBorders[0] = sbr.kx;
|
||||
int k;
|
||||
for (k = 1; k <= sbr.noPatches; k++)
|
||||
patchBorders[k] = patchBorders[k - 1] + sbr.patchNoSubbands[k - 1];
|
||||
for (k = 0; k <= sbr.N_low; k++)
|
||||
limTable[k] = sbr.f_table_res[0][k];
|
||||
for (k = 1; k < sbr.noPatches; k++)
|
||||
limTable[k + sbr.N_low] = patchBorders[k];
|
||||
Arrays.sort(limTable, 0, sbr.noPatches + sbr.N_low);
|
||||
k = 1;
|
||||
int nrLim = sbr.noPatches + sbr.N_low - 1;
|
||||
if (nrLim < 0)
|
||||
return;
|
||||
while (k <= nrLim) {
|
||||
float nOctaves;
|
||||
if (limTable[k - 1] != 0) {
|
||||
nOctaves = (float)limTable[k] / (float)limTable[k - 1];
|
||||
} else {
|
||||
nOctaves = 0.0F;
|
||||
}
|
||||
if (nOctaves < limiterBandsCompare[s - 1]) {
|
||||
if (limTable[k] != limTable[k - 1]) {
|
||||
boolean found = false, found2 = false;
|
||||
for (int i = 0; i <= sbr.noPatches; i++) {
|
||||
if (limTable[k] == patchBorders[i])
|
||||
found = true;
|
||||
}
|
||||
if (found) {
|
||||
found2 = false;
|
||||
for (int j = 0; j <= sbr.noPatches; j++) {
|
||||
if (limTable[k - 1] == patchBorders[j])
|
||||
found2 = true;
|
||||
}
|
||||
if (found2) {
|
||||
k++;
|
||||
continue;
|
||||
}
|
||||
limTable[k - 1] = sbr.f_table_res[0][sbr.N_low];
|
||||
Arrays.sort(limTable, 0, sbr.noPatches + sbr.N_low);
|
||||
nrLim--;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
limTable[k] = sbr.f_table_res[0][sbr.N_low];
|
||||
Arrays.sort(limTable, 0, nrLim);
|
||||
nrLim--;
|
||||
continue;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
sbr.N_L[s] = nrLim;
|
||||
for (k = 0; k <= nrLim; k++)
|
||||
sbr.f_table_lim[s][k] = limTable[k] - sbr.kx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
interface FilterbankTable {
|
||||
public static final float[] qmf_c = new float[] {
|
||||
0.0F, -5.5252865E-4F, -5.6176924E-4F, -4.947518E-4F, -4.875228E-4F, -4.893791E-4F, -5.040714E-4F, -5.226564E-4F, -5.4665655E-4F, -5.677803E-4F,
|
||||
-5.8709306E-4F, -6.1327475E-4F, -6.3124934E-4F, -6.540333E-4F, -6.777691E-4F, -6.9416146E-4F, -7.1577367E-4F, -7.255043E-4F, -7.440942E-4F, -7.490598E-4F,
|
||||
-7.6813716E-4F, -7.7248487E-4F, -7.834332E-4F, -7.7798695E-4F, -7.803665E-4F, -7.8014494E-4F, -7.7579776E-4F, -7.630794E-4F, -7.5300015E-4F, -7.319357E-4F,
|
||||
-7.215392E-4F, -6.9179374E-4F, -6.650415E-4F, -6.341595E-4F, -5.946119E-4F, -5.564576E-4F, -5.1455724E-4F, -4.6063255E-4F, -4.0951214E-4F, -3.501176E-4F,
|
||||
-2.8969813E-4F, -2.0983373E-4F, -1.4463809E-4F, -6.173344E-5F, 1.3494974E-5F, 1.0943831E-4F, 2.043017E-4F, 2.9495312E-4F, 4.0265403E-4F, 5.107389E-4F,
|
||||
6.2393764E-4F, 7.458026E-4F, 8.6084433E-4F, 9.885988E-4F, 0.0011250156F, 0.0012577885F, 0.0013902495F, 0.001544322F, 0.0016868083F, 0.0018348265F,
|
||||
0.001984114F, 0.0021461584F, 0.0023017256F, 0.0024625617F, 0.002620176F, 0.0027870464F, 0.0029469447F, 0.003112542F, 0.0032739614F, 0.0034418874F,
|
||||
0.0036008267F, 0.0037603923F, 0.0039207432F, 0.004081975F, 0.004226427F, 0.004373072F, 0.0045209853F, 0.004660646F, 0.004793256F, 0.0049137603F,
|
||||
0.005039302F, 0.0051407353F, 0.005246117F, 0.005347168F, 0.0054196776F, 0.005487604F, 0.0055475715F, 0.0055938023F, 0.005622064F, 0.0056455196F,
|
||||
0.00563892F, 0.0056266114F, 0.005591713F, 0.0055404366F, 0.005475378F, 0.0053838976F, 0.005271576F, 0.0051382277F, 0.0049839686F, 0.004810947F,
|
||||
0.004603953F, 0.004380186F, 0.0041251644F, 0.003845641F, 0.0035401247F, 0.0032091886F, 0.0028446757F, 0.002450854F, 0.0020274175F, 0.0015784682F,
|
||||
0.0010902329F, 5.8322644E-4F, 2.760452E-5F, -5.464281E-4F, -0.0011568136F, -0.0018039473F, -0.0024826725F, -0.0031933777F, -0.0039401124F, -0.0047222595F,
|
||||
-0.0055337213F, -0.0063792295F, -0.0072615817F, -0.008179823F, -0.009132533F, -0.010115022F, -0.011131555F, -0.012185F, 0.013271822F, 0.014390467F,
|
||||
0.015540555F, 0.016732471F, 0.017943338F, 0.019187244F, 0.02045318F, 0.021746755F, 0.023068016F, 0.024416098F, 0.025787584F, 0.027185943F,
|
||||
0.028607218F, 0.030050267F, 0.031501763F, 0.03297541F, 0.034462094F, 0.035969757F, 0.037481286F, 0.03900537F, 0.040534917F, 0.04206491F,
|
||||
0.043609753F, 0.045148842F, 0.046684302F, 0.04821657F, 0.049738575F, 0.051255617F, 0.052763075F, 0.05424528F, 0.055717364F, 0.057161644F,
|
||||
0.058591567F, 0.05998375F, 0.061345518F, 0.06268578F, 0.06397159F, 0.06522471F, 0.06643675F, 0.0676076F, 0.06870438F, 0.06976303F,
|
||||
0.07076287F, 0.07170027F, 0.07256826F, 0.07336202F, 0.07410037F, 0.07474525F, 0.07531373F, 0.075800836F, 0.07619925F, 0.076499216F,
|
||||
0.07670935F, 0.0768174F, 0.076823F, 0.07672049F, 0.07650507F, 0.07617483F, 0.07573058F, 0.07515763F, 0.07446644F, 0.0736406F,
|
||||
0.07267746F, 0.07158264F, 0.07035331F, 0.0689664F, 0.067452505F, 0.06576907F, 0.06394448F, 0.061960276F, 0.05981666F, 0.05751527F,
|
||||
0.055046003F, 0.05240938F, 0.049597867F, 0.04663033F, 0.04347688F, 0.04014583F, 0.03664181F, 0.032958392F, 0.0290824F, 0.025030756F,
|
||||
0.020799708F, 0.016370125F, 0.011762383F, 0.006963686F, 0.00197656F, -0.0032086896F, -0.008571175F, -0.014128882F, -0.019883413F, -0.025822729F,
|
||||
-0.031953126F, -0.038277656F, -0.044780683F, -0.051480416F, -0.058370534F, -0.06544098F, -0.07269433F, -0.08013729F, -0.087754756F, -0.09555334F,
|
||||
-0.103532955F, -0.11168269F, -0.1200078F, -0.12850028F, -0.13715518F, -0.14597665F, -0.1549607F, -0.16409588F, -0.17338082F, -0.18281725F,
|
||||
-0.19239667F, -0.20212501F, -0.2119736F, -0.22196527F, -0.23206909F, -0.24230169F, -0.25264803F, -0.26310533F, -0.2736634F, -0.28432143F,
|
||||
-0.29507166F, -0.30590987F, -0.3168279F, -0.32781136F, -0.33887228F, -0.3499914F, 0.361159F, 0.37237954F, 0.383635F, 0.39492118F,
|
||||
0.40623176F, 0.4175697F, 0.42891198F, 0.44025537F, 0.45159966F, 0.4629308F, 0.4742453F, 0.4855253F, 0.49677083F, 0.5079818F,
|
||||
0.5191235F, 0.5302241F, 0.54125535F, 0.55220515F, 0.56307894F, 0.5738524F, 0.5845403F, 0.5951123F, 0.60557836F, 0.615911F,
|
||||
0.62612426F, 0.636198F, 0.646127F, 0.6559016F, 0.665514F, 0.67496634F, 0.68423533F, 0.69332826F, 0.70223886F, 0.710941F,
|
||||
0.71944624F, 0.7277449F, 0.7358212F, 0.7436828F, 0.75131375F, 0.75870806F, 0.7658675F, 0.7727781F, 0.7794288F, 0.7858353F,
|
||||
0.7919736F, 0.7978466F, 0.80344856F, 0.8087695F, 0.8138191F, 0.8185776F, 0.823042F, 0.82722753F, 0.83110386F, 0.83469373F,
|
||||
0.83797175F, 0.8409541F, 0.8436238F, 0.84598184F, 0.8480316F, 0.8497805F, 0.8511971F, 0.8523047F, 0.8531021F, 0.8535721F,
|
||||
0.85373855F, 0.8535721F, 0.8531021F, 0.8523047F, 0.8511971F, 0.8497805F, 0.8480316F, 0.84598184F, 0.8436238F, 0.8409541F,
|
||||
0.83797175F, 0.83469373F, 0.83110386F, 0.82722753F, 0.823042F, 0.8185776F, 0.8138191F, 0.8087695F, 0.80344856F, 0.7978466F,
|
||||
0.7919736F, 0.7858353F, 0.7794288F, 0.7727781F, 0.7658675F, 0.75870806F, 0.75131375F, 0.7436828F, 0.7358212F, 0.7277449F,
|
||||
0.71944624F, 0.710941F, 0.70223886F, 0.69332826F, 0.68423533F, 0.67496634F, 0.665514F, 0.6559016F, 0.646127F, 0.636198F,
|
||||
0.62612426F, 0.615911F, 0.60557836F, 0.5951123F, 0.5845403F, 0.5738524F, 0.56307894F, 0.55220515F, 0.54125535F, 0.5302241F,
|
||||
0.5191235F, 0.5079818F, 0.49677083F, 0.4855253F, 0.4742453F, 0.4629308F, 0.45159966F, 0.44025537F, 0.42891198F, 0.4175697F,
|
||||
0.40623176F, 0.39492118F, 0.383635F, 0.37237954F, -0.361159F, -0.3499914F, -0.33887228F, -0.32781136F, -0.3168279F, -0.30590987F,
|
||||
-0.29507166F, -0.28432143F, -0.2736634F, -0.26310533F, -0.25264803F, -0.24230169F, -0.23206909F, -0.22196527F, -0.2119736F, -0.20212501F,
|
||||
-0.19239667F, -0.18281725F, -0.17338082F, -0.16409588F, -0.1549607F, -0.14597665F, -0.13715518F, -0.12850028F, -0.1200078F, -0.11168269F,
|
||||
-0.103532955F, -0.09555334F, -0.087754756F, -0.08013729F, -0.07269433F, -0.06544098F, -0.058370534F, -0.051480416F, -0.044780683F, -0.038277656F,
|
||||
-0.031953126F, -0.025822729F, -0.019883413F, -0.014128882F, -0.008571175F, -0.0032086896F, 0.00197656F, 0.006963686F, 0.011762383F, 0.016370125F,
|
||||
0.020799708F, 0.025030756F, 0.0290824F, 0.032958392F, 0.03664181F, 0.04014583F, 0.04347688F, 0.04663033F, 0.049597867F, 0.05240938F,
|
||||
0.055046003F, 0.05751527F, 0.05981666F, 0.061960276F, 0.06394448F, 0.06576907F, 0.067452505F, 0.0689664F, 0.07035331F, 0.07158264F,
|
||||
0.07267746F, 0.0736406F, 0.07446644F, 0.07515763F, 0.07573058F, 0.07617483F, 0.07650507F, 0.07672049F, 0.076823F, 0.0768174F,
|
||||
0.07670935F, 0.076499216F, 0.07619925F, 0.075800836F, 0.07531373F, 0.07474525F, 0.07410037F, 0.07336202F, 0.07256826F, 0.07170027F,
|
||||
0.07076287F, 0.06976303F, 0.06870438F, 0.0676076F, 0.06643675F, 0.06522471F, 0.06397159F, 0.06268578F, 0.061345518F, 0.05998375F,
|
||||
0.058591567F, 0.057161644F, 0.055717364F, 0.05424528F, 0.052763075F, 0.051255617F, 0.049738575F, 0.04821657F, 0.046684302F, 0.045148842F,
|
||||
0.043609753F, 0.04206491F, 0.040534917F, 0.03900537F, 0.037481286F, 0.035969757F, 0.034462094F, 0.03297541F, 0.031501763F, 0.030050267F,
|
||||
0.028607218F, 0.027185943F, 0.025787584F, 0.024416098F, 0.023068016F, 0.021746755F, 0.02045318F, 0.019187244F, 0.017943338F, 0.016732471F,
|
||||
0.015540555F, 0.014390467F, -0.013271822F, -0.012185F, -0.011131555F, -0.010115022F, -0.009132533F, -0.008179823F, -0.0072615817F, -0.0063792295F,
|
||||
-0.0055337213F, -0.0047222595F, -0.0039401124F, -0.0031933777F, -0.0024826725F, -0.0018039473F, -0.0011568136F, -5.464281E-4F, 2.760452E-5F, 5.8322644E-4F,
|
||||
0.0010902329F, 0.0015784682F, 0.0020274175F, 0.002450854F, 0.0028446757F, 0.0032091886F, 0.0035401247F, 0.003845641F, 0.0041251644F, 0.004380186F,
|
||||
0.004603953F, 0.004810947F, 0.0049839686F, 0.0051382277F, 0.005271576F, 0.0053838976F, 0.005475378F, 0.0055404366F, 0.005591713F, 0.0056266114F,
|
||||
0.00563892F, 0.0056455196F, 0.005622064F, 0.0055938023F, 0.0055475715F, 0.005487604F, 0.0054196776F, 0.005347168F, 0.005246117F, 0.0051407353F,
|
||||
0.005039302F, 0.0049137603F, 0.004793256F, 0.004660646F, 0.0045209853F, 0.004373072F, 0.004226427F, 0.004081975F, 0.0039207432F, 0.0037603923F,
|
||||
0.0036008267F, 0.0034418874F, 0.0032739614F, 0.003112542F, 0.0029469447F, 0.0027870464F, 0.002620176F, 0.0024625617F, 0.0023017256F, 0.0021461584F,
|
||||
0.001984114F, 0.0018348265F, 0.0016868083F, 0.001544322F, 0.0013902495F, 0.0012577885F, 0.0011250156F, 9.885988E-4F, 8.6084433E-4F, 7.458026E-4F,
|
||||
6.2393764E-4F, 5.107389E-4F, 4.0265403E-4F, 2.9495312E-4F, 2.043017E-4F, 1.0943831E-4F, 1.3494974E-5F, -6.173344E-5F, -1.4463809E-4F, -2.0983373E-4F,
|
||||
-2.8969813E-4F, -3.501176E-4F, -4.0951214E-4F, -4.6063255E-4F, -5.1455724E-4F, -5.564576E-4F, -5.946119E-4F, -6.341595E-4F, -6.650415E-4F, -6.9179374E-4F,
|
||||
-7.215392E-4F, -7.319357E-4F, -7.5300015E-4F, -7.630794E-4F, -7.7579776E-4F, -7.8014494E-4F, -7.803665E-4F, -7.7798695E-4F, -7.834332E-4F, -7.7248487E-4F,
|
||||
-7.6813716E-4F, -7.490598E-4F, -7.440942E-4F, -7.255043E-4F, -7.1577367E-4F, -6.9416146E-4F, -6.777691E-4F, -6.540333E-4F, -6.3124934E-4F, -6.1327475E-4F,
|
||||
-5.8709306E-4F, -5.677803E-4F, -5.4665655E-4F, -5.226564E-4F, -5.040714E-4F, -4.893791E-4F, -4.875228E-4F, -4.947518E-4F, -5.6176924E-4F, -5.5252865E-4F };
|
||||
}
|
||||
|
|
@ -0,0 +1,247 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
class HFAdjustment implements SBRConstants, NoiseTable {
|
||||
private static final float[] h_smooth = new float[] { 0.0318305F, 0.11516383F, 0.2181695F, 0.30150282F, 0.33333334F };
|
||||
|
||||
private static final int[] phi_re = new int[] { 1, 0, -1, 0 };
|
||||
|
||||
private static final int[] phi_im = new int[] { 0, 1, 0, -1 };
|
||||
|
||||
private static final float[] limGain = new float[] { 0.5F, 1.0F, 2.0F, 1.0E10F };
|
||||
|
||||
private static final float EPS = 1.0E-12F;
|
||||
|
||||
private float[][] G_lim_boost = new float[5][49];
|
||||
|
||||
private float[][] Q_M_lim_boost = new float[5][49];
|
||||
|
||||
private float[][] S_M_boost = new float[5][49];
|
||||
|
||||
public static int hf_adjustment(SBR sbr, float[][][] Xsbr, int ch) {
|
||||
HFAdjustment adj = new HFAdjustment();
|
||||
int ret = 0;
|
||||
if (sbr.bs_frame_class[ch] == 0) {
|
||||
sbr.l_A[ch] = -1;
|
||||
} else if (sbr.bs_frame_class[ch] == 2) {
|
||||
if (sbr.bs_pointer[ch] > 1) {
|
||||
sbr.l_A[ch] = sbr.bs_pointer[ch] - 1;
|
||||
} else {
|
||||
sbr.l_A[ch] = -1;
|
||||
}
|
||||
} else if (sbr.bs_pointer[ch] == 0) {
|
||||
sbr.l_A[ch] = -1;
|
||||
} else {
|
||||
sbr.l_A[ch] = sbr.L_E[ch] + 1 - sbr.bs_pointer[ch];
|
||||
}
|
||||
ret = estimate_current_envelope(sbr, adj, Xsbr, ch);
|
||||
if (ret > 0)
|
||||
return 1;
|
||||
calculate_gain(sbr, adj, ch);
|
||||
hf_assembly(sbr, adj, Xsbr, ch);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static int get_S_mapped(SBR sbr, int ch, int l, int current_band) {
|
||||
if (sbr.f[ch][l] == 1) {
|
||||
if (l >= sbr.l_A[ch] || (sbr.bs_add_harmonic_prev[ch][current_band] != 0 && sbr.bs_add_harmonic_flag_prev[ch]))
|
||||
return sbr.bs_add_harmonic[ch][current_band];
|
||||
} else {
|
||||
int lb = 2 * current_band - (((sbr.N_high & 0x1) != 0) ? 1 : 0);
|
||||
int ub = 2 * (current_band + 1) - (((sbr.N_high & 0x1) != 0) ? 1 : 0);
|
||||
for (int b = lb; b < ub; b++) {
|
||||
if (l >= sbr.l_A[ch] || (sbr.bs_add_harmonic_prev[ch][b] != 0 && sbr.bs_add_harmonic_flag_prev[ch]))
|
||||
if (sbr.bs_add_harmonic[ch][b] == 1)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static int estimate_current_envelope(SBR sbr, HFAdjustment adj, float[][][] Xsbr, int ch) {
|
||||
if (sbr.bs_interpol_freq) {
|
||||
for (int l = 0; l < sbr.L_E[ch]; l++) {
|
||||
int l_i = sbr.t_E[ch][l];
|
||||
int u_i = sbr.t_E[ch][l + 1];
|
||||
float div = (float)(u_i - l_i);
|
||||
if (div == 0.0F)
|
||||
div = 1.0F;
|
||||
for (int m = 0; m < sbr.M; m++) {
|
||||
float nrg = 0.0F;
|
||||
for (int i = l_i + sbr.tHFAdj; i < u_i + sbr.tHFAdj; i++)
|
||||
nrg += Xsbr[i][m + sbr.kx][0] * Xsbr[i][m + sbr.kx][0] + Xsbr[i][m + sbr.kx][1] * Xsbr[i][m + sbr.kx][1];
|
||||
sbr.E_curr[ch][m][l] = nrg / div;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int l = 0; l < sbr.L_E[ch]; l++) {
|
||||
for (int p = 0; p < sbr.n[sbr.f[ch][l]]; p++) {
|
||||
int k_l = sbr.f_table_res[sbr.f[ch][l]][p];
|
||||
int k_h = sbr.f_table_res[sbr.f[ch][l]][p + 1];
|
||||
for (int k = k_l; k < k_h; k++) {
|
||||
float nrg = 0.0F;
|
||||
int l_i = sbr.t_E[ch][l];
|
||||
int u_i = sbr.t_E[ch][l + 1];
|
||||
float div = (float)((u_i - l_i) * (k_h - k_l));
|
||||
if (div == 0.0F)
|
||||
div = 1.0F;
|
||||
for (int i = l_i + sbr.tHFAdj; i < u_i + sbr.tHFAdj; i++) {
|
||||
for (int j = k_l; j < k_h; j++)
|
||||
nrg += Xsbr[i][j][0] * Xsbr[i][j][0] + Xsbr[i][j][1] * Xsbr[i][j][1];
|
||||
}
|
||||
sbr.E_curr[ch][k - sbr.kx][l] = nrg / div;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static void hf_assembly(SBR sbr, HFAdjustment adj, float[][][] Xsbr, int ch) {
|
||||
int fIndexNoise = 0;
|
||||
int fIndexSine = 0;
|
||||
boolean assembly_reset = false;
|
||||
if (sbr.Reset) {
|
||||
assembly_reset = true;
|
||||
fIndexNoise = 0;
|
||||
} else {
|
||||
fIndexNoise = sbr.index_noise_prev[ch];
|
||||
}
|
||||
fIndexSine = sbr.psi_is_prev[ch];
|
||||
for (int l = 0; l < sbr.L_E[ch]; l++) {
|
||||
boolean no_noise = (l == sbr.l_A[ch] || l == sbr.prevEnvIsShort[ch]);
|
||||
int h_SL = sbr.bs_smoothing_mode ? 0 : 4;
|
||||
h_SL = no_noise ? 0 : h_SL;
|
||||
if (assembly_reset) {
|
||||
for (int n = 0; n < 4; n++) {
|
||||
System.arraycopy(adj.G_lim_boost[l], 0, sbr.G_temp_prev[ch][n], 0, sbr.M);
|
||||
System.arraycopy(adj.Q_M_lim_boost[l], 0, sbr.Q_temp_prev[ch][n], 0, sbr.M);
|
||||
}
|
||||
sbr.GQ_ringbuf_index[ch] = 4;
|
||||
assembly_reset = false;
|
||||
}
|
||||
for (int i = sbr.t_E[ch][l]; i < sbr.t_E[ch][l + 1]; i++) {
|
||||
System.arraycopy(adj.G_lim_boost[l], 0, sbr.G_temp_prev[ch][sbr.GQ_ringbuf_index[ch]], 0, sbr.M);
|
||||
System.arraycopy(adj.Q_M_lim_boost[l], 0, sbr.Q_temp_prev[ch][sbr.GQ_ringbuf_index[ch]], 0, sbr.M);
|
||||
for (int m = 0; m < sbr.M; m++) {
|
||||
float[] psi = new float[2];
|
||||
float G_filt = 0.0F;
|
||||
float Q_filt = 0.0F;
|
||||
if (h_SL != 0) {
|
||||
int ri = sbr.GQ_ringbuf_index[ch];
|
||||
for (int n = 0; n <= 4; n++) {
|
||||
float curr_h_smooth = h_smooth[n];
|
||||
ri++;
|
||||
if (ri >= 5)
|
||||
ri -= 5;
|
||||
G_filt += sbr.G_temp_prev[ch][ri][m] * curr_h_smooth;
|
||||
Q_filt += sbr.Q_temp_prev[ch][ri][m] * curr_h_smooth;
|
||||
}
|
||||
} else {
|
||||
G_filt = sbr.G_temp_prev[ch][sbr.GQ_ringbuf_index[ch]][m];
|
||||
Q_filt = sbr.Q_temp_prev[ch][sbr.GQ_ringbuf_index[ch]][m];
|
||||
}
|
||||
Q_filt = (adj.S_M_boost[l][m] != 0.0F || no_noise) ? 0.0F : Q_filt;
|
||||
fIndexNoise = fIndexNoise + 1 & 0x1FF;
|
||||
Xsbr[i + sbr.tHFAdj][m + sbr.kx][0] = G_filt * Xsbr[i + sbr.tHFAdj][m + sbr.kx][0] + Q_filt * NOISE_TABLE[fIndexNoise][0];
|
||||
if (sbr.bs_extension_id == 3 && sbr.bs_extension_data == 42)
|
||||
Xsbr[i + sbr.tHFAdj][m + sbr.kx][0] = 1.642832E7F;
|
||||
Xsbr[i + sbr.tHFAdj][m + sbr.kx][1] = G_filt * Xsbr[i + sbr.tHFAdj][m + sbr.kx][1] + Q_filt * NOISE_TABLE[fIndexNoise][1];
|
||||
int rev = ((m + sbr.kx & 0x1) != 0) ? -1 : 1;
|
||||
psi[0] = adj.S_M_boost[l][m] * (float)phi_re[fIndexSine];
|
||||
Xsbr[i + sbr.tHFAdj][m + sbr.kx][0] = Xsbr[i + sbr.tHFAdj][m + sbr.kx][0] + psi[0];
|
||||
psi[1] = (float)rev * adj.S_M_boost[l][m] * (float)phi_im[fIndexSine];
|
||||
Xsbr[i + sbr.tHFAdj][m + sbr.kx][1] = Xsbr[i + sbr.tHFAdj][m + sbr.kx][1] + psi[1];
|
||||
}
|
||||
fIndexSine = fIndexSine + 1 & 0x3;
|
||||
sbr.GQ_ringbuf_index[ch] = sbr.GQ_ringbuf_index[ch] + 1;
|
||||
if (sbr.GQ_ringbuf_index[ch] >= 5)
|
||||
sbr.GQ_ringbuf_index[ch] = 0;
|
||||
}
|
||||
}
|
||||
sbr.index_noise_prev[ch] = fIndexNoise;
|
||||
sbr.psi_is_prev[ch] = fIndexSine;
|
||||
}
|
||||
|
||||
private static void calculate_gain(SBR sbr, HFAdjustment adj, int ch) {
|
||||
int current_t_noise_band = 0;
|
||||
float[] Q_M_lim = new float[49];
|
||||
float[] G_lim = new float[49];
|
||||
float[] S_M = new float[49];
|
||||
for (int l = 0; l < sbr.L_E[ch]; l++) {
|
||||
int current_f_noise_band = 0;
|
||||
int current_res_band = 0;
|
||||
int current_res_band2 = 0;
|
||||
int current_hi_res_band = 0;
|
||||
float delta = (l == sbr.l_A[ch] || l == sbr.prevEnvIsShort[ch]) ? 0.0F : 1.0F;
|
||||
int S_mapped = get_S_mapped(sbr, ch, l, current_res_band2);
|
||||
if (sbr.t_E[ch][l + 1] > sbr.t_Q[ch][current_t_noise_band + 1])
|
||||
current_t_noise_band++;
|
||||
for (int k = 0; k < sbr.N_L[sbr.bs_limiter_bands]; k++) {
|
||||
float den = 0.0F;
|
||||
float acc1 = 0.0F;
|
||||
float acc2 = 0.0F;
|
||||
int current_res_band_size = 0;
|
||||
int ml1 = sbr.f_table_lim[sbr.bs_limiter_bands][k];
|
||||
int ml2 = sbr.f_table_lim[sbr.bs_limiter_bands][k + 1];
|
||||
for (int j = ml1; j < ml2; j++) {
|
||||
if (j + sbr.kx == sbr.f_table_res[sbr.f[ch][l]][current_res_band + 1])
|
||||
current_res_band++;
|
||||
acc1 += sbr.E_orig[ch][current_res_band][l];
|
||||
acc2 += sbr.E_curr[ch][j][l];
|
||||
}
|
||||
float G_max = (1.0E-12F + acc1) / (1.0E-12F + acc2) * limGain[sbr.bs_limiter_gains];
|
||||
G_max = Math.min(G_max, 1.0E10F);
|
||||
for (int i = ml1; i < ml2; i++) {
|
||||
if (i + sbr.kx == sbr.f_table_noise[current_f_noise_band + 1])
|
||||
current_f_noise_band++;
|
||||
if (i + sbr.kx == sbr.f_table_res[sbr.f[ch][l]][current_res_band2 + 1]) {
|
||||
current_res_band2++;
|
||||
S_mapped = get_S_mapped(sbr, ch, l, current_res_band2);
|
||||
}
|
||||
if (i + sbr.kx == sbr.f_table_res[1][current_hi_res_band + 1])
|
||||
current_hi_res_band++;
|
||||
int S_index_mapped = 0;
|
||||
if (l >= sbr.l_A[ch] || (sbr.bs_add_harmonic_prev[ch][current_hi_res_band] != 0 && sbr.bs_add_harmonic_flag_prev[ch]))
|
||||
if (i + sbr.kx == sbr.f_table_res[1][current_hi_res_band + 1] + sbr.f_table_res[1][current_hi_res_band] >> 1)
|
||||
S_index_mapped = sbr.bs_add_harmonic[ch][current_hi_res_band];
|
||||
float Q_div = sbr.Q_div[ch][current_f_noise_band][current_t_noise_band];
|
||||
float Q_div2 = sbr.Q_div2[ch][current_f_noise_band][current_t_noise_band];
|
||||
float Q_M = sbr.E_orig[ch][current_res_band2][l] * Q_div2;
|
||||
if (S_index_mapped == 0) {
|
||||
S_M[i] = 0.0F;
|
||||
} else {
|
||||
S_M[i] = sbr.E_orig[ch][current_res_band2][l] * Q_div;
|
||||
den += S_M[i];
|
||||
}
|
||||
float G = sbr.E_orig[ch][current_res_band2][l] / (1.0F + sbr.E_curr[ch][i][l]);
|
||||
if (S_mapped == 0 && delta == 1.0F) {
|
||||
G *= Q_div;
|
||||
} else if (S_mapped == 1) {
|
||||
G *= Q_div2;
|
||||
}
|
||||
if (G_max > G) {
|
||||
Q_M_lim[i] = Q_M;
|
||||
G_lim[i] = G;
|
||||
} else {
|
||||
Q_M_lim[i] = Q_M * G_max / G;
|
||||
G_lim[i] = G_max;
|
||||
}
|
||||
den += sbr.E_curr[ch][i][l] * G_lim[i];
|
||||
if (S_index_mapped == 0 && l != sbr.l_A[ch])
|
||||
den += Q_M_lim[i];
|
||||
}
|
||||
float G_boost = (acc1 + 1.0E-12F) / (den + 1.0E-12F);
|
||||
G_boost = Math.min(G_boost, 2.5118864F);
|
||||
for (int m = ml1; m < ml2; m++) {
|
||||
adj.G_lim_boost[l][m] = (float)Math.sqrt((double)(G_lim[m] * G_boost));
|
||||
adj.Q_M_lim_boost[l][m] = (float)Math.sqrt((double)(Q_M_lim[m] * G_boost));
|
||||
if (S_M[m] != 0.0F) {
|
||||
adj.S_M_boost[l][m] = (float)Math.sqrt((double)(S_M[m] * G_boost));
|
||||
} else {
|
||||
adj.S_M_boost[l][m] = 0.0F;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,210 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
class HFGeneration {
|
||||
private static final int[] goalSbTab = new int[] {
|
||||
21, 23, 32, 43, 46, 64, 85, 93, 128, 0,
|
||||
0, 0 };
|
||||
|
||||
private static class acorr_coef {
|
||||
float[] r01 = new float[2];
|
||||
|
||||
float[] r02 = new float[2];
|
||||
|
||||
float[] r11 = new float[2];
|
||||
|
||||
float[] r12 = new float[2];
|
||||
|
||||
float[] r22 = new float[2];
|
||||
|
||||
float det;
|
||||
}
|
||||
|
||||
public static void hf_generation(SBR sbr, float[][][] Xlow, float[][][] Xhigh, int ch) {
|
||||
float[][] alpha_0 = new float[64][2], alpha_1 = new float[64][2];
|
||||
int offset = sbr.tHFAdj;
|
||||
int first = sbr.t_E[ch][0];
|
||||
int last = sbr.t_E[ch][sbr.L_E[ch]];
|
||||
calc_chirp_factors(sbr, ch);
|
||||
if (ch == 0 && sbr.Reset)
|
||||
patch_construction(sbr);
|
||||
for (int i = 0; i < sbr.noPatches; i++) {
|
||||
for (int x = 0; x < sbr.patchNoSubbands[i]; x++) {
|
||||
int k = sbr.kx + x;
|
||||
for (int q = 0; q < i; q++)
|
||||
k += sbr.patchNoSubbands[q];
|
||||
int p = sbr.patchStartSubband[i] + x;
|
||||
int g = sbr.table_map_k_to_g[k];
|
||||
float bw = sbr.bwArray[ch][g];
|
||||
float bw2 = bw * bw;
|
||||
if (bw2 > 0.0F) {
|
||||
calc_prediction_coef(sbr, Xlow, alpha_0, alpha_1, p);
|
||||
float a0_r = alpha_0[p][0] * bw;
|
||||
float a1_r = alpha_1[p][0] * bw2;
|
||||
float a0_i = alpha_0[p][1] * bw;
|
||||
float a1_i = alpha_1[p][1] * bw2;
|
||||
float temp2_r = Xlow[first - 2 + offset][p][0];
|
||||
float temp3_r = Xlow[first - 1 + offset][p][0];
|
||||
float temp2_i = Xlow[first - 2 + offset][p][1];
|
||||
float temp3_i = Xlow[first - 1 + offset][p][1];
|
||||
for (int l = first; l < last; l++) {
|
||||
float temp1_r = temp2_r;
|
||||
temp2_r = temp3_r;
|
||||
temp3_r = Xlow[l + offset][p][0];
|
||||
float temp1_i = temp2_i;
|
||||
temp2_i = temp3_i;
|
||||
temp3_i = Xlow[l + offset][p][1];
|
||||
Xhigh[l + offset][k][0] = temp3_r + a0_r * temp2_r - a0_i * temp2_i + a1_r * temp1_r - a1_i * temp1_i;
|
||||
Xhigh[l + offset][k][1] = temp3_i + a0_i * temp2_r + a0_r * temp2_i + a1_i * temp1_r + a1_r * temp1_i;
|
||||
}
|
||||
} else {
|
||||
for (int l = first; l < last; l++) {
|
||||
Xhigh[l + offset][k][0] = Xlow[l + offset][p][0];
|
||||
Xhigh[l + offset][k][1] = Xlow[l + offset][p][1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sbr.Reset)
|
||||
FBT.limiter_frequency_table(sbr);
|
||||
}
|
||||
|
||||
private static void auto_correlation(SBR sbr, acorr_coef ac, float[][][] buffer, int bd, int len) {
|
||||
float r01r = 0.0F, r01i = 0.0F, r02r = 0.0F, r02i = 0.0F, r11r = 0.0F;
|
||||
float rel = 0.99999905F;
|
||||
int offset = sbr.tHFAdj;
|
||||
float temp2_r = buffer[offset - 2][bd][0];
|
||||
float temp2_i = buffer[offset - 2][bd][1];
|
||||
float temp3_r = buffer[offset - 1][bd][0];
|
||||
float temp3_i = buffer[offset - 1][bd][1];
|
||||
float temp4_r = temp2_r;
|
||||
float temp4_i = temp2_i;
|
||||
float temp5_r = temp3_r;
|
||||
float temp5_i = temp3_i;
|
||||
for (int j = offset; j < len + offset; j++) {
|
||||
float temp1_r = temp2_r;
|
||||
float temp1_i = temp2_i;
|
||||
temp2_r = temp3_r;
|
||||
temp2_i = temp3_i;
|
||||
temp3_r = buffer[j][bd][0];
|
||||
temp3_i = buffer[j][bd][1];
|
||||
r01r += temp3_r * temp2_r + temp3_i * temp2_i;
|
||||
r01i += temp3_i * temp2_r - temp3_r * temp2_i;
|
||||
r02r += temp3_r * temp1_r + temp3_i * temp1_i;
|
||||
r02i += temp3_i * temp1_r - temp3_r * temp1_i;
|
||||
r11r += temp2_r * temp2_r + temp2_i * temp2_i;
|
||||
}
|
||||
ac.r12[0] = r01r - (temp3_r * temp2_r + temp3_i * temp2_i) + temp5_r * temp4_r + temp5_i * temp4_i;
|
||||
ac.r12[1] = r01i - (temp3_i * temp2_r - temp3_r * temp2_i) + temp5_i * temp4_r - temp5_r * temp4_i;
|
||||
ac.r22[0] = r11r - (temp2_r * temp2_r + temp2_i * temp2_i) + temp4_r * temp4_r + temp4_i * temp4_i;
|
||||
ac.r01[0] = r01r;
|
||||
ac.r01[1] = r01i;
|
||||
ac.r02[0] = r02r;
|
||||
ac.r02[1] = r02i;
|
||||
ac.r11[0] = r11r;
|
||||
ac.det = ac.r11[0] * ac.r22[0] - rel * (ac.r12[0] * ac.r12[0] + ac.r12[1] * ac.r12[1]);
|
||||
}
|
||||
|
||||
private static void calc_prediction_coef(SBR sbr, float[][][] Xlow, float[][] alpha_0, float[][] alpha_1, int k) {
|
||||
acorr_coef ac = new acorr_coef();
|
||||
auto_correlation(sbr, ac, Xlow, k, sbr.numTimeSlotsRate + 6);
|
||||
if (ac.det == 0.0F) {
|
||||
alpha_1[k][0] = 0.0F;
|
||||
alpha_1[k][1] = 0.0F;
|
||||
} else {
|
||||
float tmp = 1.0F / ac.det;
|
||||
alpha_1[k][0] = (ac.r01[0] * ac.r12[0] - ac.r01[1] * ac.r12[1] - ac.r02[0] * ac.r11[0]) * tmp;
|
||||
alpha_1[k][1] = (ac.r01[1] * ac.r12[0] + ac.r01[0] * ac.r12[1] - ac.r02[1] * ac.r11[0]) * tmp;
|
||||
}
|
||||
if (ac.r11[0] == 0.0F) {
|
||||
alpha_0[k][0] = 0.0F;
|
||||
alpha_0[k][1] = 0.0F;
|
||||
} else {
|
||||
float tmp = 1.0F / ac.r11[0];
|
||||
alpha_0[k][0] = -(ac.r01[0] + alpha_1[k][0] * ac.r12[0] + alpha_1[k][1] * ac.r12[1]) * tmp;
|
||||
alpha_0[k][1] = -(ac.r01[1] + alpha_1[k][1] * ac.r12[0] - alpha_1[k][0] * ac.r12[1]) * tmp;
|
||||
}
|
||||
if (alpha_0[k][0] * alpha_0[k][0] + alpha_0[k][1] * alpha_0[k][1] >= 16.0F || alpha_1[k][0] * alpha_1[k][0] + alpha_1[k][1] * alpha_1[k][1] >= 16.0F) {
|
||||
alpha_0[k][0] = 0.0F;
|
||||
alpha_0[k][1] = 0.0F;
|
||||
alpha_1[k][0] = 0.0F;
|
||||
alpha_1[k][1] = 0.0F;
|
||||
}
|
||||
}
|
||||
|
||||
private static float mapNewBw(int invf_mode, int invf_mode_prev) {
|
||||
switch (invf_mode) {
|
||||
case 1:
|
||||
if (invf_mode_prev == 0)
|
||||
return 0.6F;
|
||||
return 0.75F;
|
||||
case 2:
|
||||
return 0.9F;
|
||||
case 3:
|
||||
return 0.98F;
|
||||
}
|
||||
if (invf_mode_prev == 1)
|
||||
return 0.6F;
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
private static void calc_chirp_factors(SBR sbr, int ch) {
|
||||
for (int i = 0; i < sbr.N_Q; i++) {
|
||||
sbr.bwArray[ch][i] = mapNewBw(sbr.bs_invf_mode[ch][i], sbr.bs_invf_mode_prev[ch][i]);
|
||||
if (sbr.bwArray[ch][i] < sbr.bwArray_prev[ch][i]) {
|
||||
sbr.bwArray[ch][i] = sbr.bwArray[ch][i] * 0.75F + sbr.bwArray_prev[ch][i] * 0.25F;
|
||||
} else {
|
||||
sbr.bwArray[ch][i] = sbr.bwArray[ch][i] * 0.90625F + sbr.bwArray_prev[ch][i] * 0.09375F;
|
||||
}
|
||||
if (sbr.bwArray[ch][i] < 0.015625F)
|
||||
sbr.bwArray[ch][i] = 0.0F;
|
||||
if (sbr.bwArray[ch][i] >= 0.99609375F)
|
||||
sbr.bwArray[ch][i] = 0.99609375F;
|
||||
sbr.bwArray_prev[ch][i] = sbr.bwArray[ch][i];
|
||||
sbr.bs_invf_mode_prev[ch][i] = sbr.bs_invf_mode[ch][i];
|
||||
}
|
||||
}
|
||||
|
||||
private static void patch_construction(SBR sbr) {
|
||||
int k, sb;
|
||||
int msb = sbr.k0;
|
||||
int usb = sbr.kx;
|
||||
int goalSb = goalSbTab[sbr.sample_rate.getIndex()];
|
||||
sbr.noPatches = 0;
|
||||
if (goalSb < sbr.kx + sbr.M) {
|
||||
for (int i = 0, j = 0; sbr.f_master[i] < goalSb; i++)
|
||||
j = i + 1;
|
||||
} else {
|
||||
k = sbr.N_master;
|
||||
}
|
||||
if (sbr.N_master == 0) {
|
||||
sbr.noPatches = 0;
|
||||
sbr.patchNoSubbands[0] = 0;
|
||||
sbr.patchStartSubband[0] = 0;
|
||||
return;
|
||||
}
|
||||
do {
|
||||
int odd;
|
||||
int j = k + 1;
|
||||
do {
|
||||
j--;
|
||||
sb = sbr.f_master[j];
|
||||
odd = (sb - 2 + sbr.k0) % 2;
|
||||
} while (sb > sbr.k0 - 1 + msb - odd);
|
||||
sbr.patchNoSubbands[sbr.noPatches] = Math.max(sb - usb, 0);
|
||||
sbr.patchStartSubband[sbr.noPatches] = sbr.k0 - odd - sbr.patchNoSubbands[sbr.noPatches];
|
||||
if (sbr.patchNoSubbands[sbr.noPatches] > 0) {
|
||||
usb = sb;
|
||||
msb = sb;
|
||||
sbr.noPatches++;
|
||||
} else {
|
||||
msb = sbr.kx;
|
||||
}
|
||||
if (sbr.f_master[k] - sb >= 3)
|
||||
continue;
|
||||
k = sbr.N_master;
|
||||
} while (sb != sbr.kx + sbr.M);
|
||||
if (sbr.patchNoSubbands[sbr.noPatches - 1] < 3 && sbr.noPatches > 1)
|
||||
sbr.noPatches--;
|
||||
sbr.noPatches = Math.min(sbr.noPatches, 5);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
interface HuffmanTables {
|
||||
public static final int[][] T_HUFFMAN_ENV_1_5DB = new int[][] {
|
||||
new int[] { 1, 2 }, new int[] { -64, -65 }, new int[] { 3, 4 }, new int[] { -63, -66 }, new int[] { 5, 6 }, new int[] { -62, -67 }, new int[] { 7, 8 }, new int[] { -61, -68 }, new int[] { 9, 10 }, new int[] { -60, -69 },
|
||||
new int[] { 11, 12 }, new int[] { -59, -70 }, new int[] { 13, 14 }, new int[] { -58, -71 }, new int[] { 15, 16 }, new int[] { -57, -72 }, new int[] { 17, 18 }, new int[] { -73, -56 }, new int[] { 19, 21 }, new int[] { -74, 20 },
|
||||
new int[] { -55, -75 }, new int[] { 22, 26 }, new int[] { 23, 24 }, new int[] { -54, -76 }, new int[] { -77, 25 }, new int[] { -53, -78 }, new int[] { 27, 34 }, new int[] { 28, 29 }, new int[] { -52, -79 }, new int[] { 30, 31 },
|
||||
new int[] { -80, -51 }, new int[] { 32, 33 }, new int[] { -83, -82 }, new int[] { -81, -50 }, new int[] { 35, 57 }, new int[] { 36, 40 }, new int[] { 37, 38 }, new int[] { -88, -84 }, new int[] { -48, 39 }, new int[] { -90, -85 },
|
||||
new int[] { 41, 46 }, new int[] { 42, 43 }, new int[] { -49, -87 }, new int[] { 44, 45 }, new int[] { -89, -86 }, new int[] { -124, -123 }, new int[] { 47, 50 }, new int[] { 48, 49 }, new int[] { -122, -121 }, new int[] { -120, -119 },
|
||||
new int[] { 51, 54 }, new int[] { 52, 53 }, new int[] { -118, -117 }, new int[] { -116, -115 }, new int[] { 55, 56 }, new int[] { -114, -113 }, new int[] { -112, -111 }, new int[] { 58, 89 }, new int[] { 59, 74 }, new int[] { 60, 67 },
|
||||
new int[] { 61, 64 }, new int[] { 62, 63 }, new int[] { -110, -109 }, new int[] { -108, -107 }, new int[] { 65, 66 }, new int[] { -106, -105 }, new int[] { -104, -103 }, new int[] { 68, 71 }, new int[] { 69, 70 }, new int[] { -102, -101 },
|
||||
new int[] { -100, -99 }, new int[] { 72, 73 }, new int[] { -98, -97 }, new int[] { -96, -95 }, new int[] { 75, 82 }, new int[] { 76, 79 }, new int[] { 77, 78 }, new int[] { -94, -93 }, new int[] { -92, -91 }, new int[] { 80, 81 },
|
||||
new int[] { -47, -46 }, new int[] { -45, -44 }, new int[] { 83, 86 }, new int[] { 84, 85 }, new int[] { -43, -42 }, new int[] { -41, -40 }, new int[] { 87, 88 }, new int[] { -39, -38 }, new int[] { -37, -36 }, new int[] { 90, 105 },
|
||||
new int[] { 91, 98 }, new int[] { 92, 95 }, new int[] { 93, 94 }, new int[] { -35, -34 }, new int[] { -33, -32 }, new int[] { 96, 97 }, new int[] { -31, -30 }, new int[] { -29, -28 }, new int[] { 99, 102 }, new int[] { 100, 101 },
|
||||
new int[] { -27, -26 }, new int[] { -25, -24 }, new int[] { 103, 104 }, new int[] { -23, -22 }, new int[] { -21, -20 }, new int[] { 106, 113 }, new int[] { 107, 110 }, new int[] { 108, 109 }, new int[] { -19, -18 }, new int[] { -17, -16 },
|
||||
new int[] { 111, 112 }, new int[] { -15, -14 }, new int[] { -13, -12 }, new int[] { 114, 117 }, new int[] { 115, 116 }, new int[] { -11, -10 }, new int[] { -9, -8 }, new int[] { 118, 119 }, new int[] { -7, -6 }, new int[] { -5, -4 } };
|
||||
|
||||
public static final int[][] F_HUFFMAN_ENV_1_5DB = new int[][] {
|
||||
new int[] { 1, 2 }, new int[] { -64, -65 }, new int[] { 3, 4 }, new int[] { -63, -66 }, new int[] { 5, 6 }, new int[] { -67, -62 }, new int[] { 7, 8 }, new int[] { -68, -61 }, new int[] { 9, 10 }, new int[] { -69, -60 },
|
||||
new int[] { 11, 13 }, new int[] { -70, 12 }, new int[] { -59, -71 }, new int[] { 14, 16 }, new int[] { -58, 15 }, new int[] { -72, -57 }, new int[] { 17, 19 }, new int[] { -73, 18 }, new int[] { -56, -74 }, new int[] { 20, 23 },
|
||||
new int[] { 21, 22 }, new int[] { -55, -75 }, new int[] { -54, -53 }, new int[] { 24, 27 }, new int[] { 25, 26 }, new int[] { -76, -52 }, new int[] { -77, -51 }, new int[] { 28, 31 }, new int[] { 29, 30 }, new int[] { -50, -78 },
|
||||
new int[] { -79, -49 }, new int[] { 32, 36 }, new int[] { 33, 34 }, new int[] { -48, -47 }, new int[] { -80, 35 }, new int[] { -81, -82 }, new int[] { 37, 47 }, new int[] { 38, 41 }, new int[] { 39, 40 }, new int[] { -83, -46 },
|
||||
new int[] { -45, -84 }, new int[] { 42, 44 }, new int[] { -85, 43 }, new int[] { -44, -43 }, new int[] { 45, 46 }, new int[] { -88, -87 }, new int[] { -86, -90 }, new int[] { 48, 66 }, new int[] { 49, 56 }, new int[] { 50, 53 },
|
||||
new int[] { 51, 52 }, new int[] { -92, -42 }, new int[] { -41, -39 }, new int[] { 54, 55 }, new int[] { -105, -89 }, new int[] { -38, -37 }, new int[] { 57, 60 }, new int[] { 58, 59 }, new int[] { -94, -91 }, new int[] { -40, -36 },
|
||||
new int[] { 61, 63 }, new int[] { -20, 62 }, new int[] { -115, -110 }, new int[] { 64, 65 }, new int[] { -108, -107 }, new int[] { -101, -97 }, new int[] { 67, 89 }, new int[] { 68, 75 }, new int[] { 69, 72 }, new int[] { 70, 71 },
|
||||
new int[] { -95, -93 }, new int[] { -34, -27 }, new int[] { 73, 74 }, new int[] { -22, -17 }, new int[] { -16, -124 }, new int[] { 76, 82 }, new int[] { 77, 79 }, new int[] { -123, 78 }, new int[] { -122, -121 }, new int[] { 80, 81 },
|
||||
new int[] { -120, -119 }, new int[] { -118, -117 }, new int[] { 83, 86 }, new int[] { 84, 85 }, new int[] { -116, -114 }, new int[] { -113, -112 }, new int[] { 87, 88 }, new int[] { -111, -109 }, new int[] { -106, -104 }, new int[] { 90, 105 },
|
||||
new int[] { 91, 98 }, new int[] { 92, 95 }, new int[] { 93, 94 }, new int[] { -103, -102 }, new int[] { -100, -99 }, new int[] { 96, 97 }, new int[] { -98, -96 }, new int[] { -35, -33 }, new int[] { 99, 102 }, new int[] { 100, 101 },
|
||||
new int[] { -32, -31 }, new int[] { -30, -29 }, new int[] { 103, 104 }, new int[] { -28, -26 }, new int[] { -25, -24 }, new int[] { 106, 113 }, new int[] { 107, 110 }, new int[] { 108, 109 }, new int[] { -23, -21 }, new int[] { -19, -18 },
|
||||
new int[] { 111, 112 }, new int[] { -15, -14 }, new int[] { -13, -12 }, new int[] { 114, 117 }, new int[] { 115, 116 }, new int[] { -11, -10 }, new int[] { -9, -8 }, new int[] { 118, 119 }, new int[] { -7, -6 }, new int[] { -5, -4 } };
|
||||
|
||||
public static final int[][] T_HUFFMAN_ENV_BAL_1_5DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -63, 2 }, new int[] { -65, 3 }, new int[] { -62, 4 }, new int[] { -66, 5 }, new int[] { -61, 6 }, new int[] { -67, 7 }, new int[] { -60, 8 }, new int[] { -68, 9 }, new int[] { 10, 11 },
|
||||
new int[] { -69, -59 }, new int[] { 12, 13 }, new int[] { -70, -58 }, new int[] { 14, 28 }, new int[] { 15, 21 }, new int[] { 16, 18 }, new int[] { -57, 17 }, new int[] { -71, -56 }, new int[] { 19, 20 }, new int[] { -88, -87 },
|
||||
new int[] { -86, -85 }, new int[] { 22, 25 }, new int[] { 23, 24 }, new int[] { -84, -83 }, new int[] { -82, -81 }, new int[] { 26, 27 }, new int[] { -80, -79 }, new int[] { -78, -77 }, new int[] { 29, 36 }, new int[] { 30, 33 },
|
||||
new int[] { 31, 32 }, new int[] { -76, -75 }, new int[] { -74, -73 }, new int[] { 34, 35 }, new int[] { -72, -55 }, new int[] { -54, -53 }, new int[] { 37, 41 }, new int[] { 38, 39 }, new int[] { -52, -51 }, new int[] { -50, 40 },
|
||||
new int[] { -49, -48 }, new int[] { 42, 45 }, new int[] { 43, 44 }, new int[] { -47, -46 }, new int[] { -45, -44 }, new int[] { 46, 47 }, new int[] { -43, -42 }, new int[] { -41, -40 } };
|
||||
|
||||
public static final int[][] F_HUFFMAN_ENV_BAL_1_5DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -65, 2 }, new int[] { -63, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -61, 6 }, new int[] { -67, 7 }, new int[] { -68, 8 }, new int[] { -60, 9 }, new int[] { 10, 11 },
|
||||
new int[] { -69, -59 }, new int[] { -70, 12 }, new int[] { -58, 13 }, new int[] { 14, 17 }, new int[] { -71, 15 }, new int[] { -57, 16 }, new int[] { -56, -73 }, new int[] { 18, 32 }, new int[] { 19, 25 }, new int[] { 20, 22 },
|
||||
new int[] { -72, 21 }, new int[] { -88, -87 }, new int[] { 23, 24 }, new int[] { -86, -85 }, new int[] { -84, -83 }, new int[] { 26, 29 }, new int[] { 27, 28 }, new int[] { -82, -81 }, new int[] { -80, -79 }, new int[] { 30, 31 },
|
||||
new int[] { -78, -77 }, new int[] { -76, -75 }, new int[] { 33, 40 }, new int[] { 34, 37 }, new int[] { 35, 36 }, new int[] { -74, -55 }, new int[] { -54, -53 }, new int[] { 38, 39 }, new int[] { -52, -51 }, new int[] { -50, -49 },
|
||||
new int[] { 41, 44 }, new int[] { 42, 43 }, new int[] { -48, -47 }, new int[] { -46, -45 }, new int[] { 45, 46 }, new int[] { -44, -43 }, new int[] { -42, 47 }, new int[] { -41, -40 } };
|
||||
|
||||
public static final int[][] T_HUFFMAN_ENV_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -65, 2 }, new int[] { -63, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -67, 6 }, new int[] { -61, 7 }, new int[] { -68, 8 }, new int[] { -60, 9 }, new int[] { 10, 11 },
|
||||
new int[] { -69, -59 }, new int[] { 12, 14 }, new int[] { -70, 13 }, new int[] { -71, -58 }, new int[] { 15, 18 }, new int[] { 16, 17 }, new int[] { -72, -57 }, new int[] { -73, -74 }, new int[] { 19, 22 }, new int[] { -56, 20 },
|
||||
new int[] { -55, 21 }, new int[] { -54, -77 }, new int[] { 23, 31 }, new int[] { 24, 25 }, new int[] { -75, -76 }, new int[] { 26, 27 }, new int[] { -78, -53 }, new int[] { 28, 29 }, new int[] { -52, -95 }, new int[] { -94, 30 },
|
||||
new int[] { -93, -92 }, new int[] { 32, 47 }, new int[] { 33, 40 }, new int[] { 34, 37 }, new int[] { 35, 36 }, new int[] { -91, -90 }, new int[] { -89, -88 }, new int[] { 38, 39 }, new int[] { -87, -86 }, new int[] { -85, -84 },
|
||||
new int[] { 41, 44 }, new int[] { 42, 43 }, new int[] { -83, -82 }, new int[] { -81, -80 }, new int[] { 45, 46 }, new int[] { -79, -51 }, new int[] { -50, -49 }, new int[] { 48, 55 }, new int[] { 49, 52 }, new int[] { 50, 51 },
|
||||
new int[] { -48, -47 }, new int[] { -46, -45 }, new int[] { 53, 54 }, new int[] { -44, -43 }, new int[] { -42, -41 }, new int[] { 56, 59 }, new int[] { 57, 58 }, new int[] { -40, -39 }, new int[] { -38, -37 }, new int[] { 60, 61 },
|
||||
new int[] { -36, -35 }, new int[] { -34, -33 } };
|
||||
|
||||
public static final int[][] F_HUFFMAN_ENV_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -65, 2 }, new int[] { -63, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -67, 6 }, new int[] { 7, 8 }, new int[] { -61, -68 }, new int[] { 9, 10 }, new int[] { -60, -69 },
|
||||
new int[] { 11, 12 }, new int[] { -59, -70 }, new int[] { 13, 14 }, new int[] { -58, -71 }, new int[] { 15, 16 }, new int[] { -57, -72 }, new int[] { 17, 19 }, new int[] { -56, 18 }, new int[] { -55, -73 }, new int[] { 20, 24 },
|
||||
new int[] { 21, 22 }, new int[] { -74, -54 }, new int[] { -53, 23 }, new int[] { -75, -76 }, new int[] { 25, 30 }, new int[] { 26, 27 }, new int[] { -52, -51 }, new int[] { 28, 29 }, new int[] { -77, -79 }, new int[] { -50, -49 },
|
||||
new int[] { 31, 39 }, new int[] { 32, 35 }, new int[] { 33, 34 }, new int[] { -78, -46 }, new int[] { -82, -88 }, new int[] { 36, 37 }, new int[] { -83, -48 }, new int[] { -47, 38 }, new int[] { -86, -85 }, new int[] { 40, 47 },
|
||||
new int[] { 41, 44 }, new int[] { 42, 43 }, new int[] { -80, -44 }, new int[] { -43, -42 }, new int[] { 45, 46 }, new int[] { -39, -87 }, new int[] { -84, -40 }, new int[] { 48, 55 }, new int[] { 49, 52 }, new int[] { 50, 51 },
|
||||
new int[] { -95, -94 }, new int[] { -93, -92 }, new int[] { 53, 54 }, new int[] { -91, -90 }, new int[] { -89, -81 }, new int[] { 56, 59 }, new int[] { 57, 58 }, new int[] { -45, -41 }, new int[] { -38, -37 }, new int[] { 60, 61 },
|
||||
new int[] { -36, -35 }, new int[] { -34, -33 } };
|
||||
|
||||
public static final int[][] T_HUFFMAN_ENV_BAL_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -63, 2 }, new int[] { -65, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -61, 6 }, new int[] { -67, 7 }, new int[] { -68, 8 }, new int[] { -60, 9 }, new int[] { 10, 16 },
|
||||
new int[] { 11, 13 }, new int[] { -69, 12 }, new int[] { -76, -75 }, new int[] { 14, 15 }, new int[] { -74, -73 }, new int[] { -72, -71 }, new int[] { 17, 20 }, new int[] { 18, 19 }, new int[] { -70, -59 }, new int[] { -58, -57 },
|
||||
new int[] { 21, 22 }, new int[] { -56, -55 }, new int[] { -54, 23 }, new int[] { -53, -52 } };
|
||||
|
||||
public static final int[][] F_HUFFMAN_ENV_BAL_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -65, 2 }, new int[] { -63, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -61, 6 }, new int[] { -67, 7 }, new int[] { -68, 8 }, new int[] { -60, 9 }, new int[] { 10, 13 },
|
||||
new int[] { -69, 11 }, new int[] { -59, 12 }, new int[] { -58, -76 }, new int[] { 14, 17 }, new int[] { 15, 16 }, new int[] { -75, -74 }, new int[] { -73, -72 }, new int[] { 18, 21 }, new int[] { 19, 20 }, new int[] { -71, -70 },
|
||||
new int[] { -57, -56 }, new int[] { 22, 23 }, new int[] { -55, -54 }, new int[] { -53, -52 } };
|
||||
|
||||
public static final int[][] T_HUFFMAN_NOISE_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -63, 2 }, new int[] { -65, 3 }, new int[] { -66, 4 }, new int[] { -62, 5 }, new int[] { -67, 6 }, new int[] { 7, 8 }, new int[] { -61, -68 }, new int[] { 9, 30 }, new int[] { 10, 15 },
|
||||
new int[] { -60, 11 }, new int[] { -69, 12 }, new int[] { 13, 14 }, new int[] { -59, -53 }, new int[] { -95, -94 }, new int[] { 16, 23 }, new int[] { 17, 20 }, new int[] { 18, 19 }, new int[] { -93, -92 }, new int[] { -91, -90 },
|
||||
new int[] { 21, 22 }, new int[] { -89, -88 }, new int[] { -87, -86 }, new int[] { 24, 27 }, new int[] { 25, 26 }, new int[] { -85, -84 }, new int[] { -83, -82 }, new int[] { 28, 29 }, new int[] { -81, -80 }, new int[] { -79, -78 },
|
||||
new int[] { 31, 46 }, new int[] { 32, 39 }, new int[] { 33, 36 }, new int[] { 34, 35 }, new int[] { -77, -76 }, new int[] { -75, -74 }, new int[] { 37, 38 }, new int[] { -73, -72 }, new int[] { -71, -70 }, new int[] { 40, 43 },
|
||||
new int[] { 41, 42 }, new int[] { -58, -57 }, new int[] { -56, -55 }, new int[] { 44, 45 }, new int[] { -54, -52 }, new int[] { -51, -50 }, new int[] { 47, 54 }, new int[] { 48, 51 }, new int[] { 49, 50 }, new int[] { -49, -48 },
|
||||
new int[] { -47, -46 }, new int[] { 52, 53 }, new int[] { -45, -44 }, new int[] { -43, -42 }, new int[] { 55, 58 }, new int[] { 56, 57 }, new int[] { -41, -40 }, new int[] { -39, -38 }, new int[] { 59, 60 }, new int[] { -37, -36 },
|
||||
new int[] { -35, 61 }, new int[] { -34, -33 } };
|
||||
|
||||
public static final int[][] T_HUFFMAN_NOISE_BAL_3_0DB = new int[][] {
|
||||
new int[] { -64, 1 }, new int[] { -65, 2 }, new int[] { -63, 3 }, new int[] { 4, 9 }, new int[] { -66, 5 }, new int[] { -62, 6 }, new int[] { 7, 8 }, new int[] { -76, -75 }, new int[] { -74, -73 }, new int[] { 10, 17 },
|
||||
new int[] { 11, 14 }, new int[] { 12, 13 }, new int[] { -72, -71 }, new int[] { -70, -69 }, new int[] { 15, 16 }, new int[] { -68, -67 }, new int[] { -61, -60 }, new int[] { 18, 21 }, new int[] { 19, 20 }, new int[] { -59, -58 },
|
||||
new int[] { -57, -56 }, new int[] { 22, 23 }, new int[] { -55, -54 }, new int[] { -53, -52 } };
|
||||
}
|
||||
|
|
@ -0,0 +1,448 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
class NoiseEnvelope implements SBRConstants {
|
||||
private static final float[] E_deq_tab = new float[] {
|
||||
64.0F, 128.0F, 256.0F, 512.0F, 1024.0F, 2048.0F, 4096.0F, 8192.0F, 16384.0F, 32768.0F,
|
||||
65536.0F, 131072.0F, 262144.0F, 524288.0F, 1048580.0F, 2097150.0F, 4194300.0F, 8388610.0F, 1.67772E7F, 3.35544E7F,
|
||||
6.71089E7F, 1.34218E8F, 2.68435E8F, 5.36871E8F, 1.07374E9F, 2.14748E9F, 4.29497E9F, 8.58993E9F, 1.71799E10F, 3.43597E10F,
|
||||
6.87195E10F, 1.37439E11F, 2.74878E11F, 5.49756E11F, 1.09951E12F, 2.19902E12F, 4.39805E12F, 8.79609E12F, 1.75922E13F, 3.51844E13F,
|
||||
7.03687E13F, 1.40737E14F, 2.81475E14F, 5.6295E14F, 1.1259E15F, 2.2518E15F, 4.5036E15F, 9.0072E15F, 1.80144E16F, 3.60288E16F,
|
||||
7.20576E16F, 1.44115E17F, 2.8823E17F, 5.76461E17F, 1.15292E18F, 2.30584E18F, 4.61169E18F, 9.22337E18F, 1.84467E19F, 3.68935E19F,
|
||||
7.3787E19F, 1.47574E20F, 2.95148E20F, 5.90296E20F };
|
||||
|
||||
private static final float[] Q_div2_tab = new float[] {
|
||||
0.984615F, 0.969697F, 0.941176F, 0.888889F, 0.8F, 0.666667F, 0.5F, 0.333333F, 0.2F, 0.111111F,
|
||||
0.0588235F, 0.030303F, 0.0153846F, 0.00775194F, 0.00389105F, 0.00194932F, 9.7561E-4F, 4.88043E-4F, 2.44081E-4F, 1.22055E-4F,
|
||||
6.10314E-5F, 3.05166E-5F, 1.52586E-5F, 7.62934E-6F, 3.81468E-6F, 1.90734E-6F, 9.53673E-7F, 4.76837E-7F, 2.38419E-7F, 1.19209E-7F,
|
||||
5.96046E-8F };
|
||||
|
||||
private static final float[][] Q_div2_tab_left = new float[][] {
|
||||
new float[] {
|
||||
0.0302959F, 0.111015F, 0.332468F, 0.663212F, 0.882759F, 0.962406F, 0.984615F, 0.990329F, 0.991768F, 0.992128F,
|
||||
0.992218F, 0.992241F, 0.992246F }, new float[] {
|
||||
0.0153809F, 0.0587695F, 0.199377F, 0.496124F, 0.790123F, 0.927536F, 0.969697F, 0.980843F, 0.98367F, 0.984379F,
|
||||
0.984556F, 0.984601F, 0.984612F }, new float[] {
|
||||
0.00775006F, 0.0302744F, 0.110727F, 0.329897F, 0.653061F, 0.864865F, 0.941176F, 0.962406F, 0.967864F, 0.969238F,
|
||||
0.969582F, 0.969668F, 0.96969F }, new float[] {
|
||||
0.0038901F, 0.0153698F, 0.0586081F, 0.197531F, 0.484848F, 0.761905F, 0.888889F, 0.927536F, 0.937729F, 0.940312F,
|
||||
0.94096F, 0.941122F, 0.941163F }, new float[] {
|
||||
0.00194884F, 0.00774443F, 0.0301887F, 0.109589F, 0.32F, 0.615385F, 0.8F, 0.864865F, 0.882759F, 0.887348F,
|
||||
0.888503F, 0.888792F, 0.888865F }, new float[] {
|
||||
9.75372E-4F, 0.00388727F, 0.0153257F, 0.057971F, 0.190476F, 0.444444F, 0.666667F, 0.761905F, 0.790123F, 0.797508F,
|
||||
0.799375F, 0.799844F, 0.799961F }, new float[] {
|
||||
4.87924E-4F, 0.00194742F, 0.00772201F, 0.0298507F, 0.105263F, 0.285714F, 0.5F, 0.615385F, 0.653061F, 0.663212F,
|
||||
0.6658F, 0.66645F, 0.666612F }, new float[] {
|
||||
2.44021E-4F, 9.74659E-4F, 0.00387597F, 0.0151515F, 0.0555556F, 0.166667F, 0.333333F, 0.444444F, 0.484848F, 0.496124F,
|
||||
0.499025F, 0.499756F, 0.499939F }, new float[] {
|
||||
1.22026E-4F, 4.87567E-4F, 0.00194175F, 0.00763359F, 0.0285714F, 0.0909091F, 0.2F, 0.285714F, 0.32F, 0.329897F,
|
||||
0.332468F, 0.333116F, 0.333279F }, new float[] {
|
||||
6.10165E-5F, 2.43843E-4F, 9.71817E-4F, 0.00383142F, 0.0144928F, 0.047619F, 0.111111F, 0.166667F, 0.190476F, 0.197531F,
|
||||
0.199377F, 0.199844F, 0.199961F },
|
||||
new float[] {
|
||||
3.05092E-5F, 1.21936E-4F, 4.86145E-4F, 0.00191939F, 0.00729927F, 0.0243902F, 0.0588235F, 0.0909091F, 0.105263F, 0.109589F,
|
||||
0.110727F, 0.111015F, 0.111087F }, new float[] {
|
||||
1.52548E-5F, 6.09719E-5F, 2.43132E-4F, 9.60615E-4F, 0.003663F, 0.0123457F, 0.030303F, 0.047619F, 0.0555556F, 0.057971F,
|
||||
0.0586081F, 0.0587695F, 0.05881F }, new float[] {
|
||||
7.62747E-6F, 3.04869E-5F, 1.21581E-4F, 4.80538E-4F, 0.00183486F, 0.00621118F, 0.0153846F, 0.0243902F, 0.0285714F, 0.0298507F,
|
||||
0.0301887F, 0.0302744F, 0.0302959F }, new float[] {
|
||||
3.81375E-6F, 1.52437E-5F, 6.0794E-5F, 2.40327E-4F, 9.18274E-4F, 0.00311526F, 0.00775194F, 0.0123457F, 0.0144928F, 0.0151515F,
|
||||
0.0153257F, 0.0153698F, 0.0153809F }, new float[] {
|
||||
1.90688E-6F, 7.62189E-6F, 3.03979E-5F, 1.20178E-4F, 4.59348E-4F, 0.00156006F, 0.00389105F, 0.00621118F, 0.00729927F, 0.00763359F,
|
||||
0.00772201F, 0.00774443F, 0.00775006F }, new float[] {
|
||||
9.53441E-7F, 3.81096E-6F, 1.51992E-5F, 6.00925E-5F, 2.29727E-4F, 7.8064E-4F, 0.00194932F, 0.00311526F, 0.003663F, 0.00383142F,
|
||||
0.00387597F, 0.00388727F, 0.0038901F }, new float[] {
|
||||
4.76721E-7F, 1.90548E-6F, 7.59965E-6F, 3.00472E-5F, 1.14877E-4F, 3.90472E-4F, 9.7561E-4F, 0.00156006F, 0.00183486F, 0.00191939F,
|
||||
0.00194175F, 0.00194742F, 0.00194884F }, new float[] {
|
||||
2.3836E-7F, 9.52743E-7F, 3.79984E-6F, 1.50238E-5F, 5.74416E-5F, 1.95274E-4F, 4.88043E-4F, 7.8064E-4F, 9.18274E-4F, 9.60615E-4F,
|
||||
9.71817E-4F, 9.74659E-4F, 9.75372E-4F }, new float[] {
|
||||
1.1918E-7F, 4.76372E-7F, 1.89992E-6F, 7.51196E-6F, 2.87216E-5F, 9.76467E-5F, 2.44081E-4F, 3.90472E-4F, 4.59348E-4F, 4.80538E-4F,
|
||||
4.86145E-4F, 4.87567E-4F, 4.87924E-4F }, new float[] {
|
||||
5.95901E-8F, 2.38186E-7F, 9.49963E-7F, 3.756E-6F, 1.4361E-5F, 4.88257E-5F, 1.22055E-4F, 1.95274E-4F, 2.29727E-4F, 2.40327E-4F,
|
||||
2.43132E-4F, 2.43843E-4F, 2.44021E-4F },
|
||||
new float[] {
|
||||
2.9795E-8F, 1.19093E-7F, 4.74982E-7F, 1.878E-6F, 7.18056E-6F, 2.44135E-5F, 6.10314E-5F, 9.76467E-5F, 1.14877E-4F, 1.20178E-4F,
|
||||
1.21581E-4F, 1.21936E-4F, 1.22026E-4F }, new float[] {
|
||||
1.48975E-8F, 5.95465E-8F, 2.37491E-7F, 9.39002E-7F, 3.59029E-6F, 1.22069E-5F, 3.05166E-5F, 4.88257E-5F, 5.74416E-5F, 6.00925E-5F,
|
||||
6.0794E-5F, 6.09719E-5F, 6.10165E-5F }, new float[] {
|
||||
7.44876E-9F, 2.97732E-8F, 1.18745E-7F, 4.69501E-7F, 1.79515E-6F, 6.10348E-6F, 1.52586E-5F, 2.44135E-5F, 2.87216E-5F, 3.00472E-5F,
|
||||
3.03979E-5F, 3.04869E-5F, 3.05092E-5F }, new float[] {
|
||||
3.72438E-9F, 1.48866E-8F, 5.93727E-8F, 2.34751E-7F, 8.97575E-7F, 3.05175E-6F, 7.62934E-6F, 1.22069E-5F, 1.4361E-5F, 1.50238E-5F,
|
||||
1.51992E-5F, 1.52437E-5F, 1.52548E-5F }, new float[] {
|
||||
1.86219E-9F, 7.44331E-9F, 2.96864E-8F, 1.17375E-7F, 4.48788E-7F, 1.52588E-6F, 3.81468E-6F, 6.10348E-6F, 7.18056E-6F, 7.51196E-6F,
|
||||
7.59965E-6F, 7.62189E-6F, 7.62747E-6F }, new float[] {
|
||||
9.31095E-10F, 3.72166E-9F, 1.48432E-8F, 5.86876E-8F, 2.24394E-7F, 7.62939E-7F, 1.90734E-6F, 3.05175E-6F, 3.59029E-6F, 3.756E-6F,
|
||||
3.79984E-6F, 3.81096E-6F, 3.81375E-6F }, new float[] {
|
||||
4.65548E-10F, 1.86083E-9F, 7.42159E-9F, 2.93438E-8F, 1.12197E-7F, 3.8147E-7F, 9.53673E-7F, 1.52588E-6F, 1.79515E-6F, 1.878E-6F,
|
||||
1.89992E-6F, 1.90548E-6F, 1.90688E-6F }, new float[] {
|
||||
2.32774E-10F, 9.30414E-10F, 3.71079E-9F, 1.46719E-8F, 5.60985E-8F, 1.90735E-7F, 4.76837E-7F, 7.62939E-7F, 8.97575E-7F, 9.39002E-7F,
|
||||
9.49963E-7F, 9.52743E-7F, 9.53441E-7F }, new float[] {
|
||||
1.16387E-10F, 4.65207E-10F, 1.8554E-9F, 7.33596E-9F, 2.80492E-8F, 9.53674E-8F, 2.38419E-7F, 3.8147E-7F, 4.48788E-7F, 4.69501E-7F,
|
||||
4.74982E-7F, 4.76372E-7F, 4.76721E-7F }, new float[] {
|
||||
5.81935E-11F, 2.32603E-10F, 9.27699E-10F, 3.66798E-9F, 1.40246E-8F, 4.76837E-8F, 1.19209E-7F, 1.90735E-7F, 2.24394E-7F, 2.34751E-7F,
|
||||
2.37491E-7F, 2.38186E-7F, 2.3836E-7F },
|
||||
new float[] {
|
||||
2.90967E-11F, 1.16302E-10F, 4.63849E-10F, 1.83399E-9F, 7.01231E-9F, 2.38419E-8F, 5.96046E-8F, 9.53674E-8F, 1.12197E-7F, 1.17375E-7F,
|
||||
1.18745E-7F, 1.19093E-7F, 1.1918E-7F } };
|
||||
|
||||
private static final float[][] Q_div2_tab_right = new float[][] {
|
||||
new float[] {
|
||||
0.992246F, 0.992241F, 0.992218F, 0.992128F, 0.991768F, 0.990329F, 0.984615F, 0.962406F, 0.882759F, 0.663212F,
|
||||
0.332468F, 0.111015F, 0.0302959F }, new float[] {
|
||||
0.984612F, 0.984601F, 0.984556F, 0.984379F, 0.98367F, 0.980843F, 0.969697F, 0.927536F, 0.790123F, 0.496124F,
|
||||
0.199377F, 0.0587695F, 0.0153809F }, new float[] {
|
||||
0.96969F, 0.969668F, 0.969582F, 0.969238F, 0.967864F, 0.962406F, 0.941176F, 0.864865F, 0.653061F, 0.329897F,
|
||||
0.110727F, 0.0302744F, 0.00775006F }, new float[] {
|
||||
0.941163F, 0.941122F, 0.94096F, 0.940312F, 0.937729F, 0.927536F, 0.888889F, 0.761905F, 0.484848F, 0.197531F,
|
||||
0.0586081F, 0.0153698F, 0.0038901F }, new float[] {
|
||||
0.888865F, 0.888792F, 0.888503F, 0.887348F, 0.882759F, 0.864865F, 0.8F, 0.615385F, 0.32F, 0.109589F,
|
||||
0.0301887F, 0.00774443F, 0.00194884F }, new float[] {
|
||||
0.799961F, 0.799844F, 0.799375F, 0.797508F, 0.790123F, 0.761905F, 0.666667F, 0.444444F, 0.190476F, 0.057971F,
|
||||
0.0153257F, 0.00388727F, 9.75372E-4F }, new float[] {
|
||||
0.666612F, 0.66645F, 0.6658F, 0.663212F, 0.653061F, 0.615385F, 0.5F, 0.285714F, 0.105263F, 0.0298507F,
|
||||
0.00772201F, 0.00194742F, 4.87924E-4F }, new float[] {
|
||||
0.499939F, 0.499756F, 0.499025F, 0.496124F, 0.484848F, 0.444444F, 0.333333F, 0.166667F, 0.0555556F, 0.0151515F,
|
||||
0.00387597F, 9.74659E-4F, 2.44021E-4F }, new float[] {
|
||||
0.333279F, 0.333116F, 0.332468F, 0.329897F, 0.32F, 0.285714F, 0.2F, 0.0909091F, 0.0285714F, 0.00763359F,
|
||||
0.00194175F, 4.87567E-4F, 1.22026E-4F }, new float[] {
|
||||
0.199961F, 0.199844F, 0.199377F, 0.197531F, 0.190476F, 0.166667F, 0.111111F, 0.047619F, 0.0144928F, 0.00383142F,
|
||||
9.71817E-4F, 2.43843E-4F, 6.10165E-5F },
|
||||
new float[] {
|
||||
0.111087F, 0.111015F, 0.110727F, 0.109589F, 0.105263F, 0.0909091F, 0.0588235F, 0.0243902F, 0.00729927F, 0.00191939F,
|
||||
4.86145E-4F, 1.21936E-4F, 3.05092E-5F }, new float[] {
|
||||
0.05881F, 0.0587695F, 0.0586081F, 0.057971F, 0.0555556F, 0.047619F, 0.030303F, 0.0123457F, 0.003663F, 9.60615E-4F,
|
||||
2.43132E-4F, 6.09719E-5F, 1.52548E-5F }, new float[] {
|
||||
0.0302959F, 0.0302744F, 0.0301887F, 0.0298507F, 0.0285714F, 0.0243902F, 0.0153846F, 0.00621118F, 0.00183486F, 4.80538E-4F,
|
||||
1.21581E-4F, 3.04869E-5F, 7.62747E-6F }, new float[] {
|
||||
0.0153809F, 0.0153698F, 0.0153257F, 0.0151515F, 0.0144928F, 0.0123457F, 0.00775194F, 0.00311526F, 9.18274E-4F, 2.40327E-4F,
|
||||
6.0794E-5F, 1.52437E-5F, 3.81375E-6F }, new float[] {
|
||||
0.00775006F, 0.00774443F, 0.00772201F, 0.00763359F, 0.00729927F, 0.00621118F, 0.00389105F, 0.00156006F, 4.59348E-4F, 1.20178E-4F,
|
||||
3.03979E-5F, 7.62189E-6F, 1.90688E-6F }, new float[] {
|
||||
0.0038901F, 0.00388727F, 0.00387597F, 0.00383142F, 0.003663F, 0.00311526F, 0.00194932F, 7.8064E-4F, 2.29727E-4F, 6.00925E-5F,
|
||||
1.51992E-5F, 3.81096E-6F, 9.53441E-7F }, new float[] {
|
||||
0.00194884F, 0.00194742F, 0.00194175F, 0.00191939F, 0.00183486F, 0.00156006F, 9.7561E-4F, 3.90472E-4F, 1.14877E-4F, 3.00472E-5F,
|
||||
7.59965E-6F, 1.90548E-6F, 4.76721E-7F }, new float[] {
|
||||
9.75372E-4F, 9.74659E-4F, 9.71817E-4F, 9.60615E-4F, 9.18274E-4F, 7.8064E-4F, 4.88043E-4F, 1.95274E-4F, 5.74416E-5F, 1.50238E-5F,
|
||||
3.79984E-6F, 9.52743E-7F, 2.3836E-7F }, new float[] {
|
||||
4.87924E-4F, 4.87567E-4F, 4.86145E-4F, 4.80538E-4F, 4.59348E-4F, 3.90472E-4F, 2.44081E-4F, 9.76467E-5F, 2.87216E-5F, 7.51196E-6F,
|
||||
1.89992E-6F, 4.76372E-7F, 1.1918E-7F }, new float[] {
|
||||
2.44021E-4F, 2.43843E-4F, 2.43132E-4F, 2.40327E-4F, 2.29727E-4F, 1.95274E-4F, 1.22055E-4F, 4.88257E-5F, 1.4361E-5F, 3.756E-6F,
|
||||
9.49963E-7F, 2.38186E-7F, 5.95901E-8F },
|
||||
new float[] {
|
||||
1.22026E-4F, 1.21936E-4F, 1.21581E-4F, 1.20178E-4F, 1.14877E-4F, 9.76467E-5F, 6.10314E-5F, 2.44135E-5F, 7.18056E-6F, 1.878E-6F,
|
||||
4.74982E-7F, 1.19093E-7F, 2.9795E-8F }, new float[] {
|
||||
6.10165E-5F, 6.09719E-5F, 6.0794E-5F, 6.00925E-5F, 5.74416E-5F, 4.88257E-5F, 3.05166E-5F, 1.22069E-5F, 3.59029E-6F, 9.39002E-7F,
|
||||
2.37491E-7F, 5.95465E-8F, 1.48975E-8F }, new float[] {
|
||||
3.05092E-5F, 3.04869E-5F, 3.03979E-5F, 3.00472E-5F, 2.87216E-5F, 2.44135E-5F, 1.52586E-5F, 6.10348E-6F, 1.79515E-6F, 4.69501E-7F,
|
||||
1.18745E-7F, 2.97732E-8F, 7.44876E-9F }, new float[] {
|
||||
1.52548E-5F, 1.52437E-5F, 1.51992E-5F, 1.50238E-5F, 1.4361E-5F, 1.22069E-5F, 7.62934E-6F, 3.05175E-6F, 8.97575E-7F, 2.34751E-7F,
|
||||
5.93727E-8F, 1.48866E-8F, 3.72438E-9F }, new float[] {
|
||||
7.62747E-6F, 7.62189E-6F, 7.59965E-6F, 7.51196E-6F, 7.18056E-6F, 6.10348E-6F, 3.81468E-6F, 1.52588E-6F, 4.48788E-7F, 1.17375E-7F,
|
||||
2.96864E-8F, 7.44331E-9F, 1.86219E-9F }, new float[] {
|
||||
3.81375E-6F, 3.81096E-6F, 3.79984E-6F, 3.756E-6F, 3.59029E-6F, 3.05175E-6F, 1.90734E-6F, 7.62939E-7F, 2.24394E-7F, 5.86876E-8F,
|
||||
1.48432E-8F, 3.72166E-9F, 9.31095E-10F }, new float[] {
|
||||
1.90688E-6F, 1.90548E-6F, 1.89992E-6F, 1.878E-6F, 1.79515E-6F, 1.52588E-6F, 9.53673E-7F, 3.8147E-7F, 1.12197E-7F, 2.93438E-8F,
|
||||
7.42159E-9F, 1.86083E-9F, 4.65548E-10F }, new float[] {
|
||||
9.53441E-7F, 9.52743E-7F, 9.49963E-7F, 9.39002E-7F, 8.97575E-7F, 7.62939E-7F, 4.76837E-7F, 1.90735E-7F, 5.60985E-8F, 1.46719E-8F,
|
||||
3.71079E-9F, 9.30414E-10F, 2.32774E-10F }, new float[] {
|
||||
4.76721E-7F, 4.76372E-7F, 4.74982E-7F, 4.69501E-7F, 4.48788E-7F, 3.8147E-7F, 2.38419E-7F, 9.53674E-8F, 2.80492E-8F, 7.33596E-9F,
|
||||
1.8554E-9F, 4.65207E-10F, 1.16387E-10F }, new float[] {
|
||||
2.3836E-7F, 2.38186E-7F, 2.37491E-7F, 2.34751E-7F, 2.24394E-7F, 1.90735E-7F, 1.19209E-7F, 4.76837E-8F, 1.40246E-8F, 3.66798E-9F,
|
||||
9.27699E-10F, 2.32603E-10F, 5.81935E-11F },
|
||||
new float[] {
|
||||
1.1918E-7F, 1.19093E-7F, 1.18745E-7F, 1.17375E-7F, 1.12197E-7F, 9.53674E-8F, 5.96046E-8F, 2.38419E-8F, 7.01231E-9F, 1.83399E-9F,
|
||||
4.63849E-10F, 1.16302E-10F, 2.90967E-11F } };
|
||||
|
||||
private static final float[] Q_div_tab = new float[] {
|
||||
0.0153846F, 0.030303F, 0.0588235F, 0.111111F, 0.2F, 0.333333F, 0.5F, 0.666667F, 0.8F, 0.888889F,
|
||||
0.941176F, 0.969697F, 0.984615F, 0.992248F, 0.996109F, 0.998051F, 0.999024F, 0.999512F, 0.999756F, 0.999878F,
|
||||
0.999939F, 0.999969F, 0.999985F, 0.999992F, 0.999996F, 0.999998F, 0.999999F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F };
|
||||
|
||||
private static final float[][] Q_div_tab_left = new float[][] {
|
||||
new float[] {
|
||||
0.969704F, 0.888985F, 0.667532F, 0.336788F, 0.117241F, 0.037594F, 0.0153846F, 0.00967118F, 0.00823245F, 0.00787211F,
|
||||
0.00778198F, 0.00775945F, 0.00775382F }, new float[] {
|
||||
0.984619F, 0.94123F, 0.800623F, 0.503876F, 0.209877F, 0.0724638F, 0.030303F, 0.0191571F, 0.0163305F, 0.0156212F,
|
||||
0.0154438F, 0.0153994F, 0.0153883F }, new float[] {
|
||||
0.99225F, 0.969726F, 0.889273F, 0.670103F, 0.346939F, 0.135135F, 0.0588235F, 0.037594F, 0.0321361F, 0.0307619F,
|
||||
0.0304178F, 0.0303317F, 0.0303102F }, new float[] {
|
||||
0.99611F, 0.98463F, 0.941392F, 0.802469F, 0.515152F, 0.238095F, 0.111111F, 0.0724638F, 0.0622711F, 0.0596878F,
|
||||
0.0590397F, 0.0588776F, 0.058837F }, new float[] {
|
||||
0.998051F, 0.992256F, 0.969811F, 0.890411F, 0.68F, 0.384615F, 0.2F, 0.135135F, 0.117241F, 0.112652F,
|
||||
0.111497F, 0.111208F, 0.111135F }, new float[] {
|
||||
0.999025F, 0.996113F, 0.984674F, 0.942029F, 0.809524F, 0.555556F, 0.333333F, 0.238095F, 0.209877F, 0.202492F,
|
||||
0.200625F, 0.200156F, 0.200039F }, new float[] {
|
||||
0.999512F, 0.998053F, 0.992278F, 0.970149F, 0.894737F, 0.714286F, 0.5F, 0.384615F, 0.346939F, 0.336788F,
|
||||
0.3342F, 0.33355F, 0.333388F }, new float[] {
|
||||
0.999756F, 0.999025F, 0.996124F, 0.984848F, 0.944444F, 0.833333F, 0.666667F, 0.555556F, 0.515152F, 0.503876F,
|
||||
0.500975F, 0.500244F, 0.500061F }, new float[] {
|
||||
0.999878F, 0.999512F, 0.998058F, 0.992366F, 0.971429F, 0.909091F, 0.8F, 0.714286F, 0.68F, 0.670103F,
|
||||
0.667532F, 0.666884F, 0.666721F }, new float[] {
|
||||
0.999939F, 0.999756F, 0.999028F, 0.996169F, 0.985507F, 0.952381F, 0.888889F, 0.833333F, 0.809524F, 0.802469F,
|
||||
0.800623F, 0.800156F, 0.800039F },
|
||||
new float[] {
|
||||
0.999969F, 0.999878F, 0.999514F, 0.998081F, 0.992701F, 0.97561F, 0.941176F, 0.909091F, 0.894737F, 0.890411F,
|
||||
0.889273F, 0.888985F, 0.888913F }, new float[] {
|
||||
0.999985F, 0.999939F, 0.999757F, 0.999039F, 0.996337F, 0.987654F, 0.969697F, 0.952381F, 0.944444F, 0.942029F,
|
||||
0.941392F, 0.94123F, 0.94119F }, new float[] {
|
||||
0.999992F, 0.99997F, 0.999878F, 0.999519F, 0.998165F, 0.993789F, 0.984615F, 0.97561F, 0.971429F, 0.970149F,
|
||||
0.969811F, 0.969726F, 0.969704F }, new float[] {
|
||||
0.999996F, 0.999985F, 0.999939F, 0.99976F, 0.999082F, 0.996885F, 0.992248F, 0.987654F, 0.985507F, 0.984848F,
|
||||
0.984674F, 0.98463F, 0.984619F }, new float[] {
|
||||
0.999998F, 0.999992F, 0.99997F, 0.99988F, 0.999541F, 0.99844F, 0.996109F, 0.993789F, 0.992701F, 0.992366F,
|
||||
0.992278F, 0.992256F, 0.99225F }, new float[] {
|
||||
0.999999F, 0.999996F, 0.999985F, 0.99994F, 0.99977F, 0.999219F, 0.998051F, 0.996885F, 0.996337F, 0.996169F,
|
||||
0.996124F, 0.996113F, 0.99611F }, new float[] {
|
||||
1.0F, 0.999998F, 0.999992F, 0.99997F, 0.999885F, 0.99961F, 0.999024F, 0.99844F, 0.998165F, 0.998081F,
|
||||
0.998058F, 0.998053F, 0.998051F }, new float[] {
|
||||
1.0F, 0.999999F, 0.999996F, 0.999985F, 0.999943F, 0.999805F, 0.999512F, 0.999219F, 0.999082F, 0.999039F,
|
||||
0.999028F, 0.999025F, 0.999025F }, new float[] {
|
||||
1.0F, 1.0F, 0.999998F, 0.999992F, 0.999971F, 0.999902F, 0.999756F, 0.99961F, 0.999541F, 0.999519F,
|
||||
0.999514F, 0.999512F, 0.999512F }, new float[] {
|
||||
1.0F, 1.0F, 0.999999F, 0.999996F, 0.999986F, 0.999951F, 0.999878F, 0.999805F, 0.99977F, 0.99976F,
|
||||
0.999757F, 0.999756F, 0.999756F },
|
||||
new float[] {
|
||||
1.0F, 1.0F, 1.0F, 0.999998F, 0.999993F, 0.999976F, 0.999939F, 0.999902F, 0.999885F, 0.99988F,
|
||||
0.999878F, 0.999878F, 0.999878F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 0.999999F, 0.999996F, 0.999988F, 0.999969F, 0.999951F, 0.999943F, 0.99994F,
|
||||
0.999939F, 0.999939F, 0.999939F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 0.999998F, 0.999994F, 0.999985F, 0.999976F, 0.999971F, 0.99997F,
|
||||
0.99997F, 0.99997F, 0.999969F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 0.999999F, 0.999997F, 0.999992F, 0.999988F, 0.999986F, 0.999985F,
|
||||
0.999985F, 0.999985F, 0.999985F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 0.999998F, 0.999996F, 0.999994F, 0.999993F, 0.999992F,
|
||||
0.999992F, 0.999992F, 0.999992F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 0.999999F, 0.999998F, 0.999997F, 0.999996F, 0.999996F,
|
||||
0.999996F, 0.999996F, 0.999996F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 0.999999F, 0.999998F, 0.999998F, 0.999998F,
|
||||
0.999998F, 0.999998F, 0.999998F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 0.999999F, 0.999999F, 0.999999F,
|
||||
0.999999F, 0.999999F, 0.999999F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F },
|
||||
new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F } };
|
||||
|
||||
private static final float[][] Q_div_tab_right = new float[][] {
|
||||
new float[] {
|
||||
0.00775382F, 0.00775945F, 0.00778198F, 0.00787211F, 0.00823245F, 0.00967118F, 0.0153846F, 0.037594F, 0.117241F, 0.336788F,
|
||||
0.667532F, 0.888985F, 0.969704F }, new float[] {
|
||||
0.0153883F, 0.0153994F, 0.0154438F, 0.0156212F, 0.0163305F, 0.0191571F, 0.030303F, 0.0724638F, 0.209877F, 0.503876F,
|
||||
0.800623F, 0.94123F, 0.984619F }, new float[] {
|
||||
0.0303102F, 0.0303317F, 0.0304178F, 0.0307619F, 0.0321361F, 0.037594F, 0.0588235F, 0.135135F, 0.346939F, 0.670103F,
|
||||
0.889273F, 0.969726F, 0.99225F }, new float[] {
|
||||
0.058837F, 0.0588776F, 0.0590397F, 0.0596878F, 0.0622711F, 0.0724638F, 0.111111F, 0.238095F, 0.515152F, 0.802469F,
|
||||
0.941392F, 0.98463F, 0.99611F }, new float[] {
|
||||
0.111135F, 0.111208F, 0.111497F, 0.112652F, 0.117241F, 0.135135F, 0.2F, 0.384615F, 0.68F, 0.890411F,
|
||||
0.969811F, 0.992256F, 0.998051F }, new float[] {
|
||||
0.200039F, 0.200156F, 0.200625F, 0.202492F, 0.209877F, 0.238095F, 0.333333F, 0.555556F, 0.809524F, 0.942029F,
|
||||
0.984674F, 0.996113F, 0.999025F }, new float[] {
|
||||
0.333388F, 0.33355F, 0.3342F, 0.336788F, 0.346939F, 0.384615F, 0.5F, 0.714286F, 0.894737F, 0.970149F,
|
||||
0.992278F, 0.998053F, 0.999512F }, new float[] {
|
||||
0.500061F, 0.500244F, 0.500975F, 0.503876F, 0.515152F, 0.555556F, 0.666667F, 0.833333F, 0.944444F, 0.984848F,
|
||||
0.996124F, 0.999025F, 0.999756F }, new float[] {
|
||||
0.666721F, 0.666884F, 0.667532F, 0.670103F, 0.68F, 0.714286F, 0.8F, 0.909091F, 0.971429F, 0.992366F,
|
||||
0.998058F, 0.999512F, 0.999878F }, new float[] {
|
||||
0.800039F, 0.800156F, 0.800623F, 0.802469F, 0.809524F, 0.833333F, 0.888889F, 0.952381F, 0.985507F, 0.996169F,
|
||||
0.999028F, 0.999756F, 0.999939F },
|
||||
new float[] {
|
||||
0.888913F, 0.888985F, 0.889273F, 0.890411F, 0.894737F, 0.909091F, 0.941176F, 0.97561F, 0.992701F, 0.998081F,
|
||||
0.999514F, 0.999878F, 0.999969F }, new float[] {
|
||||
0.94119F, 0.94123F, 0.941392F, 0.942029F, 0.944444F, 0.952381F, 0.969697F, 0.987654F, 0.996337F, 0.999039F,
|
||||
0.999757F, 0.999939F, 0.999985F }, new float[] {
|
||||
0.969704F, 0.969726F, 0.969811F, 0.970149F, 0.971429F, 0.97561F, 0.984615F, 0.993789F, 0.998165F, 0.999519F,
|
||||
0.999878F, 0.99997F, 0.999992F }, new float[] {
|
||||
0.984619F, 0.98463F, 0.984674F, 0.984848F, 0.985507F, 0.987654F, 0.992248F, 0.996885F, 0.999082F, 0.99976F,
|
||||
0.999939F, 0.999985F, 0.999996F }, new float[] {
|
||||
0.99225F, 0.992256F, 0.992278F, 0.992366F, 0.992701F, 0.993789F, 0.996109F, 0.99844F, 0.999541F, 0.99988F,
|
||||
0.99997F, 0.999992F, 0.999998F }, new float[] {
|
||||
0.99611F, 0.996113F, 0.996124F, 0.996169F, 0.996337F, 0.996885F, 0.998051F, 0.999219F, 0.99977F, 0.99994F,
|
||||
0.999985F, 0.999996F, 0.999999F }, new float[] {
|
||||
0.998051F, 0.998053F, 0.998058F, 0.998081F, 0.998165F, 0.99844F, 0.999024F, 0.99961F, 0.999885F, 0.99997F,
|
||||
0.999992F, 0.999998F, 1.0F }, new float[] {
|
||||
0.999025F, 0.999025F, 0.999028F, 0.999039F, 0.999082F, 0.999219F, 0.999512F, 0.999805F, 0.999943F, 0.999985F,
|
||||
0.999996F, 0.999999F, 1.0F }, new float[] {
|
||||
0.999512F, 0.999512F, 0.999514F, 0.999519F, 0.999541F, 0.99961F, 0.999756F, 0.999902F, 0.999971F, 0.999992F,
|
||||
0.999998F, 1.0F, 1.0F }, new float[] {
|
||||
0.999756F, 0.999756F, 0.999757F, 0.99976F, 0.99977F, 0.999805F, 0.999878F, 0.999951F, 0.999986F, 0.999996F,
|
||||
0.999999F, 1.0F, 1.0F },
|
||||
new float[] {
|
||||
0.999878F, 0.999878F, 0.999878F, 0.99988F, 0.999885F, 0.999902F, 0.999939F, 0.999976F, 0.999993F, 0.999998F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999939F, 0.999939F, 0.999939F, 0.99994F, 0.999943F, 0.999951F, 0.999969F, 0.999988F, 0.999996F, 0.999999F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999969F, 0.99997F, 0.99997F, 0.99997F, 0.999971F, 0.999976F, 0.999985F, 0.999994F, 0.999998F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999985F, 0.999985F, 0.999985F, 0.999985F, 0.999986F, 0.999988F, 0.999992F, 0.999997F, 0.999999F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999992F, 0.999992F, 0.999992F, 0.999992F, 0.999993F, 0.999994F, 0.999996F, 0.999998F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999996F, 0.999996F, 0.999996F, 0.999996F, 0.999996F, 0.999997F, 0.999998F, 0.999999F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999998F, 0.999998F, 0.999998F, 0.999998F, 0.999998F, 0.999998F, 0.999999F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
0.999999F, 0.999999F, 0.999999F, 0.999999F, 0.999999F, 0.999999F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F }, new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F },
|
||||
new float[] {
|
||||
1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F,
|
||||
1.0F, 1.0F, 1.0F } };
|
||||
|
||||
public static void extract_envelope_data(SBR sbr, int ch) {
|
||||
for (int l = 0; l < sbr.L_E[ch]; l++) {
|
||||
if (sbr.bs_df_env[ch][l] == 0) {
|
||||
for (int k = 1; k < sbr.n[sbr.f[ch][l]]; k++) {
|
||||
sbr.E[ch][k][l] = sbr.E[ch][k - 1][l] + sbr.E[ch][k][l];
|
||||
if (sbr.E[ch][k][l] < 0)
|
||||
sbr.E[ch][k][l] = 0;
|
||||
}
|
||||
} else {
|
||||
int g = (l == 0) ? sbr.f_prev[ch] : sbr.f[ch][l - 1];
|
||||
if (sbr.f[ch][l] == g) {
|
||||
for (int k = 0; k < sbr.n[sbr.f[ch][l]]; k++) {
|
||||
int E_prev;
|
||||
if (l == 0) {
|
||||
E_prev = sbr.E_prev[ch][k];
|
||||
} else {
|
||||
E_prev = sbr.E[ch][k][l - 1];
|
||||
}
|
||||
sbr.E[ch][k][l] = E_prev + sbr.E[ch][k][l];
|
||||
}
|
||||
} else if (g == 1 && sbr.f[ch][l] == 0) {
|
||||
for (int k = 0; k < sbr.n[sbr.f[ch][l]]; k++) {
|
||||
for (int i = 0; i < sbr.N_high; i++) {
|
||||
if (sbr.f_table_res[1][i] == sbr.f_table_res[0][k]) {
|
||||
int E_prev;
|
||||
if (l == 0) {
|
||||
E_prev = sbr.E_prev[ch][i];
|
||||
} else {
|
||||
E_prev = sbr.E[ch][i][l - 1];
|
||||
}
|
||||
sbr.E[ch][k][l] = E_prev + sbr.E[ch][k][l];
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (g == 0 && sbr.f[ch][l] == 1) {
|
||||
for (int k = 0; k < sbr.n[sbr.f[ch][l]]; k++) {
|
||||
for (int i = 0; i < sbr.N_low; i++) {
|
||||
if (sbr.f_table_res[0][i] <= sbr.f_table_res[1][k] && sbr.f_table_res[1][k] < sbr.f_table_res[0][i + 1]) {
|
||||
int E_prev;
|
||||
if (l == 0) {
|
||||
E_prev = sbr.E_prev[ch][i];
|
||||
} else {
|
||||
E_prev = sbr.E[ch][i][l - 1];
|
||||
}
|
||||
sbr.E[ch][k][l] = E_prev + sbr.E[ch][k][l];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void extract_noise_floor_data(SBR sbr, int ch) {
|
||||
for (int l = 0; l < sbr.L_Q[ch]; l++) {
|
||||
if (sbr.bs_df_noise[ch][l] == 0) {
|
||||
for (int k = 1; k < sbr.N_Q; k++)
|
||||
sbr.Q[ch][k][l] = sbr.Q[ch][k][l] + sbr.Q[ch][k - 1][l];
|
||||
} else if (l == 0) {
|
||||
for (int k = 0; k < sbr.N_Q; k++)
|
||||
sbr.Q[ch][k][l] = sbr.Q_prev[ch][k] + sbr.Q[ch][k][0];
|
||||
} else {
|
||||
for (int k = 0; k < sbr.N_Q; k++)
|
||||
sbr.Q[ch][k][l] = sbr.Q[ch][k][l - 1] + sbr.Q[ch][k][l];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static float calc_Q_div(SBR sbr, int ch, int m, int l) {
|
||||
if (sbr.bs_coupling) {
|
||||
if (sbr.Q[0][m][l] < 0 || sbr.Q[0][m][l] > 30 || sbr.Q[1][m][l] < 0 || sbr.Q[1][m][l] > 24)
|
||||
return 0.0F;
|
||||
if (ch == 0)
|
||||
return Q_div_tab_left[sbr.Q[0][m][l]][sbr.Q[1][m][l] >> 1];
|
||||
return Q_div_tab_right[sbr.Q[0][m][l]][sbr.Q[1][m][l] >> 1];
|
||||
}
|
||||
if (sbr.Q[ch][m][l] < 0 || sbr.Q[ch][m][l] > 30)
|
||||
return 0.0F;
|
||||
return Q_div_tab[sbr.Q[ch][m][l]];
|
||||
}
|
||||
|
||||
public static float calc_Q_div2(SBR sbr, int ch, int m, int l) {
|
||||
if (sbr.bs_coupling) {
|
||||
if (sbr.Q[0][m][l] < 0 || sbr.Q[0][m][l] > 30 || sbr.Q[1][m][l] < 0 || sbr.Q[1][m][l] > 24)
|
||||
return 0.0F;
|
||||
if (ch == 0)
|
||||
return Q_div2_tab_left[sbr.Q[0][m][l]][sbr.Q[1][m][l] >> 1];
|
||||
return Q_div2_tab_right[sbr.Q[0][m][l]][sbr.Q[1][m][l] >> 1];
|
||||
}
|
||||
if (sbr.Q[ch][m][l] < 0 || sbr.Q[ch][m][l] > 30)
|
||||
return 0.0F;
|
||||
return Q_div2_tab[sbr.Q[ch][m][l]];
|
||||
}
|
||||
|
||||
public static void dequantChannel(SBR sbr, int ch) {
|
||||
if (!sbr.bs_coupling) {
|
||||
int amp = sbr.amp_res[ch] ? 0 : 1;
|
||||
for (int i = 0; i < sbr.L_E[ch]; i++) {
|
||||
for (int k = 0; k < sbr.n[sbr.f[ch][i]]; k++) {
|
||||
int exp = sbr.E[ch][k][i] >> amp;
|
||||
if (exp < 0 || exp >= 64) {
|
||||
sbr.E_orig[ch][k][i] = 0.0F;
|
||||
} else {
|
||||
sbr.E_orig[ch][k][i] = E_deq_tab[exp];
|
||||
if (amp != 0 && (sbr.E[ch][k][i] & 0x1) != 0)
|
||||
sbr.E_orig[ch][k][i] = sbr.E_orig[ch][k][i] * 1.4142135F;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int l = 0; l < sbr.L_Q[ch]; l++) {
|
||||
for (int k = 0; k < sbr.N_Q; k++) {
|
||||
sbr.Q_div[ch][k][l] = calc_Q_div(sbr, ch, k, l);
|
||||
sbr.Q_div2[ch][k][l] = calc_Q_div2(sbr, ch, k, l);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static final float[] E_pan_tab = new float[] {
|
||||
2.44081E-4F, 4.88043E-4F, 9.7561E-4F, 0.00194932F, 0.00389105F, 0.00775194F, 0.0153846F, 0.030303F, 0.0588235F, 0.111111F,
|
||||
0.2F, 0.333333F, 0.5F, 0.666667F, 0.8F, 0.888889F, 0.941176F, 0.969697F, 0.984615F, 0.992248F,
|
||||
0.996109F, 0.998051F, 0.999024F, 0.999512F, 0.999756F };
|
||||
|
||||
public static void unmap(SBR sbr) {
|
||||
int amp0 = sbr.amp_res[0] ? 0 : 1;
|
||||
int amp1 = sbr.amp_res[1] ? 0 : 1;
|
||||
for (int i = 0; i < sbr.L_E[0]; i++) {
|
||||
for (int k = 0; k < sbr.n[sbr.f[0][i]]; k++) {
|
||||
int exp0 = (sbr.E[0][k][i] >> amp0) + 1;
|
||||
int exp1 = sbr.E[1][k][i] >> amp1;
|
||||
if (exp0 < 0 || exp0 >= 64 || exp1 < 0 || exp1 > 24) {
|
||||
sbr.E_orig[1][k][i] = 0.0F;
|
||||
sbr.E_orig[0][k][i] = 0.0F;
|
||||
} else {
|
||||
float tmp = E_deq_tab[exp0];
|
||||
if (amp0 != 0 && (sbr.E[0][k][i] & 0x1) != 0)
|
||||
tmp = (float)((double)tmp * 1.414213562D);
|
||||
sbr.E_orig[0][k][i] = tmp * E_pan_tab[exp1];
|
||||
sbr.E_orig[1][k][i] = tmp * E_pan_tab[24 - exp1];
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int l = 0; l < sbr.L_Q[0]; l++) {
|
||||
for (int k = 0; k < sbr.N_Q; k++) {
|
||||
sbr.Q_div[0][k][l] = calc_Q_div(sbr, 0, k, l);
|
||||
sbr.Q_div[1][k][l] = calc_Q_div(sbr, 1, k, l);
|
||||
sbr.Q_div2[0][k][l] = calc_Q_div2(sbr, 0, k, l);
|
||||
sbr.Q_div2[1][k][l] = calc_Q_div2(sbr, 1, k, l);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
interface NoiseTable {
|
||||
public static final float[][] NOISE_TABLE = new float[][] {
|
||||
new float[] { -0.99948156F, -0.59483415F }, new float[] { 0.97113454F, -0.67528516F }, new float[] { 0.14130051F, -0.95090985F }, new float[] { -0.47005495F, -0.3734055F }, new float[] { 0.80705065F, 0.29653668F }, new float[] { -0.3898148F, 0.8957261F }, new float[] { -0.010530499F, -0.6695906F }, new float[] { -0.9126637F, -0.11522938F }, new float[] { 0.5484042F, 0.75221366F }, new float[] { 0.40009254F, -0.989294F },
|
||||
new float[] { -0.99867976F, -0.8814707F }, new float[] { -0.95531076F, 0.9090876F }, new float[] { -0.45725933F, -0.5671632F }, new float[] { -0.72929674F, -0.98008275F }, new float[] { 0.756228F, 0.2095033F }, new float[] { 0.070694424F, -0.782479F }, new float[] { 0.7449625F, -0.91169006F }, new float[] { -0.96440184F, -0.9473992F }, new float[] { 0.3042463F, -0.49438268F }, new float[] { 0.6656503F, 0.6465294F },
|
||||
new float[] { 0.9169701F, 0.17514098F }, new float[] { -0.7077492F, 0.5254865F }, new float[] { -0.70051414F, -0.45340028F }, new float[] { -0.99496514F, -0.9007191F }, new float[] { 0.9816449F, -0.77463156F }, new float[] { -0.5467158F, -0.025709284F }, new float[] { -0.01689629F, 0.0028750645F }, new float[] { -0.8611035F, 0.42548585F }, new float[] { -0.9889298F, -0.8788113F }, new float[] { 0.51756626F, 0.66926783F },
|
||||
new float[] { -0.9963503F, -0.5810773F }, new float[] { -0.9996937F, 0.9836999F }, new float[] { 0.5526626F, 0.5944906F }, new float[] { 0.34581178F, 0.9487942F }, new float[] { 0.6266421F, -0.7440297F }, new float[] { -0.771497F, -0.33883658F }, new float[] { -0.91592246F, 0.036879014F }, new float[] { -0.76285493F, -0.9137187F }, new float[] { 0.7978834F, -0.9318097F }, new float[] { 0.5447308F, -0.119192064F },
|
||||
new float[] { -0.8563928F, 0.42429855F }, new float[] { -0.928824F, 0.27871808F }, new float[] { -0.11708371F, -0.99800843F }, new float[] { 0.2135675F, -0.90716296F }, new float[] { -0.76191694F, 0.9976812F }, new float[] { 0.98111045F, -0.9585446F }, new float[] { -0.8591327F, 0.9576657F }, new float[] { -0.93307245F, 0.4943176F }, new float[] { 0.30485755F, -0.70540035F }, new float[] { 0.8528965F, 0.46766132F },
|
||||
new float[] { 0.91328084F, -0.998396F }, new float[] { -0.058902F, 0.70741826F }, new float[] { 0.28398687F, 0.34633556F }, new float[] { 0.95258164F, -0.54893416F }, new float[] { -0.78566325F, -0.7556854F }, new float[] { -0.957895F, -0.20423195F }, new float[] { 0.8241116F, 0.9665462F }, new float[] { -0.65185446F, -0.8873499F }, new float[] { -0.93643606F, 0.9987079F }, new float[] { 0.9142716F, -0.98290503F },
|
||||
new float[] { -0.70395684F, 0.587968F }, new float[] { 0.0056377198F, 0.617682F }, new float[] { 0.8906505F, 0.5278335F }, new float[] { -0.6868371F, 0.80806947F }, new float[] { 0.7216534F, -0.6925986F }, new float[] { -0.6292825F, 0.13627037F }, new float[] { 0.29938436F, -0.4605133F }, new float[] { -0.91781956F, -0.74012715F }, new float[] { 0.99298716F, 0.4081661F }, new float[] { 0.82368296F, -0.7403605F },
|
||||
new float[] { -0.98512834F, -0.9997233F }, new float[] { -0.9591537F, -0.992378F }, new float[] { -0.21411127F, -0.9342482F }, new float[] { -0.6882148F, -0.26892307F }, new float[] { 0.91852F, 0.09358229F }, new float[] { -0.9606277F, 0.36099094F }, new float[] { 0.51646185F, -0.7137333F }, new float[] { 0.6113072F, 0.4695014F }, new float[] { 0.47336128F, -0.2733318F }, new float[] { 0.9099831F, 0.96715665F },
|
||||
new float[] { 0.448448F, 0.99211574F }, new float[] { 0.6661489F, 0.96590173F }, new float[] { 0.7492224F, -0.8987986F }, new float[] { -0.99571586F, 0.5278552F }, new float[] { 0.9740108F, -0.1685587F }, new float[] { 0.72683746F, -0.48060775F }, new float[] { 0.9543219F, 0.68849605F }, new float[] { -0.72962207F, -0.76608443F }, new float[] { -0.8535948F, 0.88738126F }, new float[] { -0.8141243F, -0.9748077F },
|
||||
new float[] { -0.87930775F, 0.7474831F }, new float[] { -0.7157333F, -0.9857061F }, new float[] { 0.835243F, 0.83702534F }, new float[] { -0.48086065F, -0.98848504F }, new float[] { 0.97139126F, 0.8009362F }, new float[] { 0.5199283F, 0.8024763F }, new float[] { -0.008485912F, -0.7667013F }, new float[] { -0.70294374F, 0.5535991F }, new float[] { -0.95894426F, -0.43265504F }, new float[] { 0.97079253F, 0.093258575F },
|
||||
new float[] { -0.92404294F, 0.855077F }, new float[] { -0.6950647F, 0.98633415F }, new float[] { 0.26559204F, 0.7331431F }, new float[] { 0.28038442F, 0.14537914F }, new float[] { -0.7413812F, 0.9931034F }, new float[] { -0.01752796F, -0.82616633F }, new float[] { -0.55126774F, -0.9889854F }, new float[] { 0.979609F, -0.94021446F }, new float[] { -0.9919631F, 0.67019016F }, new float[] { -0.6768493F, 0.12631492F },
|
||||
new float[] { 0.09140039F, -0.20537731F }, new float[] { -0.7165896F, -0.977882F }, new float[] { 0.8101464F, 0.5372265F }, new float[] { 0.40616992F, -0.26469007F }, new float[] { -0.67680186F, 0.9450205F }, new float[] { 0.8684977F, -0.18333599F }, new float[] { -0.9950038F, -0.02634122F }, new float[] { 0.8432919F, 0.104069576F }, new float[] { -0.09215969F, 0.6954001F }, new float[] { 0.9995617F, -0.12358542F },
|
||||
new float[] { -0.7973278F, -0.91582525F }, new float[] { 0.9634997F, 0.96640456F }, new float[] { -0.7994278F, 0.643239F }, new float[] { -0.1156604F, 0.28587845F }, new float[] { -0.39922956F, 0.94129604F }, new float[] { 0.990892F, -0.9206263F }, new float[] { 0.28631285F, -0.91035044F }, new float[] { -0.83302724F, -0.6733041F }, new float[] { 0.95404446F, 0.49162766F }, new float[] { -0.06449863F, 0.03250561F },
|
||||
new float[] { -0.99575055F, 0.42389783F }, new float[] { -0.6550114F, 0.82546115F }, new float[] { -0.8125444F, -0.51627237F }, new float[] { -0.9964637F, 0.8449053F }, new float[] { 0.002878406F, 0.6476826F }, new float[] { 0.7017699F, -0.20453028F }, new float[] { 0.9636188F, 0.40706968F }, new float[] { -0.6888376F, 0.91338956F }, new float[] { -0.34875587F, 0.71472293F }, new float[] { 0.9198008F, 0.6650745F },
|
||||
new float[] { -0.9900905F, 0.8586802F }, new float[] { 0.68865794F, 0.5566032F }, new float[] { -0.994844F, -0.2005256F }, new float[] { 0.9421451F, -0.9969643F }, new float[] { -0.6741463F, 0.4954822F }, new float[] { -0.47339353F, -0.8590433F }, new float[] { 0.14323652F, -0.94145596F }, new float[] { -0.29268295F, 0.05759225F }, new float[] { 0.4379386F, -0.7890497F }, new float[] { -0.36345127F, 0.64874434F },
|
||||
new float[] { -0.08750605F, 0.97686946F }, new float[] { -0.9649527F, -0.53960305F }, new float[] { 0.5552694F, 0.7889152F }, new float[] { 0.73538214F, 0.96452075F }, new float[] { -0.30889773F, -0.8066439F }, new float[] { 0.035749957F, -0.9732562F }, new float[] { 0.9872069F, 0.48409134F }, new float[] { -0.816893F, -0.90827703F }, new float[] { 0.6786686F, 0.81284505F }, new float[] { -0.1580857F, 0.85279554F },
|
||||
new float[] { 0.8072339F, -0.24717419F }, new float[] { 0.47788757F, -0.4633315F }, new float[] { 0.96367556F, 0.3848675F }, new float[] { -0.99143875F, -0.24945277F }, new float[] { 0.8308188F, -0.9478085F }, new float[] { -0.5875319F, 0.012907724F }, new float[] { 0.9553811F, -0.8555705F }, new float[] { -0.9649092F, -0.64020973F }, new float[] { -0.973271F, 0.12378128F }, new float[] { 0.9140037F, 0.5797247F },
|
||||
new float[] { -0.9992584F, 0.71084845F }, new float[] { -0.86875904F, -0.202917F }, new float[] { -0.26240036F, -0.68264556F }, new float[] { -0.24664412F, -0.8764227F }, new float[] { 0.024162758F, 0.27192914F }, new float[] { 0.8206862F, -0.8508779F }, new float[] { 0.8854737F, -0.896368F }, new float[] { -0.18173078F, -0.26152146F }, new float[] { 0.093554765F, 0.54845124F }, new float[] { -0.54668415F, 0.95980775F },
|
||||
new float[] { 0.3705099F, -0.5991014F }, new float[] { -0.70373595F, 0.9122767F }, new float[] { -0.34600785F, -0.99441427F }, new float[] { -0.6877448F, -0.30238837F }, new float[] { -0.26843292F, 0.8311567F }, new float[] { 0.49072334F, -0.4535971F }, new float[] { 0.38975993F, 0.9551536F }, new float[] { -0.97757125F, 0.053058945F }, new float[] { -0.17325553F, -0.9277067F }, new float[] { 0.99948037F, 0.58285546F },
|
||||
new float[] { -0.64946246F, 0.6864551F }, new float[] { -0.12016921F, -0.57147324F }, new float[] { -0.58947456F, -0.3484713F }, new float[] { -0.4181514F, 0.16276422F }, new float[] { 0.9988565F, 0.11136095F }, new float[] { -0.56649613F, -0.90494865F }, new float[] { 0.9413802F, 0.35281917F }, new float[] { -0.7572508F, 0.5365055F }, new float[] { 0.20541973F, -0.94435143F }, new float[] { 0.9998037F, 0.79835916F },
|
||||
new float[] { 0.29078278F, 0.35393777F }, new float[] { -0.6285877F, 0.38765693F }, new float[] { 0.43440905F, -0.9854633F }, new float[] { -0.98298585F, 0.21021524F }, new float[] { 0.19513029F, -0.9423983F }, new float[] { -0.95476663F, 0.98364556F }, new float[] { 0.93379635F, -0.7088199F }, new float[] { -0.8523541F, -0.08342348F }, new float[] { -0.86425096F, -0.45795026F }, new float[] { 0.3887978F, 0.9727443F },
|
||||
new float[] { 0.9204512F, -0.62433654F }, new float[] { 0.89162534F, 0.5495096F }, new float[] { -0.36834338F, 0.964583F }, new float[] { 0.93891764F, -0.89968354F }, new float[] { 0.99267656F, -0.037570342F }, new float[] { -0.9406347F, 0.41332337F }, new float[] { 0.99740225F, -0.16830495F }, new float[] { -0.35899413F, -0.46633226F }, new float[] { 0.052372374F, -0.25640363F }, new float[] { 0.36703584F, -0.38653266F },
|
||||
new float[] { 0.9165318F, -0.30587628F }, new float[] { 0.69000804F, 0.9095217F }, new float[] { -0.3865875F, 0.99501574F }, new float[] { -0.29250816F, 0.37444994F }, new float[] { -0.601822F, 0.8677965F }, new float[] { -0.9741859F, 0.96468526F }, new float[] { 0.8846157F, 0.57508403F }, new float[] { 0.05198933F, 0.21269661F }, new float[] { -0.5349962F, 0.97241557F }, new float[] { -0.4942956F, 0.98183864F },
|
||||
new float[] { -0.98935145F, -0.4024916F }, new float[] { -0.9808138F, -0.728569F }, new float[] { -0.2733815F, 0.9995092F }, new float[] { 0.06310803F, -0.54539585F }, new float[] { -0.20461677F, -0.14209978F }, new float[] { 0.6622384F, 0.7252858F }, new float[] { -0.84764344F, 0.023723168F }, new float[] { -0.8903986F, 0.8886658F }, new float[] { 0.9590331F, 0.76744926F }, new float[] { 0.73504126F, -0.037472032F },
|
||||
new float[] { -0.31744435F, -0.36834112F }, new float[] { -0.34110826F, 0.40211222F }, new float[] { 0.47803885F, -0.39423218F }, new float[] { 0.98299193F, 0.019897914F }, new float[] { -0.30963072F, -0.18076721F }, new float[] { 0.9999259F, -0.26281872F }, new float[] { -0.93149734F, -0.98313165F }, new float[] { 0.99923474F, -0.8014299F }, new float[] { -0.2602417F, -0.7599976F }, new float[] { -0.35712513F, 0.19298963F },
|
||||
new float[] { -0.99899083F, 0.74645156F }, new float[] { 0.86557174F, 0.55593866F }, new float[] { 0.33408043F, 0.86185956F }, new float[] { 0.99010736F, 0.046023976F }, new float[] { -0.6669427F, -0.91643614F }, new float[] { 0.6401679F, 0.1564953F }, new float[] { 0.99570537F, 0.45844585F }, new float[] { -0.63431466F, 0.21079117F }, new float[] { -0.07706847F, -0.89581436F }, new float[] { 0.9859009F, 0.8824172F },
|
||||
new float[] { 0.8009933F, -0.36851898F }, new float[] { 0.78368133F, 0.45507F }, new float[] { 0.087078065F, 0.80938995F }, new float[] { -0.8681188F, 0.3934731F }, new float[] { -0.3946653F, -0.66809434F }, new float[] { 0.97875327F, -0.7246784F }, new float[] { -0.95038563F, 0.8956322F }, new float[] { 0.1700524F, 0.54683053F }, new float[] { -0.76910794F, -0.96226615F }, new float[] { 0.9974328F, 0.42697158F },
|
||||
new float[] { 0.95437384F, 0.9700232F }, new float[] { 0.99578905F, -0.54106826F }, new float[] { 0.2805826F, -0.8536142F }, new float[] { 0.8525652F, -0.6456761F }, new float[] { -0.5060854F, -0.65846014F }, new float[] { -0.97210735F, -0.23095213F }, new float[] { 0.9542405F, -0.9924015F }, new float[] { -0.9692657F, 0.73775655F }, new float[] { 0.30872163F, 0.4151496F }, new float[] { -0.2452384F, 0.6320663F },
|
||||
new float[] { -0.33813265F, -0.38661778F }, new float[] { -0.058268283F, -0.06940774F }, new float[] { -0.22898461F, 0.9705485F }, new float[] { -0.18509915F, 0.47565764F }, new float[] { -0.10488238F, -0.8776995F }, new float[] { -0.7188659F, 0.7803098F }, new float[] { 0.99793875F, 0.9004131F }, new float[] { 0.57563305F, -0.91034335F }, new float[] { 0.28909647F, 0.96307784F }, new float[] { 0.42189F, 0.4814865F },
|
||||
new float[] { 0.9333505F, -0.43537024F }, new float[] { -0.9708738F, 0.8663645F }, new float[] { 0.36722872F, 0.65291655F }, new float[] { -0.81093025F, 0.0877837F }, new float[] { -0.26240602F, -0.92774093F }, new float[] { 0.839965F, 0.5583985F }, new float[] { -0.99909616F, -0.9602461F }, new float[] { 0.74649465F, 0.121448934F }, new float[] { -0.74774593F, -0.26898062F }, new float[] { 0.95781666F, -0.79047924F },
|
||||
new float[] { 0.95472306F, -0.08588776F }, new float[] { 0.48708332F, 0.9999904F }, new float[] { 0.46332037F, 0.10964126F }, new float[] { -0.76497006F, 0.8921093F }, new float[] { 0.5739739F, 0.35289705F }, new float[] { 0.7537432F, 0.96705216F }, new float[] { -0.591744F, -0.8940537F }, new float[] { 0.75087905F, -0.29612672F }, new float[] { -0.98607856F, 0.2503491F }, new float[] { -0.40761057F, -0.9004557F },
|
||||
new float[] { 0.6692927F, 0.9862949F }, new float[] { -0.974637F, -0.001902233F }, new float[] { 0.9014551F, 0.9978139F }, new float[] { -0.87259287F, 0.99233586F }, new float[] { -0.9152946F, -0.15698707F }, new float[] { -0.033057388F, -0.37205264F }, new float[] { 0.07223051F, -0.88805F }, new float[] { 0.9949801F, 0.97094357F }, new float[] { -0.74904937F, 0.99985486F }, new float[] { 0.045852285F, 0.99812335F },
|
||||
new float[] { -0.89054954F, -0.31791914F }, new float[] { -0.8378214F, 0.97637635F }, new float[] { 0.33454806F, -0.8623152F }, new float[] { -0.9970758F, 0.9323799F }, new float[] { -0.22827528F, 0.1887476F }, new float[] { 0.67248046F, -0.036462113F }, new float[] { -0.05146538F, -0.925997F }, new float[] { 0.999473F, 0.9362523F }, new float[] { 0.66951126F, 0.98905826F }, new float[] { -0.99602956F, -0.44654715F },
|
||||
new float[] { 0.82104903F, 0.9954074F }, new float[] { 0.9918651F, 0.72023F }, new float[] { -0.6528459F, 0.5218672F }, new float[] { 0.93885446F, -0.7489531F }, new float[] { 0.9673525F, 0.90891814F }, new float[] { -0.22225969F, 0.5712403F }, new float[] { -0.44132784F, -0.9268884F }, new float[] { -0.85694975F, 0.8884453F }, new float[] { 0.9178304F, -0.46356893F }, new float[] { 0.7255697F, -0.99899554F },
|
||||
new float[] { -0.9971158F, 0.5821156F }, new float[] { 0.7763898F, 0.94321835F }, new float[] { 0.07717324F, 0.586384F }, new float[] { -0.5604983F, 0.825223F }, new float[] { 0.98398894F, 0.3946744F }, new float[] { 0.47546947F, 0.68613046F }, new float[] { 0.6567509F, 0.18331636F }, new float[] { 0.032733753F, -0.7493311F }, new float[] { -0.38684145F, 0.5133735F }, new float[] { -0.9734627F, -0.9654936F },
|
||||
new float[] { -0.53282154F, -0.9142327F }, new float[] { 0.9981731F, 0.61133575F }, new float[] { -0.502545F, -0.8882934F }, new float[] { 0.019958733F, 0.85223514F }, new float[] { 0.9993038F, 0.945789F }, new float[] { 0.82907766F, -0.063234426F }, new float[] { -0.5866071F, 0.96840775F }, new float[] { -0.17573737F, -0.48166922F }, new float[] { 0.8343429F, -0.13023451F }, new float[] { 0.059464913F, 0.20511048F },
|
||||
new float[] { 0.81505483F, -0.9468595F }, new float[] { -0.4497638F, 0.40894574F }, new float[] { -0.89746475F, 0.9984658F }, new float[] { 0.39677256F, -0.74854666F }, new float[] { -0.07588948F, 0.74096215F }, new float[] { 0.76343197F, 0.41746628F }, new float[] { -0.74490106F, 0.9472591F }, new float[] { 0.6488012F, 0.41336662F }, new float[] { 0.62319535F, -0.9309831F }, new float[] { 0.42215818F, -0.077127874F },
|
||||
new float[] { 0.02704554F, -0.05417518F }, new float[] { 0.8000177F, 0.91542196F }, new float[] { -0.7935183F, -0.36208898F }, new float[] { 0.6387236F, 0.081282526F }, new float[] { 0.5289052F, 0.6004887F }, new float[] { 0.7423855F, 0.04491915F }, new float[] { 0.9909613F, -0.19451183F }, new float[] { -0.8041233F, -0.88513815F }, new float[] { -0.64612615F, 0.7219868F }, new float[] { 0.11657771F, -0.8366283F },
|
||||
new float[] { -0.95053184F, -0.96939903F }, new float[] { -0.6222887F, 0.8276726F }, new float[] { 0.030044759F, -0.99738896F }, new float[] { -0.97987217F, 0.3652613F }, new float[] { -0.9998698F, -0.3602161F }, new float[] { 0.8911065F, -0.9789425F }, new float[] { 0.104079604F, 0.7735779F }, new float[] { 0.95964736F, -0.3543582F }, new float[] { 0.5084323F, 0.9610769F }, new float[] { 0.17006335F, -0.76854026F },
|
||||
new float[] { 0.25872675F, 0.998933F }, new float[] { -0.011159987F, 0.9849602F }, new float[] { -0.795987F, 0.9713841F }, new float[] { -0.9926471F, -0.9954282F }, new float[] { -0.9982966F, 0.018771388F }, new float[] { -0.70801014F, 0.33680686F }, new float[] { -0.70467055F, 0.93272775F }, new float[] { 0.99846023F, -0.9872575F }, new float[] { -0.6336497F, -0.16473594F }, new float[] { -0.16258217F, -0.95939124F },
|
||||
new float[] { -0.43645594F, -0.9480503F }, new float[] { -0.99848473F, 0.9624517F }, new float[] { -0.1679646F, -0.98987514F }, new float[] { -0.8797923F, -0.71725726F }, new float[] { 0.441831F, -0.93568975F }, new float[] { 0.9331018F, -0.9991331F }, new float[] { -0.9394193F, -0.56409377F }, new float[] { -0.8859F, 0.476246F }, new float[] { 0.9997146F, -0.83889955F }, new float[] { -0.75376385F, 0.008146434F },
|
||||
new float[] { 0.93887687F, -0.11284528F }, new float[] { 0.85126436F, 0.5234925F }, new float[] { 0.3970142F, 0.81779635F }, new float[] { -0.37024465F, -0.8707166F }, new float[] { -0.36024827F, 0.34655735F }, new float[] { -0.93388814F, -0.8447654F }, new float[] { -0.652988F, -0.18439576F }, new float[] { 0.11960319F, 0.99899346F }, new float[] { 0.94292563F, 0.83163905F }, new float[] { 0.75081146F, -0.35533223F },
|
||||
new float[] { 0.5672198F, -0.24076836F }, new float[] { 0.46857765F, -0.30140233F }, new float[] { 0.97312313F, -0.9954819F }, new float[] { -0.38299978F, 0.9851691F }, new float[] { 0.410258F, 0.02116737F }, new float[] { 0.09638062F, 0.044119842F }, new float[] { -0.8528325F, 0.91475564F }, new float[] { 0.88866806F, -0.99735266F }, new float[] { -0.48202428F, -0.9680561F }, new float[] { 0.2757258F, 0.5863475F },
|
||||
new float[] { -0.6588913F, 0.5883563F }, new float[] { 0.98838085F, 0.9999435F }, new float[] { -0.2065135F, 0.54593045F }, new float[] { -0.62126416F, -0.5989368F }, new float[] { 0.20320106F, -0.8687918F }, new float[] { -0.9779055F, 0.9629081F }, new float[] { 0.11112535F, 0.21484764F }, new float[] { -0.41368338F, 0.2821684F }, new float[] { 0.24133039F, 0.5129436F }, new float[] { -0.6639341F, -0.0824968F },
|
||||
new float[] { -0.5369783F, -0.976499F }, new float[] { -0.97224736F, 0.22081333F }, new float[] { 0.8739248F, -0.12796174F }, new float[] { 0.19050361F, 0.016026154F }, new float[] { -0.4635344F, -0.9524904F }, new float[] { -0.07064097F, -0.94479805F }, new float[] { -0.92444086F, -0.1045759F }, new float[] { -0.83822596F, -0.016950432F }, new float[] { 0.75214684F, -0.99955684F }, new float[] { -0.42102998F, 0.9972094F },
|
||||
new float[] { -0.72094786F, -0.3500896F }, new float[] { 0.78843313F, 0.52851397F }, new float[] { 0.97394025F, -0.26695943F }, new float[] { 0.99206465F, -0.5701012F }, new float[] { 0.7678961F, -0.7651936F }, new float[] { -0.8200242F, -0.7353018F }, new float[] { 0.8192499F, 0.99698424F }, new float[] { -0.2671985F, 0.6890337F }, new float[] { -0.4331126F, 0.85321814F }, new float[] { 0.9919498F, 0.9187625F },
|
||||
new float[] { -0.80692F, -0.3262754F }, new float[] { 0.43080005F, -0.21919096F }, new float[] { 0.67709494F, -0.95478076F }, new float[] { 0.5615177F, -0.7069381F }, new float[] { 0.10831863F, -0.08628837F }, new float[] { 0.91229415F, -0.6598735F }, new float[] { -0.48972893F, 0.56289244F }, new float[] { -0.8903366F, -0.71656567F }, new float[] { 0.65269446F, 0.6591601F }, new float[] { 0.6743948F, -0.8168438F },
|
||||
new float[] { -0.4777083F, -0.16789556F }, new float[] { -0.9971598F, -0.93565786F }, new float[] { -0.9088959F, 0.620344F }, new float[] { -0.06618623F, -0.23812217F }, new float[] { 0.9943027F, 0.18812555F }, new float[] { 0.97686404F, -0.28664535F }, new float[] { 0.9481365F, -0.9750664F }, new float[] { -0.954345F, -0.7960798F }, new float[] { -0.49104783F, 0.32895213F }, new float[] { 0.9988117F, 0.88993984F },
|
||||
new float[] { 0.5044917F, -0.8599507F }, new float[] { 0.4716289F, -0.18680204F }, new float[] { -0.6208158F, 0.75000674F }, new float[] { -0.43867016F, 0.9999807F }, new float[] { 0.98630565F, -0.535789F }, new float[] { -0.6151036F, -0.8951502F }, new float[] { -0.038415175F, -0.6988882F }, new float[] { -0.30102158F, -0.07667809F }, new float[] { 0.41881284F, 0.02188099F }, new float[] { -0.86135453F, 0.98947483F },
|
||||
new float[] { 0.6722686F, -0.13494389F }, new float[] { -0.707374F, -0.7654735F }, new float[] { 0.9404495F, 0.09026201F }, new float[] { -0.8238635F, 0.08924769F }, new float[] { -0.32070667F, 0.5014342F }, new float[] { 0.5759316F, -0.98966426F }, new float[] { -0.36326018F, 0.07440243F }, new float[] { 0.99979043F, -0.14130287F }, new float[] { -0.9236602F, -0.97979295F }, new float[] { -0.44607177F, -0.54233253F },
|
||||
new float[] { 0.442268F, 0.71326756F }, new float[] { 0.036719073F, 0.6360639F }, new float[] { 0.52175426F, -0.85396826F }, new float[] { -0.9470114F, -0.018263482F }, new float[] { -0.9875961F, 0.8228871F }, new float[] { 0.8743479F, 0.8939949F }, new float[] { -0.9341204F, 0.41374052F }, new float[] { 0.9606394F, 0.93116707F }, new float[] { 0.9753425F, 0.8615093F }, new float[] { 0.9964247F, 0.7019004F },
|
||||
new float[] { -0.94705087F, -0.29580042F }, new float[] { 0.91599804F, -0.98147833F } };
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,65 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
interface SBRConstants {
|
||||
public static final int[] startMinTable = new int[] {
|
||||
7, 7, 10, 11, 12, 16, 16, 17, 24, 32,
|
||||
35, 48 };
|
||||
|
||||
public static final int[] offsetIndexTable = new int[] {
|
||||
5, 5, 4, 4, 4, 3, 2, 1, 0, 6,
|
||||
6, 6 };
|
||||
|
||||
public static final int[][] OFFSET = new int[][] { new int[] {
|
||||
-8, -7, -6, -5, -4, -3, -2, -1, 0, 1,
|
||||
2, 3, 4, 5, 6, 7 }, new int[] {
|
||||
-5, -4, -3, -2, -1, 0, 1, 2, 3, 4,
|
||||
5, 6, 7, 9, 11, 13 }, new int[] {
|
||||
-5, -3, -2, -1, 0, 1, 2, 3, 4, 5,
|
||||
6, 7, 9, 11, 13, 16 }, new int[] {
|
||||
-6, -4, -2, -1, 0, 1, 2, 3, 4, 5,
|
||||
6, 7, 9, 11, 13, 16 }, new int[] {
|
||||
-4, -2, -1, 0, 1, 2, 3, 4, 5, 6,
|
||||
7, 9, 11, 13, 16, 20 }, new int[] {
|
||||
-2, -1, 0, 1, 2, 3, 4, 5, 6, 7,
|
||||
9, 11, 13, 16, 20, 24 }, new int[] {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 9, 11,
|
||||
13, 16, 20, 24, 28, 33 } };
|
||||
|
||||
public static final int EXTENSION_ID_PS = 2;
|
||||
|
||||
public static final int MAX_NTSRHFG = 40;
|
||||
|
||||
public static final int MAX_NTSR = 32;
|
||||
|
||||
public static final int MAX_M = 49;
|
||||
|
||||
public static final int MAX_L_E = 5;
|
||||
|
||||
public static final int EXT_SBR_DATA = 13;
|
||||
|
||||
public static final int EXT_SBR_DATA_CRC = 14;
|
||||
|
||||
public static final int FIXFIX = 0;
|
||||
|
||||
public static final int FIXVAR = 1;
|
||||
|
||||
public static final int VARFIX = 2;
|
||||
|
||||
public static final int VARVAR = 3;
|
||||
|
||||
public static final int LO_RES = 0;
|
||||
|
||||
public static final int HI_RES = 1;
|
||||
|
||||
public static final int NO_TIME_SLOTS_960 = 15;
|
||||
|
||||
public static final int NO_TIME_SLOTS = 16;
|
||||
|
||||
public static final int RATE = 2;
|
||||
|
||||
public static final int NOISE_FLOOR_OFFSET = 6;
|
||||
|
||||
public static final int T_HFGEN = 8;
|
||||
|
||||
public static final int T_HFADJ = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,872 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
class SynthesisFilterbank implements FilterbankTable {
|
||||
private static final float[][] qmf32_pre_twiddle = new float[][] {
|
||||
new float[] { 0.9999247F, -0.012271538F }, new float[] { 0.99932235F, -0.036807224F }, new float[] { 0.9981181F, -0.061320737F }, new float[] { 0.9963126F, -0.08579731F }, new float[] { 0.993907F, -0.110222206F }, new float[] { 0.99090266F, -0.1345807F }, new float[] { 0.9873014F, -0.15885815F }, new float[] { 0.9831055F, -0.18303989F }, new float[] { 0.9783174F, -0.20711137F }, new float[] { 0.97293997F, -0.2310581F },
|
||||
new float[] { 0.96697646F, -0.25486565F }, new float[] { 0.9604305F, -0.2785197F }, new float[] { 0.953306F, -0.30200595F }, new float[] { 0.9456073F, -0.3253103F }, new float[] { 0.937339F, -0.34841868F }, new float[] { 0.9285061F, -0.3713172F }, new float[] { 0.9191139F, -0.39399204F }, new float[] { 0.909168F, -0.41642955F }, new float[] { 0.8986745F, -0.43861625F }, new float[] { 0.88763964F, -0.46053872F },
|
||||
new float[] { 0.8760701F, -0.48218378F }, new float[] { 0.86397284F, -0.50353837F }, new float[] { 0.8513552F, -0.52458966F }, new float[] { 0.8382247F, -0.545325F }, new float[] { 0.8245893F, -0.5657318F }, new float[] { 0.81045717F, -0.58579785F }, new float[] { 0.7958369F, -0.60551107F }, new float[] { 0.7807372F, -0.6248595F }, new float[] { 0.76516724F, -0.64383155F }, new float[] { 0.7491364F, -0.6624158F },
|
||||
new float[] { 0.7326543F, -0.680601F }, new float[] { 0.71573085F, -0.69837624F } };
|
||||
|
||||
private float[] v;
|
||||
|
||||
private int v_index;
|
||||
|
||||
private final int channels;
|
||||
|
||||
public SynthesisFilterbank(int channels) {
|
||||
this.channels = channels;
|
||||
this.v = new float[2 * channels * 20];
|
||||
this.v_index = 0;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
Arrays.fill(this.v, 0.0F);
|
||||
}
|
||||
|
||||
void sbr_qmf_synthesis_32(SBR sbr, float[][][] X, float[] output) {
|
||||
float[] x1 = new float[32], x2 = new float[32];
|
||||
float scale = 0.015625F;
|
||||
int out = 0;
|
||||
for (int l = 0; l < sbr.numTimeSlotsRate; l++) {
|
||||
for (int i = 0; i < 32; i++) {
|
||||
x1[i] = X[l][i][0] * qmf32_pre_twiddle[i][0] - X[l][i][1] * qmf32_pre_twiddle[i][1];
|
||||
x2[i] = X[l][i][1] * qmf32_pre_twiddle[i][0] + X[l][i][0] * qmf32_pre_twiddle[i][1];
|
||||
x1[i] = x1[i] * scale;
|
||||
x2[i] = x2[i] * scale;
|
||||
}
|
||||
DCT4_32(x1, x1);
|
||||
DST4_32(x2, x2);
|
||||
for (int n = 0; n < 32; n++) {
|
||||
this.v[this.v_index + 640 + n] = -x1[n] + x2[n];
|
||||
this.v[this.v_index + n] = -x1[n] + x2[n];
|
||||
this.v[this.v_index + 640 + 63 - n] = x1[n] + x2[n];
|
||||
this.v[this.v_index + 63 - n] = x1[n] + x2[n];
|
||||
}
|
||||
for (int k = 0; k < 32; k++)
|
||||
output[out++] = this.v[this.v_index + k] * qmf_c[2 * k] + this.v[this.v_index + 96 + k] * qmf_c[64 + 2 * k] + this.v[this.v_index + 128 + k] * qmf_c[128 + 2 * k] + this.v[this.v_index + 224 + k] * qmf_c[192 + 2 * k] + this.v[this.v_index + 256 + k] * qmf_c[256 + 2 * k] + this.v[this.v_index + 352 + k] * qmf_c[320 + 2 * k] + this.v[this.v_index + 384 + k] * qmf_c[384 + 2 * k] + this.v[this.v_index + 480 + k] * qmf_c[448 + 2 * k] + this.v[this.v_index + 512 + k] * qmf_c[512 + 2 * k] + this.v[this.v_index + 608 + k] * qmf_c[576 + 2 * k];
|
||||
this.v_index -= 64;
|
||||
if (this.v_index < 0)
|
||||
this.v_index = 576;
|
||||
}
|
||||
}
|
||||
|
||||
void sbr_qmf_synthesis_64(SBR sbr, float[][][] X, float[] output) {
|
||||
float[] in_real1 = new float[32], in_imag1 = new float[32], out_real1 = new float[32], out_imag1 = new float[32];
|
||||
float[] in_real2 = new float[32], in_imag2 = new float[32], out_real2 = new float[32], out_imag2 = new float[32];
|
||||
float scale = 0.015625F;
|
||||
int out = 0;
|
||||
for (int l = 0; l < sbr.numTimeSlotsRate; l++) {
|
||||
float[][] pX = X[l];
|
||||
in_imag1[31] = scale * pX[1][0];
|
||||
in_real1[0] = scale * pX[0][0];
|
||||
in_imag2[31] = scale * pX[62][1];
|
||||
in_real2[0] = scale * pX[63][1];
|
||||
for (int i = 1; i < 31; i++) {
|
||||
in_imag1[31 - i] = scale * pX[2 * i + 1][0];
|
||||
in_real1[i] = scale * pX[2 * i][0];
|
||||
in_imag2[31 - i] = scale * pX[63 - (2 * i + 1)][1];
|
||||
in_real2[i] = scale * pX[63 - 2 * i][1];
|
||||
}
|
||||
in_imag1[0] = scale * pX[63][0];
|
||||
in_real1[31] = scale * pX[62][0];
|
||||
in_imag2[0] = scale * pX[0][1];
|
||||
in_real2[31] = scale * pX[1][1];
|
||||
DCT.dct4_kernel(in_real1, in_imag1, out_real1, out_imag1);
|
||||
DCT.dct4_kernel(in_real2, in_imag2, out_real2, out_imag2);
|
||||
int pring_buffer_1 = this.v_index;
|
||||
int pring_buffer_3 = pring_buffer_1 + 1280;
|
||||
for (int n = 0; n < 32; n++) {
|
||||
this.v[pring_buffer_3 + 2 * n] = out_real2[n] - out_real1[n];
|
||||
this.v[pring_buffer_1 + 2 * n] = out_real2[n] - out_real1[n];
|
||||
this.v[pring_buffer_3 + 127 - 2 * n] = out_real2[n] + out_real1[n];
|
||||
this.v[pring_buffer_1 + 127 - 2 * n] = out_real2[n] + out_real1[n];
|
||||
this.v[pring_buffer_3 + 2 * n + 1] = out_imag2[31 - n] + out_imag1[31 - n];
|
||||
this.v[pring_buffer_1 + 2 * n + 1] = out_imag2[31 - n] + out_imag1[31 - n];
|
||||
this.v[pring_buffer_3 + 127 - (2 * n + 1)] = out_imag2[31 - n] - out_imag1[31 - n];
|
||||
this.v[pring_buffer_1 + 127 - (2 * n + 1)] = out_imag2[31 - n] - out_imag1[31 - n];
|
||||
}
|
||||
pring_buffer_1 = this.v_index;
|
||||
for (int k = 0; k < 64; k++)
|
||||
output[out++] = this.v[pring_buffer_1 + k + 0] * qmf_c[k + 0] + this.v[pring_buffer_1 + k + 192] * qmf_c[k + 64] + this.v[pring_buffer_1 + k + 256] * qmf_c[k + 128] + this.v[pring_buffer_1 + k + 448] * qmf_c[k + 192] + this.v[pring_buffer_1 + k + 512] * qmf_c[k + 256] + this.v[pring_buffer_1 + k + 704] * qmf_c[k + 320] + this.v[pring_buffer_1 + k + 768] * qmf_c[k + 384] + this.v[pring_buffer_1 + k + 960] * qmf_c[k + 448] + this.v[pring_buffer_1 + k + 1024] * qmf_c[k + 512] + this.v[pring_buffer_1 + k + 1216] * qmf_c[k + 576];
|
||||
this.v_index -= 128;
|
||||
if (this.v_index < 0)
|
||||
this.v_index = 1152;
|
||||
}
|
||||
}
|
||||
|
||||
private void DCT4_32(float[] y, float[] x) {
|
||||
float f0 = x[15] - x[16];
|
||||
float f1 = x[15] + x[16];
|
||||
float f2 = 0.70710677F * f1;
|
||||
float f3 = 0.70710677F * f0;
|
||||
float f4 = x[8] - x[23];
|
||||
float f5 = x[8] + x[23];
|
||||
float f6 = 0.70710677F * f5;
|
||||
float f7 = 0.70710677F * f4;
|
||||
float f8 = x[12] - x[19];
|
||||
float f9 = x[12] + x[19];
|
||||
float f10 = 0.70710677F * f9;
|
||||
float f11 = 0.70710677F * f8;
|
||||
float f12 = x[11] - x[20];
|
||||
float f13 = x[11] + x[20];
|
||||
float f14 = 0.70710677F * f13;
|
||||
float f15 = 0.70710677F * f12;
|
||||
float f16 = x[14] - x[17];
|
||||
float f17 = x[14] + x[17];
|
||||
float f18 = 0.70710677F * f17;
|
||||
float f19 = 0.70710677F * f16;
|
||||
float f20 = x[9] - x[22];
|
||||
float f21 = x[9] + x[22];
|
||||
float f22 = 0.70710677F * f21;
|
||||
float f23 = 0.70710677F * f20;
|
||||
float f24 = x[13] - x[18];
|
||||
float f25 = x[13] + x[18];
|
||||
float f26 = 0.70710677F * f25;
|
||||
float f27 = 0.70710677F * f24;
|
||||
float f28 = x[10] - x[21];
|
||||
float f29 = x[10] + x[21];
|
||||
float f30 = 0.70710677F * f29;
|
||||
float f31 = 0.70710677F * f28;
|
||||
float f32 = x[0] - f2;
|
||||
float f33 = x[0] + f2;
|
||||
float f34 = x[31] - f3;
|
||||
float f35 = x[31] + f3;
|
||||
float f36 = x[7] - f6;
|
||||
float f37 = x[7] + f6;
|
||||
float f38 = x[24] - f7;
|
||||
float f39 = x[24] + f7;
|
||||
float f40 = x[3] - f10;
|
||||
float f41 = x[3] + f10;
|
||||
float f42 = x[28] - f11;
|
||||
float f43 = x[28] + f11;
|
||||
float f44 = x[4] - f14;
|
||||
float f45 = x[4] + f14;
|
||||
float f46 = x[27] - f15;
|
||||
float f47 = x[27] + f15;
|
||||
float f48 = x[1] - f18;
|
||||
float f49 = x[1] + f18;
|
||||
float f50 = x[30] - f19;
|
||||
float f51 = x[30] + f19;
|
||||
float f52 = x[6] - f22;
|
||||
float f53 = x[6] + f22;
|
||||
float f54 = x[25] - f23;
|
||||
float f55 = x[25] + f23;
|
||||
float f56 = x[2] - f26;
|
||||
float f57 = x[2] + f26;
|
||||
float f58 = x[29] - f27;
|
||||
float f59 = x[29] + f27;
|
||||
float f60 = x[5] - f30;
|
||||
float f61 = x[5] + f30;
|
||||
float f62 = x[26] - f31;
|
||||
float f63 = x[26] + f31;
|
||||
float f64 = f39 + f37;
|
||||
float f65 = -0.5411961F * f39;
|
||||
float f66 = 0.9238795F * f64;
|
||||
float f67 = 1.306563F * f37;
|
||||
float f68 = f65 + f66;
|
||||
float f69 = f67 - f66;
|
||||
float f70 = f38 + f36;
|
||||
float f71 = 1.306563F * f38;
|
||||
float f72 = -0.38268343F * f70;
|
||||
float f73 = 0.5411961F * f36;
|
||||
float f74 = f71 + f72;
|
||||
float f75 = f73 - f72;
|
||||
float f76 = f47 + f45;
|
||||
float f77 = -0.5411961F * f47;
|
||||
float f78 = 0.9238795F * f76;
|
||||
float f79 = 1.306563F * f45;
|
||||
float f80 = f77 + f78;
|
||||
float f81 = f79 - f78;
|
||||
float f82 = f46 + f44;
|
||||
float f83 = 1.306563F * f46;
|
||||
float f84 = -0.38268343F * f82;
|
||||
float f85 = 0.5411961F * f44;
|
||||
float f86 = f83 + f84;
|
||||
float f87 = f85 - f84;
|
||||
float f88 = f55 + f53;
|
||||
float f89 = -0.5411961F * f55;
|
||||
float f90 = 0.9238795F * f88;
|
||||
float f91 = 1.306563F * f53;
|
||||
float f92 = f89 + f90;
|
||||
float f93 = f91 - f90;
|
||||
float f94 = f54 + f52;
|
||||
float f95 = 1.306563F * f54;
|
||||
float f96 = -0.38268343F * f94;
|
||||
float f97 = 0.5411961F * f52;
|
||||
float f98 = f95 + f96;
|
||||
float f99 = f97 - f96;
|
||||
float f100 = f63 + f61;
|
||||
float f101 = -0.5411961F * f63;
|
||||
float f102 = 0.9238795F * f100;
|
||||
float f103 = 1.306563F * f61;
|
||||
float f104 = f101 + f102;
|
||||
float f105 = f103 - f102;
|
||||
float f106 = f62 + f60;
|
||||
float f107 = 1.306563F * f62;
|
||||
float f108 = -0.38268343F * f106;
|
||||
float f109 = 0.5411961F * f60;
|
||||
float f110 = f107 + f108;
|
||||
float f111 = f109 - f108;
|
||||
float f112 = f33 - f68;
|
||||
float f113 = f33 + f68;
|
||||
float f114 = f35 - f69;
|
||||
float f115 = f35 + f69;
|
||||
float f116 = f32 - f74;
|
||||
float f117 = f32 + f74;
|
||||
float f118 = f34 - f75;
|
||||
float f119 = f34 + f75;
|
||||
float f120 = f41 - f80;
|
||||
float f121 = f41 + f80;
|
||||
float f122 = f43 - f81;
|
||||
float f123 = f43 + f81;
|
||||
float f124 = f40 - f86;
|
||||
float f125 = f40 + f86;
|
||||
float f126 = f42 - f87;
|
||||
float f127 = f42 + f87;
|
||||
float f128 = f49 - f92;
|
||||
float f129 = f49 + f92;
|
||||
float f130 = f51 - f93;
|
||||
float f131 = f51 + f93;
|
||||
float f132 = f48 - f98;
|
||||
float f133 = f48 + f98;
|
||||
float f134 = f50 - f99;
|
||||
float f135 = f50 + f99;
|
||||
float f136 = f57 - f104;
|
||||
float f137 = f57 + f104;
|
||||
float f138 = f59 - f105;
|
||||
float f139 = f59 + f105;
|
||||
float f140 = f56 - f110;
|
||||
float f141 = f56 + f110;
|
||||
float f142 = f58 - f111;
|
||||
float f143 = f58 + f111;
|
||||
float f144 = f123 + f121;
|
||||
float f145 = -0.78569496F * f123;
|
||||
float f146 = 0.98078525F * f144;
|
||||
float f147 = 1.1758755F * f121;
|
||||
float f148 = f145 + f146;
|
||||
float f149 = f147 - f146;
|
||||
float f150 = f127 + f125;
|
||||
float f151 = 0.27589938F * f127;
|
||||
float f152 = 0.55557024F * f150;
|
||||
float f153 = 1.3870399F * f125;
|
||||
float f154 = f151 + f152;
|
||||
float f155 = f153 - f152;
|
||||
float f156 = f122 + f120;
|
||||
float f157 = 1.1758755F * f122;
|
||||
float f158 = -0.19509032F * f156;
|
||||
float f159 = 0.78569496F * f120;
|
||||
float f160 = f157 + f158;
|
||||
float f161 = f159 - f158;
|
||||
float f162 = f126 + f124;
|
||||
float f163 = 1.3870399F * f126;
|
||||
float f164 = -0.8314696F * f162;
|
||||
float f165 = -0.27589938F * f124;
|
||||
float f166 = f163 + f164;
|
||||
float f167 = f165 - f164;
|
||||
float f168 = f139 + f137;
|
||||
float f169 = -0.78569496F * f139;
|
||||
float f170 = 0.98078525F * f168;
|
||||
float f171 = 1.1758755F * f137;
|
||||
float f172 = f169 + f170;
|
||||
float f173 = f171 - f170;
|
||||
float f174 = f143 + f141;
|
||||
float f175 = 0.27589938F * f143;
|
||||
float f176 = 0.55557024F * f174;
|
||||
float f177 = 1.3870399F * f141;
|
||||
float f178 = f175 + f176;
|
||||
float f179 = f177 - f176;
|
||||
float f180 = f138 + f136;
|
||||
float f181 = 1.1758755F * f138;
|
||||
float f182 = -0.19509032F * f180;
|
||||
float f183 = 0.78569496F * f136;
|
||||
float f184 = f181 + f182;
|
||||
float f185 = f183 - f182;
|
||||
float f186 = f142 + f140;
|
||||
float f187 = 1.3870399F * f142;
|
||||
float f188 = -0.8314696F * f186;
|
||||
float f189 = -0.27589938F * f140;
|
||||
float f190 = f187 + f188;
|
||||
float f191 = f189 - f188;
|
||||
float f192 = f113 - f148;
|
||||
float f193 = f113 + f148;
|
||||
float f194 = f115 - f149;
|
||||
float f195 = f115 + f149;
|
||||
float f196 = f117 - f154;
|
||||
float f197 = f117 + f154;
|
||||
float f198 = f119 - f155;
|
||||
float f199 = f119 + f155;
|
||||
float f200 = f112 - f160;
|
||||
float f201 = f112 + f160;
|
||||
float f202 = f114 - f161;
|
||||
float f203 = f114 + f161;
|
||||
float f204 = f116 - f166;
|
||||
float f205 = f116 + f166;
|
||||
float f206 = f118 - f167;
|
||||
float f207 = f118 + f167;
|
||||
float f208 = f129 - f172;
|
||||
float f209 = f129 + f172;
|
||||
float f210 = f131 - f173;
|
||||
float f211 = f131 + f173;
|
||||
float f212 = f133 - f178;
|
||||
float f213 = f133 + f178;
|
||||
float f214 = f135 - f179;
|
||||
float f215 = f135 + f179;
|
||||
float f216 = f128 - f184;
|
||||
float f217 = f128 + f184;
|
||||
float f218 = f130 - f185;
|
||||
float f219 = f130 + f185;
|
||||
float f220 = f132 - f190;
|
||||
float f221 = f132 + f190;
|
||||
float f222 = f134 - f191;
|
||||
float f223 = f134 + f191;
|
||||
float f224 = f211 + f209;
|
||||
float f225 = -0.89716756F * f211;
|
||||
float f226 = 0.9951847F * f224;
|
||||
float f227 = 1.0932019F * f209;
|
||||
float f228 = f225 + f226;
|
||||
float f229 = f227 - f226;
|
||||
float f230 = f215 + f213;
|
||||
float f231 = -0.41052452F * f215;
|
||||
float f232 = 0.8819213F * f230;
|
||||
float f233 = 1.353318F * f213;
|
||||
float f234 = f231 + f232;
|
||||
float f235 = f233 - f232;
|
||||
float f236 = f219 + f217;
|
||||
float f237 = 0.13861717F * f219;
|
||||
float f238 = 0.6343933F * f236;
|
||||
float f239 = 1.4074037F * f217;
|
||||
float f240 = f237 + f238;
|
||||
float f241 = f239 - f238;
|
||||
float f242 = f223 + f221;
|
||||
float f243 = 0.66665566F * f223;
|
||||
float f244 = 0.29028466F * f242;
|
||||
float f245 = 1.247225F * f221;
|
||||
float f246 = f243 + f244;
|
||||
float f247 = f245 - f244;
|
||||
float f248 = f210 + f208;
|
||||
float f249 = 1.0932019F * f210;
|
||||
float f250 = -0.09801714F * f248;
|
||||
float f251 = 0.89716756F * f208;
|
||||
float f252 = f249 + f250;
|
||||
float f253 = f251 - f250;
|
||||
float f254 = f214 + f212;
|
||||
float f255 = 1.353318F * f214;
|
||||
float f256 = -0.47139674F * f254;
|
||||
float f257 = 0.41052452F * f212;
|
||||
float f258 = f255 + f256;
|
||||
float f259 = f257 - f256;
|
||||
float f260 = f218 + f216;
|
||||
float f261 = 1.4074037F * f218;
|
||||
float f262 = -0.77301043F * f260;
|
||||
float f263 = -0.13861717F * f216;
|
||||
float f264 = f261 + f262;
|
||||
float f265 = f263 - f262;
|
||||
float f266 = f222 + f220;
|
||||
float f267 = 1.247225F * f222;
|
||||
float f268 = -0.95694035F * f266;
|
||||
float f269 = -0.66665566F * f220;
|
||||
float f270 = f267 + f268;
|
||||
float f271 = f269 - f268;
|
||||
float f272 = f193 - f228;
|
||||
float f273 = f193 + f228;
|
||||
float f274 = f195 - f229;
|
||||
float f275 = f195 + f229;
|
||||
float f276 = f197 - f234;
|
||||
float f277 = f197 + f234;
|
||||
float f278 = f199 - f235;
|
||||
float f279 = f199 + f235;
|
||||
float f280 = f201 - f240;
|
||||
float f281 = f201 + f240;
|
||||
float f282 = f203 - f241;
|
||||
float f283 = f203 + f241;
|
||||
float f284 = f205 - f246;
|
||||
float f285 = f205 + f246;
|
||||
float f286 = f207 - f247;
|
||||
float f287 = f207 + f247;
|
||||
float f288 = f192 - f252;
|
||||
float f289 = f192 + f252;
|
||||
float f290 = f194 - f253;
|
||||
float f291 = f194 + f253;
|
||||
float f292 = f196 - f258;
|
||||
float f293 = f196 + f258;
|
||||
float f294 = f198 - f259;
|
||||
float f295 = f198 + f259;
|
||||
float f296 = f200 - f264;
|
||||
float f297 = f200 + f264;
|
||||
float f298 = f202 - f265;
|
||||
float f299 = f202 + f265;
|
||||
float f300 = f204 - f270;
|
||||
float f301 = f204 + f270;
|
||||
float f302 = f206 - f271;
|
||||
float f303 = f206 + f271;
|
||||
float f304 = f275 + f273;
|
||||
float f305 = -0.9751576F * f275;
|
||||
float f306 = 0.9996988F * f304;
|
||||
float f307 = 1.02424F * f273;
|
||||
y[0] = f305 + f306;
|
||||
y[31] = f307 - f306;
|
||||
float f308 = f279 + f277;
|
||||
float f309 = -0.87006885F * f279;
|
||||
float f310 = 0.99247956F * f308;
|
||||
float f311 = 1.1148902F * f277;
|
||||
y[2] = f309 + f310;
|
||||
y[29] = f311 - f310;
|
||||
float f312 = f283 + f281;
|
||||
float f313 = -0.7566009F * f283;
|
||||
float f314 = 0.9757021F * f312;
|
||||
float f315 = 1.1948034F * f281;
|
||||
y[4] = f313 + f314;
|
||||
y[27] = f315 - f314;
|
||||
float f316 = f287 + f285;
|
||||
float f317 = -0.63584644F * f287;
|
||||
float f318 = 0.94952816F * f316;
|
||||
float f319 = 1.2632099F * f285;
|
||||
y[6] = f317 + f318;
|
||||
y[25] = f319 - f318;
|
||||
float f320 = f291 + f289;
|
||||
float f321 = -0.5089684F * f291;
|
||||
float f322 = 0.9142098F * f320;
|
||||
float f323 = 1.3194511F * f289;
|
||||
y[8] = f321 + f322;
|
||||
y[23] = f323 - f322;
|
||||
float f324 = f295 + f293;
|
||||
float f325 = -0.3771888F * f295;
|
||||
float f326 = 0.87008697F * f324;
|
||||
float f327 = 1.3629851F * f293;
|
||||
y[10] = f325 + f326;
|
||||
y[21] = f327 - f326;
|
||||
float f328 = f299 + f297;
|
||||
float f329 = -0.24177662F * f299;
|
||||
float f330 = 0.8175848F * f328;
|
||||
float f331 = 1.393393F * f297;
|
||||
y[12] = f329 + f330;
|
||||
y[19] = f331 - f330;
|
||||
float f332 = f303 + f301;
|
||||
float f333 = -0.104036F * f303;
|
||||
float f334 = 0.7572088F * f332;
|
||||
float f335 = 1.4103817F * f301;
|
||||
y[14] = f333 + f334;
|
||||
y[17] = f335 - f334;
|
||||
float f336 = f274 + f272;
|
||||
float f337 = 0.034706537F * f274;
|
||||
float f338 = 0.68954057F * f336;
|
||||
float f339 = 1.4137876F * f272;
|
||||
y[16] = f337 + f338;
|
||||
y[15] = f339 - f338;
|
||||
float f340 = f278 + f276;
|
||||
float f341 = 0.17311484F * f278;
|
||||
float f342 = 0.6152316F * f340;
|
||||
float f343 = 1.403578F * f276;
|
||||
y[18] = f341 + f342;
|
||||
y[13] = f343 - f342;
|
||||
float f344 = f282 + f280;
|
||||
float f345 = 0.30985594F * f282;
|
||||
float f346 = 0.53499764F * f344;
|
||||
float f347 = 1.3798512F * f280;
|
||||
y[20] = f345 + f346;
|
||||
y[11] = f347 - f346;
|
||||
float f348 = f286 + f284;
|
||||
float f349 = 0.44361296F * f286;
|
||||
float f350 = 0.44961134F * f348;
|
||||
float f351 = 1.3428357F * f284;
|
||||
y[22] = f349 + f350;
|
||||
y[9] = f351 - f350;
|
||||
float f352 = f290 + f288;
|
||||
float f353 = 0.57309777F * f290;
|
||||
float f354 = 0.35989505F * f352;
|
||||
float f355 = 1.2928878F * f288;
|
||||
y[24] = f353 + f354;
|
||||
y[7] = f355 - f354;
|
||||
float f356 = f294 + f292;
|
||||
float f357 = 0.6970633F * f294;
|
||||
float f358 = 0.26671275F * f356;
|
||||
float f359 = 1.2304888F * f292;
|
||||
y[26] = f357 + f358;
|
||||
y[5] = f359 - f358;
|
||||
float f360 = f298 + f296;
|
||||
float f361 = 0.81431574F * f298;
|
||||
float f362 = 0.17096189F * f360;
|
||||
float f363 = 1.1562395F * f296;
|
||||
y[28] = f361 + f362;
|
||||
y[3] = f363 - f362;
|
||||
float f364 = f302 + f300;
|
||||
float f365 = 0.9237259F * f302;
|
||||
float f366 = 0.07356457F * f364;
|
||||
float f367 = 1.070855F * f300;
|
||||
y[30] = f365 + f366;
|
||||
y[1] = f367 - f366;
|
||||
}
|
||||
|
||||
private void DST4_32(float[] y, float[] x) {
|
||||
float f0 = x[0] - x[1];
|
||||
float f1 = x[2] - x[1];
|
||||
float f2 = x[2] - x[3];
|
||||
float f3 = x[4] - x[3];
|
||||
float f4 = x[4] - x[5];
|
||||
float f5 = x[6] - x[5];
|
||||
float f6 = x[6] - x[7];
|
||||
float f7 = x[8] - x[7];
|
||||
float f8 = x[8] - x[9];
|
||||
float f9 = x[10] - x[9];
|
||||
float f10 = x[10] - x[11];
|
||||
float f11 = x[12] - x[11];
|
||||
float f12 = x[12] - x[13];
|
||||
float f13 = x[14] - x[13];
|
||||
float f14 = x[14] - x[15];
|
||||
float f15 = x[16] - x[15];
|
||||
float f16 = x[16] - x[17];
|
||||
float f17 = x[18] - x[17];
|
||||
float f18 = x[18] - x[19];
|
||||
float f19 = x[20] - x[19];
|
||||
float f20 = x[20] - x[21];
|
||||
float f21 = x[22] - x[21];
|
||||
float f22 = x[22] - x[23];
|
||||
float f23 = x[24] - x[23];
|
||||
float f24 = x[24] - x[25];
|
||||
float f25 = x[26] - x[25];
|
||||
float f26 = x[26] - x[27];
|
||||
float f27 = x[28] - x[27];
|
||||
float f28 = x[28] - x[29];
|
||||
float f29 = x[30] - x[29];
|
||||
float f30 = x[30] - x[31];
|
||||
float f31 = 0.70710677F * f15;
|
||||
float f32 = x[0] - f31;
|
||||
float f33 = x[0] + f31;
|
||||
float f34 = f7 + f23;
|
||||
float f35 = 1.306563F * f7;
|
||||
float f36 = -0.9238795F * f34;
|
||||
float f37 = -0.5411961F * f23;
|
||||
float f38 = f35 + f36;
|
||||
float f39 = f37 - f36;
|
||||
float f40 = f33 - f39;
|
||||
float f41 = f33 + f39;
|
||||
float f42 = f32 - f38;
|
||||
float f43 = f32 + f38;
|
||||
float f44 = f11 - f19;
|
||||
float f45 = f11 + f19;
|
||||
float f46 = 0.70710677F * f45;
|
||||
float f47 = f3 - f46;
|
||||
float f48 = f3 + f46;
|
||||
float f49 = 0.70710677F * f44;
|
||||
float f50 = f49 - f27;
|
||||
float f51 = f49 + f27;
|
||||
float f52 = f51 + f48;
|
||||
float f53 = -0.78569496F * f51;
|
||||
float f54 = 0.98078525F * f52;
|
||||
float f55 = 1.1758755F * f48;
|
||||
float f56 = f53 + f54;
|
||||
float f57 = f55 - f54;
|
||||
float f58 = f50 + f47;
|
||||
float f59 = -0.27589938F * f50;
|
||||
float f60 = 0.8314696F * f58;
|
||||
float f61 = 1.3870399F * f47;
|
||||
float f62 = f59 + f60;
|
||||
float f63 = f61 - f60;
|
||||
float f64 = f41 - f56;
|
||||
float f65 = f41 + f56;
|
||||
float f66 = f43 - f62;
|
||||
float f67 = f43 + f62;
|
||||
float f68 = f42 - f63;
|
||||
float f69 = f42 + f63;
|
||||
float f70 = f40 - f57;
|
||||
float f71 = f40 + f57;
|
||||
float f72 = f5 - f9;
|
||||
float f73 = f5 + f9;
|
||||
float f74 = f13 - f17;
|
||||
float f75 = f13 + f17;
|
||||
float f76 = f21 - f25;
|
||||
float f77 = f21 + f25;
|
||||
float f78 = 0.70710677F * f75;
|
||||
float f79 = f1 - f78;
|
||||
float f80 = f1 + f78;
|
||||
float f81 = f73 + f77;
|
||||
float f82 = 1.306563F * f73;
|
||||
float f83 = -0.9238795F * f81;
|
||||
float f84 = -0.5411961F * f77;
|
||||
float f85 = f82 + f83;
|
||||
float f86 = f84 - f83;
|
||||
float f87 = f80 - f86;
|
||||
float f88 = f80 + f86;
|
||||
float f89 = f79 - f85;
|
||||
float f90 = f79 + f85;
|
||||
float f91 = 0.70710677F * f74;
|
||||
float f92 = f29 - f91;
|
||||
float f93 = f29 + f91;
|
||||
float f94 = f76 + f72;
|
||||
float f95 = 1.306563F * f76;
|
||||
float f96 = -0.9238795F * f94;
|
||||
float f97 = -0.5411961F * f72;
|
||||
float f98 = f95 + f96;
|
||||
float f99 = f97 - f96;
|
||||
float f100 = f93 - f99;
|
||||
float f101 = f93 + f99;
|
||||
float f102 = f92 - f98;
|
||||
float f103 = f92 + f98;
|
||||
float f104 = f101 + f88;
|
||||
float f105 = -0.89716756F * f101;
|
||||
float f106 = 0.9951847F * f104;
|
||||
float f107 = 1.0932019F * f88;
|
||||
float f108 = f105 + f106;
|
||||
float f109 = f107 - f106;
|
||||
float f110 = f90 - f103;
|
||||
float f111 = -0.66665566F * f103;
|
||||
float f112 = 0.95694035F * f110;
|
||||
float f113 = 1.247225F * f90;
|
||||
float f114 = f112 - f111;
|
||||
float f115 = f113 - f112;
|
||||
float f116 = f102 + f89;
|
||||
float f117 = -0.41052452F * f102;
|
||||
float f118 = 0.8819213F * f116;
|
||||
float f119 = 1.353318F * f89;
|
||||
float f120 = f117 + f118;
|
||||
float f121 = f119 - f118;
|
||||
float f122 = f87 - f100;
|
||||
float f123 = -0.13861717F * f100;
|
||||
float f124 = 0.77301043F * f122;
|
||||
float f125 = 1.4074037F * f87;
|
||||
float f126 = f124 - f123;
|
||||
float f127 = f125 - f124;
|
||||
float f128 = f65 - f108;
|
||||
float f129 = f65 + f108;
|
||||
float f130 = f67 - f114;
|
||||
float f131 = f67 + f114;
|
||||
float f132 = f69 - f120;
|
||||
float f133 = f69 + f120;
|
||||
float f134 = f71 - f126;
|
||||
float f135 = f71 + f126;
|
||||
float f136 = f70 - f127;
|
||||
float f137 = f70 + f127;
|
||||
float f138 = f68 - f121;
|
||||
float f139 = f68 + f121;
|
||||
float f140 = f66 - f115;
|
||||
float f141 = f66 + f115;
|
||||
float f142 = f64 - f109;
|
||||
float f143 = f64 + f109;
|
||||
float f144 = f0 + f30;
|
||||
float f145 = 1.0478631F * f0;
|
||||
float f146 = -0.99879545F * f144;
|
||||
float f147 = -0.9497278F * f30;
|
||||
float f148 = f145 + f146;
|
||||
float f149 = f147 - f146;
|
||||
float f150 = f4 + f26;
|
||||
float f151 = 1.2130114F * f4;
|
||||
float f152 = -0.97003126F * f150;
|
||||
float f153 = -0.7270511F * f26;
|
||||
float f154 = f151 + f152;
|
||||
float f155 = f153 - f152;
|
||||
float f156 = f8 + f22;
|
||||
float f157 = 1.3315444F * f8;
|
||||
float f158 = -0.9039893F * f156;
|
||||
float f159 = -0.4764342F * f22;
|
||||
float f160 = f157 + f158;
|
||||
float f161 = f159 - f158;
|
||||
float f162 = f12 + f18;
|
||||
float f163 = 1.3989068F * f12;
|
||||
float f164 = -0.8032075F * f162;
|
||||
float f165 = -0.20750822F * f18;
|
||||
float f166 = f163 + f164;
|
||||
float f167 = f165 - f164;
|
||||
float f168 = f16 + f14;
|
||||
float f169 = 1.41251F * f16;
|
||||
float f170 = -0.671559F * f168;
|
||||
float f171 = 0.06939217F * f14;
|
||||
float f172 = f169 + f170;
|
||||
float f173 = f171 - f170;
|
||||
float f174 = f20 + f10;
|
||||
float f175 = 1.3718313F * f20;
|
||||
float f176 = -0.51410276F * f174;
|
||||
float f177 = 0.34362587F * f10;
|
||||
float f178 = f175 + f176;
|
||||
float f179 = f177 - f176;
|
||||
float f180 = f24 + f6;
|
||||
float f181 = 1.2784339F * f24;
|
||||
float f182 = -0.33688986F * f180;
|
||||
float f183 = 0.6046542F * f6;
|
||||
float f184 = f181 + f182;
|
||||
float f185 = f183 - f182;
|
||||
float f186 = f28 + f2;
|
||||
float f187 = 1.1359069F * f28;
|
||||
float f188 = -0.14673047F * f186;
|
||||
float f189 = 0.842446F * f2;
|
||||
float f190 = f187 + f188;
|
||||
float f191 = f189 - f188;
|
||||
float f192 = f149 - f173;
|
||||
float f193 = f149 + f173;
|
||||
float f194 = f148 - f172;
|
||||
float f195 = f148 + f172;
|
||||
float f196 = f155 - f179;
|
||||
float f197 = f155 + f179;
|
||||
float f198 = f154 - f178;
|
||||
float f199 = f154 + f178;
|
||||
float f200 = f161 - f185;
|
||||
float f201 = f161 + f185;
|
||||
float f202 = f160 - f184;
|
||||
float f203 = f160 + f184;
|
||||
float f204 = f167 - f191;
|
||||
float f205 = f167 + f191;
|
||||
float f206 = f166 - f190;
|
||||
float f207 = f166 + f190;
|
||||
float f208 = f192 + f194;
|
||||
float f209 = 1.1758755F * f192;
|
||||
float f210 = -0.98078525F * f208;
|
||||
float f211 = -0.78569496F * f194;
|
||||
float f212 = f209 + f210;
|
||||
float f213 = f211 - f210;
|
||||
float f214 = f196 + f198;
|
||||
float f215 = 1.3870399F * f196;
|
||||
float f216 = -0.55557024F * f214;
|
||||
float f217 = 0.27589938F * f198;
|
||||
float f218 = f215 + f216;
|
||||
float f219 = f217 - f216;
|
||||
float f220 = f200 + f202;
|
||||
float f221 = 0.78569496F * f200;
|
||||
float f222 = 0.19509032F * f220;
|
||||
float f223 = 1.1758755F * f202;
|
||||
float f224 = f221 + f222;
|
||||
float f225 = f223 - f222;
|
||||
float f226 = f204 + f206;
|
||||
float f227 = -0.27589938F * f204;
|
||||
float f228 = 0.8314696F * f226;
|
||||
float f229 = 1.3870399F * f206;
|
||||
float f230 = f227 + f228;
|
||||
float f231 = f229 - f228;
|
||||
float f232 = f193 - f201;
|
||||
float f233 = f193 + f201;
|
||||
float f234 = f195 - f203;
|
||||
float f235 = f195 + f203;
|
||||
float f236 = f197 - f205;
|
||||
float f237 = f197 + f205;
|
||||
float f238 = f199 - f207;
|
||||
float f239 = f199 + f207;
|
||||
float f240 = f213 - f225;
|
||||
float f241 = f213 + f225;
|
||||
float f242 = f212 - f224;
|
||||
float f243 = f212 + f224;
|
||||
float f244 = f219 - f231;
|
||||
float f245 = f219 + f231;
|
||||
float f246 = f218 - f230;
|
||||
float f247 = f218 + f230;
|
||||
float f248 = f232 + f234;
|
||||
float f249 = 1.306563F * f232;
|
||||
float f250 = -0.9238795F * f248;
|
||||
float f251 = -0.5411961F * f234;
|
||||
float f252 = f249 + f250;
|
||||
float f253 = f251 - f250;
|
||||
float f254 = f236 + f238;
|
||||
float f255 = 0.5411961F * f236;
|
||||
float f256 = 0.38268343F * f254;
|
||||
float f257 = 1.306563F * f238;
|
||||
float f258 = f255 + f256;
|
||||
float f259 = f257 - f256;
|
||||
float f260 = f240 + f242;
|
||||
float f261 = 1.306563F * f240;
|
||||
float f262 = -0.9238795F * f260;
|
||||
float f263 = -0.5411961F * f242;
|
||||
float f264 = f261 + f262;
|
||||
float f265 = f263 - f262;
|
||||
float f266 = f244 + f246;
|
||||
float f267 = 0.5411961F * f244;
|
||||
float f268 = 0.38268343F * f266;
|
||||
float f269 = 1.306563F * f246;
|
||||
float f270 = f267 + f268;
|
||||
float f271 = f269 - f268;
|
||||
float f272 = f233 - f237;
|
||||
float f273 = f233 + f237;
|
||||
float f274 = f235 - f239;
|
||||
float f275 = f235 + f239;
|
||||
float f276 = f253 - f259;
|
||||
float f277 = f253 + f259;
|
||||
float f278 = f252 - f258;
|
||||
float f279 = f252 + f258;
|
||||
float f280 = f241 - f245;
|
||||
float f281 = f241 + f245;
|
||||
float f282 = f243 - f247;
|
||||
float f283 = f243 + f247;
|
||||
float f284 = f265 - f271;
|
||||
float f285 = f265 + f271;
|
||||
float f286 = f264 - f270;
|
||||
float f287 = f264 + f270;
|
||||
float f288 = f272 - f274;
|
||||
float f289 = f272 + f274;
|
||||
float f290 = 0.70710677F * f288;
|
||||
float f291 = 0.70710677F * f289;
|
||||
float f292 = f276 - f278;
|
||||
float f293 = f276 + f278;
|
||||
float f294 = 0.70710677F * f292;
|
||||
float f295 = 0.70710677F * f293;
|
||||
float f296 = f280 - f282;
|
||||
float f297 = f280 + f282;
|
||||
float f298 = 0.70710677F * f296;
|
||||
float f299 = 0.70710677F * f297;
|
||||
float f300 = f284 - f286;
|
||||
float f301 = f284 + f286;
|
||||
float f302 = 0.70710677F * f300;
|
||||
float f303 = 0.70710677F * f301;
|
||||
float f304 = f129 - f273;
|
||||
float f305 = f129 + f273;
|
||||
float f306 = f131 - f281;
|
||||
float f307 = f131 + f281;
|
||||
float f308 = f133 - f285;
|
||||
float f309 = f133 + f285;
|
||||
float f310 = f135 - f277;
|
||||
float f311 = f135 + f277;
|
||||
float f312 = f137 - f295;
|
||||
float f313 = f137 + f295;
|
||||
float f314 = f139 - f303;
|
||||
float f315 = f139 + f303;
|
||||
float f316 = f141 - f299;
|
||||
float f317 = f141 + f299;
|
||||
float f318 = f143 - f291;
|
||||
float f319 = f143 + f291;
|
||||
float f320 = f142 - f290;
|
||||
float f321 = f142 + f290;
|
||||
float f322 = f140 - f298;
|
||||
float f323 = f140 + f298;
|
||||
float f324 = f138 - f302;
|
||||
float f325 = f138 + f302;
|
||||
float f326 = f136 - f294;
|
||||
float f327 = f136 + f294;
|
||||
float f328 = f134 - f279;
|
||||
float f329 = f134 + f279;
|
||||
float f330 = f132 - f287;
|
||||
float f331 = f132 + f287;
|
||||
float f332 = f130 - f283;
|
||||
float f333 = f130 + f283;
|
||||
float f334 = f128 - f275;
|
||||
float f335 = f128 + f275;
|
||||
y[31] = 0.5001506F * f305;
|
||||
y[30] = 0.50135845F * f307;
|
||||
y[29] = 0.5037887F * f309;
|
||||
y[28] = 0.50747114F * f311;
|
||||
y[27] = 0.51245147F * f313;
|
||||
y[26] = 0.5187927F * f315;
|
||||
y[25] = 0.5265773F * f317;
|
||||
y[24] = 0.53590983F * f319;
|
||||
y[23] = 0.5469204F * f321;
|
||||
y[22] = 0.5597698F * f323;
|
||||
y[21] = 0.5746552F * f325;
|
||||
y[20] = 0.5918185F * f327;
|
||||
y[19] = 0.61155736F * f329;
|
||||
y[18] = 0.63423896F * f331;
|
||||
y[17] = 0.6603198F * f333;
|
||||
y[16] = 0.6903721F * f335;
|
||||
y[15] = 0.72512054F * f334;
|
||||
y[14] = 0.76549417F * f332;
|
||||
y[13] = 0.8127021F * f330;
|
||||
y[12] = 0.8683447F * f328;
|
||||
y[11] = 0.9345836F * f326;
|
||||
y[10] = 1.0144082F * f324;
|
||||
y[9] = 1.1120716F * f322;
|
||||
y[8] = 1.2338327F * f320;
|
||||
y[7] = 1.3892939F * f318;
|
||||
y[6] = 1.5939723F * f316;
|
||||
y[5] = 1.874676F * f314;
|
||||
y[4] = 2.2820501F * f312;
|
||||
y[3] = 2.9246285F * f310;
|
||||
y[2] = 4.084611F * f308;
|
||||
y[1] = 6.7967505F * f306;
|
||||
y[0] = 20.373878F * f304;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
package net.sourceforge.jaad.aac.sbr;
|
||||
|
||||
class TFGrid implements SBRConstants {
|
||||
public static int envelope_time_border_vector(SBR sbr, int ch) {
|
||||
int temp;
|
||||
int[] t_E_temp = new int[6];
|
||||
t_E_temp[0] = sbr.rate * sbr.abs_bord_lead[ch];
|
||||
t_E_temp[sbr.L_E[ch]] = sbr.rate * sbr.abs_bord_trail[ch];
|
||||
switch (sbr.bs_frame_class[ch]) {
|
||||
case 0:
|
||||
switch (sbr.L_E[ch]) {
|
||||
case 4:
|
||||
temp = sbr.numTimeSlots / 4;
|
||||
t_E_temp[3] = sbr.rate * 3 * temp;
|
||||
t_E_temp[2] = sbr.rate * 2 * temp;
|
||||
t_E_temp[1] = sbr.rate * temp;
|
||||
break;
|
||||
case 2:
|
||||
t_E_temp[1] = sbr.rate * sbr.numTimeSlots / 2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sbr.L_E[ch] > 1) {
|
||||
int i = sbr.L_E[ch];
|
||||
int border = sbr.abs_bord_trail[ch];
|
||||
for (int j = 0; j < sbr.L_E[ch] - 1; j++) {
|
||||
if (border < sbr.bs_rel_bord[ch][j])
|
||||
return 1;
|
||||
border -= sbr.bs_rel_bord[ch][j];
|
||||
t_E_temp[--i] = sbr.rate * border;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sbr.L_E[ch] > 1) {
|
||||
int i = 1;
|
||||
int border = sbr.abs_bord_lead[ch];
|
||||
for (int j = 0; j < sbr.L_E[ch] - 1; j++) {
|
||||
border += sbr.bs_rel_bord[ch][j];
|
||||
if (sbr.rate * border + sbr.tHFAdj > sbr.numTimeSlotsRate + sbr.tHFGen)
|
||||
return 1;
|
||||
t_E_temp[i++] = sbr.rate * border;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (sbr.bs_num_rel_0[ch] != 0) {
|
||||
int i = 1;
|
||||
int border = sbr.abs_bord_lead[ch];
|
||||
for (int j = 0; j < sbr.bs_num_rel_0[ch]; j++) {
|
||||
border += sbr.bs_rel_bord_0[ch][j];
|
||||
if (sbr.rate * border + sbr.tHFAdj > sbr.numTimeSlotsRate + sbr.tHFGen)
|
||||
return 1;
|
||||
t_E_temp[i++] = sbr.rate * border;
|
||||
}
|
||||
}
|
||||
if (sbr.bs_num_rel_1[ch] != 0) {
|
||||
int i = sbr.L_E[ch];
|
||||
int border = sbr.abs_bord_trail[ch];
|
||||
for (int j = 0; j < sbr.bs_num_rel_1[ch]; j++) {
|
||||
if (border < sbr.bs_rel_bord_1[ch][j])
|
||||
return 1;
|
||||
border -= sbr.bs_rel_bord_1[ch][j];
|
||||
t_E_temp[--i] = sbr.rate * border;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
for (int l = 0; l < 6; l++)
|
||||
sbr.t_E[ch][l] = t_E_temp[l];
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void noise_floor_time_border_vector(SBR sbr, int ch) {
|
||||
sbr.t_Q[ch][0] = sbr.t_E[ch][0];
|
||||
if (sbr.L_E[ch] == 1) {
|
||||
sbr.t_Q[ch][1] = sbr.t_E[ch][1];
|
||||
sbr.t_Q[ch][2] = 0;
|
||||
} else {
|
||||
int index = middleBorder(sbr, ch);
|
||||
sbr.t_Q[ch][1] = sbr.t_E[ch][index];
|
||||
sbr.t_Q[ch][2] = sbr.t_E[ch][sbr.L_E[ch]];
|
||||
}
|
||||
}
|
||||
|
||||
private static int middleBorder(SBR sbr, int ch) {
|
||||
int retval = 0;
|
||||
switch (sbr.bs_frame_class[ch]) {
|
||||
case 0:
|
||||
retval = sbr.L_E[ch] / 2;
|
||||
break;
|
||||
case 2:
|
||||
if (sbr.bs_pointer[ch] == 0) {
|
||||
retval = 1;
|
||||
} else if (sbr.bs_pointer[ch] == 1) {
|
||||
retval = sbr.L_E[ch] - 1;
|
||||
} else {
|
||||
retval = sbr.bs_pointer[ch] - 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
if (sbr.bs_pointer[ch] > 1) {
|
||||
retval = sbr.L_E[ch] + 1 - sbr.bs_pointer[ch];
|
||||
} else {
|
||||
retval = sbr.L_E[ch] - 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return (retval > 0) ? retval : 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
public class BitStream implements IBitStream {
|
||||
private static final int WORD_BITS = 32;
|
||||
|
||||
private static final int WORD_BYTES = 4;
|
||||
|
||||
private static final int BYTE_MASK = 255;
|
||||
|
||||
private byte[] buffer;
|
||||
|
||||
private int pos;
|
||||
|
||||
private int cache;
|
||||
|
||||
protected int bitsCached;
|
||||
|
||||
protected int position;
|
||||
|
||||
public static BitStream createBitStream(byte[] data) {
|
||||
BitStream bs = new BitStream();
|
||||
bs.setData(data);
|
||||
return bs;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
reset();
|
||||
this.buffer = null;
|
||||
}
|
||||
|
||||
public final void setData(byte[] data) {
|
||||
int size = 4 * (data.length + 4 - 1) / 4;
|
||||
if (this.buffer == null || this.buffer.length != size)
|
||||
this.buffer = new byte[size];
|
||||
System.arraycopy(data, 0, this.buffer, 0, data.length);
|
||||
reset();
|
||||
}
|
||||
|
||||
public void byteAlign() throws AACException {
|
||||
int toFlush = this.bitsCached & 0x7;
|
||||
if (toFlush > 0)
|
||||
skipBits(toFlush);
|
||||
}
|
||||
|
||||
public final void reset() {
|
||||
this.pos = 0;
|
||||
this.bitsCached = 0;
|
||||
this.cache = 0;
|
||||
this.position = 0;
|
||||
}
|
||||
|
||||
public int getPosition() {
|
||||
return this.position;
|
||||
}
|
||||
|
||||
public int getBitsLeft() {
|
||||
return (this.buffer != null) ? (8 * (this.buffer.length - this.pos) + this.bitsCached) : 0;
|
||||
}
|
||||
|
||||
protected int readCache(boolean peek) throws AACException {
|
||||
if (this.pos > this.buffer.length - 4)
|
||||
throw AACException.endOfStream();
|
||||
int i = (this.buffer[this.pos] & 0xFF) << 24 | (this.buffer[this.pos + 1] & 0xFF) << 16 | (this.buffer[this.pos + 2] & 0xFF) << 8 | this.buffer[this.pos + 3] & 0xFF;
|
||||
if (!peek)
|
||||
this.pos += 4;
|
||||
return i;
|
||||
}
|
||||
|
||||
public int readBits(int n) throws AACException {
|
||||
int result;
|
||||
if (this.bitsCached >= n) {
|
||||
this.bitsCached -= n;
|
||||
result = this.cache >> this.bitsCached & maskBits(n);
|
||||
this.position += n;
|
||||
} else {
|
||||
this.position += n;
|
||||
int c = this.cache & maskBits(this.bitsCached);
|
||||
int left = n - this.bitsCached;
|
||||
this.cache = readCache(false);
|
||||
this.bitsCached = 32 - left;
|
||||
result = this.cache >> this.bitsCached & maskBits(left) | c << left;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public int readBit() throws AACException {
|
||||
int i;
|
||||
if (this.bitsCached > 0) {
|
||||
this.bitsCached--;
|
||||
i = this.cache >> this.bitsCached & 0x1;
|
||||
this.position++;
|
||||
} else {
|
||||
this.cache = readCache(false);
|
||||
this.bitsCached = 31;
|
||||
this.position++;
|
||||
i = this.cache >> this.bitsCached & 0x1;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public boolean readBool() throws AACException {
|
||||
return ((readBit() & 0x1) != 0);
|
||||
}
|
||||
|
||||
public int peekBits(int n) throws AACException {
|
||||
int ret;
|
||||
if (this.bitsCached >= n) {
|
||||
ret = this.cache >> this.bitsCached - n & maskBits(n);
|
||||
} else {
|
||||
int c = this.cache & maskBits(this.bitsCached);
|
||||
n -= this.bitsCached;
|
||||
ret = readCache(true) >> 32 - n & maskBits(n) | c << n;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public int peekBit() throws AACException {
|
||||
int ret;
|
||||
if (this.bitsCached > 0) {
|
||||
ret = this.cache >> this.bitsCached - 1 & 0x1;
|
||||
} else {
|
||||
int word = readCache(true);
|
||||
ret = word >> 31 & 0x1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void skipBits(int n) throws AACException {
|
||||
this.position += n;
|
||||
if (n <= this.bitsCached) {
|
||||
this.bitsCached -= n;
|
||||
} else {
|
||||
n -= this.bitsCached;
|
||||
while (n >= 32) {
|
||||
n -= 32;
|
||||
readCache(false);
|
||||
}
|
||||
if (n > 0) {
|
||||
this.cache = readCache(false);
|
||||
this.bitsCached = 32 - n;
|
||||
} else {
|
||||
this.cache = 0;
|
||||
this.bitsCached = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void skipBit() throws AACException {
|
||||
this.position++;
|
||||
if (this.bitsCached > 0) {
|
||||
this.bitsCached--;
|
||||
} else {
|
||||
this.cache = readCache(false);
|
||||
this.bitsCached = 31;
|
||||
}
|
||||
}
|
||||
|
||||
public int maskBits(int n) {
|
||||
int i;
|
||||
if (n == 32) {
|
||||
i = -1;
|
||||
} else {
|
||||
i = (1 << n) - 1;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.huffman.Huffman;
|
||||
|
||||
class CCE extends Element implements SyntaxConstants {
|
||||
public static final int BEFORE_TNS = 0;
|
||||
|
||||
public static final int AFTER_TNS = 1;
|
||||
|
||||
public static final int AFTER_IMDCT = 2;
|
||||
|
||||
private static final float[] CCE_SCALE = new float[] { 1.0905077F, 1.1892071F, 1.4142135F, 2.0F };
|
||||
|
||||
private final ICStream ics;
|
||||
|
||||
private float[] iqData;
|
||||
|
||||
private int couplingPoint;
|
||||
|
||||
private int coupledCount;
|
||||
|
||||
private final boolean[] channelPair;
|
||||
|
||||
private final int[] idSelect;
|
||||
|
||||
private final int[] chSelect;
|
||||
|
||||
private final float[][] gain;
|
||||
|
||||
CCE(int frameLength) {
|
||||
this.ics = new ICStream(frameLength);
|
||||
this.channelPair = new boolean[8];
|
||||
this.idSelect = new int[8];
|
||||
this.chSelect = new int[8];
|
||||
this.gain = new float[16][120];
|
||||
}
|
||||
|
||||
int getCouplingPoint() {
|
||||
return this.couplingPoint;
|
||||
}
|
||||
|
||||
int getCoupledCount() {
|
||||
return this.coupledCount;
|
||||
}
|
||||
|
||||
boolean isChannelPair(int index) {
|
||||
return this.channelPair[index];
|
||||
}
|
||||
|
||||
int getIDSelect(int index) {
|
||||
return this.idSelect[index];
|
||||
}
|
||||
|
||||
int getCHSelect(int index) {
|
||||
return this.chSelect[index];
|
||||
}
|
||||
|
||||
void decode(IBitStream _in, AACDecoderConfig conf) throws AACException {
|
||||
this.couplingPoint = 2 * _in.readBit();
|
||||
this.coupledCount = _in.readBits(3);
|
||||
int gainCount = 0;
|
||||
for (int j = 0; j <= this.coupledCount; j++) {
|
||||
gainCount++;
|
||||
this.channelPair[j] = _in.readBool();
|
||||
this.idSelect[j] = _in.readBits(4);
|
||||
if (this.channelPair[j]) {
|
||||
this.chSelect[j] = _in.readBits(2);
|
||||
if (this.chSelect[j] == 3)
|
||||
gainCount++;
|
||||
} else {
|
||||
this.chSelect[j] = 2;
|
||||
}
|
||||
}
|
||||
this.couplingPoint += _in.readBit();
|
||||
this.couplingPoint |= this.couplingPoint >> 1;
|
||||
boolean sign = _in.readBool();
|
||||
double scale = (double)CCE_SCALE[_in.readBits(2)];
|
||||
this.ics.decode(_in, false, conf);
|
||||
ICSInfo info = this.ics.getInfo();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[][] sfbCB = { {} };
|
||||
for (int i = 0; i < gainCount; i++) {
|
||||
int idx = 0;
|
||||
int cge = 1;
|
||||
int xg = 0;
|
||||
float gainCache = 1.0F;
|
||||
if (i > 0) {
|
||||
cge = (this.couplingPoint == 2) ? 1 : _in.readBit();
|
||||
xg = (cge == 0) ? 0 : (Huffman.decodeScaleFactor(_in) - 60);
|
||||
gainCache = (float)Math.pow(scale, (double)-xg);
|
||||
}
|
||||
if (this.couplingPoint == 2) {
|
||||
this.gain[i][0] = gainCache;
|
||||
} else {
|
||||
for (int g = 0; g < windowGroupCount; g++) {
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++, idx++) {
|
||||
if (sfbCB[g][sfb] != 0) {
|
||||
if (cge == 0) {
|
||||
int t = Huffman.decodeScaleFactor(_in) - 60;
|
||||
if (t != 0) {
|
||||
int s = 1;
|
||||
t = xg += t;
|
||||
if (!sign) {
|
||||
s -= 2 * (t & 0x1);
|
||||
t >>= 1;
|
||||
}
|
||||
gainCache = (float)(Math.pow(scale, (double)-t) * (double)s);
|
||||
}
|
||||
}
|
||||
this.gain[i][idx] = gainCache;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void process() throws AACException {
|
||||
this.iqData = this.ics.getInvQuantData();
|
||||
}
|
||||
|
||||
void applyIndependentCoupling(int index, float[] data) {
|
||||
double g = (double)this.gain[index][0];
|
||||
for (int i = 0; i < data.length; i++)
|
||||
data[i] = (float)((double)data[i] + g * (double)this.iqData[i]);
|
||||
}
|
||||
|
||||
void applyDependentCoupling(int index, float[] data) {
|
||||
ICSInfo info = this.ics.getInfo();
|
||||
int[] swbOffsets = info.getSWBOffsets();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[][] sfbCB = { {} };
|
||||
int srcOff = 0;
|
||||
int dstOff = 0;
|
||||
int idx = 0;
|
||||
for (int g = 0; g < windowGroupCount; g++) {
|
||||
int len = info.getWindowGroupLength(g);
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++, idx++) {
|
||||
if (sfbCB[g][sfb] != 0) {
|
||||
float x = this.gain[index][idx];
|
||||
for (int group = 0; group < len; group++) {
|
||||
for (int k = swbOffsets[sfb]; k < swbOffsets[sfb + 1]; k++)
|
||||
data[dstOff + group * 128 + k] = data[dstOff + group * 128 + k] + x * this.iqData[srcOff + group * 128 + k];
|
||||
}
|
||||
}
|
||||
}
|
||||
dstOff += len * 128;
|
||||
srcOff += len * 128;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import java.util.Arrays;
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.Profile;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.tools.MSMask;
|
||||
|
||||
public class CPE extends Element implements SyntaxConstants {
|
||||
private MSMask msMask;
|
||||
|
||||
private boolean[] msUsed;
|
||||
|
||||
private boolean commonWindow;
|
||||
|
||||
ICStream icsL;
|
||||
|
||||
ICStream icsR;
|
||||
|
||||
CPE(int frameLength) {
|
||||
this.msUsed = new boolean[128];
|
||||
this.icsL = new ICStream(frameLength);
|
||||
this.icsR = new ICStream(frameLength);
|
||||
}
|
||||
|
||||
void decode(IBitStream _in, AACDecoderConfig conf) throws AACException {
|
||||
Profile profile = conf.getProfile();
|
||||
SampleFrequency sf = conf.getSampleFrequency();
|
||||
if (sf.equals(SampleFrequency.SAMPLE_FREQUENCY_NONE))
|
||||
throw new AACException("invalid sample frequency");
|
||||
readElementInstanceTag(_in);
|
||||
this.commonWindow = _in.readBool();
|
||||
ICSInfo info = this.icsL.getInfo();
|
||||
if (this.commonWindow) {
|
||||
info.decode(_in, conf, this.commonWindow);
|
||||
this.icsR.getInfo().setData(info);
|
||||
this.msMask = msMaskFromInt(_in.readBits(2));
|
||||
if (this.msMask.equals(MSMask.TYPE_USED)) {
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int windowGroupCount = info.getWindowGroupCount();
|
||||
for (int idx = 0; idx < windowGroupCount * maxSFB; idx++)
|
||||
this.msUsed[idx] = _in.readBool();
|
||||
} else if (this.msMask.equals(MSMask.TYPE_ALL_1)) {
|
||||
Arrays.fill(this.msUsed, true);
|
||||
} else if (this.msMask.equals(MSMask.TYPE_ALL_0)) {
|
||||
Arrays.fill(this.msUsed, false);
|
||||
} else {
|
||||
throw new AACException("reserved MS mask type used");
|
||||
}
|
||||
} else {
|
||||
this.msMask = MSMask.TYPE_ALL_0;
|
||||
Arrays.fill(this.msUsed, false);
|
||||
}
|
||||
if (profile.isErrorResilientProfile() && info.isLTPrediction1Present() && (
|
||||
info.ltpData2Present = _in.readBool()))
|
||||
info.getLTPrediction2().decode(_in, info, profile);
|
||||
this.icsL.decode(_in, this.commonWindow, conf);
|
||||
this.icsR.decode(_in, this.commonWindow, conf);
|
||||
}
|
||||
|
||||
public ICStream getLeftChannel() {
|
||||
return this.icsL;
|
||||
}
|
||||
|
||||
public ICStream getRightChannel() {
|
||||
return this.icsR;
|
||||
}
|
||||
|
||||
public MSMask getMSMask() {
|
||||
return this.msMask;
|
||||
}
|
||||
|
||||
public boolean isMSUsed(int off) {
|
||||
return this.msUsed[off];
|
||||
}
|
||||
|
||||
public boolean isMSMaskPresent() {
|
||||
return !this.msMask.equals(MSMask.TYPE_ALL_0);
|
||||
}
|
||||
|
||||
public boolean isCommonWindow() {
|
||||
return this.commonWindow;
|
||||
}
|
||||
|
||||
public static MSMask msMaskFromInt(int i) throws AACException {
|
||||
MSMask[] values = MSMask.values();
|
||||
if (i >= values.length)
|
||||
throw new AACException("unknown MS mask type");
|
||||
return values[i];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
class DSE extends Element {
|
||||
private byte[] dataStreamBytes;
|
||||
|
||||
void decode(IBitStream _in) throws AACException {
|
||||
boolean byteAlign = _in.readBool();
|
||||
int count = _in.readBits(8);
|
||||
if (count == 255)
|
||||
count += _in.readBits(8);
|
||||
if (byteAlign)
|
||||
_in.byteAlign();
|
||||
this.dataStreamBytes = new byte[count];
|
||||
for (int i = 0; i < count; i++)
|
||||
this.dataStreamBytes[i] = (byte)_in.readBits(8);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.sbr.SBR;
|
||||
|
||||
public abstract class Element implements SyntaxConstants {
|
||||
private int elementInstanceTag;
|
||||
|
||||
private SBR sbr;
|
||||
|
||||
protected void readElementInstanceTag(IBitStream _in) throws AACException {
|
||||
this.elementInstanceTag = _in.readBits(4);
|
||||
}
|
||||
|
||||
public int getElementInstanceTag() {
|
||||
return this.elementInstanceTag;
|
||||
}
|
||||
|
||||
void decodeSBR(IBitStream _in, SampleFrequency sf, int count, boolean stereo, boolean crc, boolean downSampled, boolean smallFrames) throws AACException {
|
||||
if (this.sbr == null)
|
||||
this.sbr = new SBR(smallFrames, (this.elementInstanceTag == 1), sf, downSampled);
|
||||
this.sbr.decode(_in, count);
|
||||
}
|
||||
|
||||
boolean isSBRPresent() {
|
||||
return (this.sbr != null);
|
||||
}
|
||||
|
||||
SBR getSBR() {
|
||||
return this.sbr;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
|
||||
class FIL extends Element implements SyntaxConstants {
|
||||
private static final int TYPE_FILL = 0;
|
||||
|
||||
private static final int TYPE_FILL_DATA = 1;
|
||||
|
||||
private static final int TYPE_EXT_DATA_ELEMENT = 2;
|
||||
|
||||
private static final int TYPE_DYNAMIC_RANGE = 11;
|
||||
|
||||
private static final int TYPE_SBR_DATA = 13;
|
||||
|
||||
private static final int TYPE_SBR_DATA_CRC = 14;
|
||||
|
||||
private final boolean downSampledSBR;
|
||||
|
||||
private DynamicRangeInfo dri;
|
||||
|
||||
public static class DynamicRangeInfo {
|
||||
private static final int MAX_NBR_BANDS = 7;
|
||||
|
||||
private final boolean[] excludeMask = new boolean[7];
|
||||
|
||||
private final boolean[] additionalExcludedChannels = new boolean[7];
|
||||
|
||||
private boolean pceTagPresent;
|
||||
|
||||
private int pceInstanceTag;
|
||||
|
||||
private int tagReservedBits;
|
||||
|
||||
private boolean excludedChannelsPresent;
|
||||
|
||||
private boolean bandsPresent;
|
||||
|
||||
private int bandsIncrement;
|
||||
|
||||
private int interpolationScheme;
|
||||
|
||||
private int[] bandTop;
|
||||
|
||||
private boolean progRefLevelPresent;
|
||||
|
||||
private int progRefLevel;
|
||||
|
||||
private int progRefLevelReservedBits;
|
||||
|
||||
private boolean[] dynRngSgn;
|
||||
|
||||
private int[] dynRngCtl;
|
||||
}
|
||||
|
||||
FIL(boolean downSampledSBR) {
|
||||
this.downSampledSBR = downSampledSBR;
|
||||
}
|
||||
|
||||
void decode(IBitStream _in, Element prev, SampleFrequency sf, boolean sbrEnabled, boolean smallFrames) throws AACException {
|
||||
int count = _in.readBits(4);
|
||||
if (count == 15)
|
||||
count += _in.readBits(8) - 1;
|
||||
count *= 8;
|
||||
int cpy = count;
|
||||
int pos = _in.getPosition();
|
||||
while (count > 0)
|
||||
count = decodeExtensionPayload(_in, count, prev, sf, sbrEnabled, smallFrames);
|
||||
int pos2 = _in.getPosition() - pos;
|
||||
int bitsLeft = cpy - pos2;
|
||||
if (bitsLeft > 0) {
|
||||
_in.skipBits(pos2);
|
||||
} else if (bitsLeft < 0) {
|
||||
throw new AACException("FIL element overread: " + bitsLeft);
|
||||
}
|
||||
}
|
||||
|
||||
private int decodeExtensionPayload(IBitStream _in, int count, Element prev, SampleFrequency sf, boolean sbrEnabled, boolean smallFrames) throws AACException {
|
||||
int type = _in.readBits(4);
|
||||
int ret = count - 4;
|
||||
switch (type) {
|
||||
case 11:
|
||||
ret = decodeDynamicRangeInfo(_in, ret);
|
||||
break;
|
||||
case 13:
|
||||
case 14:
|
||||
if (sbrEnabled) {
|
||||
if (prev instanceof SCE_LFE || prev instanceof CPE || prev instanceof CCE) {
|
||||
prev.decodeSBR(_in, sf, ret, prev instanceof CPE, (type == 14), this.downSampledSBR, smallFrames);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
throw new AACException("SBR applied on unexpected element: " + String.valueOf(prev));
|
||||
}
|
||||
_in.skipBits(ret);
|
||||
ret = 0;
|
||||
default:
|
||||
_in.skipBits(ret);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
private int decodeDynamicRangeInfo(IBitStream _in, int count) throws AACException {
|
||||
if (this.dri == null)
|
||||
this.dri = new DynamicRangeInfo();
|
||||
int ret = count;
|
||||
int bandCount = 1;
|
||||
if (this.dri.pceTagPresent = _in.readBool()) {
|
||||
this.dri.pceInstanceTag = _in.readBits(4);
|
||||
this.dri.tagReservedBits = _in.readBits(4);
|
||||
}
|
||||
if (this.dri.excludedChannelsPresent = _in.readBool())
|
||||
ret -= decodeExcludedChannels(_in);
|
||||
if (this.dri.bandsPresent = _in.readBool()) {
|
||||
this.dri.bandsIncrement = _in.readBits(4);
|
||||
this.dri.interpolationScheme = _in.readBits(4);
|
||||
ret -= 8;
|
||||
bandCount += this.dri.bandsIncrement;
|
||||
this.dri.bandTop = new int[bandCount];
|
||||
for (int j = 0; j < bandCount; j++) {
|
||||
this.dri.bandTop[j] = _in.readBits(8);
|
||||
ret -= 8;
|
||||
}
|
||||
}
|
||||
if (this.dri.progRefLevelPresent = _in.readBool()) {
|
||||
this.dri.progRefLevel = _in.readBits(7);
|
||||
this.dri.progRefLevelReservedBits = _in.readBits(1);
|
||||
ret -= 8;
|
||||
}
|
||||
this.dri.dynRngSgn = new boolean[bandCount];
|
||||
this.dri.dynRngCtl = new int[bandCount];
|
||||
for (int i = 0; i < bandCount; i++) {
|
||||
this.dri.dynRngSgn[i] = _in.readBool();
|
||||
this.dri.dynRngCtl[i] = _in.readBits(7);
|
||||
ret -= 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
private int decodeExcludedChannels(IBitStream _in) throws AACException {
|
||||
int exclChs = 0;
|
||||
do {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
this.dri.excludeMask[exclChs] = _in.readBool();
|
||||
exclChs++;
|
||||
}
|
||||
} while (exclChs < 57 && _in.readBool());
|
||||
return exclChs / 7 * 8;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
public interface IBitStream {
|
||||
void destroy();
|
||||
|
||||
void setData(byte[] paramArrayOfbyte);
|
||||
|
||||
void byteAlign() throws AACException;
|
||||
|
||||
void reset();
|
||||
|
||||
int getPosition();
|
||||
|
||||
int getBitsLeft();
|
||||
|
||||
int readBits(int paramInt) throws AACException;
|
||||
|
||||
int readBit() throws AACException;
|
||||
|
||||
boolean readBool() throws AACException;
|
||||
|
||||
int peekBits(int paramInt) throws AACException;
|
||||
|
||||
int peekBit() throws AACException;
|
||||
|
||||
void skipBits(int paramInt) throws AACException;
|
||||
|
||||
void skipBit() throws AACException;
|
||||
|
||||
int maskBits(int paramInt);
|
||||
}
|
||||
|
|
@ -0,0 +1,351 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.Profile;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.filterbank.FilterBank;
|
||||
import net.sourceforge.jaad.aac.tools.ICPrediction;
|
||||
import org.jcodec.platform.Platform;
|
||||
|
||||
public class ICSInfo implements SyntaxConstants, ScaleFactorBands {
|
||||
public static final int WINDOW_SHAPE_SINE = 0;
|
||||
|
||||
public static final int WINDOW_SHAPE_KAISER = 1;
|
||||
|
||||
public static final int PREVIOUS = 0;
|
||||
|
||||
public static final int CURRENT = 1;
|
||||
|
||||
private final int frameLength;
|
||||
|
||||
private WindowSequence windowSequence;
|
||||
|
||||
private int[] windowShape;
|
||||
|
||||
private int maxSFB;
|
||||
|
||||
private boolean predictionDataPresent;
|
||||
|
||||
private ICPrediction icPredict;
|
||||
|
||||
boolean ltpData1Present;
|
||||
|
||||
boolean ltpData2Present;
|
||||
|
||||
private LTPrediction ltPredict1;
|
||||
|
||||
private LTPrediction ltPredict2;
|
||||
|
||||
private int windowCount;
|
||||
|
||||
private int windowGroupCount;
|
||||
|
||||
private int[] windowGroupLength;
|
||||
|
||||
private int swbCount;
|
||||
|
||||
private int[] swbOffsets;
|
||||
|
||||
public static class LTPrediction implements SyntaxConstants {
|
||||
private static final float[] CODEBOOK = new float[] { 0.570829F, 0.696616F, 0.813004F, 0.911304F, 0.9849F, 1.067894F, 1.194601F, 1.369533F };
|
||||
|
||||
private final int frameLength;
|
||||
|
||||
private final int[] states;
|
||||
|
||||
private int coef;
|
||||
|
||||
private int lag;
|
||||
|
||||
private int lastBand;
|
||||
|
||||
private boolean lagUpdate;
|
||||
|
||||
private boolean[] shortUsed;
|
||||
|
||||
private boolean[] shortLagPresent;
|
||||
|
||||
private boolean[] longUsed;
|
||||
|
||||
private int[] shortLag;
|
||||
|
||||
public LTPrediction(int frameLength) {
|
||||
this.frameLength = frameLength;
|
||||
this.states = new int[4 * frameLength];
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in, ICSInfo info, Profile profile) throws AACException {
|
||||
this.lag = 0;
|
||||
if (profile.equals(Profile.AAC_LD)) {
|
||||
this.lagUpdate = _in.readBool();
|
||||
if (this.lagUpdate)
|
||||
this.lag = _in.readBits(10);
|
||||
} else {
|
||||
this.lag = _in.readBits(11);
|
||||
}
|
||||
if (this.lag > this.frameLength << 1)
|
||||
throw new AACException("LTP lag too large: " + this.lag);
|
||||
this.coef = _in.readBits(3);
|
||||
int windowCount = info.getWindowCount();
|
||||
if (info.isEightShortFrame()) {
|
||||
this.shortUsed = new boolean[windowCount];
|
||||
this.shortLagPresent = new boolean[windowCount];
|
||||
this.shortLag = new int[windowCount];
|
||||
for (int w = 0; w < windowCount; w++) {
|
||||
this.shortUsed[w] = _in.readBool();
|
||||
if (_in.readBool()) {
|
||||
this.shortLagPresent[w] = _in.readBool();
|
||||
if (this.shortLagPresent[w])
|
||||
this.shortLag[w] = _in.readBits(4);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.lastBand = Math.min(info.getMaxSFB(), 40);
|
||||
this.longUsed = new boolean[this.lastBand];
|
||||
for (int i = 0; i < this.lastBand; i++)
|
||||
this.longUsed[i] = _in.readBool();
|
||||
}
|
||||
}
|
||||
|
||||
public void setPredictionUnused(int sfb) {
|
||||
if (this.longUsed != null)
|
||||
this.longUsed[sfb] = false;
|
||||
}
|
||||
|
||||
public void process(ICStream ics, float[] data, FilterBank filterBank, SampleFrequency sf) {
|
||||
ICSInfo info = ics.getInfo();
|
||||
if (!info.isEightShortFrame()) {
|
||||
int samples = this.frameLength << 1;
|
||||
float[] _in = new float[2048];
|
||||
float[] out = new float[2048];
|
||||
for (int i = 0; i < samples; i++)
|
||||
_in[i] = (float)this.states[samples + i - this.lag] * CODEBOOK[this.coef];
|
||||
filterBank.processLTP(info.getWindowSequence(), info.getWindowShape(1),
|
||||
info.getWindowShape(0), _in, out);
|
||||
if (ics.isTNSDataPresent())
|
||||
ics.getTNS().process(ics, out, sf, true);
|
||||
int[] swbOffsets = info.getSWBOffsets();
|
||||
int swbOffsetMax = info.getSWBOffsetMax();
|
||||
for (int sfb = 0; sfb < this.lastBand; sfb++) {
|
||||
if (this.longUsed[sfb]) {
|
||||
int low = swbOffsets[sfb];
|
||||
int high = Math.min(swbOffsets[sfb + 1], swbOffsetMax);
|
||||
for (int bin = low; bin < high; bin++)
|
||||
data[bin] = data[bin] + out[bin];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateState(float[] time, float[] overlap, Profile profile) {
|
||||
if (profile.equals(Profile.AAC_LD)) {
|
||||
for (int i = 0; i < this.frameLength; i++) {
|
||||
this.states[i] = this.states[i + this.frameLength];
|
||||
this.states[this.frameLength + i] = this.states[i + this.frameLength * 2];
|
||||
this.states[this.frameLength * 2 + i] = Math.round(time[i]);
|
||||
this.states[this.frameLength * 3 + i] = Math.round(overlap[i]);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < this.frameLength; i++) {
|
||||
this.states[i] = this.states[i + this.frameLength];
|
||||
this.states[this.frameLength + i] = Math.round(time[i]);
|
||||
this.states[this.frameLength * 2 + i] = Math.round(overlap[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isLTPProfile(Profile profile) {
|
||||
return (profile.equals(Profile.AAC_LTP) || profile.equals(Profile.ER_AAC_LTP) || profile.equals(Profile.AAC_LD));
|
||||
}
|
||||
|
||||
public void copy(LTPrediction ltp) {
|
||||
System.arraycopy(ltp.states, 0, this.states, 0, this.states.length);
|
||||
this.coef = ltp.coef;
|
||||
this.lag = ltp.lag;
|
||||
this.lastBand = ltp.lastBand;
|
||||
this.lagUpdate = ltp.lagUpdate;
|
||||
this.shortUsed = Platform.copyOfBool(ltp.shortUsed, ltp.shortUsed.length);
|
||||
this.shortLagPresent = Platform.copyOfBool(ltp.shortLagPresent, ltp.shortLagPresent.length);
|
||||
this.shortLag = Platform.copyOfInt(ltp.shortLag, ltp.shortLag.length);
|
||||
this.longUsed = Platform.copyOfBool(ltp.longUsed, ltp.longUsed.length);
|
||||
}
|
||||
}
|
||||
|
||||
public enum WindowSequence {
|
||||
ONLY_LONG_SEQUENCE, LONG_START_SEQUENCE, EIGHT_SHORT_SEQUENCE, LONG_STOP_SEQUENCE;
|
||||
}
|
||||
|
||||
public static WindowSequence windowSequenceFromInt(int i) throws AACException {
|
||||
WindowSequence[] values = WindowSequence.values();
|
||||
if (i >= values.length)
|
||||
throw new AACException("unknown window sequence type");
|
||||
return values[i];
|
||||
}
|
||||
|
||||
public ICSInfo(int frameLength) {
|
||||
this.frameLength = frameLength;
|
||||
this.windowShape = new int[2];
|
||||
this.windowSequence = WindowSequence.ONLY_LONG_SEQUENCE;
|
||||
this.windowGroupLength = new int[8];
|
||||
this.ltpData1Present = false;
|
||||
this.ltpData2Present = false;
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in, AACDecoderConfig conf, boolean commonWindow) throws AACException {
|
||||
SampleFrequency sf = conf.getSampleFrequency();
|
||||
if (sf.equals(SampleFrequency.SAMPLE_FREQUENCY_NONE))
|
||||
throw new AACException("invalid sample frequency");
|
||||
_in.skipBit();
|
||||
this.windowSequence = windowSequenceFromInt(_in.readBits(2));
|
||||
this.windowShape[0] = this.windowShape[1];
|
||||
this.windowShape[1] = _in.readBit();
|
||||
this.windowGroupCount = 1;
|
||||
this.windowGroupLength[0] = 1;
|
||||
if (this.windowSequence.equals(WindowSequence.EIGHT_SHORT_SEQUENCE)) {
|
||||
this.maxSFB = _in.readBits(4);
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if (_in.readBool()) {
|
||||
this.windowGroupLength[this.windowGroupCount - 1] = this.windowGroupLength[this.windowGroupCount - 1] + 1;
|
||||
} else {
|
||||
this.windowGroupCount++;
|
||||
this.windowGroupLength[this.windowGroupCount - 1] = 1;
|
||||
}
|
||||
}
|
||||
this.windowCount = 8;
|
||||
this.swbOffsets = SWB_OFFSET_SHORT_WINDOW[sf.getIndex()];
|
||||
this.swbCount = SWB_SHORT_WINDOW_COUNT[sf.getIndex()];
|
||||
this.predictionDataPresent = false;
|
||||
} else {
|
||||
this.maxSFB = _in.readBits(6);
|
||||
this.windowCount = 1;
|
||||
this.swbOffsets = SWB_OFFSET_LONG_WINDOW[sf.getIndex()];
|
||||
this.swbCount = SWB_LONG_WINDOW_COUNT[sf.getIndex()];
|
||||
this.predictionDataPresent = _in.readBool();
|
||||
if (this.predictionDataPresent)
|
||||
readPredictionData(_in, conf.getProfile(), sf, commonWindow);
|
||||
}
|
||||
}
|
||||
|
||||
private void readPredictionData(IBitStream _in, Profile profile, SampleFrequency sf, boolean commonWindow) throws AACException {
|
||||
if (Profile.AAC_MAIN == profile) {
|
||||
if (this.icPredict == null)
|
||||
this.icPredict = new ICPrediction();
|
||||
this.icPredict.decode(_in, this.maxSFB, sf);
|
||||
} else if (Profile.AAC_LTP == profile) {
|
||||
if (this.ltpData1Present = _in.readBool()) {
|
||||
if (this.ltPredict1 == null)
|
||||
this.ltPredict1 = new LTPrediction(this.frameLength);
|
||||
this.ltPredict1.decode(_in, this, profile);
|
||||
}
|
||||
if (commonWindow && (
|
||||
this.ltpData2Present = _in.readBool())) {
|
||||
if (this.ltPredict2 == null)
|
||||
this.ltPredict2 = new LTPrediction(this.frameLength);
|
||||
this.ltPredict2.decode(_in, this, profile);
|
||||
}
|
||||
} else if (Profile.ER_AAC_LTP == profile) {
|
||||
if (!commonWindow && (
|
||||
this.ltpData1Present = _in.readBool())) {
|
||||
if (this.ltPredict1 == null)
|
||||
this.ltPredict1 = new LTPrediction(this.frameLength);
|
||||
this.ltPredict1.decode(_in, this, profile);
|
||||
}
|
||||
} else {
|
||||
throw new AACException("unexpected profile for LTP: " + String.valueOf(profile));
|
||||
}
|
||||
}
|
||||
|
||||
public int getMaxSFB() {
|
||||
return this.maxSFB;
|
||||
}
|
||||
|
||||
public int getSWBCount() {
|
||||
return this.swbCount;
|
||||
}
|
||||
|
||||
public int[] getSWBOffsets() {
|
||||
return this.swbOffsets;
|
||||
}
|
||||
|
||||
public int getSWBOffsetMax() {
|
||||
return this.swbOffsets[this.swbCount];
|
||||
}
|
||||
|
||||
public int getWindowCount() {
|
||||
return this.windowCount;
|
||||
}
|
||||
|
||||
public int getWindowGroupCount() {
|
||||
return this.windowGroupCount;
|
||||
}
|
||||
|
||||
public int getWindowGroupLength(int g) {
|
||||
return this.windowGroupLength[g];
|
||||
}
|
||||
|
||||
public WindowSequence getWindowSequence() {
|
||||
return this.windowSequence;
|
||||
}
|
||||
|
||||
public boolean isEightShortFrame() {
|
||||
return this.windowSequence.equals(WindowSequence.EIGHT_SHORT_SEQUENCE);
|
||||
}
|
||||
|
||||
public int getWindowShape(int index) {
|
||||
return this.windowShape[index];
|
||||
}
|
||||
|
||||
public boolean isICPredictionPresent() {
|
||||
return this.predictionDataPresent;
|
||||
}
|
||||
|
||||
public ICPrediction getICPrediction() {
|
||||
return this.icPredict;
|
||||
}
|
||||
|
||||
public boolean isLTPrediction1Present() {
|
||||
return this.ltpData1Present;
|
||||
}
|
||||
|
||||
public LTPrediction getLTPrediction1() {
|
||||
return this.ltPredict1;
|
||||
}
|
||||
|
||||
public boolean isLTPrediction2Present() {
|
||||
return this.ltpData2Present;
|
||||
}
|
||||
|
||||
public LTPrediction getLTPrediction2() {
|
||||
return this.ltPredict2;
|
||||
}
|
||||
|
||||
public void unsetPredictionSFB(int sfb) {
|
||||
if (this.predictionDataPresent)
|
||||
this.icPredict.setPredictionUnused(sfb);
|
||||
if (this.ltpData1Present)
|
||||
this.ltPredict1.setPredictionUnused(sfb);
|
||||
if (this.ltpData2Present)
|
||||
this.ltPredict2.setPredictionUnused(sfb);
|
||||
}
|
||||
|
||||
public void setData(ICSInfo info) {
|
||||
this.windowSequence = WindowSequence.valueOf(info.windowSequence.name());
|
||||
this.windowShape[0] = this.windowShape[1];
|
||||
this.windowShape[1] = info.windowShape[1];
|
||||
this.maxSFB = info.maxSFB;
|
||||
this.predictionDataPresent = info.predictionDataPresent;
|
||||
if (this.predictionDataPresent)
|
||||
this.icPredict = info.icPredict;
|
||||
this.ltpData1Present = info.ltpData1Present;
|
||||
if (this.ltpData1Present) {
|
||||
this.ltPredict1.copy(info.ltPredict1);
|
||||
this.ltPredict2.copy(info.ltPredict2);
|
||||
}
|
||||
this.windowCount = info.windowCount;
|
||||
this.windowGroupCount = info.windowGroupCount;
|
||||
this.windowGroupLength = Platform.copyOfInt(info.windowGroupLength, info.windowGroupLength.length);
|
||||
this.swbCount = info.swbCount;
|
||||
this.swbOffsets = Platform.copyOfInt(info.swbOffsets, info.swbOffsets.length);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,298 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import java.util.Arrays;
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.ChannelConfiguration;
|
||||
import net.sourceforge.jaad.aac.error.RVLC;
|
||||
import net.sourceforge.jaad.aac.gain.GainControl;
|
||||
import net.sourceforge.jaad.aac.huffman.HCB;
|
||||
import net.sourceforge.jaad.aac.huffman.Huffman;
|
||||
import net.sourceforge.jaad.aac.tools.TNS;
|
||||
import org.jcodec.common.logging.Logger;
|
||||
|
||||
public class ICStream implements SyntaxConstants, HCB, ScaleFactorTable, IQTable {
|
||||
private static final int SF_DELTA = 60;
|
||||
|
||||
private static final int SF_OFFSET = 200;
|
||||
|
||||
private static int randomState = 523124044;
|
||||
|
||||
private final int frameLength;
|
||||
|
||||
private final ICSInfo info;
|
||||
|
||||
private final int[] sfbCB;
|
||||
|
||||
private final int[] sectEnd;
|
||||
|
||||
private final float[] data;
|
||||
|
||||
private final float[] scaleFactors;
|
||||
|
||||
private int globalGain;
|
||||
|
||||
private boolean pulseDataPresent;
|
||||
|
||||
private boolean tnsDataPresent;
|
||||
|
||||
private boolean gainControlPresent;
|
||||
|
||||
private TNS tns;
|
||||
|
||||
private GainControl gainControl;
|
||||
|
||||
private int[] pulseOffset;
|
||||
|
||||
private int[] pulseAmp;
|
||||
|
||||
private int pulseCount;
|
||||
|
||||
private int pulseStartSWB;
|
||||
|
||||
private boolean noiseUsed;
|
||||
|
||||
private int reorderedSpectralDataLen;
|
||||
|
||||
private int longestCodewordLen;
|
||||
|
||||
private RVLC rvlc;
|
||||
|
||||
public ICStream(int frameLength) {
|
||||
this.frameLength = frameLength;
|
||||
this.info = new ICSInfo(frameLength);
|
||||
this.sfbCB = new int[120];
|
||||
this.sectEnd = new int[120];
|
||||
this.data = new float[frameLength];
|
||||
this.scaleFactors = new float[120];
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in, boolean commonWindow, AACDecoderConfig conf) throws AACException {
|
||||
if (conf.isScalefactorResilienceUsed() && this.rvlc == null)
|
||||
this.rvlc = new RVLC();
|
||||
boolean er = conf.getProfile().isErrorResilientProfile();
|
||||
this.globalGain = _in.readBits(8);
|
||||
if (!commonWindow)
|
||||
this.info.decode(_in, conf, commonWindow);
|
||||
decodeSectionData(_in, conf.isSectionDataResilienceUsed());
|
||||
decodeScaleFactors(_in);
|
||||
this.pulseDataPresent = _in.readBool();
|
||||
if (this.pulseDataPresent) {
|
||||
if (this.info.isEightShortFrame())
|
||||
throw new AACException("pulse data not allowed for short frames");
|
||||
Logger.debug("PULSE");
|
||||
decodePulseData(_in);
|
||||
}
|
||||
this.tnsDataPresent = _in.readBool();
|
||||
if (this.tnsDataPresent && !er) {
|
||||
if (this.tns == null)
|
||||
this.tns = new TNS();
|
||||
this.tns.decode(_in, this.info);
|
||||
}
|
||||
this.gainControlPresent = _in.readBool();
|
||||
if (this.gainControlPresent) {
|
||||
if (this.gainControl == null)
|
||||
this.gainControl = new GainControl(this.frameLength);
|
||||
Logger.debug("GAIN");
|
||||
this.gainControl.decode(_in, this.info.getWindowSequence());
|
||||
}
|
||||
if (conf.isSpectralDataResilienceUsed()) {
|
||||
int max = (conf.getChannelConfiguration() == ChannelConfiguration.CHANNEL_CONFIG_STEREO) ? 6144 : 12288;
|
||||
this.reorderedSpectralDataLen = Math.max(_in.readBits(14), max);
|
||||
this.longestCodewordLen = Math.max(_in.readBits(6), 49);
|
||||
} else {
|
||||
decodeSpectralData(_in);
|
||||
}
|
||||
}
|
||||
|
||||
public void decodeSectionData(IBitStream _in, boolean sectionDataResilienceUsed) throws AACException {
|
||||
Arrays.fill(this.sfbCB, 0);
|
||||
Arrays.fill(this.sectEnd, 0);
|
||||
int bits = this.info.isEightShortFrame() ? 3 : 5;
|
||||
int escVal = (1 << bits) - 1;
|
||||
int windowGroupCount = this.info.getWindowGroupCount();
|
||||
int maxSFB = this.info.getMaxSFB();
|
||||
int idx = 0;
|
||||
for (int g = 0; g < windowGroupCount; g++) {
|
||||
int k = 0;
|
||||
while (k < maxSFB) {
|
||||
int end = k;
|
||||
int cb = _in.readBits(4);
|
||||
if (cb == 12)
|
||||
throw new AACException("invalid huffman codebook: 12");
|
||||
int incr;
|
||||
while ((incr = _in.readBits(bits)) == escVal)
|
||||
end += incr;
|
||||
end += incr;
|
||||
if (end > maxSFB)
|
||||
throw new AACException("too many bands: " + end + ", allowed: " + maxSFB);
|
||||
for (; k < end; k++) {
|
||||
this.sfbCB[idx] = cb;
|
||||
this.sectEnd[idx++] = end;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void decodePulseData(IBitStream _in) throws AACException {
|
||||
this.pulseCount = _in.readBits(2) + 1;
|
||||
this.pulseStartSWB = _in.readBits(6);
|
||||
if (this.pulseStartSWB >= this.info.getSWBCount())
|
||||
throw new AACException("pulse SWB out of range: " + this.pulseStartSWB + " > " + this.info.getSWBCount());
|
||||
if (this.pulseOffset == null || this.pulseCount != this.pulseOffset.length) {
|
||||
this.pulseOffset = new int[this.pulseCount];
|
||||
this.pulseAmp = new int[this.pulseCount];
|
||||
}
|
||||
this.pulseOffset[0] = this.info.getSWBOffsets()[this.pulseStartSWB];
|
||||
this.pulseOffset[0] = this.pulseOffset[0] + _in.readBits(5);
|
||||
this.pulseAmp[0] = _in.readBits(4);
|
||||
for (int i = 1; i < this.pulseCount; i++) {
|
||||
this.pulseOffset[i] = _in.readBits(5) + this.pulseOffset[i - 1];
|
||||
if (this.pulseOffset[i] > 1023)
|
||||
throw new AACException("pulse offset out of range: " + this.pulseOffset[0]);
|
||||
this.pulseAmp[i] = _in.readBits(4);
|
||||
}
|
||||
}
|
||||
|
||||
public void decodeScaleFactors(IBitStream _in) throws AACException {
|
||||
int windowGroups = this.info.getWindowGroupCount();
|
||||
int maxSFB = this.info.getMaxSFB();
|
||||
int[] offset = { this.globalGain, this.globalGain - 90, 0 };
|
||||
boolean noiseFlag = true;
|
||||
int idx = 0;
|
||||
for (int g = 0; g < windowGroups; g++) {
|
||||
for (int sfb = 0; sfb < maxSFB; ) {
|
||||
int end = this.sectEnd[idx];
|
||||
switch (this.sfbCB[idx]) {
|
||||
case 0:
|
||||
for (; sfb < end; sfb++, idx++)
|
||||
this.scaleFactors[idx] = 0.0F;
|
||||
continue;
|
||||
case 14:
|
||||
case 15:
|
||||
for (; sfb < end; sfb++, idx++) {
|
||||
offset[2] = offset[2] + Huffman.decodeScaleFactor(_in) - 60;
|
||||
int tmp = Math.min(Math.max(offset[2], -155), 100);
|
||||
this.scaleFactors[idx] = SCALEFACTOR_TABLE[-tmp + 200];
|
||||
}
|
||||
continue;
|
||||
case 13:
|
||||
for (; sfb < end; sfb++, idx++) {
|
||||
if (noiseFlag) {
|
||||
offset[1] = offset[1] + _in.readBits(9) - 256;
|
||||
noiseFlag = false;
|
||||
} else {
|
||||
offset[1] = offset[1] + Huffman.decodeScaleFactor(_in) - 60;
|
||||
}
|
||||
int tmp = Math.min(Math.max(offset[1], -100), 155);
|
||||
this.scaleFactors[idx] = -SCALEFACTOR_TABLE[tmp + 200];
|
||||
}
|
||||
continue;
|
||||
}
|
||||
for (; sfb < end; sfb++, idx++) {
|
||||
offset[0] = offset[0] + Huffman.decodeScaleFactor(_in) - 60;
|
||||
if (offset[0] > 255)
|
||||
throw new AACException("scalefactor out of range: " + offset[0]);
|
||||
this.scaleFactors[idx] = SCALEFACTOR_TABLE[offset[0] - 100 + 200];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void decodeSpectralData(IBitStream _in) throws AACException {
|
||||
Arrays.fill(this.data, 0.0F);
|
||||
int maxSFB = this.info.getMaxSFB();
|
||||
int windowGroups = this.info.getWindowGroupCount();
|
||||
int[] offsets = this.info.getSWBOffsets();
|
||||
int[] buf = new int[4];
|
||||
int groupOff = 0, idx = 0;
|
||||
for (int g = 0; g < windowGroups; g++) {
|
||||
int groupLen = this.info.getWindowGroupLength(g);
|
||||
for (int sfb = 0; sfb < maxSFB; sfb++, idx++) {
|
||||
int hcb = this.sfbCB[idx];
|
||||
int off = groupOff + offsets[sfb];
|
||||
int width = offsets[sfb + 1] - offsets[sfb];
|
||||
if (hcb == 0 || hcb == 15 || hcb == 14) {
|
||||
for (int w = 0; w < groupLen; w++, off += 128)
|
||||
Arrays.fill(this.data, off, off + width, 0.0F);
|
||||
} else if (hcb == 13) {
|
||||
for (int w = 0; w < groupLen; w++, off += 128) {
|
||||
float energy = 0.0F;
|
||||
for (int i = 0; i < width; i++) {
|
||||
randomState *= 1015568748;
|
||||
this.data[off + i] = (float)randomState;
|
||||
energy += this.data[off + i] * this.data[off + i];
|
||||
}
|
||||
float scale = (float)((double)this.scaleFactors[idx] / Math.sqrt((double)energy));
|
||||
for (int k = 0; k < width; k++)
|
||||
this.data[off + k] = this.data[off + k] * scale;
|
||||
}
|
||||
} else {
|
||||
for (int w = 0; w < groupLen; w++, off += 128) {
|
||||
int num = (hcb >= 5) ? 2 : 4;
|
||||
for (int k = 0; k < width; k += num) {
|
||||
Huffman.decodeSpectralData(_in, hcb, buf, 0);
|
||||
for (int j = 0; j < num; j++) {
|
||||
this.data[off + k + j] = (buf[j] > 0) ? IQ_TABLE[buf[j]] : -IQ_TABLE[-buf[j]];
|
||||
this.data[off + k + j] = this.data[off + k + j] * this.scaleFactors[idx];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
groupOff += groupLen << 7;
|
||||
}
|
||||
}
|
||||
|
||||
public float[] getInvQuantData() throws AACException {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
public ICSInfo getInfo() {
|
||||
return this.info;
|
||||
}
|
||||
|
||||
public int[] getSectEnd() {
|
||||
return this.sectEnd;
|
||||
}
|
||||
|
||||
public int[] getSfbCB() {
|
||||
return this.sfbCB;
|
||||
}
|
||||
|
||||
public float[] getScaleFactors() {
|
||||
return this.scaleFactors;
|
||||
}
|
||||
|
||||
public boolean isTNSDataPresent() {
|
||||
return this.tnsDataPresent;
|
||||
}
|
||||
|
||||
public TNS getTNS() {
|
||||
return this.tns;
|
||||
}
|
||||
|
||||
public int getGlobalGain() {
|
||||
return this.globalGain;
|
||||
}
|
||||
|
||||
public boolean isNoiseUsed() {
|
||||
return this.noiseUsed;
|
||||
}
|
||||
|
||||
public int getLongestCodewordLength() {
|
||||
return this.longestCodewordLen;
|
||||
}
|
||||
|
||||
public int getReorderedSpectralDataLength() {
|
||||
return this.reorderedSpectralDataLen;
|
||||
}
|
||||
|
||||
public boolean isGainControlPresent() {
|
||||
return this.gainControlPresent;
|
||||
}
|
||||
|
||||
public GainControl getGainControl() {
|
||||
return this.gainControl;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,825 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
interface IQTable {
|
||||
public static final float[] IQ_TABLE = new float[] {
|
||||
0.0F, 1.0F, 2.5198421F, 4.326749F, 6.349604F, 8.54988F, 10.902723F, 13.390518F, 16.0F, 18.720755F,
|
||||
21.544348F, 24.463781F, 27.473143F, 30.56735F, 33.741993F, 36.99318F, 40.317474F, 43.71179F, 47.173344F, 50.69963F,
|
||||
54.288353F, 57.93741F, 61.644867F, 65.40894F, 69.22798F, 73.10044F, 77.024895F, 81.0F, 85.02449F, 89.09719F,
|
||||
93.21697F, 97.3828F, 101.593666F, 105.84863F, 110.146805F, 114.48732F, 118.869385F, 123.292206F, 127.755066F, 132.25725F,
|
||||
136.79808F, 141.3769F, 145.99312F, 150.64612F, 155.33533F, 160.0602F, 164.8202F, 169.61482F, 174.44357F, 179.30598F,
|
||||
184.20157F, 189.12991F, 194.09058F, 199.08315F, 204.10721F, 209.16238F, 214.24829F, 219.36456F, 224.51085F, 229.68678F,
|
||||
234.89206F, 240.12633F, 245.38928F, 250.6806F, 256.0F, 261.34717F, 266.72183F, 272.12372F, 277.55255F, 283.00806F,
|
||||
288.48996F, 293.99805F, 299.53207F, 305.09177F, 310.6769F, 316.28726F, 321.9226F, 327.5827F, 333.26736F, 338.97638F,
|
||||
344.70956F, 350.46664F, 356.24747F, 362.05188F, 367.8796F, 373.73053F, 379.60443F, 385.50113F, 391.4205F, 397.3623F,
|
||||
403.32642F, 409.31268F, 415.3209F, 421.3509F, 427.4026F, 433.47574F, 439.57028F, 445.68597F, 451.82275F, 457.98044F,
|
||||
464.15887F, 470.35797F, 476.57755F, 482.81747F, 489.0776F, 495.35788F, 501.65808F, 507.97815F, 514.31793F, 520.6773F,
|
||||
527.0562F, 533.4544F, 539.8719F, 546.3085F, 552.76404F, 559.2386F, 565.7319F, 572.2439F, 578.7744F, 585.3235F,
|
||||
591.89087F, 598.47656F, 605.08044F, 611.70233F, 618.3422F, 625.0F, 631.67554F, 638.3688F, 645.0796F, 651.80786F,
|
||||
658.5536F, 665.31665F, 672.0969F, 678.89435F, 685.7088F, 692.5403F, 699.3886F, 706.2537F, 713.1356F, 720.0341F,
|
||||
726.94916F, 733.88074F, 740.8287F, 747.79297F, 754.7735F, 761.77026F, 768.7831F, 775.8119F, 782.85675F, 789.9174F,
|
||||
796.9939F, 804.0862F, 811.1941F, 818.3176F, 825.45667F, 832.6112F, 839.7812F, 846.96643F, 854.167F, 861.38275F,
|
||||
868.61365F, 875.8596F, 883.1206F, 890.39655F, 897.6874F, 904.9931F, 912.31354F, 919.6487F, 926.99854F, 934.3629F,
|
||||
941.7419F, 949.1354F, 956.5432F, 963.96545F, 971.40204F, 978.85284F, 986.3179F, 993.797F, 1001.2903F, 1008.7976F,
|
||||
1016.3189F, 1023.8542F, 1031.4033F, 1038.9663F, 1046.5431F, 1054.1335F, 1061.7378F, 1069.3556F, 1076.987F, 1084.632F,
|
||||
1092.2904F, 1099.9624F, 1107.6477F, 1115.3463F, 1123.0583F, 1130.7836F, 1138.522F, 1146.2737F, 1154.0383F, 1161.8162F,
|
||||
1169.607F, 1177.411F, 1185.2278F, 1193.0575F, 1200.9001F, 1208.7555F, 1216.6238F, 1224.5048F, 1232.3983F, 1240.3047F,
|
||||
1248.2236F, 1256.1552F, 1264.0991F, 1272.0558F, 1280.0248F, 1288.0062F, 1296.0F, 1304.0062F, 1312.0247F, 1320.0554F,
|
||||
1328.0984F, 1336.1536F, 1344.2208F, 1352.3003F, 1360.3918F, 1368.4955F, 1376.6111F, 1384.7386F, 1392.8782F, 1401.0295F,
|
||||
1409.1929F, 1417.368F, 1425.555F, 1433.7538F, 1441.9642F, 1450.1864F, 1458.4202F, 1466.6656F, 1474.9227F, 1483.1914F,
|
||||
1491.4716F, 1499.7633F, 1508.0665F, 1516.3811F, 1524.7072F, 1533.0446F, 1541.3933F, 1549.7534F, 1558.1248F, 1566.5074F,
|
||||
1574.9014F, 1583.3064F, 1591.7227F, 1600.15F, 1608.5885F, 1617.0381F, 1625.4987F, 1633.9703F, 1642.453F, 1650.9465F,
|
||||
1659.4512F, 1667.9666F, 1676.4929F, 1685.0302F, 1693.5781F, 1702.137F, 1710.7065F, 1719.2869F, 1727.8779F, 1736.4797F,
|
||||
1745.092F, 1753.7152F, 1762.3489F, 1770.993F, 1779.648F, 1788.3132F, 1796.9891F, 1805.6754F, 1814.3722F, 1823.0795F,
|
||||
1831.7971F, 1840.5251F, 1849.2635F, 1858.0123F, 1866.7714F, 1875.5406F, 1884.3202F, 1893.1101F, 1901.9102F, 1910.7203F,
|
||||
1919.5408F, 1928.3712F, 1937.2119F, 1946.0627F, 1954.9236F, 1963.7944F, 1972.6753F, 1981.5663F, 1990.4672F, 1999.378F,
|
||||
2008.2988F, 2017.2296F, 2026.1702F, 2035.1207F, 2044.081F, 2053.0513F, 2062.0312F, 2071.021F, 2080.0205F, 2089.0298F,
|
||||
2098.0488F, 2107.0776F, 2116.116F, 2125.164F, 2134.2217F, 2143.289F, 2152.366F, 2161.4524F, 2170.5486F, 2179.654F,
|
||||
2188.7693F, 2197.8938F, 2207.0278F, 2216.1714F, 2225.3245F, 2234.4868F, 2243.6587F, 2252.8398F, 2262.0305F, 2271.2305F,
|
||||
2280.4397F, 2289.6582F, 2298.886F, 2308.123F, 2317.3696F, 2326.625F, 2335.89F, 2345.1638F, 2354.447F, 2363.7395F,
|
||||
2373.041F, 2382.3516F, 2391.6711F, 2401.0F, 2410.338F, 2419.6848F, 2429.0408F, 2438.4058F, 2447.7798F, 2457.1626F,
|
||||
2466.5544F, 2475.9553F, 2485.3652F, 2494.784F, 2504.2117F, 2513.648F, 2523.0935F, 2532.5476F, 2542.0107F, 2551.4824F,
|
||||
2560.9631F, 2570.4526F, 2579.951F, 2589.4578F, 2598.9734F, 2608.4978F, 2618.031F, 2627.5728F, 2637.1233F, 2646.6824F,
|
||||
2656.25F, 2665.8264F, 2675.4114F, 2685.0051F, 2694.6072F, 2704.218F, 2713.8372F, 2723.465F, 2733.1013F, 2742.746F,
|
||||
2752.3994F, 2762.0613F, 2771.7314F, 2781.4102F, 2791.0972F, 2800.7927F, 2810.4966F, 2820.209F, 2829.9297F, 2839.6587F,
|
||||
2849.396F, 2859.1416F, 2868.8958F, 2878.658F, 2888.4285F, 2898.2075F, 2907.9944F, 2917.7898F, 2927.5935F, 2937.4053F,
|
||||
2947.225F, 2957.0535F, 2966.8896F, 2976.7341F, 2986.587F, 2996.4478F, 3006.3167F, 3016.1936F, 3026.0786F, 3035.972F,
|
||||
3045.873F, 3055.7825F, 3065.6997F, 3075.6252F, 3085.5586F, 3095.5F, 3105.4492F, 3115.4067F, 3125.3718F, 3135.3452F,
|
||||
3145.3264F, 3155.3154F, 3165.3125F, 3175.3174F, 3185.3303F, 3195.351F, 3205.3796F, 3215.416F, 3225.4602F, 3235.5122F,
|
||||
3245.5723F, 3255.64F, 3265.7153F, 3275.7986F, 3285.8896F, 3295.9885F, 3306.095F, 3316.2092F, 3326.331F, 3336.4607F,
|
||||
3346.5981F, 3356.7432F, 3366.896F, 3377.0564F, 3387.2244F, 3397.4F, 3407.5833F, 3417.7742F, 3427.9727F, 3438.1787F,
|
||||
3448.3923F, 3458.6138F, 3468.8425F, 3479.0789F, 3489.3228F, 3499.5742F, 3509.833F, 3520.0994F, 3530.3733F, 3540.6548F,
|
||||
3550.9436F, 3561.24F, 3571.5437F, 3581.855F, 3592.1736F, 3602.4995F, 3612.833F, 3623.1738F, 3633.522F, 3643.8777F,
|
||||
3654.2407F, 3664.6108F, 3674.9885F, 3685.3735F, 3695.7659F, 3706.1655F, 3716.5725F, 3726.9866F, 3737.4082F, 3747.837F,
|
||||
3758.273F, 3768.7163F, 3779.1667F, 3789.6245F, 3800.0894F, 3810.5615F, 3821.041F, 3831.5276F, 3842.0212F, 3852.5222F,
|
||||
3863.0303F, 3873.5454F, 3884.0679F, 3894.5974F, 3905.134F, 3915.6777F, 3926.2285F, 3936.7864F, 3947.3513F, 3957.9236F,
|
||||
3968.5027F, 3979.0889F, 3989.6821F, 4000.2825F, 4010.8896F, 4021.504F, 4032.1252F, 4042.7537F, 4053.389F, 4064.0312F,
|
||||
4074.6807F, 4085.337F, 4096.0F, 4106.67F, 4117.347F, 4128.0312F, 4138.722F, 4149.42F, 4160.1245F, 4170.8364F,
|
||||
4181.5547F, 4192.2803F, 4203.012F, 4213.7515F, 4224.4976F, 4235.25F, 4246.01F, 4256.7764F, 4267.5493F, 4278.3296F,
|
||||
4289.116F, 4299.91F, 4310.7104F, 4321.5176F, 4332.3315F, 4343.1523F, 4353.9795F, 4364.814F, 4375.655F, 4386.5024F,
|
||||
4397.3564F, 4408.218F, 4419.0854F, 4429.9595F, 4440.841F, 4451.7285F, 4462.623F, 4473.524F, 4484.4316F, 4495.346F,
|
||||
4506.267F, 4517.195F, 4528.129F, 4539.07F, 4550.017F, 4560.971F, 4571.9316F, 4582.899F, 4593.8726F, 4604.8525F,
|
||||
4615.8394F, 4626.833F, 4637.833F, 4648.8394F, 4659.852F, 4670.8716F, 4681.8975F, 4692.93F, 4703.9688F, 4715.014F,
|
||||
4726.0664F, 4737.1245F, 4748.1895F, 4759.2607F, 4770.3384F, 4781.4224F, 4792.513F, 4803.6104F, 4814.7134F, 4825.823F,
|
||||
4836.9395F, 4848.062F, 4859.191F, 4870.3267F, 4881.4683F, 4892.616F, 4903.7705F, 4914.9316F, 4926.0986F, 4937.272F,
|
||||
4948.4517F, 4959.638F, 4970.8306F, 4982.0293F, 4993.234F, 5004.4453F, 5015.663F, 5026.8867F, 5038.117F, 5049.3535F,
|
||||
5060.596F, 5071.8447F, 5083.1F, 5094.3613F, 5105.629F, 5116.903F, 5128.1826F, 5139.469F, 5150.7617F, 5162.06F,
|
||||
5173.3647F, 5184.676F, 5195.993F, 5207.3164F, 5218.646F, 5229.9814F, 5241.323F, 5252.6714F, 5264.0254F, 5275.3853F,
|
||||
5286.752F, 5298.124F, 5309.503F, 5320.887F, 5332.278F, 5343.675F, 5355.0776F, 5366.487F, 5377.902F, 5389.3228F,
|
||||
5400.75F, 5412.183F, 5423.622F, 5435.0674F, 5446.519F, 5457.976F, 5469.4395F, 5480.9087F, 5492.3843F, 5503.8657F,
|
||||
5515.353F, 5526.846F, 5538.345F, 5549.8506F, 5561.362F, 5572.879F, 5584.4023F, 5595.931F, 5607.4663F, 5619.0073F,
|
||||
5630.554F, 5642.107F, 5653.6655F, 5665.2305F, 5676.801F, 5688.3774F, 5699.9595F, 5711.548F, 5723.142F, 5734.742F,
|
||||
5746.3477F, 5757.9595F, 5769.577F, 5781.2007F, 5792.83F, 5804.465F, 5816.106F, 5827.7524F, 5839.4053F, 5851.0635F,
|
||||
5862.728F, 5874.398F, 5886.0737F, 5897.7554F, 5909.443F, 5921.1357F, 5932.835F, 5944.5396F, 5956.25F, 5967.9663F,
|
||||
5979.6885F, 5991.416F, 6003.1494F, 6014.8887F, 6026.634F, 6038.3843F, 6050.141F, 6061.903F, 6073.671F, 6085.4443F,
|
||||
6097.2236F, 6109.0083F, 6120.7993F, 6132.595F, 6144.3975F, 6156.205F, 6168.018F, 6179.8374F, 6191.6616F, 6203.492F,
|
||||
6215.328F, 6227.1694F, 6239.0166F, 6250.8696F, 6262.728F, 6274.592F, 6286.4614F, 6298.337F, 6310.218F, 6322.104F,
|
||||
6333.996F, 6345.894F, 6357.797F, 6369.7056F, 6381.62F, 6393.54F, 6405.4653F, 6417.3965F, 6429.333F, 6441.2754F,
|
||||
6453.2227F, 6465.176F, 6477.135F, 6489.099F, 6501.069F, 6513.044F, 6525.025F, 6537.0107F, 6549.003F, 6561.0F,
|
||||
6573.003F, 6585.0107F, 6597.025F, 6609.044F, 6621.0684F, 6633.0986F, 6645.1343F, 6657.1753F, 6669.2217F, 6681.2734F,
|
||||
6693.331F, 6705.3936F, 6717.462F, 6729.5356F, 6741.6143F, 6753.6987F, 6765.7886F, 6777.8843F, 6789.985F, 6802.091F,
|
||||
6814.202F, 6826.319F, 6838.4414F, 6850.569F, 6862.7017F, 6874.8403F, 6886.984F, 6899.133F, 6911.287F, 6923.447F,
|
||||
6935.612F, 6947.782F, 6959.958F, 6972.139F, 6984.3257F, 6996.517F, 7008.7144F, 7020.9165F, 7033.1245F, 7045.3374F,
|
||||
7057.5557F, 7069.779F, 7082.008F, 7094.2417F, 7106.4814F, 7118.726F, 7130.9756F, 7143.231F, 7155.491F, 7167.757F,
|
||||
7180.028F, 7192.304F, 7204.5854F, 7216.872F, 7229.164F, 7241.4614F, 7253.7637F, 7266.0713F, 7278.384F, 7290.7017F,
|
||||
7303.025F, 7315.3535F, 7327.687F, 7340.026F, 7352.3696F, 7364.7188F, 7377.073F, 7389.4326F, 7401.7974F, 7414.167F,
|
||||
7426.542F, 7438.9224F, 7451.3076F, 7463.698F, 7476.0938F, 7488.494F, 7500.9004F, 7513.311F, 7525.7275F, 7538.1484F,
|
||||
7550.575F, 7563.0063F, 7575.443F, 7587.885F, 7600.3315F, 7612.7837F, 7625.2407F, 7637.7026F, 7650.17F, 7662.642F,
|
||||
7675.119F, 7687.6016F, 7700.0894F, 7712.5815F, 7725.0796F, 7737.582F, 7750.09F, 7762.6025F, 7775.12F, 7787.643F,
|
||||
7800.171F, 7812.704F, 7825.2417F, 7837.7847F, 7850.333F, 7862.8857F, 7875.444F, 7888.007F, 7900.5747F, 7913.148F,
|
||||
7925.726F, 7938.309F, 7950.897F, 7963.4897F, 7976.088F, 7988.691F, 8001.299F, 8013.9116F, 8026.5293F, 8039.1523F,
|
||||
8051.78F, 8064.4126F, 8077.0503F, 8089.693F, 8102.3403F, 8114.993F, 8127.6504F, 8140.313F, 8152.98F, 8165.6523F,
|
||||
8178.3296F, 8191.0117F, 8203.698F, 8216.391F, 8229.087F, 8241.789F, 8254.495F, 8267.207F, 8279.923F, 8292.645F,
|
||||
8305.37F, 8318.102F, 8330.837F, 8343.578F, 8356.323F, 8369.074F, 8381.829F, 8394.59F, 8407.3545F, 8420.124F,
|
||||
8432.899F, 8445.679F, 8458.463F, 8471.252F, 8484.046F, 8496.845F, 8509.648F, 8522.457F, 8535.2705F, 8548.089F,
|
||||
8560.911F, 8573.739F, 8586.572F, 8599.409F, 8612.251F, 8625.099F, 8637.95F, 8650.807F, 8663.668F, 8676.533F,
|
||||
8689.404F, 8702.28F, 8715.16F, 8728.046F, 8740.936F, 8753.83F, 8766.7295F, 8779.634F, 8792.542F, 8805.456F,
|
||||
8818.374F, 8831.297F, 8844.225F, 8857.157F, 8870.095F, 8883.037F, 8895.983F, 8908.935F, 8921.891F, 8934.852F,
|
||||
8947.817F, 8960.787F, 8973.763F, 8986.742F, 8999.727F, 9012.715F, 9025.709F, 9038.707F, 9051.71F, 9064.718F,
|
||||
9077.73F, 9090.747F, 9103.769F, 9116.795F, 9129.826F, 9142.861F, 9155.902F, 9168.947F, 9181.996F, 9195.051F,
|
||||
9208.109F, 9221.173F, 9234.241F, 9247.313F, 9260.391F, 9273.473F, 9286.56F, 9299.65F, 9312.746F, 9325.847F,
|
||||
9338.952F, 9352.062F, 9365.176F, 9378.295F, 9391.418F, 9404.546F, 9417.679F, 9430.815F, 9443.957F, 9457.104F,
|
||||
9470.254F, 9483.41F, 9496.569F, 9509.734F, 9522.903F, 9536.077F, 9549.255F, 9562.438F, 9575.625F, 9588.817F,
|
||||
9602.014F, 9615.215F, 9628.42F, 9641.63F, 9654.845F, 9668.063F, 9681.287F, 9694.515F, 9707.747F, 9720.984F,
|
||||
9734.227F, 9747.473F, 9760.723F, 9773.978F, 9787.237F, 9800.502F, 9813.7705F, 9827.043F, 9840.321F, 9853.603F,
|
||||
9866.89F, 9880.181F, 9893.476F, 9906.775F, 9920.08F, 9933.389F, 9946.702F, 9960.02F, 9973.342F, 9986.669F,
|
||||
10000.0F, 10013.336F, 10026.676F, 10040.02F, 10053.369F, 10066.722F, 10080.08F, 10093.442F, 10106.809F, 10120.18F,
|
||||
10133.555F, 10146.935F, 10160.319F, 10173.708F, 10187.101F, 10200.498F, 10213.9F, 10227.307F, 10240.717F, 10254.132F,
|
||||
10267.552F, 10280.976F, 10294.403F, 10307.836F, 10321.273F, 10334.715F, 10348.16F, 10361.61F, 10375.064F, 10388.523F,
|
||||
10401.987F, 10415.454F, 10428.926F, 10442.402F, 10455.883F, 10469.368F, 10482.857F, 10496.351F, 10509.849F, 10523.352F,
|
||||
10536.857F, 10550.369F, 10563.884F, 10577.403F, 10590.928F, 10604.456F, 10617.988F, 10631.525F, 10645.066F, 10658.612F,
|
||||
10672.162F, 10685.716F, 10699.274F, 10712.837F, 10726.404F, 10739.976F, 10753.551F, 10767.131F, 10780.715F, 10794.303F,
|
||||
10807.8955F, 10821.493F, 10835.094F, 10848.699F, 10862.31F, 10875.924F, 10889.542F, 10903.164F, 10916.791F, 10930.422F,
|
||||
10944.058F, 10957.697F, 10971.341F, 10984.989F, 10998.642F, 11012.298F, 11025.959F, 11039.624F, 11053.293F, 11066.967F,
|
||||
11080.645F, 11094.326F, 11108.012F, 11121.702F, 11135.397F, 11149.096F, 11162.799F, 11176.506F, 11190.218F, 11203.933F,
|
||||
11217.653F, 11231.377F, 11245.105F, 11258.838F, 11272.574F, 11286.314F, 11300.06F, 11313.809F, 11327.5625F, 11341.319F,
|
||||
11355.081F, 11368.847F, 11382.617F, 11396.392F, 11410.17F, 11423.952F, 11437.738F, 11451.529F, 11465.324F, 11479.123F,
|
||||
11492.927F, 11506.734F, 11520.546F, 11534.361F, 11548.181F, 11562.005F, 11575.833F, 11589.665F, 11603.502F, 11617.342F,
|
||||
11631.187F, 11645.035F, 11658.889F, 11672.745F, 11686.606F, 11700.472F, 11714.341F, 11728.214F, 11742.092F, 11755.974F,
|
||||
11769.859F, 11783.749F, 11797.643F, 11811.541F, 11825.442F, 11839.349F, 11853.259F, 11867.174F, 11881.092F, 11895.015F,
|
||||
11908.94F, 11922.871F, 11936.806F, 11950.745F, 11964.6875F, 11978.635F, 11992.586F, 12006.54F, 12020.5F, 12034.463F,
|
||||
12048.43F, 12062.401F, 12076.376F, 12090.355F, 12104.339F, 12118.326F, 12132.317F, 12146.313F, 12160.3125F, 12174.316F,
|
||||
12188.324F, 12202.335F, 12216.351F, 12230.371F, 12244.395F, 12258.422F, 12272.454F, 12286.489F, 12300.529F, 12314.572F,
|
||||
12328.62F, 12342.672F, 12356.728F, 12370.787F, 12384.852F, 12398.919F, 12412.99F, 12427.066F, 12441.146F, 12455.2295F,
|
||||
12469.317F, 12483.409F, 12497.505F, 12511.6045F, 12525.708F, 12539.815F, 12553.927F, 12568.042F, 12582.161F, 12596.285F,
|
||||
12610.412F, 12624.544F, 12638.679F, 12652.818F, 12666.961F, 12681.108F, 12695.259F, 12709.414F, 12723.573F, 12737.736F,
|
||||
12751.902F, 12766.073F, 12780.248F, 12794.427F, 12808.609F, 12822.796F, 12836.986F, 12851.181F, 12865.379F, 12879.581F,
|
||||
12893.787F, 12907.997F, 12922.211F, 12936.429F, 12950.65F, 12964.876F, 12979.105F, 12993.339F, 13007.576F, 13021.817F,
|
||||
13036.0625F, 13050.312F, 13064.564F, 13078.821F, 13093.082F, 13107.347F, 13121.615F, 13135.888F, 13150.164F, 13164.443F,
|
||||
13178.728F, 13193.016F, 13207.307F, 13221.603F, 13235.902F, 13250.205F, 13264.513F, 13278.823F, 13293.139F, 13307.457F,
|
||||
13321.779F, 13336.106F, 13350.437F, 13364.7705F, 13379.108F, 13393.45F, 13407.796F, 13422.1455F, 13436.499F, 13450.855F,
|
||||
13465.217F, 13479.582F, 13493.95F, 13508.322F, 13522.699F, 13537.079F, 13551.463F, 13565.851F, 13580.242F, 13594.638F,
|
||||
13609.037F, 13623.44F, 13637.847F, 13652.258F, 13666.672F, 13681.09F, 13695.512F, 13709.9375F, 13724.367F, 13738.801F,
|
||||
13753.238F, 13767.679F, 13782.124F, 13796.572F, 13811.024F, 13825.48F, 13839.94F, 13854.404F, 13868.872F, 13883.343F,
|
||||
13897.818F, 13912.297F, 13926.779F, 13941.266F, 13955.756F, 13970.25F, 13984.747F, 13999.249F, 14013.754F, 14028.263F,
|
||||
14042.775F, 14057.292F, 14071.812F, 14086.336F, 14100.863F, 14115.395F, 14129.93F, 14144.469F, 14159.011F, 14173.558F,
|
||||
14188.107F, 14202.661F, 14217.219F, 14231.78F, 14246.345F, 14260.914F, 14275.486F, 14290.0625F, 14304.642F, 14319.226F,
|
||||
14333.8125F, 14348.403F, 14362.998F, 14377.597F, 14392.199F, 14406.805F, 14421.414F, 14436.027F, 14450.645F, 14465.265F,
|
||||
14479.89F, 14494.518F, 14509.149F, 14523.784F, 14538.424F, 14553.066F, 14567.713F, 14582.362F, 14597.017F, 14611.674F,
|
||||
14626.335F, 14641.0F, 14655.669F, 14670.341F, 14685.017F, 14699.696F, 14714.379F, 14729.066F, 14743.757F, 14758.451F,
|
||||
14773.148F, 14787.85F, 14802.555F, 14817.264F, 14831.977F, 14846.692F, 14861.412F, 14876.136F, 14890.862F, 14905.594F,
|
||||
14920.327F, 14935.065F, 14949.807F, 14964.553F, 14979.301F, 14994.054F, 15008.81F, 15023.569F, 15038.333F, 15053.1F,
|
||||
15067.87F, 15082.645F, 15097.423F, 15112.204F, 15126.989F, 15141.777F, 15156.57F, 15171.366F, 15186.166F, 15200.969F,
|
||||
15215.775F, 15230.586F, 15245.399F, 15260.217F, 15275.038F, 15289.863F, 15304.691F, 15319.523F, 15334.359F, 15349.198F,
|
||||
15364.041F, 15378.887F, 15393.737F, 15408.59F, 15423.447F, 15438.308F, 15453.172F, 15468.04F, 15482.911F, 15497.786F,
|
||||
15512.664F, 15527.547F, 15542.433F, 15557.321F, 15572.214F, 15587.11F, 15602.01F, 15616.914F, 15631.82F, 15646.731F,
|
||||
15661.6455F, 15676.5625F, 15691.484F, 15706.409F, 15721.337F, 15736.269F, 15751.204F, 15766.144F, 15781.086F, 15796.031F,
|
||||
15810.981F, 15825.934F, 15840.891F, 15855.851F, 15870.814F, 15885.781F, 15900.752F, 15915.727F, 15930.704F, 15945.686F,
|
||||
15960.67F, 15975.658F, 15990.65F, 16005.6455F, 16020.645F, 16035.646F, 16050.652F, 16065.662F, 16080.675F, 16095.691F,
|
||||
16110.711F, 16125.734F, 16140.762F, 16155.792F, 16170.826F, 16185.863F, 16200.904F, 16215.948F, 16230.996F, 16246.048F,
|
||||
16261.103F, 16276.161F, 16291.223F, 16306.288F, 16321.356F, 16336.429F, 16351.505F, 16366.584F, 16381.667F, 16396.752F,
|
||||
16411.842F, 16426.936F, 16442.031F, 16457.133F, 16472.236F, 16487.342F, 16502.453F, 16517.566F, 16532.684F, 16547.805F,
|
||||
16562.93F, 16578.057F, 16593.188F, 16608.322F, 16623.46F, 16638.602F, 16653.746F, 16668.895F, 16684.047F, 16699.203F,
|
||||
16714.361F, 16729.523F, 16744.69F, 16759.857F, 16775.03F, 16790.207F, 16805.385F, 16820.568F, 16835.754F, 16850.943F,
|
||||
16866.137F, 16881.334F, 16896.533F, 16911.736F, 16926.943F, 16942.152F, 16957.367F, 16972.584F, 16987.805F, 17003.027F,
|
||||
17018.256F, 17033.486F, 17048.719F, 17063.957F, 17079.197F, 17094.441F, 17109.69F, 17124.94F, 17140.195F, 17155.453F,
|
||||
17170.713F, 17185.979F, 17201.246F, 17216.518F, 17231.793F, 17247.07F, 17262.352F, 17277.637F, 17292.926F, 17308.217F,
|
||||
17323.512F, 17338.81F, 17354.111F, 17369.416F, 17384.725F, 17400.037F, 17415.352F, 17430.672F, 17445.992F, 17461.318F,
|
||||
17476.646F, 17491.979F, 17507.314F, 17522.654F, 17537.996F, 17553.342F, 17568.69F, 17584.043F, 17599.398F, 17614.756F,
|
||||
17630.12F, 17645.484F, 17660.854F, 17676.227F, 17691.602F, 17706.98F, 17722.363F, 17737.748F, 17753.137F, 17768.53F,
|
||||
17783.926F, 17799.324F, 17814.727F, 17830.133F, 17845.541F, 17860.953F, 17876.37F, 17891.79F, 17907.21F, 17922.637F,
|
||||
17938.064F, 17953.498F, 17968.934F, 17984.371F, 17999.814F, 18015.26F, 18030.709F, 18046.16F, 18061.615F, 18077.074F,
|
||||
18092.537F, 18108.002F, 18123.47F, 18138.943F, 18154.418F, 18169.896F, 18185.379F, 18200.863F, 18216.352F, 18231.844F,
|
||||
18247.338F, 18262.838F, 18278.338F, 18293.844F, 18309.352F, 18324.863F, 18340.379F, 18355.896F, 18371.418F, 18386.941F,
|
||||
18402.47F, 18418.002F, 18433.535F, 18449.072F, 18464.613F, 18480.158F, 18495.705F, 18511.256F, 18526.81F, 18542.367F,
|
||||
18557.928F, 18573.492F, 18589.059F, 18604.629F, 18620.203F, 18635.781F, 18651.361F, 18666.943F, 18682.531F, 18698.121F,
|
||||
18713.713F, 18729.31F, 18744.91F, 18760.512F, 18776.12F, 18791.729F, 18807.34F, 18822.957F, 18838.576F, 18854.197F,
|
||||
18869.824F, 18885.453F, 18901.084F, 18916.719F, 18932.357F, 18948.0F, 18963.645F, 18979.293F, 18994.943F, 19010.6F,
|
||||
19026.256F, 19041.918F, 19057.582F, 19073.25F, 19088.92F, 19104.594F, 19120.271F, 19135.951F, 19151.635F, 19167.322F,
|
||||
19183.012F, 19198.705F, 19214.402F, 19230.102F, 19245.805F, 19261.51F, 19277.22F, 19292.932F, 19308.648F, 19324.367F,
|
||||
19340.088F, 19355.814F, 19371.543F, 19387.273F, 19403.01F, 19418.746F, 19434.488F, 19450.232F, 19465.98F, 19481.73F,
|
||||
19497.484F, 19513.242F, 19529.002F, 19544.766F, 19560.533F, 19576.303F, 19592.076F, 19607.852F, 19623.63F, 19639.414F,
|
||||
19655.2F, 19670.988F, 19686.78F, 19702.576F, 19718.373F, 19734.176F, 19749.98F, 19765.787F, 19781.6F, 19797.414F,
|
||||
19813.23F, 19829.05F, 19844.875F, 19860.701F, 19876.531F, 19892.365F, 19908.201F, 19924.041F, 19939.883F, 19955.729F,
|
||||
19971.578F, 19987.43F, 20003.285F, 20019.143F, 20035.004F, 20050.87F, 20066.736F, 20082.607F, 20098.482F, 20114.36F,
|
||||
20130.24F, 20146.123F, 20162.01F, 20177.898F, 20193.791F, 20209.688F, 20225.586F, 20241.488F, 20257.395F, 20273.303F,
|
||||
20289.215F, 20305.129F, 20321.047F, 20336.967F, 20352.893F, 20368.818F, 20384.75F, 20400.682F, 20416.62F, 20432.559F,
|
||||
20448.502F, 20464.447F, 20480.396F, 20496.348F, 20512.303F, 20528.262F, 20544.223F, 20560.188F, 20576.154F, 20592.125F,
|
||||
20608.1F, 20624.076F, 20640.055F, 20656.04F, 20672.025F, 20688.014F, 20704.006F, 20720.002F, 20736.0F, 20752.002F,
|
||||
20768.006F, 20784.014F, 20800.025F, 20816.04F, 20832.055F, 20848.076F, 20864.1F, 20880.125F, 20896.154F, 20912.186F,
|
||||
20928.223F, 20944.26F, 20960.303F, 20976.346F, 20992.395F, 21008.445F, 21024.498F, 21040.557F, 21056.615F, 21072.68F,
|
||||
21088.744F, 21104.814F, 21120.887F, 21136.96F, 21153.04F, 21169.121F, 21185.205F, 21201.293F, 21217.383F, 21233.477F,
|
||||
21249.574F, 21265.674F, 21281.775F, 21297.883F, 21313.99F, 21330.104F, 21346.217F, 21362.336F, 21378.457F, 21394.58F,
|
||||
21410.707F, 21426.838F, 21442.97F, 21459.107F, 21475.246F, 21491.389F, 21507.533F, 21523.682F, 21539.834F, 21555.988F,
|
||||
21572.145F, 21588.307F, 21604.469F, 21620.635F, 21636.805F, 21652.979F, 21669.152F, 21685.332F, 21701.514F, 21717.697F,
|
||||
21733.885F, 21750.076F, 21766.27F, 21782.467F, 21798.666F, 21814.87F, 21831.074F, 21847.283F, 21863.494F, 21879.709F,
|
||||
21895.928F, 21912.148F, 21928.371F, 21944.598F, 21960.828F, 21977.06F, 21993.297F, 22009.535F, 22025.777F, 22042.021F,
|
||||
22058.27F, 22074.52F, 22090.773F, 22107.03F, 22123.29F, 22139.553F, 22155.818F, 22172.086F, 22188.357F, 22204.633F,
|
||||
22220.91F, 22237.191F, 22253.475F, 22269.762F, 22286.05F, 22302.344F, 22318.639F, 22334.938F, 22351.238F, 22367.543F,
|
||||
22383.85F, 22400.16F, 22416.473F, 22432.79F, 22449.11F, 22465.432F, 22481.756F, 22498.084F, 22514.416F, 22530.75F,
|
||||
22547.086F, 22563.426F, 22579.77F, 22596.115F, 22612.465F, 22628.816F, 22645.17F, 22661.527F, 22677.889F, 22694.252F,
|
||||
22710.62F, 22726.988F, 22743.361F, 22759.736F, 22776.115F, 22792.496F, 22808.88F, 22825.268F, 22841.658F, 22858.05F,
|
||||
22874.447F, 22890.846F, 22907.248F, 22923.652F, 22940.06F, 22956.47F, 22972.885F, 22989.3F, 23005.72F, 23022.143F,
|
||||
23038.568F, 23054.996F, 23071.428F, 23087.861F, 23104.299F, 23120.738F, 23137.182F, 23153.627F, 23170.076F, 23186.527F,
|
||||
23202.982F, 23219.44F, 23235.9F, 23252.363F, 23268.83F, 23285.299F, 23301.77F, 23318.246F, 23334.723F, 23351.203F,
|
||||
23367.688F, 23384.174F, 23400.664F, 23417.156F, 23433.652F, 23450.15F, 23466.65F, 23483.154F, 23499.662F, 23516.172F,
|
||||
23532.684F, 23549.2F, 23565.719F, 23582.24F, 23598.764F, 23615.291F, 23631.822F, 23648.354F, 23664.89F, 23681.43F,
|
||||
23697.97F, 23714.516F, 23731.062F, 23747.613F, 23764.166F, 23780.723F, 23797.281F, 23813.844F, 23830.408F, 23846.975F,
|
||||
23863.545F, 23880.12F, 23896.695F, 23913.273F, 23929.855F, 23946.441F, 23963.03F, 23979.62F, 23996.213F, 24012.809F,
|
||||
24029.408F, 24046.01F, 24062.615F, 24079.223F, 24095.834F, 24112.447F, 24129.064F, 24145.684F, 24162.305F, 24178.93F,
|
||||
24195.559F, 24212.19F, 24228.822F, 24245.459F, 24262.098F, 24278.74F, 24295.385F, 24312.033F, 24328.684F, 24345.336F,
|
||||
24361.992F, 24378.652F, 24395.314F, 24411.979F, 24428.646F, 24445.318F, 24461.99F, 24478.668F, 24495.346F, 24512.027F,
|
||||
24528.713F, 24545.4F, 24562.092F, 24578.785F, 24595.48F, 24612.18F, 24628.88F, 24645.586F, 24662.293F, 24679.004F,
|
||||
24695.717F, 24712.434F, 24729.152F, 24745.873F, 24762.598F, 24779.324F, 24796.055F, 24812.787F, 24829.523F, 24846.262F,
|
||||
24863.004F, 24879.748F, 24896.494F, 24913.244F, 24929.996F, 24946.752F, 24963.51F, 24980.271F, 24997.035F, 25013.803F,
|
||||
25030.572F, 25047.344F, 25064.12F, 25080.896F, 25097.678F, 25114.46F, 25131.248F, 25148.037F, 25164.828F, 25181.623F,
|
||||
25198.422F, 25215.22F, 25232.025F, 25248.83F, 25265.639F, 25282.451F, 25299.266F, 25316.082F, 25332.902F, 25349.725F,
|
||||
25366.55F, 25383.379F, 25400.209F, 25417.043F, 25433.88F, 25450.719F, 25467.562F, 25484.406F, 25501.254F, 25518.105F,
|
||||
25534.959F, 25551.814F, 25568.674F, 25585.535F, 25602.4F, 25619.268F, 25636.137F, 25653.01F, 25669.885F, 25686.764F,
|
||||
25703.645F, 25720.53F, 25737.416F, 25754.305F, 25771.197F, 25788.092F, 25804.99F, 25821.89F, 25838.795F, 25855.7F,
|
||||
25872.61F, 25889.52F, 25906.436F, 25923.352F, 25940.271F, 25957.195F, 25974.12F, 25991.049F, 26007.979F, 26024.912F,
|
||||
26041.85F, 26058.787F, 26075.73F, 26092.674F, 26109.623F, 26126.572F, 26143.525F, 26160.48F, 26177.44F, 26194.4F,
|
||||
26211.365F, 26228.33F, 26245.3F, 26262.273F, 26279.248F, 26296.225F, 26313.205F, 26330.19F, 26347.174F, 26364.162F,
|
||||
26381.154F, 26398.148F, 26415.145F, 26432.145F, 26449.146F, 26466.152F, 26483.16F, 26500.17F, 26517.184F, 26534.2F,
|
||||
26551.219F, 26568.24F, 26585.264F, 26602.291F, 26619.32F, 26636.352F, 26653.387F, 26670.424F, 26687.465F, 26704.508F,
|
||||
26721.555F, 26738.604F, 26755.654F, 26772.709F, 26789.766F, 26806.824F, 26823.887F, 26840.951F, 26858.02F, 26875.09F,
|
||||
26892.162F, 26909.238F, 26926.316F, 26943.398F, 26960.482F, 26977.568F, 26994.658F, 27011.75F, 27028.844F, 27045.941F,
|
||||
27063.041F, 27080.145F, 27097.25F, 27114.357F, 27131.469F, 27148.582F, 27165.7F, 27182.818F, 27199.94F, 27217.064F,
|
||||
27234.191F, 27251.32F, 27268.453F, 27285.588F, 27302.727F, 27319.867F, 27337.01F, 27354.156F, 27371.305F, 27388.455F,
|
||||
27405.61F, 27422.766F, 27439.926F, 27457.088F, 27474.252F, 27491.42F, 27508.59F, 27525.764F, 27542.938F, 27560.117F,
|
||||
27577.297F, 27594.48F, 27611.666F, 27628.855F, 27646.047F, 27663.24F, 27680.438F, 27697.637F, 27714.84F, 27732.045F,
|
||||
27749.252F, 27766.463F, 27783.676F, 27800.89F, 27818.11F, 27835.33F, 27852.553F, 27869.78F, 27887.008F, 27904.24F,
|
||||
27921.473F, 27938.71F, 27955.95F, 27973.191F, 27990.438F, 28007.684F, 28024.934F, 28042.188F, 28059.443F, 28076.701F,
|
||||
28093.96F, 28111.225F, 28128.49F, 28145.76F, 28163.031F, 28180.305F, 28197.582F, 28214.861F, 28232.143F, 28249.428F,
|
||||
28266.715F, 28284.004F, 28301.297F, 28318.592F, 28335.889F, 28353.19F, 28370.492F, 28387.799F, 28405.107F, 28422.418F,
|
||||
28439.73F, 28457.047F, 28474.367F, 28491.688F, 28509.012F, 28526.338F, 28543.668F, 28561.0F, 28578.334F, 28595.672F,
|
||||
28613.012F, 28630.354F, 28647.7F, 28665.047F, 28682.398F, 28699.75F, 28717.105F, 28734.465F, 28751.826F, 28769.19F,
|
||||
28786.555F, 28803.924F, 28821.295F, 28838.67F, 28856.047F, 28873.426F, 28890.807F, 28908.191F, 28925.578F, 28942.969F,
|
||||
28960.361F, 28977.756F, 28995.152F, 29012.553F, 29029.955F, 29047.361F, 29064.77F, 29082.18F, 29099.594F, 29117.01F,
|
||||
29134.428F, 29151.848F, 29169.271F, 29186.697F, 29204.127F, 29221.559F, 29238.992F, 29256.43F, 29273.867F, 29291.31F,
|
||||
29308.754F, 29326.201F, 29343.65F, 29361.104F, 29378.559F, 29396.016F, 29413.475F, 29430.938F, 29448.402F, 29465.871F,
|
||||
29483.34F, 29500.814F, 29518.29F, 29535.768F, 29553.248F, 29570.73F, 29588.217F, 29605.705F, 29623.197F, 29640.69F,
|
||||
29658.186F, 29675.686F, 29693.186F, 29710.69F, 29728.197F, 29745.705F, 29763.217F, 29780.73F, 29798.248F, 29815.768F,
|
||||
29833.29F, 29850.814F, 29868.342F, 29885.871F, 29903.402F, 29920.938F, 29938.475F, 29956.016F, 29973.557F, 29991.104F,
|
||||
30008.65F, 30026.201F, 30043.754F, 30061.309F, 30078.867F, 30096.428F, 30113.99F, 30131.555F, 30149.123F, 30166.695F,
|
||||
30184.268F, 30201.844F, 30219.422F, 30237.002F, 30254.586F, 30272.172F, 30289.762F, 30307.352F, 30324.945F, 30342.543F,
|
||||
30360.14F, 30377.742F, 30395.346F, 30412.953F, 30430.562F, 30448.174F, 30465.787F, 30483.404F, 30501.023F, 30518.645F,
|
||||
30536.27F, 30553.896F, 30571.525F, 30589.156F, 30606.791F, 30624.428F, 30642.068F, 30659.71F, 30677.355F, 30695.002F,
|
||||
30712.652F, 30730.305F, 30747.959F, 30765.615F, 30783.275F, 30800.938F, 30818.604F, 30836.27F, 30853.94F, 30871.613F,
|
||||
30889.287F, 30906.965F, 30924.645F, 30942.328F, 30960.014F, 30977.701F, 30995.39F, 31013.084F, 31030.78F, 31048.477F,
|
||||
31066.178F, 31083.879F, 31101.584F, 31119.293F, 31137.004F, 31154.717F, 31172.432F, 31190.148F, 31207.87F, 31225.592F,
|
||||
31243.318F, 31261.047F, 31278.777F, 31296.51F, 31314.244F, 31331.982F, 31349.723F, 31367.467F, 31385.213F, 31402.96F,
|
||||
31420.71F, 31438.463F, 31456.219F, 31473.977F, 31491.738F, 31509.502F, 31527.268F, 31545.035F, 31562.805F, 31580.578F,
|
||||
31598.354F, 31616.133F, 31633.912F, 31651.695F, 31669.482F, 31687.27F, 31705.06F, 31722.854F, 31740.648F, 31758.447F,
|
||||
31776.248F, 31794.05F, 31811.855F, 31829.664F, 31847.475F, 31865.287F, 31883.104F, 31900.922F, 31918.742F, 31936.564F,
|
||||
31954.39F, 31972.219F, 31990.049F, 32007.88F, 32025.717F, 32043.555F, 32061.395F, 32079.238F, 32097.084F, 32114.932F,
|
||||
32132.781F, 32150.635F, 32168.49F, 32186.348F, 32204.207F, 32222.07F, 32239.936F, 32257.803F, 32275.674F, 32293.545F,
|
||||
32311.422F, 32329.299F, 32347.178F, 32365.06F, 32382.945F, 32400.834F, 32418.723F, 32436.615F, 32454.51F, 32472.408F,
|
||||
32490.307F, 32508.209F, 32526.115F, 32544.021F, 32561.932F, 32579.844F, 32597.758F, 32615.676F, 32633.594F, 32651.516F,
|
||||
32669.441F, 32687.367F, 32705.297F, 32723.229F, 32741.162F, 32759.1F, 32777.04F, 32794.98F, 32812.926F, 32830.87F,
|
||||
32848.82F, 32866.77F, 32884.727F, 32902.68F, 32920.64F, 32938.6F, 32956.566F, 32974.53F, 32992.5F, 33010.47F,
|
||||
33028.445F, 33046.418F, 33064.4F, 33082.38F, 33100.363F, 33118.348F, 33136.336F, 33154.33F, 33172.32F, 33190.316F,
|
||||
33208.312F, 33226.312F, 33244.316F, 33262.32F, 33280.33F, 33298.34F, 33316.35F, 33334.367F, 33352.383F, 33370.402F,
|
||||
33388.426F, 33406.45F, 33424.477F, 33442.508F, 33460.54F, 33478.574F, 33496.61F, 33514.65F, 33532.69F, 33550.734F,
|
||||
33568.78F, 33586.832F, 33604.883F, 33622.934F, 33640.992F, 33659.05F, 33677.11F, 33695.176F, 33713.242F, 33731.31F,
|
||||
33749.38F, 33767.453F, 33785.527F, 33803.605F, 33821.688F, 33839.77F, 33857.855F, 33875.94F, 33894.03F, 33912.125F,
|
||||
33930.22F, 33948.316F, 33966.418F, 33984.52F, 34002.625F, 34020.73F, 34038.84F, 34056.953F, 34075.066F, 34093.184F,
|
||||
34111.3F, 34129.42F, 34147.547F, 34165.67F, 34183.8F, 34201.934F, 34220.066F, 34238.203F, 34256.34F, 34274.48F,
|
||||
34292.625F, 34310.77F, 34328.918F, 34347.066F, 34365.22F, 34383.375F, 34401.53F, 34419.69F, 34437.855F, 34456.02F,
|
||||
34474.188F, 34492.355F, 34510.527F, 34528.703F, 34546.88F, 34565.06F, 34583.24F, 34601.42F, 34619.61F, 34637.797F,
|
||||
34655.99F, 34674.184F, 34692.38F, 34710.574F, 34728.777F, 34746.98F, 34765.184F, 34783.39F, 34801.6F, 34819.812F,
|
||||
34838.027F, 34856.246F, 34874.465F, 34892.688F, 34910.91F, 34929.137F, 34947.367F, 34965.598F, 34983.832F, 35002.07F,
|
||||
35020.31F, 35038.547F, 35056.793F, 35075.04F, 35093.285F, 35111.535F, 35129.79F, 35148.043F, 35166.3F, 35184.562F,
|
||||
35202.824F, 35221.09F, 35239.355F, 35257.625F, 35275.895F, 35294.17F, 35312.445F, 35330.727F, 35349.008F, 35367.29F,
|
||||
35385.58F, 35403.863F, 35422.156F, 35440.45F, 35458.742F, 35477.043F, 35495.34F, 35513.645F, 35531.95F, 35550.258F,
|
||||
35568.566F, 35586.88F, 35605.19F, 35623.508F, 35641.83F, 35660.15F, 35678.473F, 35696.797F, 35715.125F, 35733.457F,
|
||||
35751.79F, 35770.125F, 35788.465F, 35806.805F, 35825.145F, 35843.492F, 35861.84F, 35880.188F, 35898.54F, 35916.895F,
|
||||
35935.25F, 35953.61F, 35971.97F, 35990.336F, 36008.7F, 36027.07F, 36045.438F, 36063.812F, 36082.188F, 36100.566F,
|
||||
36118.945F, 36137.33F, 36155.71F, 36174.098F, 36192.49F, 36210.88F, 36229.273F, 36247.67F, 36266.07F, 36284.47F,
|
||||
36302.875F, 36321.277F, 36339.688F, 36358.098F, 36376.51F, 36394.926F, 36413.344F, 36431.76F, 36450.184F, 36468.61F,
|
||||
36487.035F, 36505.465F, 36523.895F, 36542.33F, 36560.766F, 36579.203F, 36597.645F, 36616.086F, 36634.53F, 36652.98F,
|
||||
36671.43F, 36689.883F, 36708.336F, 36726.793F, 36745.25F, 36763.715F, 36782.176F, 36800.645F, 36819.113F, 36837.582F,
|
||||
36856.055F, 36874.53F, 36893.008F, 36911.49F, 36929.97F, 36948.457F, 36966.94F, 36985.43F, 37003.92F, 37022.418F,
|
||||
37040.914F, 37059.41F, 37077.914F, 37096.414F, 37114.92F, 37133.43F, 37151.938F, 37170.45F, 37188.965F, 37207.48F,
|
||||
37226.0F, 37244.523F, 37263.047F, 37281.574F, 37300.1F, 37318.633F, 37337.164F, 37355.7F, 37374.24F, 37392.777F,
|
||||
37411.32F, 37429.867F, 37448.41F, 37466.96F, 37485.51F, 37504.066F, 37522.62F, 37541.18F, 37559.742F, 37578.305F,
|
||||
37596.87F, 37615.438F, 37634.008F, 37652.58F, 37671.152F, 37689.73F, 37708.31F, 37726.89F, 37745.473F, 37764.06F,
|
||||
37782.65F, 37801.24F, 37819.832F, 37838.426F, 37857.023F, 37875.62F, 37894.223F, 37912.83F, 37931.434F, 37950.043F,
|
||||
37968.656F, 37987.266F, 38005.883F, 38024.5F, 38043.12F, 38061.742F, 38080.367F, 38098.996F, 38117.625F, 38136.254F,
|
||||
38154.89F, 38173.523F, 38192.164F, 38210.805F, 38229.445F, 38248.094F, 38266.74F, 38285.39F, 38304.04F, 38322.695F,
|
||||
38341.35F, 38360.01F, 38378.67F, 38397.336F, 38416.0F, 38434.668F, 38453.336F, 38472.01F, 38490.684F, 38509.363F,
|
||||
38528.04F, 38546.723F, 38565.406F, 38584.09F, 38602.78F, 38621.47F, 38640.164F, 38658.86F, 38677.555F, 38696.254F,
|
||||
38714.957F, 38733.66F, 38752.367F, 38771.074F, 38789.785F, 38808.5F, 38827.215F, 38845.934F, 38864.652F, 38883.375F,
|
||||
38902.098F, 38920.824F, 38939.555F, 38958.285F, 38977.02F, 38995.754F, 39014.492F, 39033.23F, 39051.973F, 39070.72F,
|
||||
39089.465F, 39108.215F, 39126.965F, 39145.72F, 39164.477F, 39183.234F, 39201.992F, 39220.754F, 39239.52F, 39258.29F,
|
||||
39277.06F, 39295.83F, 39314.6F, 39333.38F, 39352.156F, 39370.938F, 39389.72F, 39408.504F, 39427.293F, 39446.082F,
|
||||
39464.87F, 39483.668F, 39502.465F, 39521.26F, 39540.062F, 39558.863F, 39577.67F, 39596.477F, 39615.285F, 39634.098F,
|
||||
39652.914F, 39671.73F, 39690.547F, 39709.367F, 39728.19F, 39747.016F, 39765.844F, 39784.67F, 39803.504F, 39822.34F,
|
||||
39841.176F, 39860.016F, 39878.855F, 39897.7F, 39916.543F, 39935.39F, 39954.242F, 39973.094F, 39991.945F, 40010.8F,
|
||||
40029.66F, 40048.523F, 40067.387F, 40086.25F, 40105.117F, 40123.99F, 40142.86F, 40161.734F, 40180.61F, 40199.49F,
|
||||
40218.367F, 40237.25F, 40256.137F, 40275.023F, 40293.914F, 40312.805F, 40331.7F, 40350.598F, 40369.496F, 40388.395F,
|
||||
40407.297F, 40426.203F, 40445.11F, 40464.02F, 40482.934F, 40501.848F, 40520.76F, 40539.68F, 40558.6F, 40577.523F,
|
||||
40596.45F, 40615.375F, 40634.305F, 40653.24F, 40672.17F, 40691.105F, 40710.043F, 40728.984F, 40747.93F, 40766.87F,
|
||||
40785.82F, 40804.77F, 40823.72F, 40842.676F, 40861.63F, 40880.586F, 40899.547F, 40918.51F, 40937.477F, 40956.44F,
|
||||
40975.41F, 40994.383F, 41013.355F, 41032.332F, 41051.31F, 41070.29F, 41089.27F, 41108.254F, 41127.242F, 41146.23F,
|
||||
41165.223F, 41184.215F, 41203.21F, 41222.207F, 41241.207F, 41260.21F, 41279.215F, 41298.22F, 41317.227F, 41336.24F,
|
||||
41355.25F, 41374.266F, 41393.285F, 41412.305F, 41431.324F, 41450.348F, 41469.375F, 41488.402F, 41507.434F, 41526.465F,
|
||||
41545.5F, 41564.535F, 41583.574F, 41602.617F, 41621.66F, 41640.707F, 41659.754F, 41678.805F, 41697.855F, 41716.91F,
|
||||
41735.965F, 41755.023F, 41774.086F, 41793.15F, 41812.215F, 41831.28F, 41850.35F, 41869.42F, 41888.496F, 41907.57F,
|
||||
41926.65F, 41945.73F, 41964.812F, 41983.9F, 42002.984F, 42022.074F, 42041.164F, 42060.258F, 42079.35F, 42098.45F,
|
||||
42117.55F, 42136.652F, 42155.758F, 42174.863F, 42193.973F, 42213.082F, 42232.195F, 42251.31F, 42270.426F, 42289.547F,
|
||||
42308.668F, 42327.793F, 42346.918F, 42366.047F, 42385.176F, 42404.31F, 42423.44F, 42442.58F, 42461.72F, 42480.86F,
|
||||
42500.0F, 42519.15F, 42538.293F, 42557.445F, 42576.594F, 42595.75F, 42614.906F, 42634.062F, 42653.223F, 42672.387F,
|
||||
42691.55F, 42710.72F, 42729.887F, 42749.06F, 42768.23F, 42787.406F, 42806.582F, 42825.76F, 42844.945F, 42864.13F,
|
||||
42883.316F, 42902.504F, 42921.695F, 42940.887F, 42960.082F, 42979.277F, 42998.477F, 43017.68F, 43036.883F, 43056.086F,
|
||||
43075.293F, 43094.504F, 43113.715F, 43132.93F, 43152.145F, 43171.363F, 43190.586F, 43209.81F, 43229.03F, 43248.258F,
|
||||
43267.49F, 43286.72F, 43305.953F, 43325.188F, 43344.426F, 43363.664F, 43382.906F, 43402.15F, 43421.395F, 43440.645F,
|
||||
43459.895F, 43479.145F, 43498.402F, 43517.656F, 43536.918F, 43556.176F, 43575.44F, 43594.707F, 43613.973F, 43633.242F,
|
||||
43652.516F, 43671.79F, 43691.062F, 43710.34F, 43729.62F, 43748.902F, 43768.188F, 43787.473F, 43806.76F, 43826.055F,
|
||||
43845.348F, 43864.64F, 43883.938F, 43903.24F, 43922.54F, 43941.844F, 43961.15F, 43980.457F, 43999.766F, 44019.08F,
|
||||
44038.39F, 44057.707F, 44077.027F, 44096.348F, 44115.668F, 44134.992F, 44154.32F, 44173.65F, 44192.98F, 44212.312F,
|
||||
44231.65F, 44250.984F, 44270.324F, 44289.668F, 44309.008F, 44328.355F, 44347.703F, 44367.055F, 44386.406F, 44405.758F,
|
||||
44425.117F, 44444.473F, 44463.836F, 44483.2F, 44502.562F, 44521.93F, 44541.297F, 44560.668F, 44580.043F, 44599.418F,
|
||||
44618.793F, 44638.176F, 44657.555F, 44676.938F, 44696.324F, 44715.715F, 44735.1F, 44754.496F, 44773.89F, 44793.285F,
|
||||
44812.684F, 44832.086F, 44851.49F, 44870.89F, 44890.297F, 44909.707F, 44929.117F, 44948.53F, 44967.945F, 44987.363F,
|
||||
45006.78F, 45026.203F, 45045.63F, 45065.055F, 45084.48F, 45103.91F, 45123.344F, 45142.777F, 45162.215F, 45181.652F,
|
||||
45201.094F, 45220.535F, 45239.98F, 45259.426F, 45278.875F, 45298.324F, 45317.777F, 45337.23F, 45356.688F, 45376.15F,
|
||||
45395.61F, 45415.074F, 45434.54F, 45454.004F, 45473.477F, 45492.945F, 45512.42F, 45531.895F, 45551.375F, 45570.855F,
|
||||
45590.336F, 45609.82F, 45629.305F, 45648.793F, 45668.285F, 45687.777F, 45707.273F, 45726.77F, 45746.266F, 45765.77F,
|
||||
45785.27F, 45804.773F, 45824.28F, 45843.793F, 45863.3F, 45882.816F, 45902.332F, 45921.848F, 45941.367F, 45960.89F,
|
||||
45980.414F, 45999.938F, 46019.465F, 46038.996F, 46058.527F, 46078.062F, 46097.598F, 46117.137F, 46136.676F, 46156.22F,
|
||||
46175.76F, 46195.31F, 46214.855F, 46234.406F, 46253.96F, 46273.516F, 46293.07F, 46312.63F, 46332.19F, 46351.754F,
|
||||
46371.32F, 46390.887F, 46410.453F, 46430.027F, 46449.598F, 46469.176F, 46488.75F, 46508.332F, 46527.91F, 46547.496F,
|
||||
46567.082F, 46586.668F, 46606.258F, 46625.85F, 46645.445F, 46665.04F, 46684.637F, 46704.24F, 46723.84F, 46743.445F,
|
||||
46763.05F, 46782.656F, 46802.27F, 46821.88F, 46841.496F, 46861.11F, 46880.73F, 46900.35F, 46919.973F, 46939.598F,
|
||||
46959.223F, 46978.85F, 46998.484F, 47018.117F, 47037.75F, 47057.387F, 47077.027F, 47096.668F, 47116.312F, 47135.957F,
|
||||
47155.6F, 47175.254F, 47194.902F, 47214.56F, 47234.21F, 47253.87F, 47273.527F, 47293.19F, 47312.855F, 47332.52F,
|
||||
47352.188F, 47371.855F, 47391.527F, 47411.203F, 47430.88F, 47450.555F, 47470.234F, 47489.918F, 47509.6F, 47529.29F,
|
||||
47548.977F, 47568.664F, 47588.355F, 47608.05F, 47627.746F, 47647.445F, 47667.145F, 47686.848F, 47706.55F, 47726.258F,
|
||||
47745.97F, 47765.676F, 47785.39F, 47805.105F, 47824.82F, 47844.54F, 47864.26F, 47883.984F, 47903.707F, 47923.434F,
|
||||
47943.164F, 47962.895F, 47982.625F, 48002.36F, 48022.098F, 48041.836F, 48061.58F, 48081.32F, 48101.066F, 48120.812F,
|
||||
48140.562F, 48160.312F, 48180.066F, 48199.82F, 48219.58F, 48239.336F, 48259.098F, 48278.86F, 48298.625F, 48318.395F,
|
||||
48338.16F, 48357.934F, 48377.707F, 48397.48F, 48417.258F, 48437.04F, 48456.82F, 48476.6F, 48496.387F, 48516.176F,
|
||||
48535.965F, 48555.758F, 48575.55F, 48595.344F, 48615.145F, 48634.94F, 48654.742F, 48674.547F, 48694.35F, 48714.16F,
|
||||
48733.97F, 48753.78F, 48773.594F, 48793.41F, 48813.227F, 48833.047F, 48852.87F, 48872.69F, 48892.52F, 48912.348F,
|
||||
48932.176F, 48952.008F, 48971.84F, 48991.676F, 49011.516F, 49031.355F, 49051.195F, 49071.04F, 49090.887F, 49110.734F,
|
||||
49130.582F, 49150.434F, 49170.29F, 49190.145F, 49210.004F, 49229.863F, 49249.723F, 49269.586F, 49289.453F, 49309.32F,
|
||||
49329.19F, 49349.062F, 49368.938F, 49388.812F, 49408.69F, 49428.57F, 49448.453F, 49468.336F, 49488.223F, 49508.11F,
|
||||
49528.0F, 49547.89F, 49567.785F, 49587.68F, 49607.58F, 49627.477F, 49647.38F, 49667.28F, 49687.188F, 49707.098F,
|
||||
49727.008F, 49746.918F, 49766.832F, 49786.746F, 49806.664F, 49826.586F, 49846.508F, 49866.43F, 49886.355F, 49906.28F,
|
||||
49926.21F, 49946.145F, 49966.08F, 49986.01F, 50005.95F, 50025.89F, 50045.832F, 50065.777F, 50085.723F, 50105.668F,
|
||||
50125.617F, 50145.57F, 50165.523F, 50185.48F, 50205.438F, 50225.395F, 50245.355F, 50265.32F, 50285.285F, 50305.254F,
|
||||
50325.223F, 50345.195F, 50365.168F, 50385.14F, 50405.12F, 50425.098F, 50445.08F, 50465.062F, 50485.047F, 50505.035F,
|
||||
50525.023F, 50545.016F, 50565.008F, 50585.004F, 50605.0F, 50625.0F, 50645.0F, 50665.004F, 50685.008F, 50705.016F,
|
||||
50725.023F, 50745.035F, 50765.047F, 50785.062F, 50805.08F, 50825.098F, 50845.12F, 50865.14F, 50885.168F, 50905.195F,
|
||||
50925.223F, 50945.254F, 50965.285F, 50985.32F, 51005.355F, 51025.395F, 51045.434F, 51065.477F, 51085.523F, 51105.566F,
|
||||
51125.617F, 51145.668F, 51165.72F, 51185.773F, 51205.83F, 51225.887F, 51245.945F, 51266.008F, 51286.074F, 51306.14F,
|
||||
51326.207F, 51346.277F, 51366.348F, 51386.42F, 51406.5F, 51426.574F, 51446.656F, 51466.74F, 51486.82F, 51506.906F,
|
||||
51526.992F, 51547.082F, 51567.176F, 51587.27F, 51607.363F, 51627.46F, 51647.56F, 51667.66F, 51687.766F, 51707.87F,
|
||||
51727.977F, 51748.086F, 51768.195F, 51788.31F, 51808.426F, 51828.543F, 51848.66F, 51868.78F, 51888.902F, 51909.027F,
|
||||
51929.156F, 51949.285F, 51969.414F, 51989.547F, 52009.68F, 52029.816F, 52049.957F, 52070.098F, 52090.24F, 52110.383F,
|
||||
52130.527F, 52150.676F, 52170.83F, 52190.977F, 52211.133F, 52231.29F, 52251.445F, 52271.605F, 52291.766F, 52311.93F,
|
||||
52332.098F, 52352.266F, 52372.434F, 52392.605F, 52412.777F, 52432.953F, 52453.13F, 52473.31F, 52493.492F, 52513.67F,
|
||||
52533.86F, 52554.047F, 52574.234F, 52594.426F, 52614.617F, 52634.812F, 52655.008F, 52675.207F, 52695.406F, 52715.61F,
|
||||
52735.816F, 52756.02F, 52776.23F, 52796.438F, 52816.652F, 52836.863F, 52857.082F, 52877.3F, 52897.52F, 52917.742F,
|
||||
52937.965F, 52958.19F, 52978.418F, 52998.65F, 53018.88F, 53039.113F, 53059.348F, 53079.582F, 53099.824F, 53120.062F,
|
||||
53140.31F, 53160.55F, 53180.797F, 53201.047F, 53221.297F, 53241.55F, 53261.805F, 53282.062F, 53302.32F, 53322.582F,
|
||||
53342.844F, 53363.105F, 53383.37F, 53403.64F, 53423.91F, 53444.184F, 53464.457F, 53484.73F, 53505.008F, 53525.29F,
|
||||
53545.57F, 53565.855F, 53586.14F, 53606.426F, 53626.715F, 53647.008F, 53667.3F, 53687.594F, 53707.89F, 53728.19F,
|
||||
53748.492F, 53768.793F, 53789.098F, 53809.402F, 53829.71F, 53850.023F, 53870.336F, 53890.65F, 53910.965F, 53931.28F,
|
||||
53951.6F, 53971.926F, 53992.246F, 54012.574F, 54032.902F, 54053.23F, 54073.562F, 54093.895F, 54114.23F, 54134.566F,
|
||||
54154.906F, 54175.246F, 54195.59F, 54215.934F, 54236.28F, 54256.63F, 54276.98F, 54297.332F, 54317.688F, 54338.043F,
|
||||
54358.4F, 54378.758F, 54399.12F, 54419.484F, 54439.85F, 54460.22F, 54480.586F, 54500.96F, 54521.332F, 54541.707F,
|
||||
54562.086F, 54582.465F, 54602.844F, 54623.227F, 54643.613F, 54664.0F, 54684.387F, 54704.777F, 54725.168F, 54745.562F,
|
||||
54765.96F, 54786.36F, 54806.758F, 54827.16F, 54847.562F, 54867.97F, 54888.375F, 54908.785F, 54929.195F, 54949.61F,
|
||||
54970.023F, 54990.44F, 55010.86F, 55031.28F, 55051.703F, 55072.13F, 55092.555F, 55112.984F, 55133.414F, 55153.844F,
|
||||
55174.277F, 55194.715F, 55215.152F, 55235.594F, 55256.035F, 55276.477F, 55296.92F, 55317.37F, 55337.82F, 55358.27F,
|
||||
55378.723F, 55399.176F, 55419.633F, 55440.094F, 55460.555F, 55481.016F, 55501.48F, 55521.945F, 55542.414F, 55562.883F,
|
||||
55583.355F, 55603.83F, 55624.305F, 55644.78F, 55665.26F, 55685.742F, 55706.227F, 55726.71F, 55747.2F, 55767.688F,
|
||||
55788.176F, 55808.668F, 55829.164F, 55849.66F, 55870.156F, 55890.656F, 55911.16F, 55931.664F, 55952.168F, 55972.676F,
|
||||
55993.188F, 56013.695F, 56034.21F, 56054.727F, 56075.242F, 56095.76F, 56116.28F, 56136.805F, 56157.33F, 56177.855F,
|
||||
56198.383F, 56218.914F, 56239.445F, 56259.98F, 56280.516F, 56301.05F, 56321.59F, 56342.133F, 56362.676F, 56383.22F,
|
||||
56403.766F, 56424.316F, 56444.867F, 56465.418F, 56485.973F, 56506.53F, 56527.09F, 56547.65F, 56568.21F, 56588.773F,
|
||||
56609.34F, 56629.906F, 56650.477F, 56671.047F, 56691.62F, 56712.195F, 56732.773F, 56753.35F, 56773.93F, 56794.51F,
|
||||
56815.098F, 56835.684F, 56856.273F, 56876.863F, 56897.453F, 56918.047F, 56938.64F, 56959.24F, 56979.84F, 57000.44F,
|
||||
57021.043F, 57041.65F, 57062.254F, 57082.863F, 57103.473F, 57124.086F, 57144.7F, 57165.316F, 57185.934F, 57206.55F,
|
||||
57227.176F, 57247.797F, 57268.42F, 57289.05F, 57309.68F, 57330.31F, 57350.94F, 57371.574F, 57392.21F, 57412.85F,
|
||||
57433.492F, 57454.133F, 57474.777F, 57495.42F, 57516.07F, 57536.72F, 57557.37F, 57578.023F, 57598.68F, 57619.336F,
|
||||
57639.992F, 57660.652F, 57681.316F, 57701.98F, 57722.645F, 57743.312F, 57763.984F, 57784.656F, 57805.33F, 57826.004F,
|
||||
57846.68F, 57867.36F, 57888.04F, 57908.723F, 57929.406F, 57950.094F, 57970.78F, 57991.473F, 58012.164F, 58032.855F,
|
||||
58053.555F, 58074.25F, 58094.95F, 58115.652F, 58136.35F, 58157.06F, 58177.766F, 58198.473F, 58219.184F, 58239.895F,
|
||||
58260.61F, 58281.324F, 58302.043F, 58322.76F, 58343.484F, 58364.207F, 58384.934F, 58405.66F, 58426.387F, 58447.117F,
|
||||
58467.85F, 58488.586F, 58509.32F, 58530.06F, 58550.797F, 58571.54F, 58592.28F, 58613.027F, 58633.773F, 58654.523F,
|
||||
58675.273F, 58696.027F, 58716.78F, 58737.54F, 58758.297F, 58779.055F, 58799.816F, 58820.582F, 58841.348F, 58862.113F,
|
||||
58882.883F, 58903.652F, 58924.426F, 58945.203F, 58965.977F, 58986.758F, 59007.535F, 59028.316F, 59049.1F, 59069.887F,
|
||||
59090.676F, 59111.465F, 59132.254F, 59153.047F, 59173.844F, 59194.637F, 59215.438F, 59236.24F, 59257.04F, 59277.844F,
|
||||
59298.65F, 59319.457F, 59340.266F, 59361.08F, 59381.89F, 59402.703F, 59423.52F, 59444.34F, 59465.16F, 59485.98F,
|
||||
59506.805F, 59527.63F, 59548.457F, 59569.29F, 59590.117F, 59610.953F, 59631.785F, 59652.625F, 59673.46F, 59694.3F,
|
||||
59715.145F, 59735.99F, 59756.832F, 59777.68F, 59798.53F, 59819.383F, 59840.234F, 59861.09F, 59881.945F, 59902.805F,
|
||||
59923.664F, 59944.527F, 59965.39F, 59986.258F, 60007.125F, 60027.992F, 60048.863F, 60069.74F, 60090.613F, 60111.49F,
|
||||
60132.367F, 60153.246F, 60174.13F, 60195.01F, 60215.9F, 60236.785F, 60257.676F, 60278.566F, 60299.46F, 60320.355F,
|
||||
60341.25F, 60362.15F, 60383.05F, 60403.95F, 60424.855F, 60445.76F, 60466.668F, 60487.58F, 60508.49F, 60529.4F,
|
||||
60550.316F, 60571.23F, 60592.15F, 60613.07F, 60633.992F, 60654.914F, 60675.84F, 60696.766F, 60717.695F, 60738.63F,
|
||||
60759.56F, 60780.496F, 60801.43F, 60822.367F, 60843.31F, 60864.25F, 60885.195F, 60906.14F, 60927.086F, 60948.035F,
|
||||
60968.984F, 60989.938F, 61010.89F, 61031.848F, 61052.805F, 61073.766F, 61094.727F, 61115.69F, 61136.656F, 61157.62F,
|
||||
61178.59F, 61199.562F, 61220.535F, 61241.508F, 61262.484F, 61283.46F, 61304.44F, 61325.42F, 61346.406F, 61367.39F,
|
||||
61388.375F, 61409.363F, 61430.355F, 61451.348F, 61472.34F, 61493.336F, 61514.332F, 61535.332F, 61556.332F, 61577.336F,
|
||||
61598.34F, 61619.348F, 61640.355F, 61661.363F, 61682.375F, 61703.39F, 61724.406F, 61745.42F, 61766.44F, 61787.46F,
|
||||
61808.484F, 61829.508F, 61850.535F, 61871.562F, 61892.59F, 61913.62F, 61934.656F, 61955.69F, 61976.727F, 61997.766F,
|
||||
62018.805F, 62039.848F, 62060.89F, 62081.938F, 62102.984F, 62124.035F, 62145.086F, 62166.137F, 62187.19F, 62208.25F,
|
||||
62229.31F, 62250.367F, 62271.43F, 62292.492F, 62313.56F, 62334.625F, 62355.69F, 62376.76F, 62397.836F, 62418.91F,
|
||||
62439.984F, 62461.062F, 62482.145F, 62503.223F, 62524.31F, 62545.39F, 62566.477F, 62587.566F, 62608.656F, 62629.75F,
|
||||
62650.844F, 62671.938F, 62693.035F, 62714.133F, 62735.234F, 62756.336F, 62777.44F, 62798.547F, 62819.656F, 62840.766F,
|
||||
62861.875F, 62882.99F, 62904.105F, 62925.223F, 62946.34F, 62967.46F, 62988.582F, 63009.707F, 63030.832F, 63051.96F,
|
||||
63073.09F, 63094.22F, 63115.35F, 63136.484F, 63157.62F, 63178.76F, 63199.9F, 63221.043F, 63242.184F, 63263.33F,
|
||||
63284.477F, 63305.625F, 63326.777F, 63347.93F, 63369.082F, 63390.24F, 63411.395F, 63432.555F, 63453.715F, 63474.88F,
|
||||
63496.043F, 63517.207F, 63538.375F, 63559.547F, 63580.72F, 63601.89F, 63623.066F, 63644.242F, 63665.42F, 63686.6F,
|
||||
63707.785F, 63728.97F, 63750.152F, 63771.34F, 63792.53F, 63813.72F, 63834.914F, 63856.11F, 63877.305F, 63898.5F,
|
||||
63919.703F, 63940.902F, 63962.105F, 63983.312F, 64004.52F, 64025.727F, 64046.938F, 64068.15F, 64089.363F, 64110.58F,
|
||||
64131.793F, 64153.016F, 64174.234F, 64195.457F, 64216.68F, 64237.906F, 64259.137F, 64280.363F, 64301.598F, 64322.83F,
|
||||
64344.062F, 64365.3F, 64386.54F, 64407.777F, 64429.02F, 64450.266F, 64471.508F, 64492.758F, 64514.004F, 64535.254F,
|
||||
64556.508F, 64577.76F, 64599.02F, 64620.277F, 64641.535F, 64662.797F, 64684.06F, 64705.324F, 64726.59F, 64747.86F,
|
||||
64769.13F, 64790.4F, 64811.67F, 64832.945F, 64854.223F, 64875.504F, 64896.78F, 64918.066F, 64939.348F, 64960.633F,
|
||||
64981.92F, 65003.21F, 65024.5F, 65045.793F, 65067.086F, 65088.383F, 65109.68F, 65130.98F, 65152.28F, 65173.586F,
|
||||
65194.89F, 65216.195F, 65237.504F, 65258.812F, 65280.125F, 65301.438F, 65322.754F, 65344.07F, 65365.39F, 65386.71F,
|
||||
65408.03F, 65429.355F, 65450.68F, 65472.008F, 65493.336F, 65514.668F, 65536.0F, 65557.336F, 65578.67F, 65600.01F,
|
||||
65621.34F, 65642.69F, 65664.03F, 65685.375F, 65706.72F, 65728.07F, 65749.42F, 65770.77F, 65792.125F, 65813.48F,
|
||||
65834.836F, 65856.195F, 65877.555F, 65898.914F, 65920.28F, 65941.65F, 65963.016F, 65984.38F, 66005.75F, 66027.125F,
|
||||
66048.5F, 66069.875F, 66091.25F, 66112.63F, 66134.016F, 66155.4F, 66176.78F, 66198.164F, 66219.555F, 66240.945F,
|
||||
66262.336F, 66283.73F, 66305.125F, 66326.516F, 66347.914F, 66369.32F, 66390.72F, 66412.125F, 66433.53F, 66454.94F,
|
||||
66476.34F, 66497.75F, 66519.164F, 66540.58F, 66561.99F, 66583.414F, 66604.83F, 66626.25F, 66647.67F, 66669.1F,
|
||||
66690.52F, 66711.95F, 66733.38F, 66754.81F, 66776.24F, 66797.68F, 66819.12F, 66840.555F, 66861.99F, 66883.44F,
|
||||
66904.875F, 66926.32F, 66947.766F, 66969.22F, 66990.664F, 67012.12F, 67033.57F, 67055.02F, 67076.484F, 67097.94F,
|
||||
67119.4F, 67140.86F, 67162.33F, 67183.79F, 67205.26F, 67226.73F, 67248.195F, 67269.67F, 67291.14F, 67312.62F,
|
||||
67334.09F, 67355.58F, 67377.055F, 67398.54F, 67420.02F, 67441.51F, 67463.0F, 67484.484F, 67505.98F, 67527.47F,
|
||||
67548.96F, 67570.46F, 67591.96F, 67613.46F, 67634.96F, 67656.46F, 67677.97F, 67699.48F, 67720.984F, 67742.49F,
|
||||
67764.0F, 67785.516F, 67807.03F, 67828.55F, 67850.06F, 67871.586F, 67893.11F, 67914.63F, 67936.16F, 67957.69F,
|
||||
67979.21F, 68000.74F, 68022.27F, 68043.805F, 68065.34F, 68086.88F, 68108.42F, 68129.96F, 68151.5F, 68173.05F,
|
||||
68194.59F, 68216.14F, 68237.69F, 68259.24F, 68280.79F, 68302.34F, 68323.9F, 68345.46F, 68367.016F, 68388.58F,
|
||||
68410.14F, 68431.7F, 68453.27F, 68474.836F, 68496.41F, 68517.98F, 68539.555F, 68561.125F, 68582.7F, 68604.28F,
|
||||
68625.86F, 68647.445F, 68669.02F, 68690.61F, 68712.195F, 68733.78F, 68755.375F, 68776.97F, 68798.56F, 68820.16F,
|
||||
68841.75F, 68863.35F, 68884.945F, 68906.55F, 68928.16F, 68949.76F, 68971.37F, 68992.98F, 69014.586F, 69036.195F,
|
||||
69057.81F, 69079.42F, 69101.04F, 69122.664F, 69144.28F, 69165.91F, 69187.52F, 69209.15F, 69230.78F, 69252.41F,
|
||||
69274.04F, 69295.67F, 69317.305F, 69338.94F, 69360.58F, 69382.21F, 69403.85F, 69425.5F, 69447.14F, 69468.79F,
|
||||
69490.44F, 69512.086F, 69533.734F, 69555.38F, 69577.04F, 69598.695F, 69620.35F, 69642.016F, 69663.67F, 69685.336F,
|
||||
69707.0F, 69728.664F, 69750.336F, 69772.0F, 69793.67F, 69815.34F, 69837.02F, 69858.695F, 69880.375F, 69902.055F,
|
||||
69923.734F, 69945.414F, 69967.1F, 69988.79F, 70010.48F, 70032.164F, 70053.85F, 70075.55F, 70097.24F, 70118.94F,
|
||||
70140.63F, 70162.336F, 70184.04F, 70205.74F, 70227.445F, 70249.15F, 70270.86F, 70292.56F, 70314.27F, 70335.99F,
|
||||
70357.7F, 70379.42F, 70401.14F, 70422.86F, 70444.58F, 70466.305F, 70488.02F, 70509.75F, 70531.484F, 70553.21F,
|
||||
70574.945F, 70596.67F, 70618.41F, 70640.15F, 70661.88F, 70683.625F, 70705.37F, 70727.11F, 70748.85F, 70770.6F,
|
||||
70792.34F, 70814.09F, 70835.84F, 70857.6F, 70879.35F, 70901.11F, 70922.87F, 70944.625F, 70966.39F, 70988.16F,
|
||||
71009.914F, 71031.69F, 71053.45F, 71075.22F, 71096.99F, 71118.766F, 71140.54F, 71162.32F, 71184.09F, 71205.875F,
|
||||
71227.66F, 71249.44F, 71271.23F, 71293.01F, 71314.8F, 71336.586F, 71358.375F, 71380.17F, 71401.97F, 71423.766F,
|
||||
71445.56F, 71467.36F, 71489.164F, 71510.96F, 71532.766F, 71554.58F, 71576.38F, 71598.195F, 71620.01F, 71641.82F,
|
||||
71663.63F, 71685.445F, 71707.266F, 71729.086F, 71750.91F, 71772.73F, 71794.555F, 71816.38F, 71838.21F, 71860.04F,
|
||||
71881.87F, 71903.7F, 71925.54F, 71947.375F, 71969.21F, 71991.05F, 72012.89F, 72034.734F, 72056.58F, 72078.42F,
|
||||
72100.27F, 72122.125F, 72143.97F, 72165.83F, 72187.68F, 72209.54F, 72231.39F, 72253.25F, 72275.12F, 72296.98F,
|
||||
72318.84F, 72340.7F, 72362.57F, 72384.445F, 72406.31F, 72428.19F, 72450.06F, 72471.94F, 72493.81F, 72515.695F,
|
||||
72537.57F, 72559.45F, 72581.34F, 72603.23F, 72625.12F, 72647.0F, 72668.89F, 72690.79F, 72712.68F, 72734.58F,
|
||||
72756.47F, 72778.375F, 72800.27F, 72822.17F, 72844.08F, 72865.984F, 72887.89F, 72909.8F, 72931.71F, 72953.625F,
|
||||
72975.54F, 72997.45F, 73019.37F, 73041.29F, 73063.21F, 73085.13F, 73107.055F, 73128.98F, 73150.91F, 73172.836F,
|
||||
73194.766F, 73216.695F, 73238.63F, 73260.56F, 73282.5F, 73304.44F, 73326.38F, 73348.32F, 73370.266F, 73392.21F,
|
||||
73414.16F, 73436.1F, 73458.055F, 73480.01F, 73501.96F, 73523.914F, 73545.87F, 73567.83F, 73589.79F, 73611.75F,
|
||||
73633.71F, 73655.68F, 73677.64F, 73699.61F, 73721.58F, 73743.555F, 73765.52F, 73787.5F, 73809.48F, 73831.45F,
|
||||
73853.43F, 73875.414F, 73897.4F, 73919.38F, 73941.37F, 73963.35F, 73985.34F, 74007.336F, 74029.33F, 74051.32F,
|
||||
74073.31F, 74095.31F, 74117.31F, 74139.31F, 74161.31F, 74183.32F, 74205.33F, 74227.33F, 74249.34F, 74271.35F,
|
||||
74293.36F, 74315.375F, 74337.39F, 74359.41F, 74381.43F, 74403.445F, 74425.47F, 74447.49F, 74469.516F, 74491.55F,
|
||||
74513.57F, 74535.6F, 74557.63F, 74579.664F, 74601.7F, 74623.74F, 74645.77F, 74667.82F, 74689.86F, 74711.9F,
|
||||
74733.945F, 74755.99F, 74778.04F, 74800.086F, 74822.14F, 74844.195F, 74866.25F, 74888.305F, 74910.36F, 74932.42F,
|
||||
74954.484F, 74976.55F, 74998.61F, 75020.67F, 75042.74F, 75064.81F, 75086.88F, 75108.95F, 75131.02F, 75153.1F,
|
||||
75175.18F, 75197.26F, 75219.336F, 75241.42F, 75263.5F, 75285.586F, 75307.67F, 75329.766F, 75351.85F, 75373.945F,
|
||||
75396.04F, 75418.13F, 75440.23F, 75462.33F, 75484.43F, 75506.53F, 75528.63F, 75550.734F, 75572.84F, 75594.95F,
|
||||
75617.06F, 75639.17F, 75661.28F, 75683.4F, 75705.516F, 75727.63F, 75749.75F, 75771.875F, 75793.99F, 75816.12F,
|
||||
75838.24F, 75860.37F, 75882.5F, 75904.63F, 75926.766F, 75948.9F, 75971.03F, 75993.17F, 76015.305F, 76037.445F,
|
||||
76059.586F, 76081.734F, 76103.875F, 76126.02F, 76148.17F, 76170.32F, 76192.47F, 76214.625F, 76236.78F, 76258.94F,
|
||||
76281.09F, 76303.25F, 76325.414F, 76347.58F, 76369.74F, 76391.91F, 76414.08F, 76436.24F, 76458.414F, 76480.586F,
|
||||
76502.76F, 76524.94F, 76547.12F, 76569.29F, 76591.47F, 76613.66F, 76635.836F, 76658.02F, 76680.21F, 76702.4F,
|
||||
76724.586F, 76746.78F, 76768.98F, 76791.164F, 76813.37F, 76835.56F, 76857.766F, 76879.96F, 76902.164F, 76924.37F,
|
||||
76946.58F, 76968.78F, 76990.99F, 77013.2F, 77035.414F, 77057.63F, 77079.84F, 77102.06F, 77124.28F, 77146.5F,
|
||||
77168.73F, 77190.945F, 77213.17F, 77235.4F, 77257.625F, 77279.86F, 77302.09F, 77324.32F, 77346.555F, 77368.8F,
|
||||
77391.03F, 77413.27F, 77435.516F, 77457.76F, 77480.0F, 77502.25F, 77524.49F, 77546.74F, 77568.99F, 77591.25F,
|
||||
77613.5F, 77635.76F, 77658.016F, 77680.27F, 77702.53F, 77724.8F, 77747.055F, 77769.32F, 77791.586F, 77813.86F,
|
||||
77836.125F, 77858.4F, 77880.67F, 77902.945F, 77925.23F, 77947.5F, 77969.78F, 77992.06F, 78014.34F, 78036.625F,
|
||||
78058.914F, 78081.2F, 78103.49F, 78125.78F, 78148.07F, 78170.37F, 78192.664F, 78214.96F, 78237.26F, 78259.555F,
|
||||
78281.86F, 78304.164F, 78326.47F, 78348.77F, 78371.086F, 78393.39F, 78415.7F, 78438.016F, 78460.33F, 78482.65F,
|
||||
78504.97F, 78527.28F, 78549.6F, 78571.93F, 78594.25F, 78616.58F, 78638.91F, 78661.234F, 78683.56F, 78705.9F,
|
||||
78728.23F, 78750.56F, 78772.9F, 78795.234F, 78817.58F, 78839.92F, 78862.266F, 78884.61F, 78906.95F, 78929.3F,
|
||||
78951.65F, 78974.0F, 78996.35F, 79018.71F, 79041.06F, 79063.42F, 79085.78F, 79108.14F, 79130.5F, 79152.87F,
|
||||
79175.23F, 79197.59F, 79219.96F, 79242.336F, 79264.7F, 79287.08F, 79309.45F, 79331.83F, 79354.21F, 79376.586F,
|
||||
79398.97F, 79421.35F, 79443.734F, 79466.12F, 79488.51F, 79510.9F, 79533.29F, 79555.68F, 79578.07F, 79600.47F,
|
||||
79622.86F, 79645.26F, 79667.664F, 79690.06F, 79712.47F, 79734.87F, 79757.27F, 79779.68F, 79802.09F, 79824.5F,
|
||||
79846.914F, 79869.33F, 79891.74F, 79914.164F, 79936.58F, 79959.0F, 79981.42F, 80003.84F, 80026.27F, 80048.695F,
|
||||
80071.125F, 80093.555F, 80115.984F, 80138.42F, 80160.85F, 80183.29F, 80205.73F, 80228.164F, 80250.61F, 80273.05F,
|
||||
80295.49F, 80317.94F, 80340.38F, 80362.836F, 80385.28F, 80407.734F, 80430.19F, 80452.64F, 80475.1F, 80497.555F,
|
||||
80520.016F, 80542.48F, 80564.945F, 80587.41F, 80609.875F, 80632.336F, 80654.805F, 80677.28F, 80699.75F, 80722.23F,
|
||||
80744.695F, 80767.17F, 80789.66F, 80812.13F, 80834.62F, 80857.1F, 80879.586F, 80902.07F, 80924.555F, 80947.05F,
|
||||
80969.54F, 80992.03F, 81014.52F, 81037.016F, 81059.516F, 81082.016F, 81104.516F, 81127.016F, 81149.516F, 81172.02F,
|
||||
81194.53F, 81217.04F, 81239.55F, 81262.055F, 81284.57F, 81307.086F, 81329.6F, 81352.12F, 81374.63F, 81397.16F,
|
||||
81419.68F, 81442.2F, 81464.73F, 81487.26F, 81509.78F, 81532.31F, 81554.84F, 81577.375F, 81599.914F, 81622.445F,
|
||||
81644.984F, 81667.52F, 81690.06F, 81712.61F, 81735.15F, 81757.695F, 81780.24F, 81802.79F, 81825.34F, 81847.89F,
|
||||
81870.445F, 81893.0F, 81915.555F, 81938.11F, 81960.67F, 81983.234F, 82005.8F, 82028.36F, 82050.92F, 82073.49F,
|
||||
82096.06F, 82118.63F, 82141.2F, 82163.77F, 82186.35F, 82208.93F, 82231.51F, 82254.086F, 82276.664F, 82299.25F,
|
||||
82321.83F, 82344.414F, 82367.01F, 82389.59F, 82412.19F, 82434.77F, 82457.37F, 82479.96F, 82502.56F, 82525.16F,
|
||||
82547.76F, 82570.36F, 82592.96F, 82615.56F, 82638.17F, 82660.78F, 82683.39F, 82706.0F, 82728.61F, 82751.23F,
|
||||
82773.836F, 82796.45F, 82819.07F, 82841.695F, 82864.31F, 82886.94F, 82909.56F, 82932.19F, 82954.81F, 82977.445F,
|
||||
83000.07F, 83022.7F, 83045.336F, 83067.98F, 83090.61F, 83113.25F, 83135.89F, 83158.53F, 83181.17F, 83203.82F,
|
||||
83226.46F, 83249.11F, 83271.76F, 83294.414F, 83317.06F, 83339.72F, 83362.37F, 83385.03F, 83407.69F, 83430.34F,
|
||||
83453.01F, 83475.67F, 83498.336F, 83521.0F, 83543.664F, 83566.336F, 83589.01F, 83611.68F, 83634.35F, 83657.03F,
|
||||
83679.7F, 83702.38F, 83725.06F, 83747.74F, 83770.43F, 83793.11F, 83815.8F, 83838.484F, 83861.17F, 83883.87F,
|
||||
83906.555F, 83929.25F, 83951.945F, 83974.64F, 83997.336F, 84020.04F, 84042.74F, 84065.445F, 84088.15F, 84110.85F,
|
||||
84133.56F, 84156.266F, 84178.98F, 84201.69F, 84224.41F, 84247.12F, 84269.836F, 84292.555F, 84315.27F, 84337.99F,
|
||||
84360.72F, 84383.445F, 84406.164F, 84428.9F, 84451.625F, 84474.35F, 84497.086F, 84519.82F, 84542.555F, 84565.29F,
|
||||
84588.03F, 84610.766F, 84633.51F, 84656.25F, 84678.99F, 84701.74F, 84724.484F, 84747.234F, 84769.984F, 84792.74F,
|
||||
84815.49F, 84838.25F, 84861.0F, 84883.76F, 84906.52F, 84929.28F, 84952.05F, 84974.805F, 84997.57F, 85020.336F,
|
||||
85043.11F, 85065.875F, 85088.65F, 85111.42F, 85134.195F, 85156.98F, 85179.75F, 85202.53F, 85225.31F, 85248.09F,
|
||||
85270.875F, 85293.664F, 85316.445F, 85339.234F, 85362.02F, 85384.82F, 85407.61F, 85430.41F, 85453.2F, 85476.0F,
|
||||
85498.8F, 85521.6F, 85544.4F, 85567.2F, 85590.01F, 85612.81F, 85635.625F, 85658.43F, 85681.24F, 85704.055F,
|
||||
85726.87F, 85749.69F, 85772.5F, 85795.32F, 85818.14F, 85840.96F, 85863.79F, 85886.61F, 85909.44F, 85932.266F,
|
||||
85955.09F, 85977.92F, 86000.76F, 86023.59F, 86046.43F, 86069.266F, 86092.1F, 86114.945F, 86137.78F, 86160.625F,
|
||||
86183.47F, 86206.32F, 86229.164F, 86252.016F, 86274.87F, 86297.72F, 86320.57F, 86343.42F, 86366.28F, 86389.14F,
|
||||
86412.0F, 86434.86F, 86457.72F, 86480.586F, 86503.45F, 86526.32F, 86549.19F, 86572.055F, 86594.93F, 86617.805F,
|
||||
86640.68F, 86663.555F, 86686.43F, 86709.31F, 86732.19F, 86755.07F, 86777.95F, 86800.84F, 86823.73F, 86846.62F,
|
||||
86869.51F, 86892.4F, 86915.29F, 86938.19F, 86961.08F, 86983.98F, 87006.875F, 87029.77F, 87052.68F, 87075.586F,
|
||||
87098.484F, 87121.39F, 87144.305F, 87167.21F, 87190.125F, 87213.03F, 87235.945F, 87258.87F, 87281.78F, 87304.695F,
|
||||
87327.62F, 87350.54F, 87373.46F, 87396.39F, 87419.31F, 87442.24F, 87465.17F, 87488.1F, 87511.03F, 87533.97F,
|
||||
87556.9F, 87579.836F, 87602.77F, 87625.71F, 87648.66F, 87671.59F, 87694.54F, 87717.484F, 87740.43F, 87763.38F,
|
||||
87786.33F, 87809.28F, 87832.234F, 87855.19F, 87878.15F, 87901.1F, 87924.06F, 87947.02F, 87969.984F, 87992.945F,
|
||||
88015.914F, 88038.88F, 88061.85F, 88084.82F, 88107.79F, 88130.76F, 88153.734F, 88176.71F, 88199.69F, 88222.664F,
|
||||
88245.65F, 88268.625F, 88291.61F, 88314.59F, 88337.58F, 88360.57F, 88383.555F, 88406.55F, 88429.54F, 88452.53F,
|
||||
88475.52F, 88498.52F, 88521.52F, 88544.52F, 88567.52F, 88590.52F, 88613.52F, 88636.53F, 88659.54F, 88682.55F,
|
||||
88705.555F, 88728.57F, 88751.58F, 88774.59F, 88797.61F, 88820.625F, 88843.65F, 88866.664F, 88889.69F, 88912.71F,
|
||||
88935.734F, 88958.766F, 88981.79F, 89004.82F, 89027.85F, 89050.88F, 89073.914F, 89096.95F, 89119.984F, 89143.02F,
|
||||
89166.06F, 89189.11F, 89212.15F, 89235.195F, 89258.24F, 89281.29F, 89304.336F, 89327.38F, 89350.44F, 89373.49F,
|
||||
89396.54F, 89419.6F, 89442.66F, 89465.72F, 89488.77F, 89511.836F, 89534.9F, 89557.97F, 89581.03F, 89604.1F,
|
||||
89627.17F, 89650.24F, 89673.31F, 89696.38F, 89719.46F, 89742.54F, 89765.62F, 89788.695F, 89811.77F, 89834.86F,
|
||||
89857.945F, 89881.03F, 89904.12F, 89927.2F, 89950.3F, 89973.39F, 89996.48F, 90019.58F, 90042.67F, 90065.766F,
|
||||
90088.87F, 90111.97F, 90135.07F, 90158.17F, 90181.28F, 90204.38F, 90227.49F, 90250.6F, 90273.71F, 90296.83F,
|
||||
90319.94F, 90343.055F, 90366.17F, 90389.29F, 90412.41F, 90435.53F, 90458.65F, 90481.77F, 90504.9F, 90528.03F,
|
||||
90551.16F, 90574.29F, 90597.42F, 90620.555F, 90643.69F, 90666.82F, 90689.96F, 90713.1F, 90736.24F, 90759.38F,
|
||||
90782.52F, 90805.67F, 90828.81F, 90851.96F, 90875.11F, 90898.266F, 90921.414F, 90944.57F, 90967.73F, 90990.88F,
|
||||
91014.04F, 91037.195F, 91060.36F, 91083.52F, 91106.69F, 91129.85F, 91153.016F, 91176.19F, 91199.35F, 91222.52F,
|
||||
91245.7F, 91268.875F, 91292.05F, 91315.23F, 91338.41F, 91361.586F, 91384.766F, 91407.95F, 91431.13F, 91454.32F,
|
||||
91477.51F, 91500.695F, 91523.89F, 91547.08F, 91570.27F, 91593.47F, 91616.664F, 91639.86F, 91663.06F, 91686.26F,
|
||||
91709.46F, 91732.664F, 91755.875F, 91779.08F, 91802.29F, 91825.5F, 91848.71F, 91871.92F, 91895.13F, 91918.35F,
|
||||
91941.56F, 91964.78F, 91988.01F, 92011.23F, 92034.445F, 92057.67F, 92080.9F, 92104.125F, 92127.35F, 92150.586F,
|
||||
92173.81F, 92197.05F, 92220.28F, 92243.516F, 92266.76F, 92289.99F, 92313.234F, 92336.48F, 92359.72F, 92382.96F,
|
||||
92406.21F, 92429.46F, 92452.7F, 92475.96F, 92499.21F, 92522.46F, 92545.72F, 92568.98F, 92592.234F, 92615.49F,
|
||||
92638.75F, 92662.016F, 92685.28F, 92708.54F, 92731.81F, 92755.08F, 92778.34F, 92801.62F, 92824.89F, 92848.164F,
|
||||
92871.44F, 92894.72F, 92917.99F, 92941.27F, 92964.555F, 92987.836F, 93011.125F, 93034.41F, 93057.695F, 93080.984F,
|
||||
93104.27F, 93127.56F, 93150.86F, 93174.15F, 93197.445F, 93220.74F, 93244.04F, 93267.34F, 93290.64F, 93313.945F,
|
||||
93337.25F, 93360.555F, 93383.87F, 93407.17F, 93430.484F, 93453.8F, 93477.11F, 93500.42F, 93523.74F, 93547.055F,
|
||||
93570.375F, 93593.695F, 93617.016F, 93640.34F, 93663.664F, 93686.99F, 93710.32F, 93733.65F, 93756.984F, 93780.31F,
|
||||
93803.65F, 93826.984F, 93850.32F, 93873.66F, 93896.99F, 93920.336F, 93943.68F, 93967.02F, 93990.37F, 94013.71F,
|
||||
94037.06F, 94060.414F, 94083.76F, 94107.12F, 94130.47F, 94153.82F, 94177.18F, 94200.54F, 94223.9F, 94247.26F,
|
||||
94270.62F, 94293.984F, 94317.35F, 94340.72F, 94364.086F, 94387.45F, 94410.83F, 94434.195F, 94457.57F, 94480.945F,
|
||||
94504.33F, 94527.7F, 94551.086F, 94574.47F, 94597.85F, 94621.234F, 94644.62F, 94668.01F, 94691.39F, 94714.78F,
|
||||
94738.17F, 94761.57F, 94784.96F, 94808.36F, 94831.76F, 94855.16F, 94878.555F, 94901.95F, 94925.36F, 94948.766F,
|
||||
94972.17F, 94995.58F, 95018.984F, 95042.39F, 95065.805F, 95089.22F, 95112.63F, 95136.05F, 95159.47F, 95182.88F,
|
||||
95206.305F, 95229.73F, 95253.15F, 95276.58F, 95300.0F, 95323.43F, 95346.86F, 95370.29F, 95393.72F, 95417.16F,
|
||||
95440.586F, 95464.02F, 95487.46F, 95510.9F, 95534.34F, 95557.78F, 95581.23F, 95604.67F, 95628.12F, 95651.56F,
|
||||
95675.016F, 95698.46F, 95721.914F, 95745.37F, 95768.82F, 95792.28F, 95815.734F, 95839.195F, 95862.66F, 95886.12F,
|
||||
95909.586F, 95933.05F, 95956.516F, 95979.984F, 96003.45F, 96026.92F, 96050.39F, 96073.87F, 96097.34F, 96120.82F,
|
||||
96144.3F, 96167.77F, 96191.26F, 96214.734F, 96238.22F, 96261.7F, 96285.195F, 96308.68F, 96332.17F, 96355.66F,
|
||||
96379.15F, 96402.65F, 96426.14F, 96449.64F, 96473.13F, 96496.63F, 96520.13F, 96543.64F, 96567.14F, 96590.65F,
|
||||
96614.15F, 96637.66F, 96661.17F, 96684.68F, 96708.195F, 96731.7F, 96755.22F, 96778.734F, 96802.26F, 96825.77F,
|
||||
96849.3F, 96872.81F, 96896.336F, 96919.87F, 96943.39F, 96966.92F, 96990.445F, 97013.98F, 97037.51F, 97061.05F,
|
||||
97084.58F, 97108.12F, 97131.66F, 97155.195F, 97178.734F, 97202.27F, 97225.82F, 97249.37F, 97272.91F, 97296.46F,
|
||||
97320.01F, 97343.555F, 97367.11F, 97390.664F, 97414.22F, 97437.77F, 97461.336F, 97484.89F, 97508.45F, 97532.016F,
|
||||
97555.58F, 97579.14F, 97602.71F, 97626.27F, 97649.84F, 97673.414F, 97696.984F, 97720.56F, 97744.13F, 97767.71F,
|
||||
97791.29F, 97814.87F, 97838.45F, 97862.03F, 97885.62F, 97909.2F, 97932.79F, 97956.375F, 97979.96F, 98003.555F,
|
||||
98027.15F, 98050.734F, 98074.336F, 98097.93F, 98121.52F, 98145.125F, 98168.73F, 98192.33F, 98215.93F, 98239.54F,
|
||||
98263.14F, 98286.75F, 98310.36F, 98333.97F, 98357.58F, 98381.195F, 98404.805F, 98428.42F, 98452.04F, 98475.66F,
|
||||
98499.28F, 98522.9F, 98546.52F, 98570.15F, 98593.77F, 98617.4F, 98641.03F, 98664.664F, 98688.29F, 98711.92F,
|
||||
98735.56F, 98759.195F, 98782.836F, 98806.47F, 98830.11F, 98853.75F, 98877.4F, 98901.04F, 98924.69F, 98948.336F,
|
||||
98971.984F, 98995.63F, 99019.28F, 99042.94F, 99066.586F, 99090.24F, 99113.9F, 99137.56F, 99161.22F, 99184.88F,
|
||||
99208.55F, 99232.21F, 99255.875F, 99279.54F, 99303.21F, 99326.875F, 99350.55F, 99374.22F, 99397.9F, 99421.57F,
|
||||
99445.25F, 99468.93F, 99492.61F, 99516.29F, 99539.97F, 99563.66F, 99587.336F, 99611.02F, 99634.71F, 99658.4F,
|
||||
99682.09F, 99705.79F, 99729.48F, 99753.17F, 99776.87F, 99800.57F, 99824.266F, 99847.97F, 99871.67F, 99895.375F,
|
||||
99919.08F, 99942.78F, 99966.49F, 99990.2F, 100013.914F, 100037.625F, 100061.336F, 100085.055F, 100108.766F, 100132.484F,
|
||||
100156.2F, 100179.92F, 100203.65F, 100227.37F, 100251.09F, 100274.82F, 100298.55F, 100322.27F, 100346.01F, 100369.74F,
|
||||
100393.47F, 100417.2F, 100440.945F, 100464.68F, 100488.414F, 100512.16F, 100535.9F, 100559.64F, 100583.38F, 100607.13F,
|
||||
100630.875F, 100654.625F, 100678.375F, 100702.125F, 100725.88F, 100749.63F, 100773.39F, 100797.15F, 100820.91F, 100844.664F,
|
||||
100868.42F, 100892.19F, 100915.95F, 100939.72F, 100963.484F, 100987.25F, 101011.02F, 101034.79F, 101058.56F, 101082.336F,
|
||||
101106.11F, 101129.89F, 101153.664F, 101177.445F, 101201.23F, 101225.01F, 101248.79F, 101272.58F, 101296.36F, 101320.15F,
|
||||
101343.94F, 101367.73F, 101391.52F, 101415.31F, 101439.11F, 101462.91F, 101486.7F, 101510.5F, 101534.305F, 101558.1F,
|
||||
101581.91F, 101605.71F, 101629.516F, 101653.32F, 101677.13F, 101700.94F, 101724.75F, 101748.56F, 101772.38F, 101796.195F,
|
||||
101820.01F, 101843.83F, 101867.65F, 101891.47F, 101915.29F, 101939.12F, 101962.945F, 101986.766F, 102010.59F, 102034.42F,
|
||||
102058.26F, 102082.086F, 102105.92F, 102129.76F, 102153.59F, 102177.43F, 102201.27F, 102225.11F, 102248.95F, 102272.8F,
|
||||
102296.64F, 102320.484F, 102344.336F, 102368.18F, 102392.03F, 102415.88F, 102439.734F, 102463.59F, 102487.445F, 102511.305F,
|
||||
102535.164F, 102559.02F, 102582.88F, 102606.75F, 102630.61F, 102654.48F, 102678.34F, 102702.21F, 102726.086F, 102749.95F,
|
||||
102773.83F, 102797.7F, 102821.58F, 102845.45F, 102869.33F, 102893.21F, 102917.086F, 102940.97F, 102964.85F, 102988.74F,
|
||||
103012.625F, 103036.516F, 103060.41F, 103084.3F, 103108.19F, 103132.08F, 103155.98F, 103179.87F, 103203.766F, 103227.664F,
|
||||
103251.56F, 103275.47F, 103299.37F, 103323.27F, 103347.18F, 103371.086F, 103394.99F, 103418.91F, 103442.81F, 103466.73F,
|
||||
103490.64F, 103514.555F, 103538.48F, 103562.39F, 103586.31F, 103610.234F, 103634.16F, 103658.08F, 103682.01F, 103705.93F,
|
||||
103729.86F, 103753.79F, 103777.72F, 103801.65F, 103825.586F, 103849.516F, 103873.45F, 103897.39F, 103921.33F, 103945.27F,
|
||||
103969.21F, 103993.16F, 104017.1F, 104041.05F, 104064.99F, 104088.94F, 104112.89F, 104136.84F, 104160.8F, 104184.75F,
|
||||
104208.7F, 104232.66F, 104256.62F, 104280.58F, 104304.54F, 104328.5F, 104352.46F, 104376.43F, 104400.4F, 104424.36F,
|
||||
104448.336F, 104472.305F, 104496.27F, 104520.25F, 104544.22F, 104568.195F, 104592.17F, 104616.16F, 104640.13F, 104664.12F,
|
||||
104688.1F, 104712.086F, 104736.07F, 104760.055F, 104784.05F, 104808.03F, 104832.02F, 104856.016F, 104880.01F, 104904.01F,
|
||||
104928.0F, 104952.0F, 104976.0F, 105000.0F, 105024.0F, 105048.01F, 105072.01F, 105096.016F, 105120.02F, 105144.03F,
|
||||
105168.05F, 105192.055F, 105216.07F, 105240.086F, 105264.1F, 105288.12F, 105312.13F, 105336.16F, 105360.17F, 105384.195F,
|
||||
105408.22F, 105432.25F, 105456.27F, 105480.305F, 105504.33F, 105528.36F, 105552.4F, 105576.43F, 105600.46F, 105624.5F,
|
||||
105648.54F, 105672.58F, 105696.62F, 105720.66F, 105744.7F, 105768.74F, 105792.79F, 105816.836F, 105840.89F, 105864.94F,
|
||||
105888.99F, 105913.04F, 105937.09F, 105961.15F, 105985.21F, 106009.266F, 106033.33F, 106057.38F, 106081.445F, 106105.516F,
|
||||
106129.58F, 106153.64F, 106177.71F, 106201.78F, 106225.85F, 106249.92F, 106273.99F, 106298.07F, 106322.15F, 106346.23F,
|
||||
106370.305F, 106394.38F, 106418.46F, 106442.55F, 106466.63F, 106490.72F, 106514.805F, 106538.89F, 106562.98F, 106587.07F,
|
||||
106611.164F, 106635.26F, 106659.35F, 106683.445F, 106707.55F, 106731.65F, 106755.74F, 106779.84F, 106803.95F, 106828.055F,
|
||||
106852.164F, 106876.266F, 106900.375F, 106924.484F, 106948.59F, 106972.71F, 106996.82F, 107020.94F, 107045.055F, 107069.17F,
|
||||
107093.3F, 107117.414F, 107141.54F, 107165.66F, 107189.78F, 107213.914F, 107238.04F, 107262.164F, 107286.3F, 107310.43F,
|
||||
107334.56F, 107358.695F, 107382.836F, 107406.97F, 107431.11F, 107455.25F, 107479.39F, 107503.53F, 107527.67F, 107551.82F,
|
||||
107575.97F, 107600.12F, 107624.266F, 107648.414F, 107672.57F, 107696.72F, 107720.875F, 107745.03F, 107769.19F, 107793.34F,
|
||||
107817.51F, 107841.67F, 107865.83F, 107889.99F, 107914.164F, 107938.33F, 107962.5F, 107986.664F, 108010.836F, 108035.01F,
|
||||
108059.18F, 108083.36F, 108107.53F, 108131.71F, 108155.89F, 108180.07F, 108204.25F, 108228.44F, 108252.62F, 108276.805F,
|
||||
108300.99F, 108325.18F, 108349.375F, 108373.56F, 108397.76F, 108421.95F, 108446.15F, 108470.34F, 108494.54F, 108518.74F,
|
||||
108542.94F, 108567.14F, 108591.34F, 108615.55F, 108639.76F, 108663.96F, 108688.17F, 108712.38F, 108736.59F, 108760.805F,
|
||||
108785.02F, 108809.234F, 108833.45F, 108857.67F, 108881.89F, 108906.11F, 108930.336F, 108954.555F, 108978.78F, 109003.01F,
|
||||
109027.234F, 109051.46F, 109075.695F, 109099.93F, 109124.16F, 109148.39F, 109172.63F, 109196.87F, 109221.1F, 109245.34F,
|
||||
109269.586F, 109293.83F, 109318.07F, 109342.32F, 109366.56F, 109390.81F, 109415.06F, 109439.31F, 109463.56F, 109487.81F,
|
||||
109512.07F, 109536.33F, 109560.586F, 109584.84F, 109609.1F, 109633.36F, 109657.625F, 109681.89F, 109706.16F, 109730.42F,
|
||||
109754.69F, 109778.96F, 109803.23F, 109827.5F, 109851.77F, 109876.05F, 109900.33F, 109924.6F, 109948.88F, 109973.164F,
|
||||
109997.445F, 110021.73F, 110046.01F, 110070.3F, 110094.58F, 110118.87F, 110143.16F, 110167.445F, 110191.74F, 110216.03F,
|
||||
110240.33F, 110264.625F, 110288.92F, 110313.22F, 110337.52F, 110361.82F, 110386.125F, 110410.43F, 110434.734F, 110459.04F,
|
||||
110483.35F, 110507.66F, 110531.97F, 110556.28F, 110580.59F, 110604.91F, 110629.23F, 110653.55F, 110677.86F, 110702.18F,
|
||||
110726.51F, 110750.83F, 110775.15F, 110799.48F, 110823.805F, 110848.13F, 110872.46F, 110896.79F, 110921.125F, 110945.46F,
|
||||
110969.79F, 110994.125F, 111018.47F, 111042.805F, 111067.15F, 111091.484F, 111115.83F, 111140.17F, 111164.516F, 111188.87F,
|
||||
111213.21F, 111237.56F, 111261.914F, 111286.266F, 111310.62F, 111334.98F, 111359.33F, 111383.69F, 111408.05F, 111432.41F,
|
||||
111456.766F, 111481.13F, 111505.49F, 111529.86F, 111554.23F, 111578.59F, 111602.97F, 111627.336F, 111651.71F, 111676.08F,
|
||||
111700.45F, 111724.836F, 111749.21F, 111773.586F, 111797.97F, 111822.35F, 111846.734F, 111871.12F, 111895.5F, 111919.89F,
|
||||
111944.27F, 111968.664F, 111993.055F, 112017.45F, 112041.84F, 112066.234F, 112090.63F, 112115.03F, 112139.43F, 112163.83F,
|
||||
112188.234F, 112212.63F, 112237.04F, 112261.445F, 112285.85F, 112310.26F, 112334.664F, 112359.08F, 112383.49F, 112407.91F,
|
||||
112432.32F, 112456.734F, 112481.15F, 112505.57F, 112529.99F, 112554.41F, 112578.836F, 112603.26F, 112627.68F, 112652.11F,
|
||||
112676.54F, 112700.97F, 112725.4F, 112749.83F, 112774.26F, 112798.695F, 112823.13F, 112847.57F, 112872.01F, 112896.445F,
|
||||
112920.89F, 112945.33F, 112969.77F, 112994.22F, 113018.664F, 113043.11F, 113067.56F, 113092.016F, 113116.46F, 113140.914F,
|
||||
113165.375F, 113189.83F, 113214.28F, 113238.74F, 113263.2F, 113287.664F, 113312.125F, 113336.586F, 113361.055F, 113385.516F,
|
||||
113409.984F, 113434.45F, 113458.93F, 113483.4F, 113507.87F, 113532.34F, 113556.82F, 113581.3F, 113605.77F, 113630.25F,
|
||||
113654.734F, 113679.22F, 113703.7F, 113728.19F, 113752.67F, 113777.16F, 113801.65F, 113826.13F, 113850.625F, 113875.12F,
|
||||
113899.62F, 113924.11F, 113948.61F, 113973.1F, 113997.6F, 114022.1F, 114046.6F, 114071.11F, 114095.61F, 114120.12F,
|
||||
114144.625F, 114169.13F, 114193.64F, 114218.16F, 114242.664F, 114267.18F, 114291.695F, 114316.21F, 114340.73F, 114365.25F,
|
||||
114389.766F, 114414.29F, 114438.81F, 114463.336F, 114487.86F, 114512.39F, 114536.914F, 114561.445F, 114585.98F, 114610.51F,
|
||||
114635.04F, 114659.58F, 114684.11F, 114708.65F, 114733.19F, 114757.73F, 114782.27F, 114806.81F, 114831.36F, 114855.9F,
|
||||
114880.445F, 114904.99F, 114929.55F, 114954.09F, 114978.65F, 115003.2F, 115027.76F, 115052.31F, 115076.87F, 115101.42F,
|
||||
115125.984F, 115150.55F, 115175.11F, 115199.67F, 115224.234F, 115248.805F, 115273.37F, 115297.94F, 115322.51F, 115347.08F,
|
||||
115371.65F, 115396.23F, 115420.805F, 115445.375F, 115469.95F, 115494.53F, 115519.12F, 115543.695F, 115568.28F, 115592.87F,
|
||||
115617.45F, 115642.04F, 115666.625F, 115691.22F, 115715.805F, 115740.4F, 115764.99F, 115789.586F, 115814.18F, 115838.78F,
|
||||
115863.38F, 115887.98F, 115912.58F, 115937.19F, 115961.79F, 115986.39F, 116011.0F, 116035.61F, 116060.22F, 116084.83F,
|
||||
116109.44F, 116134.055F, 116158.664F, 116183.28F, 116207.9F, 116232.516F, 116257.14F, 116281.76F, 116306.38F, 116331.01F,
|
||||
116355.63F, 116380.26F, 116404.88F, 116429.516F, 116454.14F, 116478.77F, 116503.41F, 116528.04F, 116552.67F, 116577.31F,
|
||||
116601.95F, 116626.586F, 116651.23F, 116675.875F, 116700.516F, 116725.16F, 116749.805F, 116774.45F, 116799.1F, 116823.75F,
|
||||
116848.4F, 116873.055F, 116897.7F, 116922.36F, 116947.016F, 116971.67F, 116996.336F, 117020.99F, 117045.66F, 117070.32F,
|
||||
117094.984F, 117119.65F, 117144.31F, 117168.98F, 117193.65F, 117218.32F, 117242.99F, 117267.664F, 117292.336F, 117317.016F,
|
||||
117341.69F, 117366.37F, 117391.05F, 117415.73F, 117440.414F, 117465.09F, 117489.78F, 117514.47F, 117539.16F, 117563.84F,
|
||||
117588.53F, 117613.23F, 117637.914F, 117662.61F, 117687.305F, 117712.0F, 117736.695F, 117761.4F, 117786.09F, 117810.8F,
|
||||
117835.5F, 117860.2F, 117884.914F, 117909.62F, 117934.33F, 117959.03F, 117983.74F, 118008.46F, 118033.17F, 118057.88F,
|
||||
118082.6F, 118107.32F, 118132.04F, 118156.76F, 118181.48F, 118206.195F, 118230.92F, 118255.65F, 118280.375F, 118305.1F,
|
||||
118329.83F, 118354.56F, 118379.29F, 118404.02F, 118428.76F, 118453.49F, 118478.23F, 118502.97F, 118527.7F, 118552.445F,
|
||||
118577.19F, 118601.93F, 118626.67F, 118651.42F, 118676.164F, 118700.914F, 118725.664F, 118750.414F, 118775.164F, 118799.92F,
|
||||
118824.67F, 118849.43F, 118874.19F, 118898.945F, 118923.7F, 118948.47F, 118973.23F, 118997.99F, 119022.76F, 119047.52F,
|
||||
119072.29F, 119097.06F, 119121.83F, 119146.6F, 119171.375F, 119196.15F, 119220.92F, 119245.695F, 119270.48F, 119295.26F,
|
||||
119320.03F, 119344.81F, 119369.6F, 119394.38F, 119419.17F, 119443.95F, 119468.74F, 119493.53F, 119518.32F, 119543.12F,
|
||||
119567.91F, 119592.7F, 119617.5F, 119642.3F, 119667.09F, 119691.89F, 119716.695F, 119741.49F, 119766.3F, 119791.1F,
|
||||
119815.91F, 119840.72F, 119865.52F, 119890.336F, 119915.15F, 119939.96F, 119964.77F, 119989.586F, 120014.41F, 120039.22F,
|
||||
120064.04F, 120088.86F, 120113.68F, 120138.51F, 120163.33F, 120188.16F, 120212.98F, 120237.805F, 120262.63F, 120287.47F,
|
||||
120312.3F, 120337.13F, 120361.97F, 120386.805F, 120411.64F, 120436.48F, 120461.31F, 120486.16F, 120511.0F, 120535.84F,
|
||||
120560.69F, 120585.53F, 120610.375F, 120635.23F, 120660.08F, 120684.93F, 120709.78F, 120734.63F, 120759.484F, 120784.34F,
|
||||
120809.2F, 120834.055F, 120858.92F, 120883.78F, 120908.64F, 120933.51F, 120958.37F, 120983.234F, 121008.1F, 121032.97F,
|
||||
121057.84F, 121082.71F, 121107.586F, 121132.46F, 121157.336F, 121182.21F, 121207.086F, 121231.97F, 121256.85F, 121281.73F,
|
||||
121306.61F, 121331.5F, 121356.38F, 121381.266F, 121406.16F, 121431.05F, 121455.94F, 121480.83F, 121505.72F, 121530.62F,
|
||||
121555.51F, 121580.41F, 121605.305F, 121630.2F, 121655.1F, 121680.01F, 121704.914F, 121729.81F, 121754.72F, 121779.625F,
|
||||
121804.54F, 121829.445F, 121854.36F, 121879.266F, 121904.18F, 121929.09F, 121954.016F, 121978.93F, 122003.85F, 122028.766F,
|
||||
122053.69F, 122078.61F, 122103.53F, 122128.46F, 122153.38F, 122178.31F, 122203.24F, 122228.17F, 122253.1F, 122278.03F,
|
||||
122302.97F, 122327.91F, 122352.836F, 122377.77F, 122402.72F, 122427.66F, 122452.59F, 122477.54F, 122502.484F, 122527.43F,
|
||||
122552.375F, 122577.32F, 122602.27F, 122627.22F, 122652.17F, 122677.125F, 122702.08F, 122727.04F, 122751.99F, 122776.95F,
|
||||
122801.91F, 122826.87F, 122851.83F, 122876.8F, 122901.76F, 122926.73F, 122951.69F, 122976.66F, 123001.625F, 123026.6F,
|
||||
123051.57F, 123076.55F, 123101.516F, 123126.49F, 123151.47F, 123176.445F, 123201.43F, 123226.41F, 123251.39F, 123276.375F,
|
||||
123301.36F, 123326.34F, 123351.33F, 123376.32F, 123401.305F, 123426.3F, 123451.29F, 123476.28F, 123501.28F, 123526.27F,
|
||||
123551.27F, 123576.27F, 123601.27F, 123626.27F, 123651.27F, 123676.27F, 123701.28F, 123726.29F, 123751.3F, 123776.305F,
|
||||
123801.31F, 123826.32F, 123851.336F, 123876.35F, 123901.37F, 123926.38F, 123951.4F, 123976.414F, 124001.44F, 124026.45F,
|
||||
124051.48F, 124076.5F, 124101.53F, 124126.555F, 124151.58F, 124176.61F, 124201.64F, 124226.67F, 124251.7F, 124276.734F,
|
||||
124301.77F, 124326.805F, 124351.84F, 124376.88F, 124401.92F, 124426.97F, 124452.01F, 124477.055F, 124502.09F, 124527.14F,
|
||||
124552.19F, 124577.24F, 124602.29F, 124627.34F, 124652.39F, 124677.445F, 124702.5F, 124727.56F, 124752.62F, 124777.67F,
|
||||
124802.734F, 124827.8F, 124852.86F, 124877.92F, 124902.99F, 124928.055F, 124953.125F, 124978.195F, 125003.266F, 125028.336F,
|
||||
125053.41F, 125078.484F, 125103.555F, 125128.63F, 125153.71F, 125178.79F, 125203.87F, 125228.95F, 125254.03F, 125279.12F,
|
||||
125304.2F, 125329.29F, 125354.375F, 125379.47F, 125404.555F, 125429.65F, 125454.74F, 125479.836F, 125504.93F, 125530.02F,
|
||||
125555.125F, 125580.23F, 125605.33F, 125630.43F, 125655.53F, 125680.63F, 125705.74F, 125730.84F, 125755.95F, 125781.06F,
|
||||
125806.17F, 125831.28F, 125856.4F, 125881.51F, 125906.625F, 125931.74F, 125956.86F, 125981.98F, 126007.1F, 126032.22F,
|
||||
126057.34F, 126082.47F, 126107.59F, 126132.72F, 126157.85F, 126182.98F, 126208.11F, 126233.24F, 126258.375F, 126283.51F,
|
||||
126308.64F, 126333.78F, 126358.914F, 126384.055F, 126409.195F, 126434.336F, 126459.484F, 126484.625F, 126509.77F, 126534.92F,
|
||||
126560.06F, 126585.22F, 126610.37F, 126635.516F, 126660.67F, 126685.83F, 126710.98F, 126736.13F, 126761.3F, 126786.45F,
|
||||
126811.62F, 126836.77F, 126861.94F, 126887.1F, 126912.266F, 126937.44F, 126962.6F, 126987.77F, 127012.945F, 127038.12F,
|
||||
127063.29F, 127088.46F, 127113.63F, 127138.81F, 127163.99F, 127189.17F, 127214.35F, 127239.53F, 127264.72F, 127289.9F,
|
||||
127315.086F, 127340.27F, 127365.46F, 127390.65F, 127415.836F, 127441.03F, 127466.22F, 127491.414F, 127516.61F, 127541.805F,
|
||||
127567.01F, 127592.2F, 127617.41F, 127642.61F, 127667.81F, 127693.016F, 127718.22F, 127743.42F, 127768.63F, 127793.84F,
|
||||
127819.055F, 127844.266F, 127869.48F, 127894.69F, 127919.91F, 127945.125F, 127970.34F, 127995.56F, 128020.78F, 128046.0F,
|
||||
128071.23F, 128096.445F, 128121.67F, 128146.9F, 128172.125F, 128197.35F, 128222.586F, 128247.82F, 128273.05F, 128298.28F,
|
||||
128323.516F, 128348.76F, 128373.99F, 128399.234F, 128424.47F, 128449.71F, 128474.95F, 128500.195F, 128525.445F, 128550.69F,
|
||||
128575.94F, 128601.19F, 128626.44F, 128651.69F, 128676.94F, 128702.195F, 128727.445F, 128752.7F, 128777.96F, 128803.22F,
|
||||
128828.48F, 128853.74F, 128879.0F, 128904.266F, 128929.53F, 128954.8F, 128980.06F, 129005.336F, 129030.6F, 129055.875F,
|
||||
129081.15F, 129106.42F, 129131.695F, 129156.97F, 129182.25F, 129207.52F, 129232.805F, 129258.086F, 129283.37F, 129308.66F,
|
||||
129333.94F, 129359.23F, 129384.51F, 129409.8F, 129435.086F, 129460.38F, 129485.67F, 129510.96F, 129536.26F, 129561.555F,
|
||||
129586.85F, 129612.15F, 129637.445F, 129662.75F, 129688.055F, 129713.35F, 129738.66F, 129763.96F, 129789.27F, 129814.58F,
|
||||
129839.89F, 129865.2F, 129890.51F, 129915.83F, 129941.14F, 129966.45F, 129991.77F, 130017.086F, 130042.41F, 130067.73F,
|
||||
130093.05F, 130118.375F, 130143.695F, 130169.02F, 130194.35F, 130219.68F, 130245.01F, 130270.336F, 130295.664F, 130321.0F,
|
||||
130346.336F, 130371.67F, 130397.01F, 130422.34F, 130447.68F, 130473.02F, 130498.37F, 130523.7F, 130549.05F, 130574.4F,
|
||||
130599.74F, 130625.086F, 130650.44F, 130675.79F, 130701.14F, 130726.49F, 130751.84F, 130777.2F, 130802.555F, 130827.914F,
|
||||
130853.27F, 130878.63F, 130903.99F, 130929.35F, 130954.72F, 130980.086F, 131005.445F, 131030.81F, 131056.19F, 131081.55F,
|
||||
131106.92F, 131132.3F, 131157.67F, 131183.05F, 131208.42F, 131233.8F, 131259.17F, 131284.55F, 131309.94F, 131335.31F,
|
||||
131360.7F, 131386.08F, 131411.47F, 131436.86F, 131462.25F, 131487.64F, 131513.03F, 131538.42F, 131563.81F, 131589.2F,
|
||||
131614.6F, 131640.0F, 131665.39F, 131690.8F, 131716.19F, 131741.6F, 131767.0F, 131792.4F, 131817.81F, 131843.22F,
|
||||
131868.62F, 131894.03F, 131919.44F, 131944.84F, 131970.27F, 131995.67F, 132021.1F, 132046.5F, 132071.92F, 132097.34F,
|
||||
132122.77F, 132148.19F, 132173.61F, 132199.03F, 132224.45F, 132249.88F, 132275.31F, 132300.73F, 132326.17F, 132351.6F,
|
||||
132377.03F, 132402.47F, 132427.89F, 132453.33F, 132478.77F, 132504.2F, 132529.64F, 132555.1F, 132580.53F, 132605.97F,
|
||||
132631.42F, 132656.86F, 132682.31F, 132707.75F, 132733.2F, 132758.66F, 132784.11F, 132809.56F, 132835.02F, 132860.47F,
|
||||
132885.92F, 132911.39F, 132936.84F, 132962.3F, 132987.77F, 133013.22F, 133038.69F, 133064.16F, 133089.62F, 133115.1F,
|
||||
133140.56F, 133166.03F, 133191.5F, 133216.97F, 133242.44F, 133267.92F, 133293.39F, 133318.88F, 133344.34F, 133369.83F,
|
||||
133395.31F, 133420.8F, 133446.28F, 133471.77F, 133497.25F, 133522.73F, 133548.22F, 133573.7F, 133599.2F, 133624.69F,
|
||||
133650.19F, 133675.69F, 133701.17F, 133726.67F, 133752.17F, 133777.67F, 133803.17F, 133828.67F, 133854.17F, 133879.67F,
|
||||
133905.19F, 133930.69F, 133956.2F, 133981.7F, 134007.22F, 134032.73F, 134058.23F, 134083.75F, 134109.27F, 134134.78F,
|
||||
134160.3F, 134185.81F, 134211.34F, 134236.86F, 134262.38F, 134287.9F, 134313.44F, 134338.95F, 134364.48F, 134390.02F,
|
||||
134415.55F, 134441.08F, 134466.61F, 134492.14F, 134517.67F, 134543.2F, 134568.75F, 134594.28F, 134619.81F, 134645.36F,
|
||||
134670.9F, 134696.44F, 134721.98F, 134747.53F, 134773.08F, 134798.62F, 134824.17F, 134849.72F, 134875.28F, 134900.83F,
|
||||
134926.39F, 134951.94F, 134977.5F, 135003.05F, 135028.61F, 135054.17F, 135079.73F, 135105.3F, 135130.86F, 135156.42F,
|
||||
135181.98F, 135207.55F, 135233.12F, 135258.69F, 135284.27F, 135309.83F, 135335.4F, 135360.98F, 135386.56F, 135412.12F,
|
||||
135437.7F, 135463.28F, 135488.88F, 135514.45F, 135540.03F, 135565.61F, 135591.2F, 135616.78F, 135642.38F, 135667.97F,
|
||||
135693.55F, 135719.14F, 135744.73F, 135770.33F, 135795.92F, 135821.52F, 135847.12F, 135872.72F, 135898.31F, 135923.92F,
|
||||
135949.52F, 135975.12F, 136000.73F, 136026.33F, 136051.94F, 136077.55F, 136103.16F, 136128.77F, 136154.38F, 136179.98F,
|
||||
136205.61F, 136231.22F, 136256.84F, 136282.45F, 136308.08F, 136333.69F, 136359.31F, 136384.94F, 136410.56F, 136436.19F,
|
||||
136461.81F, 136487.44F, 136513.06F, 136538.7F, 136564.33F, 136589.95F, 136615.6F, 136641.23F, 136666.86F, 136692.5F,
|
||||
136718.14F, 136743.78F, 136769.42F, 136795.06F, 136820.7F, 136846.34F, 136871.98F, 136897.64F, 136923.28F, 136948.94F,
|
||||
136974.58F, 137000.23F, 137025.89F, 137051.55F, 137077.2F, 137102.86F, 137128.52F, 137154.17F, 137179.83F, 137205.48F,
|
||||
137231.16F, 137256.81F, 137282.48F, 137308.14F, 137333.81F, 137359.48F, 137385.16F, 137410.81F, 137436.48F, 137462.16F,
|
||||
137487.84F, 137513.52F, 137539.19F, 137564.88F, 137590.55F, 137616.22F, 137641.9F, 137667.6F, 137693.28F, 137718.95F,
|
||||
137744.64F, 137770.33F, 137796.02F, 137821.7F, 137847.4F, 137873.1F, 137898.78F, 137924.48F, 137950.17F, 137975.88F,
|
||||
138001.58F, 138027.27F, 138052.97F, 138078.67F, 138104.38F, 138130.08F, 138155.78F, 138181.48F, 138207.2F, 138232.9F,
|
||||
138258.61F, 138284.33F, 138310.05F, 138335.75F, 138361.47F, 138387.19F, 138412.9F, 138438.62F, 138464.34F, 138490.06F,
|
||||
138515.78F, 138541.5F, 138567.23F, 138592.95F, 138618.69F, 138644.4F, 138670.14F, 138695.88F, 138721.6F, 138747.33F,
|
||||
138773.06F, 138798.8F, 138824.53F, 138850.28F, 138876.02F, 138901.75F, 138927.5F, 138953.23F, 138978.98F, 139004.72F,
|
||||
139030.47F, 139056.22F, 139081.97F, 139107.72F, 139133.47F, 139159.22F, 139184.97F, 139210.72F, 139236.48F, 139262.23F,
|
||||
139288.0F, 139313.75F, 139339.52F, 139365.28F, 139391.03F, 139416.8F, 139442.56F, 139468.33F, 139494.1F, 139519.88F,
|
||||
139545.64F, 139571.4F, 139597.19F, 139622.95F, 139648.73F, 139674.5F, 139700.28F, 139726.06F, 139751.84F, 139777.62F,
|
||||
139803.4F, 139829.19F, 139854.97F, 139880.75F, 139906.53F, 139932.33F, 139958.11F, 139983.9F, 140009.69F, 140035.48F,
|
||||
140061.28F, 140087.08F, 140112.88F, 140138.67F, 140164.47F, 140190.27F, 140216.06F, 140241.86F, 140267.67F, 140293.47F,
|
||||
140319.28F, 140345.08F, 140370.89F, 140396.7F, 140422.52F, 140448.33F, 140474.14F, 140499.95F, 140525.77F, 140551.58F,
|
||||
140577.39F, 140603.22F, 140629.03F, 140654.86F, 140680.67F, 140706.5F, 140732.33F, 140758.16F, 140783.97F, 140809.8F,
|
||||
140835.62F, 140861.47F, 140887.3F, 140913.12F, 140938.95F, 140964.8F, 140990.62F, 141016.47F, 141042.31F, 141068.14F,
|
||||
141093.98F, 141119.83F, 141145.67F, 141171.52F, 141197.36F, 141223.2F, 141249.06F, 141274.9F, 141300.75F, 141326.61F,
|
||||
141352.45F, 141378.31F, 141404.17F, 141430.03F, 141455.88F, 141481.73F, 141507.6F, 141533.47F, 141559.33F, 141585.19F,
|
||||
141611.05F, 141636.92F, 141662.78F, 141688.66F, 141714.52F, 141740.39F, 141766.27F, 141792.14F, 141818.02F, 141843.89F,
|
||||
141869.77F, 141895.64F, 141921.52F, 141947.39F, 141973.28F, 141999.16F, 142025.05F, 142050.92F, 142076.81F, 142102.7F,
|
||||
142128.6F, 142154.48F, 142180.38F, 142206.27F, 142232.16F, 142258.05F, 142283.94F, 142309.84F, 142335.73F, 142361.64F,
|
||||
142387.53F, 142413.44F, 142439.34F, 142465.23F, 142491.14F, 142517.05F, 142542.95F, 142568.86F, 142594.78F, 142620.69F,
|
||||
142646.6F, 142672.52F, 142698.42F, 142724.34F, 142750.25F, 142776.17F, 142802.1F, 142828.02F, 142853.94F, 142879.86F,
|
||||
142905.78F, 142931.7F, 142957.62F, 142983.55F, 143009.48F, 143035.4F, 143061.34F, 143087.27F, 143113.2F, 143139.14F,
|
||||
143165.08F, 143191.02F, 143216.95F, 143242.89F, 143268.83F, 143294.77F, 143320.7F, 143346.66F, 143372.6F, 143398.55F,
|
||||
143424.48F, 143450.44F, 143476.39F, 143502.34F, 143528.3F, 143554.25F, 143580.2F, 143606.16F, 143632.11F, 143658.06F,
|
||||
143684.03F, 143709.98F, 143735.94F, 143761.9F, 143787.88F, 143813.83F, 143839.8F, 143865.77F, 143891.73F, 143917.7F,
|
||||
143943.67F, 143969.64F, 143995.62F, 144021.6F, 144047.56F, 144073.55F, 144099.52F, 144125.5F, 144151.48F, 144177.45F,
|
||||
144203.44F, 144229.42F, 144255.4F, 144281.39F, 144307.38F, 144333.38F, 144359.36F, 144385.34F, 144411.34F, 144437.33F,
|
||||
144463.33F, 144489.33F, 144515.31F, 144541.31F, 144567.31F, 144593.31F, 144619.31F, 144645.31F, 144671.31F, 144697.33F,
|
||||
144723.33F, 144749.33F, 144775.34F, 144801.34F, 144827.36F, 144853.38F, 144879.39F, 144905.39F, 144931.4F, 144957.42F,
|
||||
144983.45F, 145009.47F, 145035.48F, 145061.5F, 145087.53F, 145113.55F, 145139.58F, 145165.6F, 145191.62F, 145217.66F,
|
||||
145243.69F, 145269.72F, 145295.73F, 145321.78F, 145347.81F, 145373.84F, 145399.88F, 145425.92F, 145451.95F, 145478.0F,
|
||||
145504.03F, 145530.08F, 145556.11F, 145582.16F, 145608.2F, 145634.25F, 145660.3F, 145686.34F, 145712.39F, 145738.45F,
|
||||
145764.5F, 145790.55F, 145816.61F, 145842.66F, 145868.72F, 145894.78F, 145920.84F, 145946.89F, 145972.95F, 145999.02F,
|
||||
146025.08F, 146051.16F, 146077.22F, 146103.28F, 146129.36F, 146155.42F, 146181.48F, 146207.56F, 146233.64F, 146259.72F,
|
||||
146285.78F, 146311.86F, 146337.94F, 146364.02F, 146390.1F, 146416.19F, 146442.27F, 146468.34F, 146494.44F, 146520.52F,
|
||||
146546.61F, 146572.69F, 146598.78F, 146624.88F, 146650.97F, 146677.06F, 146703.16F, 146729.25F, 146755.34F, 146781.44F,
|
||||
146807.53F, 146833.64F, 146859.73F, 146885.84F, 146911.94F, 146938.05F, 146964.16F, 146990.27F, 147016.36F, 147042.47F,
|
||||
147068.58F, 147094.7F, 147120.81F, 147146.92F, 147173.03F, 147199.16F, 147225.27F, 147251.39F, 147277.52F, 147303.62F,
|
||||
147329.75F, 147355.88F, 147382.0F, 147408.12F, 147434.25F, 147460.38F, 147486.5F, 147512.64F, 147538.77F, 147564.89F,
|
||||
147591.03F, 147617.17F, 147643.3F, 147669.44F, 147695.58F, 147721.72F, 147747.86F, 147774.0F, 147800.14F, 147826.28F,
|
||||
147852.42F, 147878.58F, 147904.72F, 147930.88F, 147957.02F, 147983.17F, 148009.33F, 148035.47F, 148061.62F, 148087.78F,
|
||||
148113.94F, 148140.1F, 148166.25F, 148192.42F, 148218.58F, 148244.73F, 148270.9F, 148297.06F, 148323.23F, 148349.4F,
|
||||
148375.56F, 148401.73F, 148427.9F, 148454.08F, 148480.25F, 148506.42F, 148532.6F, 148558.78F, 148584.95F, 148611.12F,
|
||||
148637.31F, 148663.48F, 148689.67F, 148715.86F, 148742.05F, 148768.22F, 148794.4F, 148820.6F, 148846.78F, 148872.98F,
|
||||
148899.17F, 148925.36F, 148951.55F, 148977.75F, 149003.94F, 149030.14F, 149056.34F, 149082.53F, 149108.73F, 149134.94F,
|
||||
149161.14F, 149187.34F, 149213.55F, 149239.75F, 149265.97F, 149292.17F, 149318.38F, 149344.6F, 149370.8F, 149397.02F,
|
||||
149423.23F, 149449.45F, 149475.66F, 149501.88F, 149528.1F, 149554.31F, 149580.55F, 149606.77F, 149632.98F, 149659.2F,
|
||||
149685.44F, 149711.66F, 149737.89F, 149764.12F, 149790.34F, 149816.58F, 149842.81F, 149869.05F, 149895.28F, 149921.52F,
|
||||
149947.75F, 149973.98F, 150000.23F, 150026.47F, 150052.72F, 150078.95F, 150105.2F, 150131.44F, 150157.69F, 150183.94F,
|
||||
150210.19F, 150236.44F, 150262.69F, 150288.94F, 150315.19F, 150341.45F, 150367.7F, 150393.95F, 150420.22F, 150446.47F,
|
||||
150472.73F, 150499.0F, 150525.25F, 150551.52F, 150577.78F, 150604.05F, 150630.31F, 150656.58F, 150682.86F, 150709.12F,
|
||||
150735.39F, 150761.67F, 150787.94F, 150814.22F, 150840.5F, 150866.77F, 150893.05F, 150919.33F, 150945.61F, 150971.89F,
|
||||
150998.17F, 151024.45F, 151050.75F, 151077.03F, 151103.31F, 151129.61F, 151155.89F, 151182.19F, 151208.48F, 151234.77F,
|
||||
151261.06F, 151287.36F, 151313.66F, 151339.95F, 151366.25F, 151392.55F, 151418.86F, 151445.16F, 151471.45F, 151497.77F,
|
||||
151524.06F, 151550.38F, 151576.69F, 151603.0F, 151629.3F, 151655.61F, 151681.92F, 151708.23F, 151734.56F, 151760.88F,
|
||||
151787.19F, 151813.5F, 151839.83F, 151866.14F, 151892.47F, 151918.8F, 151945.11F, 151971.44F, 151997.77F, 152024.1F,
|
||||
152050.42F, 152076.75F, 152103.08F, 152129.42F, 152155.75F, 152182.08F, 152208.42F, 152234.75F, 152261.1F, 152287.44F,
|
||||
152313.77F, 152340.11F, 152366.45F, 152392.8F, 152419.14F, 152445.48F, 152471.83F, 152498.19F, 152524.53F, 152550.88F,
|
||||
152577.23F, 152603.58F, 152629.94F, 152656.3F, 152682.66F, 152709.0F, 152735.36F, 152761.72F, 152788.08F, 152814.45F,
|
||||
152840.81F, 152867.17F, 152893.53F, 152919.9F, 152946.27F, 152972.64F, 152999.02F, 153025.38F, 153051.75F, 153078.12F,
|
||||
153104.5F, 153130.88F, 153157.25F, 153183.62F, 153210.0F, 153236.39F, 153262.77F, 153289.14F, 153315.53F, 153341.92F,
|
||||
153368.3F, 153394.69F, 153421.08F, 153447.47F, 153473.86F, 153500.25F, 153526.64F, 153553.03F, 153579.42F, 153605.81F,
|
||||
153632.22F, 153658.61F, 153685.02F, 153711.4F, 153737.81F, 153764.22F, 153790.62F, 153817.03F, 153843.44F, 153869.84F,
|
||||
153896.25F, 153922.66F, 153949.06F, 153975.48F, 154001.89F, 154028.3F, 154054.72F, 154081.14F, 154107.55F, 154133.97F,
|
||||
154160.39F, 154186.81F, 154213.23F, 154239.66F, 154266.08F, 154292.5F, 154318.92F, 154345.36F, 154371.78F, 154398.22F,
|
||||
154424.64F, 154451.08F, 154477.52F, 154503.94F, 154530.38F, 154556.81F, 154583.25F, 154609.69F, 154636.12F, 154662.58F,
|
||||
154689.02F, 154715.45F, 154741.9F, 154768.34F, 154794.8F, 154821.23F, 154847.69F, 154874.14F, 154900.6F, 154927.05F,
|
||||
154953.5F, 154979.95F, 155006.4F, 155032.86F, 155059.31F, 155085.78F, 155112.23F, 155138.7F, 155165.16F, 155191.62F,
|
||||
155218.1F, 155244.56F, 155271.02F, 155297.48F, 155323.95F, 155350.44F, 155376.9F, 155403.38F, 155429.84F, 155456.33F,
|
||||
155482.8F, 155509.28F, 155535.75F, 155562.23F, 155588.72F, 155615.19F, 155641.67F, 155668.16F, 155694.64F, 155721.12F,
|
||||
155747.62F, 155774.11F, 155800.6F, 155827.1F, 155853.58F, 155880.08F, 155906.56F, 155933.06F, 155959.56F, 155986.05F,
|
||||
156012.55F, 156039.05F, 156065.55F, 156092.05F, 156118.56F, 156145.06F, 156171.56F, 156198.08F, 156224.58F, 156251.1F,
|
||||
156277.6F, 156304.11F, 156330.62F, 156357.14F, 156383.64F, 156410.16F, 156436.67F, 156463.2F, 156489.72F, 156516.23F,
|
||||
156542.75F, 156569.28F, 156595.8F, 156622.33F, 156648.84F, 156675.38F, 156701.9F, 156728.44F, 156754.97F, 156781.5F,
|
||||
156808.03F, 156834.56F, 156861.1F, 156887.62F, 156914.17F, 156940.7F, 156967.25F, 156993.78F, 157020.33F, 157046.86F,
|
||||
157073.4F, 157099.95F, 157126.5F, 157153.05F, 157179.6F, 157206.14F, 157232.69F, 157259.25F, 157285.8F, 157312.34F,
|
||||
157338.9F, 157365.45F, 157392.02F, 157418.58F, 157445.14F, 157471.69F, 157498.25F, 157524.81F, 157551.38F, 157577.95F,
|
||||
157604.52F, 157631.08F, 157657.64F, 157684.22F, 157710.78F, 157737.36F, 157763.92F, 157790.5F, 157817.08F, 157843.66F,
|
||||
157870.23F, 157896.81F, 157923.39F, 157949.97F, 157976.55F, 158003.12F, 158029.72F, 158056.3F, 158082.89F, 158109.47F,
|
||||
158136.06F, 158162.66F, 158189.23F, 158215.83F, 158242.42F, 158269.02F, 158295.61F, 158322.2F, 158348.81F, 158375.4F,
|
||||
158402.0F, 158428.61F, 158455.2F, 158481.81F, 158508.4F, 158535.02F, 158561.62F, 158588.23F, 158614.84F, 158641.45F,
|
||||
158668.06F, 158694.67F, 158721.28F, 158747.89F, 158774.52F, 158801.12F, 158827.75F, 158854.36F, 158880.98F, 158907.61F,
|
||||
158934.22F, 158960.84F, 158987.47F, 159014.1F, 159040.72F, 159067.34F, 159093.97F, 159120.61F, 159147.23F, 159173.88F,
|
||||
159200.5F, 159227.14F, 159253.77F, 159280.4F, 159307.05F, 159333.69F, 159360.31F, 159386.95F, 159413.61F, 159440.25F,
|
||||
159466.89F, 159493.53F, 159520.19F, 159546.83F, 159573.47F, 159600.12F, 159626.78F, 159653.42F, 159680.08F, 159706.73F,
|
||||
159733.39F, 159760.05F, 159786.7F, 159813.36F, 159840.02F, 159866.69F, 159893.34F, 159920.0F, 159946.67F, 159973.33F,
|
||||
160000.0F, 160026.67F, 160053.33F, 160080.0F, 160106.67F, 160133.34F, 160160.02F, 160186.69F, 160213.38F, 160240.05F,
|
||||
160266.72F, 160293.4F, 160320.08F, 160346.77F, 160373.44F, 160400.12F, 160426.81F, 160453.5F, 160480.19F, 160506.86F,
|
||||
160533.56F, 160560.25F, 160586.94F, 160613.62F, 160640.31F, 160667.02F, 160693.7F, 160720.4F, 160747.11F, 160773.8F,
|
||||
160800.5F, 160827.2F, 160853.9F, 160880.61F, 160907.31F, 160934.02F, 160960.72F, 160987.42F, 161014.14F, 161040.84F,
|
||||
161067.55F, 161094.27F, 161120.98F, 161147.69F, 161174.4F, 161201.12F, 161227.84F, 161254.56F, 161281.28F, 161308.0F,
|
||||
161334.72F, 161361.44F, 161388.17F, 161414.89F, 161441.62F, 161468.34F, 161495.08F, 161521.8F, 161548.53F, 161575.27F,
|
||||
161602.0F, 161628.73F, 161655.47F, 161682.2F, 161708.94F, 161735.67F, 161762.42F, 161789.16F, 161815.89F, 161842.64F,
|
||||
161869.39F, 161896.12F, 161922.88F, 161949.62F, 161976.38F, 162003.12F, 162029.88F, 162056.62F, 162083.38F, 162110.12F,
|
||||
162136.88F, 162163.64F, 162190.39F, 162217.16F, 162243.9F, 162270.67F, 162297.44F, 162324.19F, 162350.95F, 162377.72F,
|
||||
162404.48F, 162431.25F, 162458.03F, 162484.8F, 162511.56F, 162538.33F, 162565.11F, 162591.88F, 162618.66F, 162645.44F,
|
||||
162672.2F, 162698.98F, 162725.77F, 162752.55F, 162779.33F, 162806.11F, 162832.89F, 162859.67F, 162886.45F, 162913.25F,
|
||||
162940.03F, 162966.83F, 162993.61F, 163020.4F, 163047.2F, 163073.98F, 163100.78F, 163127.58F, 163154.38F, 163181.17F,
|
||||
163207.97F, 163234.77F, 163261.58F, 163288.38F, 163315.17F, 163341.98F, 163368.8F, 163395.6F, 163422.4F, 163449.22F,
|
||||
163476.02F, 163502.83F, 163529.64F, 163556.45F, 163583.27F, 163610.1F, 163636.9F, 163663.72F, 163690.55F, 163717.36F,
|
||||
163744.19F, 163771.0F, 163797.83F, 163824.66F, 163851.47F, 163878.3F, 163905.12F, 163931.95F, 163958.78F, 163985.61F,
|
||||
164012.45F, 164039.28F, 164066.11F, 164092.95F, 164119.78F, 164146.62F, 164173.47F, 164200.3F, 164227.14F, 164253.98F,
|
||||
164280.83F, 164307.67F, 164334.52F, 164361.36F, 164388.2F, 164415.06F, 164441.9F, 164468.75F, 164495.61F, 164522.45F,
|
||||
164549.31F, 164576.17F, 164603.03F, 164629.88F, 164656.73F, 164683.6F, 164710.45F, 164737.31F, 164764.19F, 164791.05F,
|
||||
164817.9F, 164844.78F, 164871.64F, 164898.52F, 164925.38F, 164952.25F, 164979.12F, 165006.0F, 165032.88F, 165059.73F,
|
||||
165086.62F };
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import org.jcodec.common.io.BitReader;
|
||||
|
||||
public class NIOBitStream implements IBitStream {
|
||||
private BitReader br;
|
||||
|
||||
public NIOBitStream(BitReader br) {
|
||||
this.br = br;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
reset();
|
||||
this.br = null;
|
||||
}
|
||||
|
||||
public void setData(byte[] data) {
|
||||
this.br = BitReader.createBitReader(ByteBuffer.wrap(data));
|
||||
}
|
||||
|
||||
public void byteAlign() throws AACException {
|
||||
this.br.align();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
throw new RuntimeException("todo");
|
||||
}
|
||||
|
||||
public int getPosition() {
|
||||
return this.br.position();
|
||||
}
|
||||
|
||||
public int getBitsLeft() {
|
||||
return this.br.remaining();
|
||||
}
|
||||
|
||||
public int readBits(int n) throws AACException {
|
||||
if (this.br.remaining() >= n)
|
||||
return this.br.readNBit(n);
|
||||
throw AACException.endOfStream();
|
||||
}
|
||||
|
||||
public int readBit() throws AACException {
|
||||
if (this.br.remaining() >= 1)
|
||||
return this.br.read1Bit();
|
||||
throw AACException.endOfStream();
|
||||
}
|
||||
|
||||
public boolean readBool() throws AACException {
|
||||
int read1Bit = readBit();
|
||||
return (read1Bit != 0);
|
||||
}
|
||||
|
||||
public int peekBits(int n) throws AACException {
|
||||
int checkNBit = this.br.checkNBit(n);
|
||||
return checkNBit;
|
||||
}
|
||||
|
||||
public int peekBit() throws AACException {
|
||||
int curBit = this.br.curBit();
|
||||
return curBit;
|
||||
}
|
||||
|
||||
public void skipBits(int n) throws AACException {
|
||||
this.br.skip(n);
|
||||
}
|
||||
|
||||
public void skipBit() throws AACException {
|
||||
skipBits(1);
|
||||
}
|
||||
|
||||
public int maskBits(int n) {
|
||||
int i;
|
||||
if (n == 32) {
|
||||
i = -1;
|
||||
} else {
|
||||
i = (1 << n) - 1;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.Profile;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import org.jcodec.common.logging.Logger;
|
||||
|
||||
public class PCE extends Element {
|
||||
private static final int MAX_FRONT_CHANNEL_ELEMENTS = 16;
|
||||
|
||||
private static final int MAX_SIDE_CHANNEL_ELEMENTS = 16;
|
||||
|
||||
private static final int MAX_BACK_CHANNEL_ELEMENTS = 16;
|
||||
|
||||
private static final int MAX_LFE_CHANNEL_ELEMENTS = 4;
|
||||
|
||||
private static final int MAX_ASSOC_DATA_ELEMENTS = 8;
|
||||
|
||||
private static final int MAX_VALID_CC_ELEMENTS = 16;
|
||||
|
||||
private Profile profile;
|
||||
|
||||
private SampleFrequency sampleFrequency;
|
||||
|
||||
private int frontChannelElementsCount;
|
||||
|
||||
private int sideChannelElementsCount;
|
||||
|
||||
private int backChannelElementsCount;
|
||||
|
||||
private int lfeChannelElementsCount;
|
||||
|
||||
private int assocDataElementsCount;
|
||||
|
||||
private int validCCElementsCount;
|
||||
|
||||
private boolean monoMixdown;
|
||||
|
||||
private boolean stereoMixdown;
|
||||
|
||||
private boolean matrixMixdownIDXPresent;
|
||||
|
||||
private int monoMixdownElementNumber;
|
||||
|
||||
private int stereoMixdownElementNumber;
|
||||
|
||||
private int matrixMixdownIDX;
|
||||
|
||||
private boolean pseudoSurround;
|
||||
|
||||
private final TaggedElement[] frontElements;
|
||||
|
||||
private final TaggedElement[] sideElements;
|
||||
|
||||
private final TaggedElement[] backElements;
|
||||
|
||||
private final int[] lfeElementTags;
|
||||
|
||||
private final int[] assocDataElementTags;
|
||||
|
||||
private final CCE[] ccElements;
|
||||
|
||||
private byte[] commentFieldData;
|
||||
|
||||
public static class TaggedElement {
|
||||
private final boolean isCPE;
|
||||
|
||||
private final int tag;
|
||||
|
||||
public TaggedElement(boolean isCPE, int tag) {
|
||||
this.isCPE = isCPE;
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public boolean isIsCPE() {
|
||||
return this.isCPE;
|
||||
}
|
||||
|
||||
public int getTag() {
|
||||
return this.tag;
|
||||
}
|
||||
}
|
||||
|
||||
public static class CCE {
|
||||
private final boolean isIndSW;
|
||||
|
||||
private final int tag;
|
||||
|
||||
public CCE(boolean isIndSW, int tag) {
|
||||
this.isIndSW = isIndSW;
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public boolean isIsIndSW() {
|
||||
return this.isIndSW;
|
||||
}
|
||||
|
||||
public int getTag() {
|
||||
return this.tag;
|
||||
}
|
||||
}
|
||||
|
||||
public PCE() {
|
||||
this.frontElements = new TaggedElement[16];
|
||||
this.sideElements = new TaggedElement[16];
|
||||
this.backElements = new TaggedElement[16];
|
||||
this.lfeElementTags = new int[4];
|
||||
this.assocDataElementTags = new int[8];
|
||||
this.ccElements = new CCE[16];
|
||||
this.sampleFrequency = SampleFrequency.SAMPLE_FREQUENCY_NONE;
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in) throws AACException {
|
||||
readElementInstanceTag(_in);
|
||||
this.profile = Profile.forInt(_in.readBits(2));
|
||||
this.sampleFrequency = SampleFrequency.forInt(_in.readBits(4));
|
||||
this.frontChannelElementsCount = _in.readBits(4);
|
||||
this.sideChannelElementsCount = _in.readBits(4);
|
||||
this.backChannelElementsCount = _in.readBits(4);
|
||||
this.lfeChannelElementsCount = _in.readBits(2);
|
||||
this.assocDataElementsCount = _in.readBits(3);
|
||||
this.validCCElementsCount = _in.readBits(4);
|
||||
if (this.monoMixdown = _in.readBool()) {
|
||||
Logger.warn("mono mixdown present, but not yet supported");
|
||||
this.monoMixdownElementNumber = _in.readBits(4);
|
||||
}
|
||||
if (this.stereoMixdown = _in.readBool()) {
|
||||
Logger.warn("stereo mixdown present, but not yet supported");
|
||||
this.stereoMixdownElementNumber = _in.readBits(4);
|
||||
}
|
||||
if (this.matrixMixdownIDXPresent = _in.readBool()) {
|
||||
Logger.warn("matrix mixdown present, but not yet supported");
|
||||
this.matrixMixdownIDX = _in.readBits(2);
|
||||
this.pseudoSurround = _in.readBool();
|
||||
}
|
||||
readTaggedElementArray(this.frontElements, _in, this.frontChannelElementsCount);
|
||||
readTaggedElementArray(this.sideElements, _in, this.sideChannelElementsCount);
|
||||
readTaggedElementArray(this.backElements, _in, this.backChannelElementsCount);
|
||||
for (int m = 0; m < this.lfeChannelElementsCount; m++)
|
||||
this.lfeElementTags[m] = _in.readBits(4);
|
||||
for (int k = 0; k < this.assocDataElementsCount; k++)
|
||||
this.assocDataElementTags[k] = _in.readBits(4);
|
||||
for (int j = 0; j < this.validCCElementsCount; j++)
|
||||
this.ccElements[j] = new CCE(_in.readBool(), _in.readBits(4));
|
||||
_in.byteAlign();
|
||||
int commentFieldBytes = _in.readBits(8);
|
||||
this.commentFieldData = new byte[commentFieldBytes];
|
||||
for (int i = 0; i < commentFieldBytes; i++)
|
||||
this.commentFieldData[i] = (byte)_in.readBits(8);
|
||||
}
|
||||
|
||||
private void readTaggedElementArray(TaggedElement[] te, IBitStream _in, int len) throws AACException {
|
||||
for (int i = 0; i < len; i++)
|
||||
te[i] = new TaggedElement(_in.readBool(), _in.readBits(4));
|
||||
}
|
||||
|
||||
public Profile getProfile() {
|
||||
return this.profile;
|
||||
}
|
||||
|
||||
public SampleFrequency getSampleFrequency() {
|
||||
return this.sampleFrequency;
|
||||
}
|
||||
|
||||
public int getChannelCount() {
|
||||
return this.frontChannelElementsCount + this.sideChannelElementsCount + this.backChannelElementsCount + this.lfeChannelElementsCount + this.assocDataElementsCount;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
|
||||
class SCE_LFE extends Element {
|
||||
private final ICStream ics;
|
||||
|
||||
SCE_LFE(int frameLength) {
|
||||
this.ics = new ICStream(frameLength);
|
||||
}
|
||||
|
||||
void decode(IBitStream _in, AACDecoderConfig conf) throws AACException {
|
||||
readElementInstanceTag(_in);
|
||||
this.ics.decode(_in, false, conf);
|
||||
}
|
||||
|
||||
public ICStream getICStream() {
|
||||
return this.ics;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
interface ScaleFactorBands {
|
||||
public static final int[] SWB_LONG_WINDOW_COUNT = new int[] {
|
||||
41, 41, 47, 49, 49, 51, 47, 47, 43, 43,
|
||||
43, 40 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_96 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
40, 44, 48, 52, 56, 64, 72, 80, 88, 96,
|
||||
108, 120, 132, 144, 156, 172, 188, 212, 240, 276,
|
||||
320, 384, 448, 512, 576, 640, 704, 768, 832, 896,
|
||||
960, 1024, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_64 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
40, 44, 48, 52, 56, 64, 72, 80, 88, 100,
|
||||
112, 124, 140, 156, 172, 192, 216, 240, 268, 304,
|
||||
344, 384, 424, 464, 504, 544, 584, 624, 664, 704,
|
||||
744, 784, 824, 864, 904, 944, 984, 1024, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_48 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
40, 48, 56, 64, 72, 80, 88, 96, 108, 120,
|
||||
132, 144, 160, 176, 196, 216, 240, 264, 292, 320,
|
||||
352, 384, 416, 448, 480, 512, 544, 576, 608, 640,
|
||||
672, 704, 736, 768, 800, 832, 864, 896, 928, 1024,
|
||||
-1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_32 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
40, 48, 56, 64, 72, 80, 88, 96, 108, 120,
|
||||
132, 144, 160, 176, 196, 216, 240, 264, 292, 320,
|
||||
352, 384, 416, 448, 480, 512, 544, 576, 608, 640,
|
||||
672, 704, 736, 768, 800, 832, 864, 896, 928, 960,
|
||||
992, 1024, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_24 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
|
||||
40, 44, 52, 60, 68, 76, 84, 92, 100, 108,
|
||||
116, 124, 136, 148, 160, 172, 188, 204, 220, 240,
|
||||
260, 284, 308, 336, 364, 396, 432, 468, 508, 552,
|
||||
600, 652, 704, 768, 832, 896, 960, 1024, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_16 = new int[] {
|
||||
0, 8, 16, 24, 32, 40, 48, 56, 64, 72,
|
||||
80, 88, 100, 112, 124, 136, 148, 160, 172, 184,
|
||||
196, 212, 228, 244, 260, 280, 300, 320, 344, 368,
|
||||
396, 424, 456, 492, 532, 572, 616, 664, 716, 772,
|
||||
832, 896, 960, 1024, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_1024_8 = new int[] {
|
||||
0, 12, 24, 36, 48, 60, 72, 84, 96, 108,
|
||||
120, 132, 144, 156, 172, 188, 204, 220, 236, 252,
|
||||
268, 288, 308, 328, 348, 372, 396, 420, 448, 476,
|
||||
508, 544, 580, 620, 664, 712, 764, 820, 880, 944,
|
||||
1024, -1 };
|
||||
|
||||
public static final int[][] SWB_OFFSET_LONG_WINDOW = new int[][] {
|
||||
SWB_OFFSET_1024_96, SWB_OFFSET_1024_96, SWB_OFFSET_1024_64, SWB_OFFSET_1024_48, SWB_OFFSET_1024_48, SWB_OFFSET_1024_32, SWB_OFFSET_1024_24, SWB_OFFSET_1024_24, SWB_OFFSET_1024_16, SWB_OFFSET_1024_16,
|
||||
SWB_OFFSET_1024_16, SWB_OFFSET_1024_8 };
|
||||
|
||||
public static final int[] SWB_SHORT_WINDOW_COUNT = new int[] {
|
||||
12, 12, 12, 14, 14, 14, 15, 15, 15, 15,
|
||||
15, 15 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_96 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 32, 40, 48,
|
||||
64, 92, 128, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_64 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 32, 40, 48,
|
||||
64, 92, 128, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_48 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 28, 36, 44, 56,
|
||||
68, 80, 96, 112, 128, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_24 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 36, 44,
|
||||
52, 64, 76, 92, 108, 128, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_16 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 32, 40,
|
||||
48, 60, 72, 88, 108, 128, -1 };
|
||||
|
||||
public static final int[] SWB_OFFSET_128_8 = new int[] {
|
||||
0, 4, 8, 12, 16, 20, 24, 28, 36, 44,
|
||||
52, 60, 72, 88, 108, 128, -1 };
|
||||
|
||||
public static final int[][] SWB_OFFSET_SHORT_WINDOW = new int[][] {
|
||||
SWB_OFFSET_128_96, SWB_OFFSET_128_96, SWB_OFFSET_128_64, SWB_OFFSET_128_48, SWB_OFFSET_128_48, SWB_OFFSET_128_48, SWB_OFFSET_128_24, SWB_OFFSET_128_24, SWB_OFFSET_128_16, SWB_OFFSET_128_16,
|
||||
SWB_OFFSET_128_16, SWB_OFFSET_128_8 };
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
interface ScaleFactorTable {
|
||||
public static final float[] SCALEFACTOR_TABLE = new float[] {
|
||||
8.881784E-16F, 1.0562281E-15F, 1.2560739E-15F, 1.4937321E-15F, 1.7763568E-15F, 2.1124561E-15F, 2.5121479E-15F, 2.9874642E-15F, 3.5527137E-15F, 4.2249122E-15F,
|
||||
5.0242958E-15F, 5.9749285E-15F, 7.1054274E-15F, 8.4498245E-15F, 1.00485916E-14F, 1.1949857E-14F, 1.4210855E-14F, 1.6899649E-14F, 2.0097183E-14F, 2.3899714E-14F,
|
||||
2.842171E-14F, 3.3799298E-14F, 4.0194366E-14F, 4.7799428E-14F, 5.684342E-14F, 6.7598596E-14F, 8.038873E-14F, 9.5598856E-14F, 1.1368684E-13F, 1.3519719E-13F,
|
||||
1.6077747E-13F, 1.9119771E-13F, 2.2737368E-13F, 2.7039438E-13F, 3.2155493E-13F, 3.8239542E-13F, 4.5474735E-13F, 5.4078877E-13F, 6.4310986E-13F, 7.6479085E-13F,
|
||||
9.094947E-13F, 1.0815775E-12F, 1.2862197E-12F, 1.5295817E-12F, 1.8189894E-12F, 2.163155E-12F, 2.5724394E-12F, 3.0591634E-12F, 3.637979E-12F, 4.32631E-12F,
|
||||
5.144879E-12F, 6.1183268E-12F, 7.275958E-12F, 8.65262E-12F, 1.0289758E-11F, 1.22366535E-11F, 1.4551915E-11F, 1.730524E-11F, 2.0579516E-11F, 2.4473307E-11F,
|
||||
2.910383E-11F, 3.461048E-11F, 4.115903E-11F, 4.8946614E-11F, 5.820766E-11F, 6.922096E-11F, 8.231806E-11F, 9.789323E-11F, 1.1641532E-10F, 1.3844192E-10F,
|
||||
1.6463612E-10F, 1.9578646E-10F, 2.3283064E-10F, 2.7688385E-10F, 3.2927225E-10F, 3.915729E-10F, 4.656613E-10F, 5.537677E-10F, 6.585445E-10F, 7.831458E-10F,
|
||||
9.313226E-10F, 1.1075354E-9F, 1.317089E-9F, 1.5662917E-9F, 1.8626451E-9F, 2.2150708E-9F, 2.634178E-9F, 3.1325833E-9F, 3.7252903E-9F, 4.4301416E-9F,
|
||||
5.268356E-9F, 6.2651666E-9F, 7.450581E-9F, 8.860283E-9F, 1.0536712E-8F, 1.2530333E-8F, 1.4901161E-8F, 1.7720566E-8F, 2.1073424E-8F, 2.5060666E-8F,
|
||||
2.9802322E-8F, 3.5441133E-8F, 4.2146848E-8F, 5.0121333E-8F, 5.9604645E-8F, 7.0882265E-8F, 8.4293696E-8F, 1.00242666E-7F, 1.1920929E-7F, 1.4176453E-7F,
|
||||
1.6858739E-7F, 2.0048533E-7F, 2.3841858E-7F, 2.8352906E-7F, 3.3717478E-7F, 4.0097066E-7F, 4.7683716E-7F, 5.670581E-7F, 6.7434956E-7F, 8.019413E-7F,
|
||||
9.536743E-7F, 1.1341162E-6F, 1.3486991E-6F, 1.6038827E-6F, 1.9073486E-6F, 2.2682325E-6F, 2.6973983E-6F, 3.2077653E-6F, 3.8146973E-6F, 4.536465E-6F,
|
||||
5.3947965E-6F, 6.4155306E-6F, 7.6293945E-6F, 9.07293E-6F, 1.0789593E-5F, 1.2831061E-5F, 1.5258789E-5F, 1.814586E-5F, 2.1579186E-5F, 2.5662122E-5F,
|
||||
3.0517578E-5F, 3.629172E-5F, 4.3158372E-5F, 5.1324245E-5F, 6.1035156E-5F, 7.258344E-5F, 8.6316744E-5F, 1.0264849E-4F, 1.2207031E-4F, 1.4516688E-4F,
|
||||
1.7263349E-4F, 2.0529698E-4F, 2.4414062E-4F, 2.9033376E-4F, 3.4526698E-4F, 4.1059396E-4F, 4.8828125E-4F, 5.806675E-4F, 6.9053395E-4F, 8.211879E-4F,
|
||||
9.765625E-4F, 0.001161335F, 0.0013810679F, 0.0016423758F, 0.001953125F, 0.00232267F, 0.0027621358F, 0.0032847517F, 0.00390625F, 0.00464534F,
|
||||
0.0055242716F, 0.0065695033F, 0.0078125F, 0.00929068F, 0.011048543F, 0.013139007F, 0.015625F, 0.01858136F, 0.022097087F, 0.026278013F,
|
||||
0.03125F, 0.03716272F, 0.044194173F, 0.052556027F, 0.0625F, 0.07432544F, 0.088388346F, 0.10511205F, 0.125F, 0.14865088F,
|
||||
0.17677669F, 0.2102241F, 0.25F, 0.29730177F, 0.35355338F, 0.4204482F, 0.5F, 0.59460354F, 0.70710677F, 0.8408964F,
|
||||
1.0F, 1.1892071F, 1.4142135F, 1.6817929F, 2.0F, 2.3784142F, 2.828427F, 3.3635857F, 4.0F, 4.7568283F,
|
||||
5.656854F, 6.7271714F, 8.0F, 9.513657F, 11.313708F, 13.454343F, 16.0F, 19.027313F, 22.627417F, 26.908686F,
|
||||
32.0F, 38.054626F, 45.254833F, 53.81737F, 64.0F, 76.10925F, 90.50967F, 107.63474F, 128.0F, 152.2185F,
|
||||
181.01933F, 215.26949F, 256.0F, 304.437F, 362.03867F, 430.53897F, 512.0F, 608.874F, 724.07733F, 861.07794F,
|
||||
1024.0F, 1217.748F, 1448.1547F, 1722.1559F, 2048.0F, 2435.496F, 2896.3093F, 3444.3118F, 4096.0F, 4870.992F,
|
||||
5792.6187F, 6888.6235F, 8192.0F, 9741.984F, 11585.237F, 13777.247F, 16384.0F, 19483.969F, 23170.475F, 27554.494F,
|
||||
32768.0F, 38967.938F, 46340.95F, 55108.99F, 65536.0F, 77935.875F, 92681.9F, 110217.98F, 131072.0F, 155871.75F,
|
||||
185363.8F, 220435.95F, 262144.0F, 311743.5F, 370727.6F, 440871.9F, 524288.0F, 623487.0F, 741455.2F, 881743.8F,
|
||||
1048576.0F, 1246974.0F, 1482910.4F, 1763487.6F, 2097152.0F, 2493948.0F, 2965820.8F, 3526975.2F, 4194304.0F, 4987896.0F,
|
||||
5931641.5F, 7053950.5F, 8388608.0F, 9975792.0F, 1.1863283E7F, 1.4107901E7F, 1.6777216E7F, 1.9951584E7F, 2.3726566E7F, 2.8215802E7F,
|
||||
3.3554432E7F, 3.990317E7F, 4.7453132E7F, 5.6431604E7F, 6.7108864E7F, 7.980634E7F, 9.4906264E7F, 1.1286321E8F, 1.3421773E8F, 1.5961267E8F,
|
||||
1.8981253E8F, 2.2572642E8F, 2.6843546E8F, 3.1922534E8F, 3.7962506E8F, 4.5145283E8F, 5.368709E8F, 6.384507E8F, 7.592501E8F, 9.0290566E8F,
|
||||
1.0737418E9F, 1.2769014E9F, 1.5185002E9F, 1.8058113E9F, Integer.MAX_VALUE, 2.5538028E9F, 3.0370004E9F, 3.6116227E9F, 4.2949673E9F, 5.1076055E9F,
|
||||
6.074001E9F, 7.2232453E9F, 8.589935E9F, 1.0215211E10F, 1.2148002E10F, 1.4446491E10F, 1.717987E10F, 2.0430422E10F, 2.4296004E10F, 2.8892981E10F,
|
||||
3.435974E10F, 4.0860844E10F, 4.8592007E10F, 5.7785962E10F, 6.871948E10F, 8.172169E10F, 9.7184014E10F, 1.15571925E11F, 1.3743895E11F, 1.6344338E11F,
|
||||
1.9436803E11F, 2.3114385E11F, 2.748779E11F, 3.2688675E11F, 3.8873606E11F, 4.622877E11F, 5.497558E11F, 6.537735E11F, 7.774721E11F, 9.245754E11F,
|
||||
1.0995116E12F, 1.307547E12F, 1.5549442E12F, 1.8491508E12F, 2.1990233E12F, 2.615094E12F, 3.1098885E12F, 3.6983016E12F, 4.3980465E12F, 5.230188E12F,
|
||||
6.219777E12F, 7.396603E12F, 8.796093E12F, 1.0460376E13F, 1.2439554E13F, 1.4793206E13F, 1.7592186E13F, 2.0920752E13F, 2.4879108E13F, 2.9586413E13F,
|
||||
3.5184372E13F, 4.1841504E13F, 4.9758215E13F, 5.9172826E13F, 7.0368744E13F, 8.368301E13F, 9.951643E13F, 1.1834565E14F, 1.4073749E14F, 1.6736602E14F,
|
||||
1.9903286E14F, 2.366913E14F, 2.8147498E14F, 3.3473203E14F, 3.9806572E14F, 4.733826E14F, 5.6294995E14F, 6.694641E14F, 7.9613145E14F, 9.467652E14F,
|
||||
1.1258999E15F, 1.3389281E15F, 1.5922629E15F, 1.8935304E15F, 2.2517998E15F, 2.6778563E15F, 3.1845258E15F, 3.7870608E15F, 4.5035996E15F, 5.3557125E15F,
|
||||
6.3690516E15F, 7.5741217E15F, 9.007199E15F, 1.0711425E16F, 1.2738103E16F, 1.5148243E16F, 1.8014399E16F, 2.142285E16F, 2.5476206E16F, 3.0296487E16F,
|
||||
3.6028797E16F, 4.28457E16F, 5.0952413E16F, 6.0592973E16F, 7.2057594E16F, 8.56914E16F, 1.01904825E17F, 1.2118595E17F };
|
||||
}
|
||||
|
|
@ -0,0 +1,378 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACDecoderConfig;
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.ChannelConfiguration;
|
||||
import net.sourceforge.jaad.aac.Profile;
|
||||
import net.sourceforge.jaad.aac.SampleBuffer;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.filterbank.FilterBank;
|
||||
import net.sourceforge.jaad.aac.sbr.SBR;
|
||||
import net.sourceforge.jaad.aac.tools.IS;
|
||||
import net.sourceforge.jaad.aac.tools.MS;
|
||||
import org.jcodec.common.logging.Logger;
|
||||
|
||||
public class SyntacticElements implements SyntaxConstants {
|
||||
private AACDecoderConfig config;
|
||||
|
||||
private boolean sbrPresent;
|
||||
|
||||
private boolean psPresent;
|
||||
|
||||
private int bitsRead;
|
||||
|
||||
private PCE pce;
|
||||
|
||||
private final Element[] elements;
|
||||
|
||||
private final CCE[] cces;
|
||||
|
||||
private final DSE[] dses;
|
||||
|
||||
private final FIL[] fils;
|
||||
|
||||
private int curElem;
|
||||
|
||||
private int curCCE;
|
||||
|
||||
private int curDSE;
|
||||
|
||||
private int curFIL;
|
||||
|
||||
private float[][] data;
|
||||
|
||||
public SyntacticElements(AACDecoderConfig config) {
|
||||
this.config = config;
|
||||
this.pce = new PCE();
|
||||
this.elements = new Element[64];
|
||||
this.cces = new CCE[16];
|
||||
this.dses = new DSE[16];
|
||||
this.fils = new FIL[16];
|
||||
startNewFrame();
|
||||
}
|
||||
|
||||
public final void startNewFrame() {
|
||||
this.curElem = 0;
|
||||
this.curCCE = 0;
|
||||
this.curDSE = 0;
|
||||
this.curFIL = 0;
|
||||
this.sbrPresent = false;
|
||||
this.psPresent = false;
|
||||
this.bitsRead = 0;
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in) throws AACException {
|
||||
int start = _in.getPosition();
|
||||
Element prev = null;
|
||||
boolean content = true;
|
||||
if (!this.config.getProfile().isErrorResilientProfile()) {
|
||||
int type;
|
||||
while (content && (type = _in.readBits(3)) != 7) {
|
||||
switch (type) {
|
||||
case 0:
|
||||
case 3:
|
||||
Logger.debug("SCE");
|
||||
prev = decodeSCE_LFE(_in);
|
||||
case 1:
|
||||
Logger.debug("CPE");
|
||||
prev = decodeCPE(_in);
|
||||
case 2:
|
||||
Logger.debug("CCE");
|
||||
decodeCCE(_in);
|
||||
prev = null;
|
||||
case 4:
|
||||
Logger.debug("DSE");
|
||||
decodeDSE(_in);
|
||||
prev = null;
|
||||
case 5:
|
||||
Logger.debug("PCE");
|
||||
decodePCE(_in);
|
||||
prev = null;
|
||||
case 6:
|
||||
Logger.debug("FIL");
|
||||
decodeFIL(_in, prev);
|
||||
prev = null;
|
||||
}
|
||||
}
|
||||
Logger.debug("END");
|
||||
content = false;
|
||||
prev = null;
|
||||
} else {
|
||||
ChannelConfiguration cc = this.config.getChannelConfiguration();
|
||||
if (ChannelConfiguration.CHANNEL_CONFIG_MONO == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_STEREO == cc) {
|
||||
decodeCPE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_STEREO_PLUS_CENTER == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
decodeCPE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_STEREO_PLUS_CENTER_PLUS_REAR_MONO == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeSCE_LFE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_FIVE == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeCPE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_FIVE_PLUS_ONE == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeSCE_LFE(_in);
|
||||
} else if (ChannelConfiguration.CHANNEL_CONFIG_SEVEN_PLUS_ONE == cc) {
|
||||
decodeSCE_LFE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeCPE(_in);
|
||||
decodeSCE_LFE(_in);
|
||||
} else {
|
||||
throw new AACException("unsupported channel configuration for error resilience: " + String.valueOf(cc));
|
||||
}
|
||||
}
|
||||
_in.byteAlign();
|
||||
this.bitsRead = _in.getPosition() - start;
|
||||
}
|
||||
|
||||
private Element decodeSCE_LFE(IBitStream _in) throws AACException {
|
||||
if (this.elements[this.curElem] == null)
|
||||
this.elements[this.curElem] = new SCE_LFE(this.config.getFrameLength());
|
||||
((SCE_LFE)this.elements[this.curElem]).decode(_in, this.config);
|
||||
this.curElem++;
|
||||
return this.elements[this.curElem - 1];
|
||||
}
|
||||
|
||||
private Element decodeCPE(IBitStream _in) throws AACException {
|
||||
if (this.elements[this.curElem] == null)
|
||||
this.elements[this.curElem] = new CPE(this.config.getFrameLength());
|
||||
((CPE)this.elements[this.curElem]).decode(_in, this.config);
|
||||
this.curElem++;
|
||||
return this.elements[this.curElem - 1];
|
||||
}
|
||||
|
||||
private void decodeCCE(IBitStream _in) throws AACException {
|
||||
if (this.curCCE == 16)
|
||||
throw new AACException("too much CCE elements");
|
||||
if (this.cces[this.curCCE] == null)
|
||||
this.cces[this.curCCE] = new CCE(this.config.getFrameLength());
|
||||
this.cces[this.curCCE].decode(_in, this.config);
|
||||
this.curCCE++;
|
||||
}
|
||||
|
||||
private void decodeDSE(IBitStream _in) throws AACException {
|
||||
if (this.curDSE == 16)
|
||||
throw new AACException("too much CCE elements");
|
||||
if (this.dses[this.curDSE] == null)
|
||||
this.dses[this.curDSE] = new DSE();
|
||||
this.dses[this.curDSE].decode(_in);
|
||||
this.curDSE++;
|
||||
}
|
||||
|
||||
private void decodePCE(IBitStream _in) throws AACException {
|
||||
this.pce.decode(_in);
|
||||
this.config.setProfile(this.pce.getProfile());
|
||||
this.config.setSampleFrequency(this.pce.getSampleFrequency());
|
||||
this.config.setChannelConfiguration(ChannelConfiguration.forInt(this.pce.getChannelCount()));
|
||||
}
|
||||
|
||||
private void decodeFIL(IBitStream _in, Element prev) throws AACException {
|
||||
if (this.curFIL == 16)
|
||||
throw new AACException("too much FIL elements");
|
||||
if (this.fils[this.curFIL] == null)
|
||||
this.fils[this.curFIL] = new FIL(this.config.isSBRDownSampled());
|
||||
this.fils[this.curFIL].decode(_in, prev, this.config.getSampleFrequency(), this.config.isSBREnabled(), this.config.isSmallFrameUsed());
|
||||
this.curFIL++;
|
||||
if (prev != null && prev.isSBRPresent()) {
|
||||
this.sbrPresent = true;
|
||||
if (!this.psPresent && prev.getSBR().isPSUsed())
|
||||
this.psPresent = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void process(FilterBank filterBank) throws AACException {
|
||||
Profile profile = this.config.getProfile();
|
||||
SampleFrequency sf = this.config.getSampleFrequency();
|
||||
int chs = this.config.getChannelConfiguration().getChannelCount();
|
||||
if (chs == 1 && this.psPresent)
|
||||
chs++;
|
||||
int mult = this.sbrPresent ? 2 : 1;
|
||||
if (this.data == null || chs != this.data.length || mult * this.config.getFrameLength() != (this.data[0]).length)
|
||||
this.data = new float[chs][mult * this.config.getFrameLength()];
|
||||
int channel = 0;
|
||||
for (int i = 0; i < this.elements.length && channel < chs; i++) {
|
||||
Element e = this.elements[i];
|
||||
if (e != null)
|
||||
if (e instanceof SCE_LFE) {
|
||||
SCE_LFE scelfe = (SCE_LFE)e;
|
||||
channel += processSingle(scelfe, filterBank, channel, profile, sf);
|
||||
} else if (e instanceof CPE) {
|
||||
CPE cpe = (CPE)e;
|
||||
processPair(cpe, filterBank, channel, profile, sf);
|
||||
channel += 2;
|
||||
} else if (e instanceof CCE) {
|
||||
((CCE)e).process();
|
||||
channel++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int processSingle(SCE_LFE scelfe, FilterBank filterBank, int channel, Profile profile, SampleFrequency sf) throws AACException {
|
||||
ICStream ics = scelfe.getICStream();
|
||||
ICSInfo info = ics.getInfo();
|
||||
ICSInfo.LTPrediction ltp = info.getLTPrediction1();
|
||||
int elementID = scelfe.getElementInstanceTag();
|
||||
float[] iqData = ics.getInvQuantData();
|
||||
if (profile.equals(Profile.AAC_MAIN) && info.isICPredictionPresent())
|
||||
info.getICPrediction().process(ics, iqData, sf);
|
||||
if (ICSInfo.LTPrediction.isLTPProfile(profile) && info.isLTPrediction1Present())
|
||||
ltp.process(ics, iqData, filterBank, sf);
|
||||
processDependentCoupling(false, elementID, 0, iqData, null);
|
||||
if (ics.isTNSDataPresent())
|
||||
ics.getTNS().process(ics, iqData, sf, false);
|
||||
processDependentCoupling(false, elementID, 1, iqData, null);
|
||||
filterBank.process(info.getWindowSequence(), info.getWindowShape(1), info.getWindowShape(0), iqData, this.data[channel], channel);
|
||||
if (ICSInfo.LTPrediction.isLTPProfile(profile))
|
||||
ltp.updateState(this.data[channel], filterBank.getOverlap(channel), profile);
|
||||
processIndependentCoupling(false, elementID, this.data[channel], null);
|
||||
if (ics.isGainControlPresent())
|
||||
ics.getGainControl().process(iqData, info.getWindowShape(1), info.getWindowShape(0), info.getWindowSequence());
|
||||
int chs = 1;
|
||||
if (this.sbrPresent && this.config.isSBREnabled()) {
|
||||
if ((this.data[channel]).length == this.config.getFrameLength())
|
||||
Logger.warn("SBR data present, but buffer has normal size!");
|
||||
SBR sbr = scelfe.getSBR();
|
||||
if (sbr.isPSUsed()) {
|
||||
chs = 2;
|
||||
scelfe.getSBR()._process(this.data[channel], this.data[channel + 1], false);
|
||||
} else {
|
||||
scelfe.getSBR().process(this.data[channel], false);
|
||||
}
|
||||
}
|
||||
return chs;
|
||||
}
|
||||
|
||||
private void processPair(CPE cpe, FilterBank filterBank, int channel, Profile profile, SampleFrequency sf) throws AACException {
|
||||
ICStream ics1 = cpe.getLeftChannel();
|
||||
ICStream ics2 = cpe.getRightChannel();
|
||||
ICSInfo info1 = ics1.getInfo();
|
||||
ICSInfo info2 = ics2.getInfo();
|
||||
ICSInfo.LTPrediction ltp1 = info1.getLTPrediction1();
|
||||
ICSInfo.LTPrediction ltp2 = cpe.isCommonWindow() ? info1.getLTPrediction2() : info2.getLTPrediction1();
|
||||
int elementID = cpe.getElementInstanceTag();
|
||||
float[] iqData1 = ics1.getInvQuantData();
|
||||
float[] iqData2 = ics2.getInvQuantData();
|
||||
if (cpe.isCommonWindow() && cpe.isMSMaskPresent())
|
||||
MS.process(cpe, iqData1, iqData2);
|
||||
if (profile.equals(Profile.AAC_MAIN)) {
|
||||
if (info1.isICPredictionPresent())
|
||||
info1.getICPrediction().process(ics1, iqData1, sf);
|
||||
if (info2.isICPredictionPresent())
|
||||
info2.getICPrediction().process(ics2, iqData2, sf);
|
||||
}
|
||||
IS.process(cpe, iqData1, iqData2);
|
||||
if (ICSInfo.LTPrediction.isLTPProfile(profile)) {
|
||||
if (info1.isLTPrediction1Present())
|
||||
ltp1.process(ics1, iqData1, filterBank, sf);
|
||||
if (cpe.isCommonWindow() && info1.isLTPrediction2Present()) {
|
||||
ltp2.process(ics2, iqData2, filterBank, sf);
|
||||
} else if (info2.isLTPrediction1Present()) {
|
||||
ltp2.process(ics2, iqData2, filterBank, sf);
|
||||
}
|
||||
}
|
||||
processDependentCoupling(true, elementID, 0, iqData1, iqData2);
|
||||
if (ics1.isTNSDataPresent())
|
||||
ics1.getTNS().process(ics1, iqData1, sf, false);
|
||||
if (ics2.isTNSDataPresent())
|
||||
ics2.getTNS().process(ics2, iqData2, sf, false);
|
||||
processDependentCoupling(true, elementID, 1, iqData1, iqData2);
|
||||
filterBank.process(info1.getWindowSequence(), info1.getWindowShape(1), info1.getWindowShape(0), iqData1, this.data[channel], channel);
|
||||
filterBank.process(info2.getWindowSequence(), info2.getWindowShape(1), info2.getWindowShape(0), iqData2, this.data[channel + 1], channel + 1);
|
||||
if (ICSInfo.LTPrediction.isLTPProfile(profile)) {
|
||||
ltp1.updateState(this.data[channel], filterBank.getOverlap(channel), profile);
|
||||
ltp2.updateState(this.data[channel + 1], filterBank.getOverlap(channel + 1), profile);
|
||||
}
|
||||
processIndependentCoupling(true, elementID, this.data[channel], this.data[channel + 1]);
|
||||
if (ics1.isGainControlPresent())
|
||||
ics1.getGainControl().process(iqData1, info1.getWindowShape(1), info1.getWindowShape(0), info1.getWindowSequence());
|
||||
if (ics2.isGainControlPresent())
|
||||
ics2.getGainControl().process(iqData2, info2.getWindowShape(1), info2.getWindowShape(0), info2.getWindowSequence());
|
||||
if (this.sbrPresent && this.config.isSBREnabled()) {
|
||||
if ((this.data[channel]).length == this.config.getFrameLength())
|
||||
Logger.warn("SBR data present, but buffer has normal size!");
|
||||
cpe.getSBR()._process(this.data[channel], this.data[channel + 1], false);
|
||||
}
|
||||
}
|
||||
|
||||
private void processIndependentCoupling(boolean channelPair, int elementID, float[] data1, float[] data2) {
|
||||
for (int i = 0; i < this.cces.length; i++) {
|
||||
CCE cce = this.cces[i];
|
||||
int index = 0;
|
||||
if (cce != null && cce.getCouplingPoint() == 2)
|
||||
for (int c = 0; c <= cce.getCoupledCount(); c++) {
|
||||
int chSelect = cce.getCHSelect(c);
|
||||
if (cce.isChannelPair(c) == channelPair && cce.getIDSelect(c) == elementID) {
|
||||
if (chSelect != 1) {
|
||||
cce.applyIndependentCoupling(index, data1);
|
||||
if (chSelect != 0)
|
||||
index++;
|
||||
}
|
||||
if (chSelect != 2) {
|
||||
cce.applyIndependentCoupling(index, data2);
|
||||
index++;
|
||||
}
|
||||
} else {
|
||||
index += 1 + ((chSelect == 3) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processDependentCoupling(boolean channelPair, int elementID, int couplingPoint, float[] data1, float[] data2) {
|
||||
for (int i = 0; i < this.cces.length; i++) {
|
||||
CCE cce = this.cces[i];
|
||||
int index = 0;
|
||||
if (cce != null && cce.getCouplingPoint() == couplingPoint)
|
||||
for (int c = 0; c <= cce.getCoupledCount(); c++) {
|
||||
int chSelect = cce.getCHSelect(c);
|
||||
if (cce.isChannelPair(c) == channelPair && cce.getIDSelect(c) == elementID) {
|
||||
if (chSelect != 1) {
|
||||
cce.applyDependentCoupling(index, data1);
|
||||
if (chSelect != 0)
|
||||
index++;
|
||||
}
|
||||
if (chSelect != 2) {
|
||||
cce.applyDependentCoupling(index, data2);
|
||||
index++;
|
||||
}
|
||||
} else {
|
||||
index += 1 + ((chSelect == 3) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sendToOutput(SampleBuffer buffer) {
|
||||
boolean be = buffer.isBigEndian();
|
||||
int chs = this.data.length;
|
||||
int mult = (this.sbrPresent && this.config.isSBREnabled()) ? 2 : 1;
|
||||
int length = mult * this.config.getFrameLength();
|
||||
int freq = mult * this.config.getSampleFrequency().getFrequency();
|
||||
byte[] b = buffer.getData();
|
||||
if (b.length != chs * length * 2)
|
||||
b = new byte[chs * length * 2];
|
||||
for (int i = 0; i < chs; i++) {
|
||||
float[] cur = this.data[i];
|
||||
for (int j = 0; j < length; j++) {
|
||||
short s = (short)Math.max(Math.min(Math.round(cur[j]), 32767), -32768);
|
||||
int off = (j * chs + i) * 2;
|
||||
if (be) {
|
||||
b[off] = (byte)(s >> 8 & 0xFF);
|
||||
b[off + 1] = (byte)(s & 0xFF);
|
||||
} else {
|
||||
b[off + 1] = (byte)(s >> 8 & 0xFF);
|
||||
b[off] = (byte)(s & 0xFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
buffer.setData(b, freq, chs, 16, this.bitsRead);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package net.sourceforge.jaad.aac.syntax;
|
||||
|
||||
public interface SyntaxConstants {
|
||||
public static final int MAX_ELEMENTS = 16;
|
||||
|
||||
public static final int BYTE_MASK = 255;
|
||||
|
||||
public static final int MIN_INPUT_SIZE = 768;
|
||||
|
||||
public static final int WINDOW_LEN_LONG = 1024;
|
||||
|
||||
public static final int WINDOW_LEN_SHORT = 128;
|
||||
|
||||
public static final int WINDOW_SMALL_LEN_LONG = 960;
|
||||
|
||||
public static final int WINDOW_SMALL_LEN_SHORT = 120;
|
||||
|
||||
public static final int ELEMENT_SCE = 0;
|
||||
|
||||
public static final int ELEMENT_CPE = 1;
|
||||
|
||||
public static final int ELEMENT_CCE = 2;
|
||||
|
||||
public static final int ELEMENT_LFE = 3;
|
||||
|
||||
public static final int ELEMENT_DSE = 4;
|
||||
|
||||
public static final int ELEMENT_PCE = 5;
|
||||
|
||||
public static final int ELEMENT_FIL = 6;
|
||||
|
||||
public static final int ELEMENT_END = 7;
|
||||
|
||||
public static final int MAX_WINDOW_COUNT = 8;
|
||||
|
||||
public static final int MAX_WINDOW_GROUP_COUNT = 8;
|
||||
|
||||
public static final int MAX_LTP_SFB = 40;
|
||||
|
||||
public static final int MAX_SECTIONS = 120;
|
||||
|
||||
public static final int MAX_MS_MASK = 128;
|
||||
|
||||
public static final float SQRT2 = 1.4142135F;
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
import org.jcodec.common.logging.Logger;
|
||||
|
||||
public class ICPrediction {
|
||||
private static final float SF_SCALE = -9.765625E-4F;
|
||||
|
||||
private static final float INV_SF_SCALE = -1024.0F;
|
||||
|
||||
private static final int MAX_PREDICTORS = 672;
|
||||
|
||||
private static final float A = 0.953125F;
|
||||
|
||||
private static final float ALPHA = 0.90625F;
|
||||
|
||||
private boolean predictorReset;
|
||||
|
||||
private int predictorResetGroup;
|
||||
|
||||
private boolean[] predictionUsed;
|
||||
|
||||
private PredictorState[] states;
|
||||
|
||||
private static final class PredictorState {
|
||||
float cor0 = 0.0F;
|
||||
|
||||
float cor1 = 0.0F;
|
||||
|
||||
float var0 = 0.0F;
|
||||
|
||||
float var1 = 0.0F;
|
||||
|
||||
float r0 = 1.0F;
|
||||
|
||||
float r1 = 1.0F;
|
||||
}
|
||||
|
||||
public ICPrediction() {
|
||||
this.states = new PredictorState[672];
|
||||
resetAllPredictors();
|
||||
}
|
||||
|
||||
public void decode(IBitStream _in, int maxSFB, SampleFrequency sf) throws AACException {
|
||||
int predictorCount = sf.getPredictorCount();
|
||||
if (this.predictorReset = _in.readBool())
|
||||
this.predictorResetGroup = _in.readBits(5);
|
||||
int maxPredSFB = sf.getMaximalPredictionSFB();
|
||||
int length = Math.min(maxSFB, maxPredSFB);
|
||||
this.predictionUsed = new boolean[length];
|
||||
for (int sfb = 0; sfb < length; sfb++)
|
||||
this.predictionUsed[sfb] = _in.readBool();
|
||||
Logger.warn("ICPrediction: maxSFB={0}, maxPredSFB={1}", maxSFB, maxPredSFB);
|
||||
}
|
||||
|
||||
public void setPredictionUnused(int sfb) {
|
||||
this.predictionUsed[sfb] = false;
|
||||
}
|
||||
|
||||
public void process(ICStream ics, float[] data, SampleFrequency sf) {
|
||||
ICSInfo info = ics.getInfo();
|
||||
if (info.isEightShortFrame()) {
|
||||
resetAllPredictors();
|
||||
} else {
|
||||
int len = Math.min(sf.getMaximalPredictionSFB(), info.getMaxSFB());
|
||||
int[] swbOffsets = info.getSWBOffsets();
|
||||
for (int sfb = 0; sfb < len; sfb++) {
|
||||
for (int k = swbOffsets[sfb]; k < swbOffsets[sfb + 1]; k++)
|
||||
predict(data, k, this.predictionUsed[sfb]);
|
||||
}
|
||||
if (this.predictorReset)
|
||||
resetPredictorGroup(this.predictorResetGroup);
|
||||
}
|
||||
}
|
||||
|
||||
private void resetPredictState(int index) {
|
||||
if (this.states[index] == null)
|
||||
this.states[index] = new PredictorState();
|
||||
(this.states[index]).r0 = 0.0F;
|
||||
(this.states[index]).r1 = 0.0F;
|
||||
(this.states[index]).cor0 = 0.0F;
|
||||
(this.states[index]).cor1 = 0.0F;
|
||||
(this.states[index]).var0 = 16256.0F;
|
||||
(this.states[index]).var1 = 16256.0F;
|
||||
}
|
||||
|
||||
private void resetAllPredictors() {
|
||||
for (int i = 0; i < this.states.length; i++)
|
||||
resetPredictState(i);
|
||||
}
|
||||
|
||||
private void resetPredictorGroup(int group) {
|
||||
for (int i = group - 1; i < this.states.length; i += 30)
|
||||
resetPredictState(i);
|
||||
}
|
||||
|
||||
private void predict(float[] data, int off, boolean output) {
|
||||
if (this.states[off] == null)
|
||||
this.states[off] = new PredictorState();
|
||||
PredictorState state = this.states[off];
|
||||
float r0 = state.r0, r1 = state.r1;
|
||||
float cor0 = state.cor0, cor1 = state.cor1;
|
||||
float var0 = state.var0, var1 = state.var1;
|
||||
float k1 = (var0 > 1.0F) ? (cor0 * even(0.953125F / var0)) : 0.0F;
|
||||
float k2 = (var1 > 1.0F) ? (cor1 * even(0.953125F / var1)) : 0.0F;
|
||||
float pv = round(k1 * r0 + k2 * r1);
|
||||
if (output)
|
||||
data[off] = data[off] + pv * -9.765625E-4F;
|
||||
float e0 = data[off] * -1024.0F;
|
||||
float e1 = e0 - k1 * r0;
|
||||
state.cor1 = trunc(0.90625F * cor1 + r1 * e1);
|
||||
state.var1 = trunc(0.90625F * var1 + 0.5F * (r1 * r1 + e1 * e1));
|
||||
state.cor0 = trunc(0.90625F * cor0 + r0 * e0);
|
||||
state.var0 = trunc(0.90625F * var0 + 0.5F * (r0 * r0 + e0 * e0));
|
||||
state.r1 = trunc(0.953125F * (r0 - k1 * e0));
|
||||
state.r0 = trunc(0.953125F * e0);
|
||||
}
|
||||
|
||||
private float round(float pf) {
|
||||
return Float.intBitsToFloat(Float.floatToIntBits(pf) + 32768 & 0xFFFF0000);
|
||||
}
|
||||
|
||||
private float even(float pf) {
|
||||
int i = Float.floatToIntBits(pf);
|
||||
i = i + 32767 + (i & 0x1) & 0xFFFF0000;
|
||||
return Float.intBitsToFloat(i);
|
||||
}
|
||||
|
||||
private float trunc(float pf) {
|
||||
return Float.intBitsToFloat(Float.floatToIntBits(pf) & 0xFFFF0000);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
import net.sourceforge.jaad.aac.huffman.HCB;
|
||||
import net.sourceforge.jaad.aac.syntax.CPE;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public final class IS implements SyntaxConstants, ISScaleTable, HCB {
|
||||
public static void process(CPE cpe, float[] specL, float[] specR) {
|
||||
ICStream ics = cpe.getRightChannel();
|
||||
ICSInfo info = ics.getInfo();
|
||||
int[] offsets = info.getSWBOffsets();
|
||||
int windowGroups = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[] sfbCB = ics.getSfbCB();
|
||||
int[] sectEnd = ics.getSectEnd();
|
||||
float[] scaleFactors = ics.getScaleFactors();
|
||||
int idx = 0, groupOff = 0;
|
||||
for (int g = 0; g < windowGroups; g++) {
|
||||
for (int i = 0; i < maxSFB; ) {
|
||||
if (sfbCB[idx] == 15 || sfbCB[idx] == 14) {
|
||||
int j = sectEnd[idx];
|
||||
for (; i < j; i++, idx++) {
|
||||
int c = (sfbCB[idx] == 15) ? 1 : -1;
|
||||
if (cpe.isMSMaskPresent())
|
||||
c *= cpe.isMSUsed(idx) ? -1 : 1;
|
||||
float scale = (float)c * scaleFactors[idx];
|
||||
for (int w = 0; w < info.getWindowGroupLength(g); w++) {
|
||||
int off = groupOff + w * 128 + offsets[i];
|
||||
for (j = 0; j < offsets[i + 1] - offsets[i]; j++)
|
||||
specR[off + j] = specL[off + j] * scale;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
int end = sectEnd[idx];
|
||||
idx += end - i;
|
||||
i = end;
|
||||
}
|
||||
groupOff += info.getWindowGroupLength(g) * 128;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
interface ISScaleTable {
|
||||
public static final float[] SCALE_TABLE = new float[] {
|
||||
1.0F, 0.8408964F, 0.70710677F, 0.59460354F, 0.5F, 0.4204482F, 0.35355338F, 0.29730177F, 0.25F, 0.2102241F,
|
||||
0.17677669F, 0.14865088F, 0.125F, 0.10511205F, 0.088388346F, 0.07432544F, 0.0625F, 0.052556027F, 0.044194173F, 0.03716272F,
|
||||
0.03125F, 0.026278013F, 0.022097087F, 0.01858136F, 0.015625F, 0.013139007F, 0.011048543F, 0.00929068F, 0.0078125F, 0.0065695033F,
|
||||
0.0055242716F, 0.00464534F, 0.00390625F, 0.0032847517F, 0.0027621358F, 0.00232267F, 0.001953125F, 0.0016423758F, 0.0013810679F, 0.001161335F,
|
||||
9.765625E-4F, 8.211879E-4F, 6.9053395E-4F, 5.806675E-4F, 4.8828125E-4F, 4.1059396E-4F, 3.4526698E-4F, 2.9033376E-4F, 2.4414062E-4F, 2.0529698E-4F,
|
||||
1.7263349E-4F, 1.4516688E-4F, 1.2207031E-4F, 1.0264849E-4F, 8.6316744E-5F, 7.258344E-5F, 6.1035156E-5F, 5.1324245E-5F, 4.3158372E-5F, 3.629172E-5F,
|
||||
3.0517578E-5F, 2.5662122E-5F, 2.1579186E-5F, 1.814586E-5F, 1.5258789E-5F, 1.2831061E-5F, 1.0789593E-5F, 9.07293E-6F, 7.6293945E-6F, 6.4155306E-6F,
|
||||
5.3947965E-6F, 4.536465E-6F, 3.8146973E-6F, 3.2077653E-6F, 2.6973983E-6F, 2.2682325E-6F, 1.9073486E-6F, 1.6038827E-6F, 1.3486991E-6F, 1.1341162E-6F,
|
||||
9.536743E-7F, 8.019413E-7F, 6.7434956E-7F, 5.670581E-7F, 4.7683716E-7F, 4.0097066E-7F, 3.3717478E-7F, 2.8352906E-7F, 2.3841858E-7F, 2.0048533E-7F,
|
||||
1.6858739E-7F, 1.4176453E-7F, 1.1920929E-7F, 1.00242666E-7F, 8.4293696E-8F, 7.0882265E-8F, 5.9604645E-8F, 5.0121333E-8F, 4.2146848E-8F, 3.5441133E-8F,
|
||||
2.9802322E-8F, 2.5060666E-8F, 2.1073424E-8F, 1.7720566E-8F, 1.4901161E-8F, 1.2530333E-8F, 1.0536712E-8F, 8.860283E-9F, 7.450581E-9F, 6.2651666E-9F,
|
||||
5.268356E-9F, 4.4301416E-9F, 3.7252903E-9F, 3.1325833E-9F, 2.634178E-9F, 2.2150708E-9F, 1.8626451E-9F, 1.5662917E-9F, 1.317089E-9F, 1.1075354E-9F,
|
||||
9.313226E-10F, 7.831458E-10F, 6.585445E-10F, 5.537677E-10F, 4.656613E-10F, 3.915729E-10F, 3.2927225E-10F, 2.7688385E-10F, 2.3283064E-10F, 1.9578646E-10F,
|
||||
1.6463612E-10F, 1.3844192E-10F, 1.1641532E-10F, 9.789323E-11F, 8.231806E-11F, 6.922096E-11F, 5.820766E-11F, 4.8946614E-11F, 4.115903E-11F, 3.461048E-11F,
|
||||
2.910383E-11F, 2.4473307E-11F, 2.0579516E-11F, 1.730524E-11F, 1.4551915E-11F, 1.22366535E-11F, 1.0289758E-11F, 8.65262E-12F, 7.275958E-12F, 6.1183268E-12F,
|
||||
5.144879E-12F, 4.32631E-12F, 3.637979E-12F, 3.0591634E-12F, 2.5724394E-12F, 2.163155E-12F, 1.8189894E-12F, 1.5295817E-12F, 1.2862197E-12F, 1.0815775E-12F,
|
||||
9.094947E-13F, 7.6479085E-13F, 6.4310986E-13F, 5.4078877E-13F, 4.5474735E-13F, 3.8239542E-13F, 3.2155493E-13F, 2.7039438E-13F, 2.2737368E-13F, 1.9119771E-13F,
|
||||
1.6077747E-13F, 1.3519719E-13F, 1.1368684E-13F, 9.5598856E-14F, 8.038873E-14F, 6.7598596E-14F, 5.684342E-14F, 4.7799428E-14F, 4.0194366E-14F, 3.3799298E-14F,
|
||||
2.842171E-14F, 2.3899714E-14F, 2.0097183E-14F, 1.6899649E-14F, 1.4210855E-14F, 1.1949857E-14F, 1.00485916E-14F, 8.4498245E-15F, 7.1054274E-15F, 5.9749285E-15F,
|
||||
5.0242958E-15F, 4.2249122E-15F, 3.5527137E-15F, 2.9874642E-15F, 2.5121479E-15F, 2.1124561E-15F, 1.7763568E-15F, 1.4937321E-15F, 1.2560739E-15F, 1.0562281E-15F,
|
||||
8.881784E-16F, 7.4686606E-16F, 6.2803697E-16F, 5.2811403E-16F, 4.440892E-16F, 3.7343303E-16F, 3.1401849E-16F, 2.6405702E-16F, 2.220446E-16F, 1.8671652E-16F,
|
||||
1.5700924E-16F, 1.3202851E-16F, 1.110223E-16F, 9.335826E-17F, 7.850462E-17F, 6.6014254E-17F, 5.551115E-17F, 4.667913E-17F, 3.925231E-17F, 3.3007127E-17F,
|
||||
2.7755576E-17F, 2.3339564E-17F, 1.9626155E-17F, 1.6503563E-17F, 1.3877788E-17F, 1.1669782E-17F, 9.813078E-18F, 8.251782E-18F, 6.938894E-18F, 5.834891E-18F,
|
||||
4.906539E-18F, 4.125891E-18F, 3.469447E-18F, 2.9174455E-18F, 2.4532694E-18F, 2.0629454E-18F, 1.7347235E-18F, 1.4587228E-18F, 1.2266347E-18F, 1.0314727E-18F,
|
||||
8.6736174E-19F, 7.293614E-19F, 6.1331736E-19F, 5.1573636E-19F, 4.3368087E-19F, 3.646807E-19F, 3.0665868E-19F, 2.5786818E-19F, 2.1684043E-19F, 1.8234035E-19F,
|
||||
1.5332934E-19F, 1.2893409E-19F, 1.0842022E-19F, 9.1170173E-20F, 7.666467E-20F };
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
import net.sourceforge.jaad.aac.huffman.HCB;
|
||||
import net.sourceforge.jaad.aac.syntax.CPE;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public final class MS implements SyntaxConstants, HCB {
|
||||
public static void process(CPE cpe, float[] specL, float[] specR) {
|
||||
ICStream ics = cpe.getLeftChannel();
|
||||
ICSInfo info = ics.getInfo();
|
||||
int[] offsets = info.getSWBOffsets();
|
||||
int windowGroups = info.getWindowGroupCount();
|
||||
int maxSFB = info.getMaxSFB();
|
||||
int[] sfbCBl = ics.getSfbCB();
|
||||
int[] sfbCBr = cpe.getRightChannel().getSfbCB();
|
||||
int groupOff = 0;
|
||||
int idx = 0;
|
||||
for (int g = 0; g < windowGroups; g++) {
|
||||
for (int i = 0; i < maxSFB; i++, idx++) {
|
||||
if (cpe.isMSUsed(idx) && sfbCBl[idx] < 13 && sfbCBr[idx] < 13)
|
||||
for (int w = 0; w < info.getWindowGroupLength(g); w++) {
|
||||
int off = groupOff + w * 128 + offsets[i];
|
||||
for (int j = 0; j < offsets[i + 1] - offsets[i]; j++) {
|
||||
float t = specL[off + j] - specR[off + j];
|
||||
specL[off + j] = specL[off + j] + specR[off + j];
|
||||
specR[off + j] = t;
|
||||
}
|
||||
}
|
||||
}
|
||||
groupOff += info.getWindowGroupLength(g) * 128;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
public enum MSMask {
|
||||
TYPE_ALL_0, TYPE_USED, TYPE_ALL_1, TYPE_RESERVED;
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.SampleFrequency;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.ICSInfo;
|
||||
import net.sourceforge.jaad.aac.syntax.ICStream;
|
||||
import net.sourceforge.jaad.aac.syntax.SyntaxConstants;
|
||||
|
||||
public class TNS implements SyntaxConstants, TNSTables {
|
||||
private static final int[] SHORT_BITS = new int[] { 1, 4, 3 };
|
||||
|
||||
private static final int[] LONG_BITS = new int[] { 2, 6, 5 };
|
||||
|
||||
private int[] nFilt = new int[8];
|
||||
|
||||
private int[][] length = new int[8][4];
|
||||
|
||||
private boolean[][] direction = new boolean[8][4];
|
||||
|
||||
private int[][] order = new int[8][4];
|
||||
|
||||
private float[][][] coef = new float[8][4][20];
|
||||
|
||||
private static final int TNS_MAX_ORDER = 20;
|
||||
|
||||
public void decode(IBitStream _in, ICSInfo info) throws AACException {
|
||||
int windowCount = info.getWindowCount();
|
||||
int[] bits = info.isEightShortFrame() ? SHORT_BITS : LONG_BITS;
|
||||
for (int w = 0; w < windowCount; w++) {
|
||||
this.nFilt[w] = _in.readBits(bits[0]);
|
||||
if (_in.readBits(bits[0]) != 0) {
|
||||
int coefRes = _in.readBit();
|
||||
for (int filt = 0; filt < this.nFilt[w]; filt++) {
|
||||
this.length[w][filt] = _in.readBits(bits[1]);
|
||||
this.order[w][filt] = _in.readBits(bits[2]);
|
||||
if (_in.readBits(bits[2]) > 20)
|
||||
throw new AACException("TNS filter out of range: " + this.order[w][filt]);
|
||||
if (this.order[w][filt] != 0) {
|
||||
this.direction[w][filt] = _in.readBool();
|
||||
int coefCompress = _in.readBit();
|
||||
int coefLen = coefRes + 3 - coefCompress;
|
||||
int tmp = 2 * coefCompress + coefRes;
|
||||
for (int i = 0; i < this.order[w][filt]; i++)
|
||||
this.coef[w][filt][i] = TNS_TABLES[tmp][_in.readBits(coefLen)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void process(ICStream ics, float[] spec, SampleFrequency sf, boolean decode) {}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package net.sourceforge.jaad.aac.tools;
|
||||
|
||||
interface TNSTables {
|
||||
public static final float[] TNS_COEF_1_3 = new float[] { 0.0F, -0.43388373F, 0.6427876F, 0.34202015F };
|
||||
|
||||
public static final float[] TNS_COEF_0_3 = new float[] { 0.0F, -0.43388373F, -0.7818315F, -0.9749279F, 0.9848077F, 0.8660254F, 0.6427876F, 0.34202015F };
|
||||
|
||||
public static final float[] TNS_COEF_1_4 = new float[] { 0.0F, -0.2079117F, -0.40673664F, -0.58778524F, 0.6736956F, 0.52643216F, 0.36124167F, 0.18374951F };
|
||||
|
||||
public static final float[] TNS_COEF_0_4 = new float[] {
|
||||
0.0F, -0.2079117F, -0.40673664F, -0.58778524F, -0.7431448F, -0.8660254F, -0.95105654F, -0.9945219F, 0.99573416F, 0.9618256F,
|
||||
0.8951633F, 0.7980172F, 0.6736956F, 0.52643216F, 0.36124167F, 0.18374951F };
|
||||
|
||||
public static final float[][] TNS_TABLES = new float[][] { TNS_COEF_0_3, TNS_COEF_0_4, TNS_COEF_1_3, TNS_COEF_1_4 };
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package net.sourceforge.jaad.aac.transport;
|
||||
|
||||
import net.sourceforge.jaad.aac.AACException;
|
||||
import net.sourceforge.jaad.aac.syntax.IBitStream;
|
||||
import net.sourceforge.jaad.aac.syntax.PCE;
|
||||
|
||||
public final class ADIFHeader {
|
||||
private static final long ADIF_ID = 1094994246L;
|
||||
|
||||
private long id;
|
||||
|
||||
private boolean copyrightIDPresent;
|
||||
|
||||
private byte[] copyrightID;
|
||||
|
||||
private boolean originalCopy;
|
||||
|
||||
private boolean home;
|
||||
|
||||
private boolean bitstreamType;
|
||||
|
||||
private int bitrate;
|
||||
|
||||
private int pceCount;
|
||||
|
||||
private int[] adifBufferFullness;
|
||||
|
||||
private PCE[] pces;
|
||||
|
||||
public static boolean isPresent(IBitStream _in) throws AACException {
|
||||
return ((long)_in.peekBits(32) == 1094994246L);
|
||||
}
|
||||
|
||||
private ADIFHeader() {
|
||||
this.copyrightID = new byte[9];
|
||||
}
|
||||
|
||||
public static ADIFHeader readHeader(IBitStream _in) throws AACException {
|
||||
ADIFHeader h = new ADIFHeader();
|
||||
h.decode(_in);
|
||||
return h;
|
||||
}
|
||||
|
||||
private void decode(IBitStream _in) throws AACException {
|
||||
this.id = (long)_in.readBits(32);
|
||||
this.copyrightIDPresent = _in.readBool();
|
||||
if (this.copyrightIDPresent)
|
||||
for (int j = 0; j < 9; j++)
|
||||
this.copyrightID[j] = (byte)_in.readBits(8);
|
||||
this.originalCopy = _in.readBool();
|
||||
this.home = _in.readBool();
|
||||
this.bitstreamType = _in.readBool();
|
||||
this.bitrate = _in.readBits(23);
|
||||
this.pceCount = _in.readBits(4) + 1;
|
||||
this.pces = new PCE[this.pceCount];
|
||||
this.adifBufferFullness = new int[this.pceCount];
|
||||
for (int i = 0; i < this.pceCount; i++) {
|
||||
if (this.bitstreamType) {
|
||||
this.adifBufferFullness[i] = -1;
|
||||
} else {
|
||||
this.adifBufferFullness[i] = _in.readBits(20);
|
||||
}
|
||||
this.pces[i] = new PCE();
|
||||
this.pces[i].decode(_in);
|
||||
}
|
||||
}
|
||||
|
||||
public PCE getFirstPCE() {
|
||||
return this.pces[0];
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue