FileDocCategorySizeDatePackage
EditListBox.javaAPI Docmp4parser 1.0-RC-178499Wed Dec 19 20:10:38 GMT 2012com.coremedia.iso.boxes

EditListBox

public class EditListBox extends com.googlecode.mp4parser.AbstractFullBox
Box Type : 'elst'
Container: {@link EditBox}('edts')
Mandatory: No
Quantity : Zero or one


This box contains an explicit timeline map. Each entry defines part of the track time-line: by mapping part of the media time-line, or by indicating 'empty' time, or by defining a 'dwell', where a single time-point in the media is held for a period.
Note that edits are not restricted to fall on sample times. This means that when entering an edit, it can be necessary to (a) back up to a sync point, and pre-roll from there and then (b) be careful about the duration of the first sample - it might have been truncated if the edit enters it during its normal duration. If this is audio, that frame might need to be decoded, and then the final slicing done. Likewise, the duration of the last sample in an edit might need slicing.
Starting offsets for tracks (streams) are represented by an initial empty edit. For example, to play a track from its start for 30 seconds, but at 10 seconds into the presentation, we have the following edit list:

  • Entry-count = 2
  • Segment-duration = 10 seconds
  • Media-Time = -1
  • Media-Rate = 1
  • Segment-duration = 30 seconds (could be the length of the whole track)
  • Media-Time = 0 seconds
  • Media-Rate = 1
  • Fields Summary
    private List
    entries
    public static final String
    TYPE
    Constructors Summary
    public EditListBox()

    
          
            super(TYPE);
        
    Methods Summary
    public void_parseDetails(java.nio.ByteBuffer content)

            parseVersionAndFlags(content);
            int entryCount = l2i(IsoTypeReader.readUInt32(content));
            entries = new LinkedList<Entry>();
            for (int i = 0; i < entryCount; i++) {
                entries.add(new Entry(this, content));
    
            }
        
    protected voidgetContent(java.nio.ByteBuffer byteBuffer)

            writeVersionAndFlags(byteBuffer);
            IsoTypeWriter.writeUInt32(byteBuffer, entries.size());
            for (Entry entry : entries) {
                entry.getContent(byteBuffer);
            }
        
    protected longgetContentSize()

            long contentSize = 8;
            if (getVersion() == 1) {
                contentSize += entries.size() * 20;
            } else {
                contentSize += entries.size() * 12;
            }
    
            return contentSize;
        
    public java.util.ListgetEntries()

            return entries;
        
    public voidsetEntries(java.util.List entries)

            this.entries = entries;
        
    public java.lang.StringtoString()

            return "EditListBox{" +
                    "entries=" + entries +
                    '}";