Use JDK 1.6.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / io / IdentifyingInputStream.java
index 537c9a4..c63e565 100644 (file)
@@ -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> 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();