@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt64(byteBuffer, systemId.getMostSignificantBits()); IsoTypeWriter.writeUInt64(byteBuffer, systemId.getLeastSignificantBits()); ByteBuffer data = protectionSpecificHeader.getData(); data.rewind(); IsoTypeWriter.writeUInt32(byteBuffer, data.limit()); byteBuffer.put(data); }
protected ByteBuffer getHeader() { ByteBuffer header; if (largeBox || getSize() >= (1L << 32)) { header = ByteBuffer.wrap(new byte[]{0, 0, 0, 1, type.getBytes()[0], type.getBytes()[1], type.getBytes()[2], type.getBytes()[3], 0, 0, 0, 0, 0, 0, 0, 0}); header.position(8); IsoTypeWriter.writeUInt64(header, getSize()); } else { header = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, type.getBytes()[0], type.getBytes()[1], type.getBytes()[2], type.getBytes()[3]}); IsoTypeWriter.writeUInt32(header, getSize()); } header.rewind(); return header; }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 0x01) { IsoTypeWriter.writeUInt64(byteBuffer, fragmentAbsoluteTime); IsoTypeWriter.writeUInt64(byteBuffer, fragmentAbsoluteDuration); } else { IsoTypeWriter.writeUInt32(byteBuffer, fragmentAbsoluteTime); IsoTypeWriter.writeUInt32(byteBuffer, fragmentAbsoluteDuration); } }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt32(byteBuffer, chunkOffsets.length); for (long chunkOffset : chunkOffsets) { IsoTypeWriter.writeUInt64(byteBuffer, chunkOffset); } }
@Override protected ByteBuffer getHeader() { ByteBuffer header; if (largeBox || getSize() >= (1L << 32)) { header = ByteBuffer.wrap(new byte[]{0, 0, 0, 1, type.getBytes()[0], type.getBytes()[1], type.getBytes()[2], type.getBytes()[3], 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); header.position(8); IsoTypeWriter.writeUInt64(header, getSize()); writeVersionAndFlags(header); } else { header = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, type.getBytes()[0], type.getBytes()[1], type.getBytes()[2], type.getBytes()[3], 0, 0, 0, 0}); IsoTypeWriter.writeUInt32(header, getSize()); header.position(8); writeVersionAndFlags(header); } header.rewind(); return header; }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt8(byteBuffer, entries.size()); for (Entry entry : entries) { if (getVersion() == 0x01) { IsoTypeWriter.writeUInt64(byteBuffer, entry.fragmentAbsoluteTime); IsoTypeWriter.writeUInt64(byteBuffer, entry.fragmentAbsoluteDuration); } else { IsoTypeWriter.writeUInt32(byteBuffer, entry.fragmentAbsoluteTime); IsoTypeWriter.writeUInt32(byteBuffer, entry.fragmentAbsoluteDuration); } } }
@Override public void getBox(WritableByteChannel writableByteChannel) throws IOException { writableByteChannel.write(getHeader()); ByteBuffer byteBuffer = ByteBuffer.allocate(52 + (fontName != null ? fontName.length() : 0)); byteBuffer.position(6); IsoTypeWriter.writeUInt16(byteBuffer, dataReferenceIndex); byteBuffer.putInt(displayFlags); byteBuffer.putInt(textJustification); IsoTypeWriter.writeUInt16(byteBuffer, backgroundR); IsoTypeWriter.writeUInt16(byteBuffer, backgroundG); IsoTypeWriter.writeUInt16(byteBuffer, backgroundB); IsoTypeWriter.writeUInt64(byteBuffer, defaultTextBox); IsoTypeWriter.writeUInt64(byteBuffer, reserved1); byteBuffer.putShort(fontNumber); byteBuffer.putShort(fontFace); byteBuffer.put(reserved2); byteBuffer.putShort(reserved3); IsoTypeWriter.writeUInt16(byteBuffer, foregroundR); IsoTypeWriter.writeUInt16(byteBuffer, foregroundG); IsoTypeWriter.writeUInt16(byteBuffer, foregroundB); if (fontName != null) { IsoTypeWriter.writeUInt8(byteBuffer, fontName.length()); byteBuffer.put(fontName.getBytes()); } writableByteChannel.write((ByteBuffer) byteBuffer.rewind()); // writeContainer(writableByteChannel); there are no child boxes!? }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, baseMediaDecodeTime); } else { IsoTypeWriter.writeUInt32(byteBuffer, baseMediaDecodeTime); } }
public void getContent(ByteBuffer bb) { if (editListBox.getVersion() == 1) { IsoTypeWriter.writeUInt64(bb, segmentDuration); bb.putLong(mediaTime); } else { IsoTypeWriter.writeUInt32(bb, CastUtils.l2i(segmentDuration)); bb.putInt(CastUtils.l2i(mediaTime)); } IsoTypeWriter.writeFixedPoint1616(bb, mediaRate); }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, fragmentDuration); } else { IsoTypeWriter.writeUInt32(byteBuffer, fragmentDuration); } }
public static void write(long v, ByteBuffer bb, int bytes) { switch (bytes) { case 1: IsoTypeWriter.writeUInt8(bb, (int) (v & 0xff)); break; case 2: IsoTypeWriter.writeUInt16(bb, (int) (v & 0xffff)); break; case 3: IsoTypeWriter.writeUInt24(bb, (int) (v & 0xffffff)); break; case 4: IsoTypeWriter.writeUInt32(bb, v); break; case 8: IsoTypeWriter.writeUInt64(bb, v); break; default: throw new RuntimeException("I don't know how to read " + bytes + " bytes"); } } }
bb.put(new byte[8]); } else { IsoTypeWriter.writeUInt64(bb, size);
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if ((getFlags() & 1) == 1) { byteBuffer.put(IsoFile.fourCCtoBytes(auxInfoType)); byteBuffer.put(IsoFile.fourCCtoBytes(auxInfoTypeParameter)); } IsoTypeWriter.writeUInt32(byteBuffer, offsets.length); for (Long offset : offsets) { if (getVersion() == 0) { IsoTypeWriter.writeUInt32(byteBuffer, offset); } else { IsoTypeWriter.writeUInt64(byteBuffer, offset); } } }
private void getHeader(ByteBuffer byteBuffer) { if (isSmallBox()) { IsoTypeWriter.writeUInt32(byteBuffer, this.getSize()); byteBuffer.put(IsoFile.fourCCtoBytes(getType())); } else { IsoTypeWriter.writeUInt32(byteBuffer, 1); byteBuffer.put(IsoFile.fourCCtoBytes(getType())); IsoTypeWriter.writeUInt64(byteBuffer, getSize()); } if (UserBox.TYPE.equals(getType())) { byteBuffer.put(getUserType()); } } }
protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, timescale); byteBuffer.putLong(duration); } else { IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, timescale); byteBuffer.putInt((int) duration); } IsoTypeWriter.writeIso639(byteBuffer, language); IsoTypeWriter.writeUInt16(byteBuffer, 0); } }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, timescale); byteBuffer.putLong(duration); } else { IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, timescale); byteBuffer.putInt((int) duration); } IsoTypeWriter.writeFixedPoint1616(byteBuffer, rate); IsoTypeWriter.writeFixedPoint88(byteBuffer, volume); IsoTypeWriter.writeUInt16(byteBuffer, 0); IsoTypeWriter.writeUInt32(byteBuffer, 0); IsoTypeWriter.writeUInt32(byteBuffer, 0); matrix.getContent(byteBuffer); byteBuffer.putInt(previewTime); byteBuffer.putInt(previewDuration); byteBuffer.putInt(posterTime); byteBuffer.putInt(selectionTime); byteBuffer.putInt(selectionDuration); byteBuffer.putInt(currentTime); IsoTypeWriter.writeUInt32(byteBuffer, nextTrackId); }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt32(byteBuffer, trackId); long temp; temp = reserved << 6; temp = temp | (((lengthSizeOfTrafNum - 1) & 0x3) << 4); temp = temp | (((lengthSizeOfTrunNum - 1) & 0x3) << 2); temp = temp | ((lengthSizeOfSampleNum - 1) & 0x3); IsoTypeWriter.writeUInt32(byteBuffer, temp); IsoTypeWriter.writeUInt32(byteBuffer, entries.size()); for (Entry entry : entries) { if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, entry.time); IsoTypeWriter.writeUInt64(byteBuffer, entry.moofOffset); } else { IsoTypeWriter.writeUInt32(byteBuffer, entry.time); IsoTypeWriter.writeUInt32(byteBuffer, entry.moofOffset); } IsoTypeWriterVariable.write(entry.trafNumber, byteBuffer, lengthSizeOfTrafNum); IsoTypeWriterVariable.write(entry.trunNumber, byteBuffer, lengthSizeOfTrunNum); IsoTypeWriterVariable.write(entry.sampleNumber, byteBuffer, lengthSizeOfSampleNum); } }
public void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); if (getVersion() == 1) { IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt64(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, trackId); IsoTypeWriter.writeUInt32(byteBuffer, 0); byteBuffer.putLong(duration); } else { IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(creationTime)); IsoTypeWriter.writeUInt32(byteBuffer, DateHelper.convert(modificationTime)); IsoTypeWriter.writeUInt32(byteBuffer, trackId); IsoTypeWriter.writeUInt32(byteBuffer, 0); byteBuffer.putInt((int) duration); } // 196 IsoTypeWriter.writeUInt32(byteBuffer, 0); IsoTypeWriter.writeUInt32(byteBuffer, 0); IsoTypeWriter.writeUInt16(byteBuffer, layer); IsoTypeWriter.writeUInt16(byteBuffer, alternateGroup); IsoTypeWriter.writeFixedPoint88(byteBuffer, volume); IsoTypeWriter.writeUInt16(byteBuffer, 0); int i = 0; matrix.getContent(byteBuffer); IsoTypeWriter.writeFixedPoint1616(byteBuffer, width); IsoTypeWriter.writeFixedPoint1616(byteBuffer, height); }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt32(byteBuffer, referenceId); IsoTypeWriter.writeUInt32(byteBuffer, timeScale); if (getVersion() == 0) { IsoTypeWriter.writeUInt32(byteBuffer, earliestPresentationTime); IsoTypeWriter.writeUInt32(byteBuffer, firstOffset); } else { IsoTypeWriter.writeUInt64(byteBuffer, earliestPresentationTime); IsoTypeWriter.writeUInt64(byteBuffer, firstOffset); } IsoTypeWriter.writeUInt16(byteBuffer, reserved); IsoTypeWriter.writeUInt16(byteBuffer, entries.size()); for (Entry entry : entries) { BitWriterBuffer b = new BitWriterBuffer(byteBuffer); b.writeBits(entry.getReferenceType(), 1); b.writeBits(entry.getReferencedSize(), 31); IsoTypeWriter.writeUInt32(byteBuffer, entry.getSubsegmentDuration()); b = new BitWriterBuffer(byteBuffer); b.writeBits(entry.getStartsWithSap(), 1); b.writeBits(entry.getSapType(), 3); b.writeBits(entry.getSapDeltaTime(), 28); } }
@Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeUInt32(byteBuffer, trackId); if ((getFlags() & 0x1) == 1) { //baseDataOffsetPresent IsoTypeWriter.writeUInt64(byteBuffer, getBaseDataOffset()); } if ((getFlags() & 0x2) == 0x2) { //sampleDescriptionIndexPresent IsoTypeWriter.writeUInt32(byteBuffer, getSampleDescriptionIndex()); } if ((getFlags() & 0x8) == 0x8) { //defaultSampleDurationPresent IsoTypeWriter.writeUInt32(byteBuffer, getDefaultSampleDuration()); } if ((getFlags() & 0x10) == 0x10) { //defaultSampleSizePresent IsoTypeWriter.writeUInt32(byteBuffer, getDefaultSampleSize()); } if ((getFlags() & 0x20) == 0x20) { //defaultSampleFlagsPresent defaultSampleFlags.getContent(byteBuffer); } }