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 file for correlation
+ * Class to represent an audio clip for correlation
*/
-public class AudioFile extends MediaFile
+public class AudioClip extends MediaObject
{
- /** length of current audio file in seconds */
+ /** length of current audio clip in seconds */
private int _lengthInSeconds = LENGTH_UNKNOWN;
private static final int LENGTH_UNKNOWN = -1;
* Constructor
* @param inFile file object
*/
- public AudioFile(File inFile)
+ public AudioClip(File inFile)
{
// Timestamp is always just taken from the file modification stamp
super(inFile, new Timestamp(inFile.lastModified()));
}
/**
- * @return length of this audio file in seconds
+ * 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 = AudioSystem.getAudioFileFormat(getFile());
+ 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) {