package org.jcodec.containers.mxf.model; import org.jcodec.common.io.NIOUtils; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.HashMap; import java.util.Map; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public abstract class MXFInterchangeObject extends MXFMetadata { private UL generationUID; private UL objectClass; public MXFInterchangeObject(UL ul) { super(ul); } public void readBuf(ByteBuffer bb) { bb.order(ByteOrder.BIG_ENDIAN); Map<Integer, ByteBuffer> tags = new HashMap<Integer, ByteBuffer>(); while (bb.hasRemaining()) { int tag = bb.getShort() & 0xffff; int size = bb.getShort() & 0xffff; ByteBuffer _bb = NIOUtils.read(bb, size); switch (tag) { case 0x3C0A: uid = UL.read(_bb); break; case 0x0102: generationUID = UL.read(_bb); break; case 0x0101: objectClass = UL.read(_bb); break; default: tags.put(tag, _bb); } } if (tags.size() > 0) read(tags); } protected abstract void read(Map<Integer, ByteBuffer> tags); public UL getGenerationUID() { return generationUID; } public UL getObjectClass() { return objectClass; } }