blob: ba4262963030ffe4a6f5857e824b368d45b85603 [file] [log] [blame]
package com.coremedia.iso.boxes.apple;
import com.googlecode.mp4parser.AbstractFullBox;
import java.nio.ByteBuffer;
/**
* Most stupid box of the world. Encapsulates actual data within
*/
public final class AppleDataBox extends AbstractFullBox {
public static final String TYPE = "data";
private byte[] fourBytes = new byte[4];
private byte[] data;
private static AppleDataBox getEmpty() {
AppleDataBox appleDataBox = new AppleDataBox();
appleDataBox.setVersion(0);
appleDataBox.setFourBytes(new byte[4]);
return appleDataBox;
}
public static AppleDataBox getStringAppleDataBox() {
AppleDataBox appleDataBox = getEmpty();
appleDataBox.setFlags(1);
appleDataBox.setData(new byte[]{0});
return appleDataBox;
}
public static AppleDataBox getUint8AppleDataBox() {
AppleDataBox appleDataBox = new AppleDataBox();
appleDataBox.setFlags(21);
appleDataBox.setData(new byte[]{0});
return appleDataBox;
}
public static AppleDataBox getUint16AppleDataBox() {
AppleDataBox appleDataBox = new AppleDataBox();
appleDataBox.setFlags(21);
appleDataBox.setData(new byte[]{0, 0});
return appleDataBox;
}
public static AppleDataBox getUint32AppleDataBox() {
AppleDataBox appleDataBox = new AppleDataBox();
appleDataBox.setFlags(21);
appleDataBox.setData(new byte[]{0, 0, 0, 0});
return appleDataBox;
}
public AppleDataBox() {
super(TYPE);
}
protected long getContentSize() {
return data.length + 8;
}
public void setData(byte[] data) {
this.data = new byte[data.length];
System.arraycopy(data, 0, this.data, 0, data.length);
}
public void setFourBytes(byte[] fourBytes) {
System.arraycopy(fourBytes, 0, this.fourBytes, 0, 4);
}
@Override
public void _parseDetails(ByteBuffer content) {
parseVersionAndFlags(content);
fourBytes = new byte[4];
content.get(fourBytes);
data = new byte[content.remaining()];
content.get(data);
}
@Override
protected void getContent(ByteBuffer byteBuffer) {
writeVersionAndFlags(byteBuffer);
byteBuffer.put(fourBytes, 0, 4);
byteBuffer.put(data);
}
public byte[] getFourBytes() {
return fourBytes;
}
public byte[] getData() {
return data;
}
}