1 package com.coremedia.iso.boxes; 2 3 import com.coremedia.iso.IsoTypeReader; 4 import com.coremedia.iso.IsoTypeWriter; 5 import com.googlecode.mp4parser.AbstractFullBox; 6 7 import java.nio.ByteBuffer; 8 import java.util.Collections; 9 import java.util.LinkedList; 10 import java.util.List; 11 12 public class ProgressiveDownloadInformationBox extends AbstractFullBox { 13 14 15 List<Entry> entries = Collections.emptyList(); 16 ProgressiveDownloadInformationBox()17 public ProgressiveDownloadInformationBox() { 18 super("pdin"); 19 } 20 21 @Override getContentSize()22 protected long getContentSize() { 23 return 4 + entries.size() * 8; 24 } 25 26 @Override getContent(ByteBuffer byteBuffer)27 protected void getContent(ByteBuffer byteBuffer) { 28 writeVersionAndFlags(byteBuffer); 29 for (Entry entry : entries) { 30 IsoTypeWriter.writeUInt32(byteBuffer, entry.getRate()); 31 IsoTypeWriter.writeUInt32(byteBuffer, entry.getInitialDelay()); 32 } 33 } 34 getEntries()35 public List<Entry> getEntries() { 36 return entries; 37 } 38 setEntries(List<Entry> entries)39 public void setEntries(List<Entry> entries) { 40 this.entries = entries; 41 } 42 43 @Override _parseDetails(ByteBuffer content)44 public void _parseDetails(ByteBuffer content) { 45 parseVersionAndFlags(content); 46 entries = new LinkedList<Entry>(); 47 while (content.remaining() >= 8) { 48 Entry entry = new Entry(IsoTypeReader.readUInt32(content), IsoTypeReader.readUInt32(content)); 49 entries.add(entry); 50 } 51 } 52 53 54 public static class Entry { 55 long rate; 56 long initialDelay; 57 Entry(long rate, long initialDelay)58 public Entry(long rate, long initialDelay) { 59 this.rate = rate; 60 this.initialDelay = initialDelay; 61 } 62 getRate()63 public long getRate() { 64 return rate; 65 } 66 setRate(long rate)67 public void setRate(long rate) { 68 this.rate = rate; 69 } 70 getInitialDelay()71 public long getInitialDelay() { 72 return initialDelay; 73 } 74 setInitialDelay(long initialDelay)75 public void setInitialDelay(long initialDelay) { 76 this.initialDelay = initialDelay; 77 } 78 79 @Override toString()80 public String toString() { 81 return "Entry{" + 82 "rate=" + rate + 83 ", initialDelay=" + initialDelay + 84 '}'; 85 } 86 } 87 88 @Override toString()89 public String toString() { 90 return "ProgressiveDownloadInfoBox{" + 91 "entries=" + entries + 92 '}'; 93 } 94 95 }