private int scanBlock(byte[] bytes, int bytesRead, int absoluteOffset, int offset) throws InvalidDataException { while (offset < bytesRead - MINIMUM_BUFFER_LENGTH) { MpegFrame frame = new MpegFrame(bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3]); sanityCheckFrame(frame, absoluteOffset + offset); int newEndOffset = absoluteOffset + offset + frame.getLengthInBytes() - 1; if (newEndOffset < maxEndOffset()) { endOffset = absoluteOffset + offset + frame.getLengthInBytes() - 1; frameCount++; addBitrate(frame.getBitrate()); offset += frame.getLengthInBytes(); } else { break; } } return offset; }
private void sanityCheckFrame(MpegFrame frame, int offset) throws InvalidDataException { if (sampleRate != frame.getSampleRate()) throw new InvalidDataException("Inconsistent frame header"); if (!layer.equals(frame.getLayer())) throw new InvalidDataException("Inconsistent frame header"); if (!version.equals(frame.getVersion())) throw new InvalidDataException("Inconsistent frame header"); if (offset + frame.getLengthInBytes() > getLength()) throw new InvalidDataException("Frame would extend beyond end of file"); }
xingOffset = absoluteOffset + offset; xingBitrate = frame.getBitrate(); offset += frame.getLengthInBytes(); } else { startOffset = absoluteOffset + offset; frameCount++; addBitrate(frame.getBitrate()); offset += frame.getLengthInBytes(); return offset;
private int scanBlock(byte[] bytes, int bytesRead, int absoluteOffset, int offset) throws InvalidDataException { while (offset < bytesRead - MINIMUM_BUFFER_LENGTH) { MpegFrame frame = new MpegFrame(bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3]); sanityCheckFrame(frame, absoluteOffset + offset); int newEndOffset = absoluteOffset + offset + frame.getLengthInBytes() - 1; if (newEndOffset < maxEndOffset()) { endOffset = absoluteOffset + offset + frame.getLengthInBytes() - 1; frameCount++; addBitrate(frame.getBitrate()); offset += frame.getLengthInBytes(); } else { break; } } return offset; }
private void sanityCheckFrame(MpegFrame frame, int offset) throws InvalidDataException { if (sampleRate != frame.getSampleRate()) throw new InvalidDataException("Inconsistent frame header"); if (!layer.equals(frame.getLayer())) throw new InvalidDataException("Inconsistent frame header"); if (!version.equals(frame.getVersion())) throw new InvalidDataException("Inconsistent frame header"); if (offset + frame.getLengthInBytes() > getLength()) throw new InvalidDataException("Frame would extend beyond end of file"); }
xingOffset = absoluteOffset + offset; xingBitrate = frame.getBitrate(); offset += frame.getLengthInBytes(); } else { startOffset = absoluteOffset + offset; frameCount++; addBitrate(frame.getBitrate()); offset += frame.getLengthInBytes(); return offset;