package org.jcodec.containers.mxf.model; import java.util.Iterator; import java.lang.System; 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 WaveAudioDescriptor extends GenericSoundEssenceDescriptor { private short blockAlign; private byte sequenceOffset; private int avgBps; private UL channelAssignment; private int peakEnvelopeVersion; private int peakEnvelopeFormat; private int pointsPerPeakValue; private int peakEnvelopeBlockSize; private int peakChannels; private int peakFrames; private ByteBuffer peakOfPeaksPosition; private ByteBuffer peakEnvelopeTimestamp; private ByteBuffer peakEnvelopeData; public WaveAudioDescriptor(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 0x3d0a: blockAlign = _bb.getShort(); break; case 0x3d0b: sequenceOffset = _bb.get(); break; case 0x3d09: avgBps = _bb.getInt(); break; case 0x3d32: channelAssignment = UL.read(_bb); break; case 0x3d29: peakEnvelopeVersion = _bb.getInt(); break; case 0x3d2a: peakEnvelopeFormat = _bb.getInt(); break; case 0x3d2b: pointsPerPeakValue = _bb.getInt(); break; case 0x3d2c: peakEnvelopeBlockSize = _bb.getInt(); break; case 0x3d2d: peakChannels = _bb.getInt(); break; case 0x3d2e: peakFrames = _bb.getInt(); break; case 0x3d2f: peakOfPeaksPosition = _bb; break; case 0x3d30: peakEnvelopeTimestamp = _bb; break; case 0x3d31: peakEnvelopeData = _bb; break; default: System.out.println(String.format("Unknown tag [ " + ul + "]: %04x", entry.getKey())); continue; } it.remove(); } } public short getBlockAlign() { return blockAlign; } public byte getSequenceOffset() { return sequenceOffset; } public int getAvgBps() { return avgBps; } public UL getChannelAssignment() { return channelAssignment; } public int getPeakEnvelopeVersion() { return peakEnvelopeVersion; } public int getPeakEnvelopeFormat() { return peakEnvelopeFormat; } public int getPointsPerPeakValue() { return pointsPerPeakValue; } public int getPeakEnvelopeBlockSize() { return peakEnvelopeBlockSize; } public int getPeakChannels() { return peakChannels; } public int getPeakFrames() { return peakFrames; } public ByteBuffer getPeakOfPeaksPosition() { return peakOfPeaksPosition; } public ByteBuffer getPeakEnvelopeTimestamp() { return peakEnvelopeTimestamp; } public ByteBuffer getPeakEnvelopeData() { return peakEnvelopeData; } }