public ByteBuffer map(long startPosition, long size) throws IOException { if (startPosition < 0 || size < 0) { throw new IOException("startPosition and size must both be >= 0"); } //make sure that start+size aren't greater than avail size //in raf. BigInteger end = BigInteger.valueOf(startPosition); end = end.add(BigInteger.valueOf(size)); if (end.compareTo(BigInteger.valueOf(raf.length())) > 0) { throw new IOException("requesting read past end of stream"); } raf.seek(startPosition); int payLoadSize = l2i(size); //hack to check for potential overflow if (Long.MAX_VALUE-payLoadSize < startPosition || Long.MAX_VALUE-payLoadSize > raf.length()) { throw new IOException("requesting read past end of stream"); } byte[] payload = new byte[payLoadSize]; raf.readFully(payload); return ByteBuffer.wrap(payload); }
public ByteBuffer asByteBuffer() { ensureData(); byte[] bCopy = new byte[l2i(size)]; ByteBuffer copy = ByteBuffer.wrap(bCopy); for (ByteBuffer b : data) { copy.put(b.duplicate()); } copy.rewind(); return copy; }
public void addAndReplace(Box box) { data.position(l2i(box.getSize())); data = data.slice(); replacers.add(box); }
@Override public void parse(DataSource dataSource, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { ByteBuffer byteBuffer = ByteBuffer.allocate(l2i(contentSize)); dataSource.read(byteBuffer); byteBuffer.position(6); dataReferenceIndex = IsoTypeReader.readUInt16(byteBuffer); vc1Content = new byte[byteBuffer.remaining()]; byteBuffer.get(vc1Content); }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int numberOfEntries = l2i(IsoTypeReader.readUInt32(content)); entries = new ArrayList<Entry>(numberOfEntries); for (int i = 0; i < numberOfEntries; i++) { Entry e = new Entry(l2i(IsoTypeReader.readUInt32(content)), content.getInt()); entries.add(e); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int numberOfEntries = l2i(IsoTypeReader.readUInt32(content)); entries = new ArrayList<Entry>(numberOfEntries); for (int i = 0; i < numberOfEntries; i++) { Entry e = new Entry(l2i(IsoTypeReader.readUInt32(content)), content.getInt()); entries.add(e); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int numberOfEntries = l2i(IsoTypeReader.readUInt32(content)); entries = new ArrayList<Entry>(numberOfEntries); for (int i = 0; i < numberOfEntries; i++) { Entry e = new Entry(l2i(IsoTypeReader.readUInt32(content)), content.getInt()); entries.add(e); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); entries = new LinkedList<Entry>(); for (int i = 0; i < entryCount; i++) { entries.add(new Entry(this, content)); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); entries = new LinkedList<Entry>(); for (int i = 0; i < entryCount; i++) { entries.add(new Entry(this, content)); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); entries = new LinkedList<Entry>(); for (int i = 0; i < entryCount; i++) { entries.add(new Entry(this, content)); } }
public int read(ByteBuffer byteBuffer) throws IOException { if (endPosition == dataSource.position()) { return -1; } else if (byteBuffer.remaining() > endPosition - dataSource.position()) { ByteBuffer bb = ByteBuffer.allocate(l2i(endPosition - dataSource.position())); dataSource.read(bb); byteBuffer.put((ByteBuffer) bb.rewind()); return bb.capacity(); } else { return dataSource.read(byteBuffer); } }
protected void createSenc(long startSample, long endSample, CencEncryptedTrack track, int sequenceNumber, TrackFragmentBox parent) { SampleEncryptionBox senc = new SampleEncryptionBox(); senc.setSubSampleEncryption(track.hasSubSampleEncryption()); senc.setEntries(track.getSampleEncryptionEntries().subList(l2i(startSample - 1), l2i(endSample - 1))); parent.addBox(senc); }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); chunkOffsets = new long[entryCount]; for (int i = 0; i < entryCount; i++) { chunkOffsets[i] = IsoTypeReader.readUInt64(content); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); sampleNumber = new long[entryCount]; for (int i = 0; i < entryCount; i++) { sampleNumber[i] = IsoTypeReader.readUInt32(content); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = l2i(IsoTypeReader.readUInt32(content)); chunkOffsets = new long[entryCount]; for (int i = 0; i < entryCount; i++) { chunkOffsets[i] = IsoTypeReader.readUInt32(content); } }
@Override protected void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); groupingType = IsoTypeReader.read4cc(content); if (this.getVersion() == 1) { groupingTypeParameter = IsoTypeReader.read4cc(content); } long entryCount = IsoTypeReader.readUInt32(content); while (entryCount-- > 0) { entries.add(new Entry(l2i(IsoTypeReader.readUInt32(content)), l2i(IsoTypeReader.readUInt32(content)))); } }
@Override protected void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); groupingType = IsoTypeReader.read4cc(content); if (this.getVersion() == 1) { groupingTypeParameter = IsoTypeReader.read4cc(content); } long entryCount = IsoTypeReader.readUInt32(content); while (entryCount-- > 0) { entries.add(new Entry(l2i(IsoTypeReader.readUInt32(content)), l2i(IsoTypeReader.readUInt32(content)))); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); dataReferenceType = IsoTypeReader.read4cc(content); dataReferenceSize = l2i(IsoTypeReader.readUInt32(content)); dataReference = IsoTypeReader.readString(content, dataReferenceSize); }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); sampleSize = IsoTypeReader.readUInt32(content); sampleCount = l2i(IsoTypeReader.readUInt32(content)); if (sampleSize == 0) { sampleSizes = new long[(int) sampleCount]; for (int i = 0; i < sampleCount; i++) { sampleSizes[i] = IsoTypeReader.readUInt32(content); } } }