public void storeHeader(MovieBox movie) throws IOException { long mdatSize = out.position() - mdatOffset + 8; MP4Util.writeMovie(out, movie); out.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); }
public void storeHeader(MovieBox movie) throws IOException { long mdatSize = out.position() - mdatOffset + 8; MP4Util.writeMovie(out, movie); out.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); }
public WebOptimizedMP4Muxer(SeekableByteChannel output, Brand brand, int headerSize) throws IOException { super(output, brand); headerPos = output.position() - 24; output.position(headerPos); header = ByteBuffer.allocate(headerSize); output.write(header); header.clear(); new Header("wide", 8).write(output); new Header("mdat", 1).write(output); mdatOffset = output.position(); NIOUtils.writeLong(output, 0); }
public WebOptimizedMP4Muxer(SeekableByteChannel output, Brand brand, int headerSize) throws IOException { super(output, brand); headerPos = output.position() - 24; output.position(headerPos); header = ByteBuffer.allocate(headerSize); output.write(header); header.clear(); new Header("wide", 8).write(output); new Header("mdat", 1).write(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.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.position(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) new Header("free", rem).write(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); new Header("free", header.remaining()).write(out); out.position(mdatEnd); MP4Util.writeMovie(out, movie); } } }
@Override public void storeHeader(MovieBox movie) throws IOException { long mdatEnd = out.position(); long mdatSize = mdatEnd - mdatOffset + 8; out.position(mdatOffset); NIOUtils.writeLong(out, mdatSize); out.position(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) new Header("free", rem).write(out); } catch (ArrayIndexOutOfBoundsException e) { Logger.warn("Could not web-optimize, header is bigger then allocated space."); new Header("free", header.remaining()).write(out); out.position(mdatEnd); MP4Util.writeMovie(out, movie); } } }