X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FAudioSink.java;h=6cace627ec200a4fb3e8e05eb73e80f2a30bbaf6;hb=75dec3ceb1a632501c94d2901d9915b4051bab58;hp=07499ad80b14d05cfe222bd62b86b8599a557282;hpb=8c7035dfe65a019d661a7de8c8a2e4db97cc681e;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java b/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java index 07499ad..6cace62 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/AudioSink.java @@ -34,11 +34,10 @@ import javax.sound.sampled.FloatControl; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; -import net.pterodactylus.sonitus.data.AbstractControlledComponent; +import net.pterodactylus.sonitus.data.AbstractFilter; import net.pterodactylus.sonitus.data.Controller; +import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.Metadata; -import net.pterodactylus.sonitus.data.Sink; -import net.pterodactylus.sonitus.data.Source; import net.pterodactylus.sonitus.data.controller.Fader; import net.pterodactylus.sonitus.data.controller.Switch; import net.pterodactylus.sonitus.io.IntegralWriteOutputStream; @@ -46,12 +45,12 @@ import net.pterodactylus.sonitus.io.IntegralWriteOutputStream; import com.google.common.base.Preconditions; /** - * {@link Sink} implementation that uses the JDK’s {@link AudioSystem} to play - * all {@link Source}s. + * {@link Filter} implementation that uses the JDK’s {@link AudioSystem} to play + * all the audio signal. * * @author David ‘Bombe’ Roden */ -public class AudioSink extends AbstractControlledComponent implements Sink { +public class AudioSink extends AbstractFilter { /** The logger. */ private static final Logger logger = Logger.getLogger(AudioSink.class.getName()); @@ -135,7 +134,7 @@ public class AudioSink extends AbstractControlledComponent implements Sink { } // - // CONTROLLED METHODS + // FILTER METHODS // @Override @@ -143,13 +142,10 @@ public class AudioSink extends AbstractControlledComponent implements Sink { return Arrays.>asList(volumeFader, muteSwitch); } - // - // SINK METHODS - // - @Override public void open(Metadata metadata) throws IOException { Preconditions.checkArgument(metadata.encoding().equalsIgnoreCase("PCM"), "source must be PCM-encoded"); + super.open(metadata); AudioFormat audioFormat = new AudioFormat(metadata.frequency(), 16, metadata.channels(), true, false); try { sourceDataLine = AudioSystem.getSourceDataLine(audioFormat); @@ -178,6 +174,7 @@ public class AudioSink extends AbstractControlledComponent implements Sink { @Override public void process(byte[] buffer) throws IOException { sourceDataLineOutputStream.write(buffer); + super.process(buffer); logger.finest(String.format("AudioSink: Wrote %d Bytes.", buffer.length)); }