X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fio%2FIdentifyingInputStream.java;h=c63e5656eabdf4265e391a5446456a4de84645f5;hb=ab9e62794abd0430bf2c79ecd41e311675d8b7c4;hp=537c9a42cf0521a5903c0dcdf050f8dd6f6aaf93;hpb=fae468e1da8a64ae76bde4fd2f37ed7b468dc390;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java b/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java index 537c9a4..c63e565 100644 --- a/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java +++ b/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java @@ -24,6 +24,7 @@ import java.io.InputStream; import net.pterodactylus.sonitus.data.Format; import com.google.common.base.Optional; +import com.google.common.io.ByteStreams; /** * Wrapper around an {@link InputStream} that identifies the {@link Format} of @@ -83,11 +84,17 @@ public class IdentifyingInputStream extends FilterInputStream { RememberingInputStream rememberingInputStream = new RememberingInputStream(inputStream); /* try Ogg Vorbis first. */ - try { - Format format = OggVorbisIdentifier.identify(rememberingInputStream); - return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), format)); - } catch (IdentifierException ie1) { - rememberingInputStream = new RememberingInputStream(rememberingInputStream.remembered()); + Optional format = OggVorbisIdentifier.identify(rememberingInputStream); + if (format.isPresent()) { + return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), format.get())); + } + + /* try MP3 now. */ + rememberingInputStream = new RememberingInputStream(rememberingInputStream.remembered()); + InputStream limitedInputStream = ByteStreams.limit(rememberingInputStream, 1048576); + format = Mp3Identifier.identify(limitedInputStream); + if (format.isPresent()) { + return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), format.get())); } return Optional.absent();