public DataBox(int type, int locale, byte[] data) { this(Header.createHeader(FOURCC, 0)); this.type = type; this.locale = locale; this.data = data; }
public IListBox(Map<Integer, List<Box>> values) { this(Header.createHeader(FOURCC, 0)); this.values = values; }
public MdtaBox(String key) { this(Header.createHeader(FOURCC, 0)); this.key = key; }
public KeysBox() { this(Header.createHeader(FOURCC, 0)); }
public static AudioSampleEntry compressedAudioSampleEntry(String fourcc, int drefId, int sampleSize, int channels, int sampleRate, int samplesPerPacket, int bytesPerPacket, int bytesPerFrame) { AudioSampleEntry ase = createAudioSampleEntry(Header.createHeader(fourcc, 0), (short) drefId, (short) channels, (short) 16, sampleRate, (short) 0, 0, 65534, 0, samplesPerPacket, bytesPerPacket, bytesPerFrame, 16 / 8, (short) 0); return ase; }
public MetaBox() { this(Header.createHeader(fourcc(), 0)); }
public UdtaMetaBox() { this(Header.createHeader(fourcc(), 0)); }
public UdtaBox() { this(Header.createHeader(fourcc(), 0)); }
public MP4Muxer(SeekableByteChannel output, FileTypeBox ftyp) throws IOException { this.tracks = new ArrayList<AbstractMP4MuxerTrack>(); this.out = output; ByteBuffer buf = ByteBuffer.allocate(1024); ftyp.write(buf); Header.createHeader("wide", 8).write(buf); Header.createHeader("mdat", 1).write(buf); mdatOffset = buf.position(); buf.putLong(0); buf.flip(); output.write(buf); }
public static ChunkOffsets64Box createChunkOffsets64Box(long[] offsets) { ChunkOffsets64Box co64 = new ChunkOffsets64Box(Header.createHeader(fourcc(), 0)); co64.chunkOffsets = offsets; return co64; }
public WebOptimizedMP4Muxer(SeekableByteChannel output, Brand brand, int headerSize) throws IOException { super(output, brand.getFileTypeBox()); headerPos = output.position() - 24; output.setPosition(headerPos); header = ByteBuffer.allocate(headerSize); output.write(header); header.clear(); Header.createHeader("wide", 8).writeChannel(output); Header.createHeader("mdat", 1).writeChannel(output); mdatOffset = output.position(); NIOUtils.writeLong(output, 0); }
@Override public void storeHeader(MovieBox movie) throws IOException { long mdatEnd = out.position(); long mdatSize = mdatEnd - mdatOffset + 8; out.setPosition(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.setPosition(headerPos); try { movie.write(header); header.flip(); int rem = header.capacity() - header.limit(); if (rem < 8) { header.duplicate().putInt(header.capacity()); } out.write(header); if (rem >= 8) Header.createHeader("free", rem).writeChannel(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); Header.createHeader("free", header.remaining()).writeChannel(out); out.setPosition(mdatEnd); MP4Util.writeMovie(out, movie); } } }
public static Box parseBox(ByteBuffer input, Header childAtom, IBoxFactory factory) { Box box = factory.newBox(childAtom); if (childAtom.getBodySize() < Box.MAX_BOX_SIZE) { box.parse(input); return box; } else { return new LeafBox(Header.createHeader("free", 8)); } }
public static Box parseBox(ByteBuffer input, Header childAtom, IBoxFactory factory) { Box box = factory.newBox(childAtom); if (childAtom.getBodySize() < Box.MAX_BOX_SIZE) { box.parse(input); return box; } else { return new Box.LeafBox(Header.createHeader("free", 8)); } }
protected void addDref(NodeBox minf) { DataInfoBox dinf = DataInfoBox.createDataInfoBox(); minf.add(dinf); DataRefBox dref = DataRefBox.createDataRefBox(); dinf.add(dref); dref.add(LeafBox.createLeafBox(Header.createHeader("alis", 0), ByteBuffer.wrap(new byte[] { 0, 0, 0, 1 }))); }
@Override public void apply(MovieBox movie) { MetaBox meta1 = NodeBox.findFirst(movie, MetaBox.class, MetaBox.fourcc()); MetaBox meta2 = NodeBox.findFirstPath(movie, MetaBox.class, new String[] { "udta", MetaBox.fourcc() }); if (keyedMeta != null && keyedMeta.size() > 0) { if (meta1 == null) { meta1 = new MetaBox(); movie.add(meta1); } meta1.setKeyedMeta(keyedMeta); } if (itunesMeta != null && itunesMeta.size() > 0) { if (meta2 == null) { meta2 = new UdtaMetaBox(); NodeBox udta = NodeBox.findFirst(movie, NodeBox.class, "udta"); if (udta == null) { udta = new NodeBox(Header.createHeader("udta", 0)); movie.add(udta); } udta.add(meta2); } meta2.setItunesMeta(itunesMeta); } } };
public static AudioSampleEntry audioSampleEntry(String fourcc, int drefId, int sampleSize, int channels, int sampleRate, ByteOrder endian) { AudioSampleEntry ase = createAudioSampleEntry(Header.createHeader(fourcc, 0), (short) drefId, (short) channels, (short) 16, sampleRate, (short) 0, 0, 65535, 0, 1, sampleSize, channels * sampleSize, sampleSize, (short) 1); NodeBox wave = new NodeBox(new Header("wave")); ase.add(wave); wave.add(FormatBox.createFormatBox(fourcc)); wave.add(EndianBox.createEndianBox(endian)); wave.add(Box.terminatorAtom()); // ase.add(new ChannelBox(atom)); return ase; }
private boolean isMoov(SeekableByteChannel is, Atom atom) throws IOException { is.setPosition(atom.getOffset() + atom.getHeader().headerSize()); try { Box mov = BoxUtil.parseBox(NIOUtils.fetchFromChannel(is, (int) atom.getHeader().getSize()), Header.createHeader("moov", atom .getHeader().getSize()), BoxFactory.getDefault()); return (mov instanceof MovieBox) && BoxUtil.containsBox((NodeBox) mov, "mvhd"); } catch (Throwable t) { return false; } } }
writeHeader(Header.createHeader("mdat", 0x100000001L), out); if (extra < 0) throw new RuntimeException("Not enough space to write the header"); writeHeader(Header.createHeader("free", extra), out); writeHeader(Header.createHeader("mdat", mdatSize), out);