+++ /dev/null
-package tim.prune.data;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioSystem;
-
-/**
- * Class to represent an audio clip for correlation
- */
-public class AudioClip extends MediaObject
-{
- /** length of current audio clip in seconds */
- private int _lengthInSeconds = LENGTH_UNKNOWN;
-
- private static final int LENGTH_UNKNOWN = -1;
- private static final int LENGTH_NOT_AVAILABLE = -2;
-
- /**
- * Constructor
- * @param inFile file object
- */
- public AudioClip(File inFile)
- {
- // Timestamp is always just taken from the file modification stamp
- super(inFile, new TimestampUtc(inFile.lastModified()));
- }
-
- /**
- * Constructor
- * @param inData byte array of data
- * @param inName name of source file
- * @param inUrl url from which it came (or null)
- */
- public AudioClip(byte[] inData, String inName, String inUrl)
- {
- super(inData, inName, inUrl);
- }
-
- /**
- * @return length of this audio clip in seconds
- */
- public int getLengthInSeconds()
- {
- if (_lengthInSeconds == LENGTH_UNKNOWN)
- {
- try {
- AudioFileFormat format = null;
- if (getFile() != null)
- format = AudioSystem.getAudioFileFormat(getFile());
- else
- format = AudioSystem.getAudioFileFormat(new ByteArrayInputStream(_data));
- _lengthInSeconds = (int) (format.getFrameLength() / format.getFormat().getFrameRate());
- }
- catch (Exception e) {
- _lengthInSeconds = LENGTH_NOT_AVAILABLE;
- }
- }
- return _lengthInSeconds;
- }
-}