package pl.piotrsukiennik.whowhen.processer;
import comirva.audio.util.AudioPreProcessor;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/**
* @author Piotr Sukiennik
*/
public class AudioPreProcessorBuilder implements IFileAudioPreProcessorBuilder {
private AudioFormat audioFormat;
public AudioPreProcessorBuilder( AudioFormat audioFormat ) {
this.audioFormat = audioFormat;
}
public AudioPreProcessor buildAudioPreProcessor( byte[] audioData ) {
InputStream input = new ByteArrayInputStream( audioData );
return buildAudioPreProcessor( input, audioData.length / audioFormat.getFrameSize() );
}
public AudioPreProcessor buildAudioPreProcessor( InputStream inputStream, long sampleFramesLenght ) {
System.out.println( audioFormat );
AudioInputStream ais = new AudioInputStream( inputStream, audioFormat, sampleFramesLenght );
return new AudioPreProcessor( ais, audioFormat.getSampleRate() );
}
public AudioPreProcessor buildAudioPreProcessor( File file ) {
AudioInputStream ais = null;
try {
ais = AudioSystem.getAudioInputStream( file );
}
catch ( IOException e ) {
System.err.println( e.toString() );
}
catch ( UnsupportedAudioFileException e ) {
System.err.println( e.toString() );
}
return new AudioPreProcessor( ais, audioFormat.getSampleRate() );
}
}