• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }