net.sourceforge.jaad.aac.SampleBuffer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jcodec Show documentation
Show all versions of jcodec Show documentation
Pure Java implementation of video/audio codecs and formats
package net.sourceforge.jaad.aac;
/**
* This class is part of JAAD ( jaadec.sourceforge.net ) that is distributed
* under the Public Domain license. Code changes provided by the JCodec project
* are distributed under FreeBSD license.
*
* The SampleBuffer holds the decoded AAC frame. It contains the raw PCM data
* and its format.
* @author in-somnia
*/
public class SampleBuffer {
private int sampleRate, channels, bitsPerSample;
private double length, bitrate, encodedBitrate;
private byte[] data;
private boolean bigEndian;
public SampleBuffer() {
data = new byte[0];
sampleRate = 0;
channels = 0;
bitsPerSample = 0;
bigEndian = true;
}
/**
* Returns the buffer's PCM data.
* @return the audio data
*/
public byte[] getData() {
return data;
}
/**
* Returns the data's sample rate.
* @return the sample rate
*/
public int getSampleRate() {
return sampleRate;
}
/**
* Returns the number of channels stored in the data buffer.
* @return the number of channels
*/
public int getChannels() {
return channels;
}
/**
* Returns the number of bits per sample. Usually this is 16, meaning a
* sample is stored in two bytes.
* @return the number of bits per sample
*/
public int getBitsPerSample() {
return bitsPerSample;
}
/**
* Returns the length of the current frame in seconds.
* length = samplesPerChannel / sampleRate
* @return the length in seconds
*/
public double getLength() {
return length;
}
/**
* Returns the bitrate of the decoded PCM data.
* bitrate = (samplesPerChannel * bitsPerSample) / length
* @return the bitrate
*/
public double getBitrate() {
return bitrate;
}
/**
* Returns the AAC bitrate of the current frame.
* @return the AAC bitrate
*/
public double getEncodedBitrate() {
return encodedBitrate;
}
/**
* Indicates the endianness for the data.
*
* @return true if the data is in big endian, false if it is in little endian
*/
public boolean isBigEndian() {
return bigEndian;
}
/**
* Sets the endianness for the data.
*
* @param bigEndian if true the data will be in big endian, else in little
* endian
*/
public void setBigEndian(boolean bigEndian) {
if(bigEndian!=this.bigEndian) {
byte tmp;
for(int i = 0; i