package org.jcodec.containers.mp4.boxes; import java.nio.ByteBuffer; import org.jcodec.common.NIOUtils; import org.jcodec.common.JCodecUtil; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * A handler description box * * @author Jay Codec * */ public class HandlerBox extends FullBox { 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 HandlerBox(String componentType, String componentSubType, String componentManufacturer, int componentFlags, int componentFlagsMask) { super(new Header("hdlr")); this.componentType = componentType; this.componentSubType = componentSubType; this.componentManufacturer = componentManufacturer; this.componentFlags = componentFlags; this.componentFlagsMask = componentFlagsMask; this.componentName = ""; } public HandlerBox() { super(new Header(fourcc())); } 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(JCodecUtil.asciiString(componentType)); out.put(JCodecUtil.asciiString(componentSubType)); out.put(JCodecUtil.asciiString(componentManufacturer)); out.putInt(componentFlags); out.putInt(componentFlagsMask); if (componentName != null) { out.put(JCodecUtil.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; } }