package org.jcodec.containers.mxf.model; import java.util.Iterator; import org.jcodec.common.logging.Logger; import org.jcodec.common.model.Rational; import java.nio.ByteBuffer; import java.util.Map; import java.util.Map.Entry; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public class GenericSoundEssenceDescriptor extends FileDescriptor { private Rational audioSamplingRate; private byte locked; private byte audioRefLevel; private byte electroSpatialFormulation; private int channelCount; private int quantizationBits; private byte dialNorm; private UL soundEssenceCompression; public GenericSoundEssenceDescriptor(UL ul) { super(ul); } protected void read(Map<Integer, ByteBuffer> tags) { super.read(tags); for (Iterator<Entry<Integer, ByteBuffer>> it = tags.entrySet().iterator(); it.hasNext();) { Entry<Integer, ByteBuffer> entry = it.next(); ByteBuffer _bb = entry.getValue(); switch (entry.getKey()) { case 0x3d03: audioSamplingRate = new Rational(_bb.getInt(), _bb.getInt()); break; case 0x3d02: locked = _bb.get(); break; case 0x3d04: audioRefLevel = _bb.get(); break; case 0x3d05: electroSpatialFormulation = _bb.get(); break; case 0x3d07: channelCount = _bb.getInt(); break; case 0x3d01: quantizationBits = _bb.getInt(); break; case 0x3d0c: dialNorm = _bb.get(); break; case 0x3d06: soundEssenceCompression = UL.read(_bb); break; default: Logger.warn(String.format("Unknown tag [ " + ul + "]: %04x", entry.getKey())); continue; } it.remove(); } } public Rational getAudioSamplingRate() { return audioSamplingRate; } public byte getLocked() { return locked; } public byte getAudioRefLevel() { return audioRefLevel; } public byte getElectroSpatialFormulation() { return electroSpatialFormulation; } public int getChannelCount() { return channelCount; } public int getQuantizationBits() { return quantizationBits; } public byte getDialNorm() { return dialNorm; } public UL getSoundEssenceCompression() { return soundEssenceCompression; } }