• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.coremedia.iso.boxes;
2 
3 import com.googlecode.mp4parser.AbstractFullBox;
4 
5 import java.nio.ByteBuffer;
6 
7 /**
8  * The optional composition shift least greatest atom summarizes the calculated
9  * minimum and maximum offsets between decode and composition time, as well as
10  * the start and end times, for all samples. This allows a reader to determine
11  * the minimum required time for decode to obtain proper presentation order without
12  * needing to scan the sample table for the range of offsets. The type of the
13  * composition shift least greatest atom is ‘cslg’.
14  */
15 public class CompositionShiftLeastGreatestAtom extends AbstractFullBox {
CompositionShiftLeastGreatestAtom()16     public CompositionShiftLeastGreatestAtom() {
17         super("cslg");
18     }
19 
20     // A 32-bit unsigned integer that specifies the calculated value.
21     int compositionOffsetToDisplayOffsetShift;
22 
23     // A 32-bit signed integer that specifies the calculated value.
24     int leastDisplayOffset;
25 
26     // A 32-bit signed integer that specifies the calculated value.
27     int greatestDisplayOffset;
28 
29     //A 32-bit signed integer that specifies the calculated value.
30     int displayStartTime;
31 
32     //A 32-bit signed integer that specifies the calculated value.
33     int displayEndTime;
34 
35 
36     @Override
getContentSize()37     protected long getContentSize() {
38         return 24;
39     }
40 
41     @Override
_parseDetails(ByteBuffer content)42     public void _parseDetails(ByteBuffer content) {
43         parseVersionAndFlags(content);
44         compositionOffsetToDisplayOffsetShift = content.getInt();
45         leastDisplayOffset = content.getInt();
46         greatestDisplayOffset = content.getInt();
47         displayStartTime = content.getInt();
48         displayEndTime = content.getInt();
49     }
50 
51     @Override
getContent(ByteBuffer byteBuffer)52     protected void getContent(ByteBuffer byteBuffer) {
53         writeVersionAndFlags(byteBuffer);
54         byteBuffer.putInt(compositionOffsetToDisplayOffsetShift);
55         byteBuffer.putInt(leastDisplayOffset);
56         byteBuffer.putInt(greatestDisplayOffset);
57         byteBuffer.putInt(displayStartTime);
58         byteBuffer.putInt(displayEndTime);
59     }
60 
61 
getCompositionOffsetToDisplayOffsetShift()62     public int getCompositionOffsetToDisplayOffsetShift() {
63         return compositionOffsetToDisplayOffsetShift;
64     }
65 
setCompositionOffsetToDisplayOffsetShift(int compositionOffsetToDisplayOffsetShift)66     public void setCompositionOffsetToDisplayOffsetShift(int compositionOffsetToDisplayOffsetShift) {
67         this.compositionOffsetToDisplayOffsetShift = compositionOffsetToDisplayOffsetShift;
68     }
69 
getLeastDisplayOffset()70     public int getLeastDisplayOffset() {
71         return leastDisplayOffset;
72     }
73 
setLeastDisplayOffset(int leastDisplayOffset)74     public void setLeastDisplayOffset(int leastDisplayOffset) {
75         this.leastDisplayOffset = leastDisplayOffset;
76     }
77 
getGreatestDisplayOffset()78     public int getGreatestDisplayOffset() {
79         return greatestDisplayOffset;
80     }
81 
setGreatestDisplayOffset(int greatestDisplayOffset)82     public void setGreatestDisplayOffset(int greatestDisplayOffset) {
83         this.greatestDisplayOffset = greatestDisplayOffset;
84     }
85 
getDisplayStartTime()86     public int getDisplayStartTime() {
87         return displayStartTime;
88     }
89 
setDisplayStartTime(int displayStartTime)90     public void setDisplayStartTime(int displayStartTime) {
91         this.displayStartTime = displayStartTime;
92     }
93 
getDisplayEndTime()94     public int getDisplayEndTime() {
95         return displayEndTime;
96     }
97 
setDisplayEndTime(int displayEndTime)98     public void setDisplayEndTime(int displayEndTime) {
99         this.displayEndTime = displayEndTime;
100     }
101 }
102