package com.robonobo.plugin.mp3; import java.nio.ByteBuffer; public class Mp3Frame extends Frame { public static final int[] BITRATES = new int[] { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1 }; public static final int[] RATES = new int[] { 44100, 48000, 32000, -1 }; int version = 0; int layer = 0; boolean crc = false; int bitrate = 0; int samplingRate = 0; boolean padding = false; boolean priv = false; int channel = 0; int modeext = 0; boolean copyright = false; boolean original = false; int emphasis = 0; public Mp3Frame(ByteBuffer b) { super(b); } public int getBitrateActual() { return BITRATES[bitrate] * 1000; } public int getSampleRateActual() { return RATES[samplingRate]; } public int getCalculatedFrameLength() { // FrameLen = int((144 * BitRate / SampleRate ) + Padding); int len = (int)(144 * getBitrateActual() / getSampleRateActual()); if(padding) { len+=1; } return len; } public long getTimeLength() { if(getBitrateActual() != 0) return (getFrameLength() * 8 * 1000)/getBitrateActual(); else return 0; } @Override public String toString() { return "Mp3Frame[frame=" + getFrameOffset() + ",byteOffset=" + getByteOffset() + ",byteLength=" + getFrameLength() + ",bitrate=" + getBitrateActual()+",timeLength=" + getTimeLength() + ",timeOffset=" +getTimeOffsetAsString() + "]"; } }