1 package tim.prune.data;
4 import javax.sound.sampled.AudioFileFormat;
5 import javax.sound.sampled.AudioSystem;
8 * Class to represent an audio file for correlation
10 public class AudioFile extends MediaFile
12 /** length of current audio file in seconds */
13 private int _lengthInSeconds = LENGTH_UNKNOWN;
15 private static final int LENGTH_UNKNOWN = -1;
16 private static final int LENGTH_NOT_AVAILABLE = -2;
20 * @param inFile file object
22 public AudioFile(File inFile)
24 // Timestamp is always just taken from the file modification stamp
25 super(inFile, new Timestamp(inFile.lastModified()));
29 * @return length of this audio file in seconds
31 public int getLengthInSeconds()
33 if (_lengthInSeconds == LENGTH_UNKNOWN)
36 AudioFileFormat format = AudioSystem.getAudioFileFormat(getFile());
37 _lengthInSeconds = (int) (format.getFrameLength() / format.getFormat().getFrameRate());
40 _lengthInSeconds = LENGTH_NOT_AVAILABLE;
43 return _lengthInSeconds;