package org.jcodec.containers.mp4.boxes;
import java.nio.ByteBuffer;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* A box containing sample presentation time information
*
* @author The JCodec project
*
*/
public class TimeToSampleBox extends FullBox {
public TimeToSampleBox(Header atom) {
super(atom);
}
public static class TimeToSampleEntry {
int sampleCount;
int sampleDuration;
public TimeToSampleEntry(int sampleCount, int sampleDuration) {
this.sampleCount = sampleCount;
this.sampleDuration = sampleDuration;
}
public int getSampleCount() {
return sampleCount;
}
public int getSampleDuration() {
return sampleDuration;
}
public void setSampleDuration(int sampleDuration) {
this.sampleDuration = sampleDuration;
}
public void setSampleCount(int sampleCount) {
this.sampleCount = sampleCount;
}
public long getSegmentDuration() {
return sampleCount * sampleDuration;
}
}
public static String fourcc() {
return "stts";
}
public static TimeToSampleBox createTimeToSampleBox(TimeToSampleEntry[] timeToSamples) {
TimeToSampleBox box = new TimeToSampleBox(new Header(fourcc()));
box.entries = timeToSamples;
return box;
}
private TimeToSampleEntry[] entries;
public void parse(ByteBuffer input) {
super.parse(input);
int foo = input.getInt();
entries = new TimeToSampleEntry[foo];
for (int i = 0; i < foo; i++) {
entries[i] = new TimeToSampleEntry(input.getInt(), input.getInt());
}
}
public TimeToSampleEntry[] getEntries() {
return entries;
}
@Override
public void doWrite(ByteBuffer out) {
super.doWrite(out);
out.putInt(entries.length);
for (int i = 0; i < entries.length; i++) {
TimeToSampleEntry timeToSampleEntry = entries[i];
out.putInt(timeToSampleEntry.getSampleCount());
out.putInt(timeToSampleEntry.getSampleDuration());
}
}
public void setEntries(TimeToSampleEntry[] entries) {
this.entries = entries;
}
}