package org.jcodec.codecs.mpeg4.es; import java.nio.ByteBuffer; import java.util.Collection; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public class DecoderConfig extends NodeDescriptor { private int objectType; private int bufSize; private int maxBitrate; private int avgBitrate; public DecoderConfig(int objectType, int bufSize, int maxBitrate, int avgBitrate, Collection<Descriptor> children) { super(tag(), children); this.objectType = objectType; this.bufSize = bufSize; this.maxBitrate = maxBitrate; this.avgBitrate = avgBitrate; } protected static DecoderConfig parse(ByteBuffer input, IDescriptorFactory factory) { int objectType = input.get() & 0xff; input.get(); int bufSize = ((input.get() & 0xff) << 16) | (input.getShort() & 0xffff); int maxBitrate = input.getInt(); int avgBitrate = input.getInt(); NodeDescriptor node = NodeDescriptor.parse(input, factory); return new DecoderConfig(objectType, bufSize, maxBitrate, avgBitrate, node.getChildren()); } protected void doWrite(ByteBuffer out) { out.put((byte) objectType); // flags (= Audiostream) out.put((byte) 0x15); out.put((byte) (bufSize >> 16)); out.putShort((short) bufSize); out.putInt(maxBitrate); out.putInt(avgBitrate); super.doWrite(out); } public static int tag() { return 0x4; } public int getObjectType() { return objectType; } public int getBufSize() { return bufSize; } public int getMaxBitrate() { return maxBitrate; } public int getAvgBitrate() { return avgBitrate; } }