package org.jcodec.containers.mp4.boxes; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import org.jcodec.common.tools.ToJSON; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public class EditListBox extends FullBox { private List<Edit> edits; public static String fourcc() { return "elst"; } public EditListBox(Header atom) { super(atom); } public EditListBox() { this(new Header(fourcc())); } public EditListBox(List<Edit> edits) { this(); this.edits = edits; } public void parse(ByteBuffer input) { super.parse(input); edits = new ArrayList<Edit>(); long num = input.getInt(); for (int i = 0; i < num; i++) { int duration = input.getInt(); int mediaTime = input.getInt(); float rate = input.getInt() / 65536f; edits.add(new Edit(duration, mediaTime, rate)); } } protected void doWrite(ByteBuffer out) { super.doWrite(out); out.putInt(edits.size()); for (Edit edit : edits) { out.putInt((int) edit.getDuration()); out.putInt((int) edit.getMediaTime()); out.putInt((int) (edit.getRate() * 65536)); } } public List<Edit> getEdits() { return edits; } public void dump(StringBuilder sb) { super.dump(sb); sb.append(": "); ToJSON.toJSON(this, sb, "edits"); } }