| package com.coremedia.iso.boxes; |
| |
| import com.coremedia.iso.IsoTypeReader; |
| import com.coremedia.iso.IsoTypeWriter; |
| import com.googlecode.mp4parser.AbstractFullBox; |
| |
| import java.nio.ByteBuffer; |
| import java.util.Collections; |
| import java.util.LinkedList; |
| import java.util.List; |
| |
| public class ProgressiveDownloadInformationBox extends AbstractFullBox { |
| |
| |
| List<Entry> entries = Collections.emptyList(); |
| |
| public ProgressiveDownloadInformationBox() { |
| super("pdin"); |
| } |
| |
| @Override |
| protected long getContentSize() { |
| return 4 + entries.size() * 8; |
| } |
| |
| @Override |
| protected void getContent(ByteBuffer byteBuffer) { |
| writeVersionAndFlags(byteBuffer); |
| for (Entry entry : entries) { |
| IsoTypeWriter.writeUInt32(byteBuffer, entry.getRate()); |
| IsoTypeWriter.writeUInt32(byteBuffer, entry.getInitialDelay()); |
| } |
| } |
| |
| public List<Entry> getEntries() { |
| return entries; |
| } |
| |
| public void setEntries(List<Entry> entries) { |
| this.entries = entries; |
| } |
| |
| @Override |
| public void _parseDetails(ByteBuffer content) { |
| parseVersionAndFlags(content); |
| entries = new LinkedList<Entry>(); |
| while (content.remaining() >= 8) { |
| Entry entry = new Entry(IsoTypeReader.readUInt32(content), IsoTypeReader.readUInt32(content)); |
| entries.add(entry); |
| } |
| } |
| |
| |
| public static class Entry { |
| long rate; |
| long initialDelay; |
| |
| public Entry(long rate, long initialDelay) { |
| this.rate = rate; |
| this.initialDelay = initialDelay; |
| } |
| |
| public long getRate() { |
| return rate; |
| } |
| |
| public void setRate(long rate) { |
| this.rate = rate; |
| } |
| |
| public long getInitialDelay() { |
| return initialDelay; |
| } |
| |
| public void setInitialDelay(long initialDelay) { |
| this.initialDelay = initialDelay; |
| } |
| |
| @Override |
| public String toString() { |
| return "Entry{" + |
| "rate=" + rate + |
| ", initialDelay=" + initialDelay + |
| '}'; |
| } |
| } |
| |
| @Override |
| public String toString() { |
| return "ProgressiveDownloadInfoBox{" + |
| "entries=" + entries + |
| '}'; |
| } |
| |
| } |