public void parse(ReadableByteChannel dataSource, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { data = ByteBuffer.allocate(CastUtils.l2i(contentSize)); int bytesRead = 0; int b; while (((((b = dataSource.read(data))) + bytesRead) < contentSize)) { bytesRead += b; } }
public byte[] get(long start, int count) { byte[] result = new byte[count]; try { System.arraycopy(buf, l2i(start - startOffset), result, 0, count); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("start: " + start + " count: " + count + " startOffset:" + startOffset + " count:" + count + " len(buf):" + buf.length + " (start - startOffset):" + (start - startOffset)); throw e; } return result; }
public ByteBuffer get(long offset, long size) throws IOException { byte[] b = new byte[l2i(size)]; raf.seek(offset); raf.read(b); return ByteBuffer.wrap(b); }
public ByteBuffer asByteBuffer() { byte[] bCopy = new byte[l2i(size)]; ByteBuffer copy = ByteBuffer.wrap(bCopy); for (ByteBuffer b : data) { copy.put(b.duplicate()); } copy.rewind(); return copy; }
public ByteBuffer map(long startPosition, long size) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(l2i(size)); transferTo(startPosition, size, Channels.newChannel(baos)); return ByteBuffer.wrap(baos.toByteArray()); }
@Override public SampleEntry getSampleEntry() { return sampleEntries.size() == 1 ? sampleEntries.get(0) : sampleEntries.get(l2i(Math.max(0, tfhd.getSampleDescriptionIndex()-1))); } };
@Override public void parse(ReadableByteChannel dataSource, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { ByteBuffer byteBuffer = ByteBuffer.allocate(CastUtils.l2i(contentSize)); dataSource.read(byteBuffer); byteBuffer.position(6); dataReferenceIndex = IsoTypeReader.readUInt16(byteBuffer); vc1Content = new byte[byteBuffer.remaining()]; byteBuffer.get(vc1Content); }
@Override public void parse(ReadableByteChannel dataSource, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { ByteBuffer b1 = ByteBuffer.allocate(8); dataSource.read(b1); b1.position(6); dataReferenceIndex = IsoTypeReader.readUInt16(b1); data = new byte[CastUtils.l2i(contentSize - 8)]; dataSource.read(ByteBuffer.wrap(data)); }
public void addAndReplace(ParsableBox parsableBox) { data.position(CastUtils.l2i(parsableBox.getSize())); data = data.slice(); replacers.add(parsableBox); }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int numberOfEntries = CastUtils.l2i(IsoTypeReader.readUInt32(content)); entries = new ArrayList<Entry>(numberOfEntries); for (int i = 0; i < numberOfEntries; i++) { Entry e = new Entry(CastUtils.l2i(IsoTypeReader.readUInt32(content)), content.getInt()); entries.add(e); } }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = CastUtils.l2i(IsoTypeReader.readUInt32(content)); entries = new LinkedList<Entry>(); for (int i = 0; i < entryCount; i++) { entries.add(new Entry(this, content)); } }
private int getTrafSize(TrackFragmentBox traf) { List<Box> boxes = traf.getBoxes(); int size = 0; for (Box b : boxes) { if (b instanceof TrackRunBox) { size += l2i(((TrackRunBox) b).getSampleCount()); } } return size; }
public void getBox(WritableByteChannel writableByteChannel) throws IOException { ByteBuffer header = ByteBuffer.allocate(l2i(getSize())); IsoTypeWriter.writeUInt32(header, getSize()); header.put(IsoFile.fourCCtoBytes(getType())); header.put(Utf8.convert(content)); writableByteChannel.write((ByteBuffer) header.rewind()); }
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 protected void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); byte[] systemIdBytes = new byte[16]; content.get(systemIdBytes); systemId = UUIDConverter.convert(systemIdBytes); int dataSize = CastUtils.l2i(IsoTypeReader.readUInt32(content)); protectionSpecificHeader = ProtectionSpecificHeader.createFor(systemId, content); }
@Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); int entryCount = CastUtils.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 = CastUtils.l2i(IsoTypeReader.readUInt32(content)); chunkOffsets = new long[entryCount]; for (int i = 0; i < entryCount; i++) { chunkOffsets[i] = IsoTypeReader.readUInt64(content); } }
public ReplaceSampleTrack(Track origTrack, long sampleNumber, ByteBuffer content) { super("replace(" + origTrack.getName() + ")"); this.origTrack = origTrack; this.sampleNumber = sampleNumber; this.sampleContent = new SampleImpl(content, this.origTrack.getSamples().get(l2i(sampleNumber)).getSampleEntry()); this.samples = new ReplaceASingleEntryList(); }
protected void createTfhd(long startSample, long endSample, Track track, int sequenceNumber, TrackFragmentBox parent) { TrackFragmentHeaderBox tfhd = new TrackFragmentHeaderBox(); SampleFlags sf = new SampleFlags(); tfhd.setDefaultSampleFlags(sf); tfhd.setBaseDataOffset(-1); tfhd.setSampleDescriptionIndex(track.getSampleEntries().indexOf(track.getSamples().get(l2i(startSample)).getSampleEntry()) + 1); tfhd.setTrackId(track.getTrackMetaData().getTrackId()); tfhd.setDefaultBaseIsMoof(true); parent.addBox(tfhd); }