/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.container.mp4.stsd; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.ttProject.container.IContainer; import com.ttProject.container.mp4.Mp4Atom; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.unit.extra.BitLoader; import com.ttProject.unit.extra.bit.Bit16; import com.ttProject.unit.extra.bit.Bit32; import com.ttProject.unit.extra.bit.Bit8; public abstract class AudioRecord extends DescriptionRecord { /** ロガー */ private Logger logger = Logger.getLogger(AudioRecord.class); private Bit8[] reserved1 = new Bit8[6]; private Bit16 dataReferenceIndex = new Bit16(); private Bit32[] reserved2 = new Bit32[2]; private Bit16 channelCount = new Bit16(); private Bit16 sampleSize = new Bit16(); private Bit16 predefined = new Bit16(); private Bit16 reserved3 = new Bit16(); private Bit32 sampleRate = new Bit32(); private List<Mp4Atom> boxes = new ArrayList<Mp4Atom>(); { for(int i = 0;i < 6;i ++) { reserved1[i] = new Bit8(); } for(int i = 0;i < 2;i ++) { reserved2[i] = new Bit32(); } } // boxes public AudioRecord(Bit32 size, Bit32 name) { super(size, name); } @Override public void minimumLoad(IReadChannel channel) throws Exception { super.minimumLoad(channel); BitLoader loader = new BitLoader(channel); loader.load(reserved1); loader.load(dataReferenceIndex); loader.load(reserved2); loader.load(channelCount, sampleSize,predefined, reserved3, sampleRate); int targetSize = getSize() - 0x24; IContainer container = null; StsdAtomReader reader = new StsdAtomReader(); while(targetSize > 0 && (container = reader.read(channel)) != null) { logger.info("found container:" + container); boxes.add((Mp4Atom)container); targetSize -= container.getSize(); } } @Override protected void requestUpdate() throws Exception { } }