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
*
* Sample to chunk mapping box
*
* @author The JCodec project
*
*/
public class SampleToChunkBox extends FullBox {
public SampleToChunkBox(Header atom) {
super(atom);
}
public static class SampleToChunkEntry {
private long first;
private int count;
private int entry;
public SampleToChunkEntry(long first, int count, int entry) {
this.first = first;
this.count = count;
this.entry = entry;
}
public long getFirst() {
return first;
}
public void setFirst(long first) {
this.first = first;
}
public int getCount() {
return count;
}
public int getEntry() {
return entry;
}
public void setEntry(int entry) {
this.entry = entry;
}
public void setCount(int count) {
this.count = count;
}
}
public static String fourcc() {
return "stsc";
}
public static SampleToChunkBox createSampleToChunkBox(SampleToChunkEntry[] sampleToChunk) {
SampleToChunkBox box = new SampleToChunkBox(new Header(fourcc()));
box.sampleToChunk = sampleToChunk;
return box;
}
private SampleToChunkEntry[] sampleToChunk;
public void parse(ByteBuffer input) {
super.parse(input);
int size = input.getInt();
sampleToChunk = new SampleToChunkEntry[size];
for (int i = 0; i < size; i++) {
sampleToChunk[i] = new SampleToChunkEntry(input.getInt(), input.getInt(),
input.getInt());
}
}
public SampleToChunkEntry[] getSampleToChunk() {
return sampleToChunk;
}
@Override
public void doWrite(ByteBuffer out) {
super.doWrite(out);
out.putInt(sampleToChunk.length);
for (int i = 0; i < sampleToChunk.length; i++) {
SampleToChunkEntry stc = sampleToChunk[i];
out.putInt((int) stc.getFirst());
out.putInt((int) stc.getCount());
out.putInt((int) stc.getEntry());
}
}
public void setSampleToChunk(SampleToChunkEntry[] sampleToChunk) {
this.sampleToChunk = sampleToChunk;
}
}