X-Git-Url: https://git.pterodactylus.net/?p=sonitus.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fio%2Fmp3%2FParser.java;h=bbdb5a3ad2e2d3bbaf7ff0adf3e135108568c0dd;hp=55165d809b3ad7e3e0db6bf50a5faa72d54e3400;hb=ed7b4e864c29bbf8b5d1a394c1d41f23a3394e27;hpb=404a2cee82a4e0c0283d578fbf4345744c04d697
diff --git a/src/main/java/net/pterodactylus/sonitus/io/mp3/Parser.java b/src/main/java/net/pterodactylus/sonitus/io/mp3/Parser.java
index 55165d8..bbdb5a3 100644
--- a/src/main/java/net/pterodactylus/sonitus/io/mp3/Parser.java
+++ b/src/main/java/net/pterodactylus/sonitus/io/mp3/Parser.java
@@ -93,9 +93,17 @@ public class Parser {
}
System.arraycopy(buffer, 1, buffer, 0, 3);
buffer[3] = (byte) r;
- Optional frame = Frame.create(buffer, 0, 4);
- if (frame.isPresent()) {
- return frame.get();
+ if (Frame.isFrame(buffer, 0, 4)) {
+ int frameLength = Frame.getFrameLength(buffer, 0);
+ if (frameLength != -1) {
+ byte[] content = new byte[frameLength + 4];
+ readFully(inputStream, content, 4, frameLength);
+ System.arraycopy(buffer, 0, content, 0, 4);
+ Optional frame = Frame.create(content, 0, frameLength + 4);
+ if (frame.isPresent()) {
+ return frame.get();
+ }
+ }
}
}
}