/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.container.mp4.type; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import com.ttProject.container.mp4.Mp4Atom; import com.ttProject.container.mp4.Type; import com.ttProject.container.mp4.stsd.DescriptionRecord; import com.ttProject.container.mp4.stsd.StsdAtomReader; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.unit.extra.BitLoader; import com.ttProject.unit.extra.bit.Bit24; import com.ttProject.unit.extra.bit.Bit32; import com.ttProject.unit.extra.bit.Bit8; /** * stsdの定義 * @author taktod */ public class Stsd extends Mp4Atom { /** ロガー */ private Logger logger = Logger.getLogger(Stsd.class); private Bit8 version = new Bit8(); private Bit24 flags = new Bit24(); private Bit32 count = new Bit32(); private List<DescriptionRecord> descriptions = new ArrayList<DescriptionRecord>(); /** * コンストラクタ * @param size * @param name */ public Stsd(Bit32 size, Bit32 name) { super(size, name); } /** * コンストラクタ */ public Stsd() { super(new Bit32(), Type.getTypeBit(Type.Stsd)); } @Override public void minimumLoad(IReadChannel channel) throws Exception { super.minimumLoad(channel); // stsdについて読み込みをつづける。 // ここからstsdを読み込ませる必要がある。 StsdAtomReader stsdAtomReader = new StsdAtomReader(); BitLoader loader = new BitLoader(channel); loader.load(version, flags, count); for(int i = 0;i < count.get();i ++) { DescriptionRecord record = (DescriptionRecord)stsdAtomReader.read(channel); if(record == null) { logger.info("no record found."); } else { logger.info(record); descriptions.add(record); } } } /** * {@inheritDoc} */ @Override protected void requestUpdate() throws Exception { } }