blob: 24d5712ac81653cf9e4d247aa178a8f3c631fdd1 [file] [log] [blame]
package com.coremedia.iso.boxes.dece;
import com.coremedia.iso.IsoTypeReader;
import com.coremedia.iso.IsoTypeWriter;
import com.googlecode.mp4parser.AbstractFullBox;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
/**
* aligned(8) class TrickPlayBox
* extends FullBox(‘trik’, version=0, flags=0)
* {
* for (i=0; I < sample_count; i++) {
* unsigned int(2) pic_type;
* unsigned int(6) dependency_level;
* }
* }
*/
public class TrickPlayBox extends AbstractFullBox {
public static final String TYPE = "trik";
private List<Entry> entries = new ArrayList<Entry>();
public TrickPlayBox() {
super(TYPE);
}
public void setEntries(List<Entry> entries) {
this.entries = entries;
}
public List<Entry> getEntries() {
return entries;
}
public static class Entry {
public Entry() {
}
public Entry(int value) {
this.value = value;
}
private int value;
public int getPicType() {
return (value >> 6) & 0x03;
}
public void setPicType(int picType) {
value = value & (0xff >> 3);
value = (picType & 0x03) << 6 | value;
}
public int getDependencyLevel() {
return value & 0x3f;
}
public void setDependencyLevel(int dependencyLevel) {
value = (dependencyLevel & 0x3f) | value;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("Entry");
sb.append("{picType=").append(getPicType());
sb.append(",dependencyLevel=").append(getDependencyLevel());
sb.append('}');
return sb.toString();
}
}
@Override
protected long getContentSize() {
return 4 + entries.size();
}
@Override
public void _parseDetails(ByteBuffer content) {
parseVersionAndFlags(content);
while (content.remaining() > 0) {
entries.add(new Entry(IsoTypeReader.readUInt8(content)));
}
}
@Override
protected void getContent(ByteBuffer byteBuffer) {
writeVersionAndFlags(byteBuffer);
for (Entry entry : entries) {
IsoTypeWriter.writeUInt8(byteBuffer, entry.value);
}
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("TrickPlayBox");
sb.append("{entries=").append(entries);
sb.append('}');
return sb.toString();
}
}