package org.jcodec.containers.mp4.boxes;
import static org.jcodec.common.JCodecUtil2.asciiString;
import org.jcodec.common.io.NIOUtils;
import java.nio.ByteBuffer;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* A handler description box
*
* @author The JCodec project
*
*/
public class HandlerBox extends FullBox {
public HandlerBox(Header atom) {
super(atom);
}
private String componentType;
private String componentSubType;
private String componentManufacturer;
private int componentFlags;
private int componentFlagsMask;
private String componentName;
public static String fourcc() {
return "hdlr";
}
public static HandlerBox createHandlerBox(String componentType, String componentSubType,
String componentManufacturer, int componentFlags, int componentFlagsMask) {
HandlerBox hdlr = new HandlerBox(new Header(fourcc()));
hdlr.componentType = componentType;
hdlr.componentSubType = componentSubType;
hdlr.componentManufacturer = componentManufacturer;
hdlr.componentFlags = componentFlags;
hdlr.componentFlagsMask = componentFlagsMask;
hdlr.componentName = "";
return hdlr;
}
public void parse(ByteBuffer input) {
super.parse(input);
componentType = NIOUtils.readString(input, 4);
componentSubType = NIOUtils.readString(input, 4);
componentManufacturer = NIOUtils.readString(input, 4);
componentFlags = input.getInt();
componentFlagsMask = input.getInt();
componentName = NIOUtils.readString(input, input.remaining());
}
public void doWrite(ByteBuffer out) {
super.doWrite(out);
out.put(asciiString(componentType));
out.put(asciiString(componentSubType));
out.put(asciiString(componentManufacturer));
out.putInt(componentFlags);
out.putInt(componentFlagsMask);
if (componentName != null) {
out.put(asciiString(componentName));
}
}
public String getComponentType() {
return componentType;
}
public String getComponentSubType() {
return componentSubType;
}
public String getComponentManufacturer() {
return componentManufacturer;
}
public int getComponentFlags() {
return componentFlags;
}
public int getComponentFlagsMask() {
return componentFlagsMask;
}
}