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(); + } + } } } }