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
*
* @author The JCodec project
*
*/
public class SampleSizesBox extends FullBox {
public SampleSizesBox(Header atom) {
super(atom);
}
private int defaultSize;
private int count;
private int[] sizes;
public static String fourcc() {
return "stsz";
}
public static SampleSizesBox createSampleSizesBox(int defaultSize, int count) {
SampleSizesBox stsz = new SampleSizesBox(new Header(fourcc()));
stsz.defaultSize = defaultSize;
stsz.count = count;
return stsz;
}
public static SampleSizesBox createSampleSizesBox2(int[] sizes) {
SampleSizesBox stsz = new SampleSizesBox(new Header(fourcc()));
stsz.sizes = sizes;
stsz.count = sizes.length;
return stsz;
}
public void parse(ByteBuffer input) {
super.parse(input);
defaultSize = input.getInt();
count = input.getInt();
if (defaultSize == 0) {
sizes = new int[count];
for (int i = 0; i < count; i++) {
sizes[i] = input.getInt();
}
}
}
public int getDefaultSize() {
return defaultSize;
}
public int[] getSizes() {
return sizes;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public void doWrite(ByteBuffer out) {
super.doWrite(out);
out.putInt((int) defaultSize);
if (defaultSize == 0) {
out.putInt(count);
for (int i = 0; i < sizes.length; i++) {
long size = sizes[i];
out.putInt((int) size);
}
} else {
out.putInt((int)count);
}
}
public void setSizes(int[] sizes) {
this.sizes = sizes;
this.count = sizes.length;
}
}