/* * 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 org.apache.log4j.Logger; import com.ttProject.container.mp4.Mp4Atom; import com.ttProject.container.mp4.Type; 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; import com.ttProject.util.BufferUtil; import com.ttProject.util.IntUtil; /** * hdlrの定義 * @author taktod * こっちはminimumの時点でvideoかどうかわかっておきたい * handlerType * vide VideoTrack * soun AudioTrack * data DataTrack * hint HintTrack * odsm ObjectDescriptorStream * crsm ClockReferenceStream * sdsm SceneDescriptionStream * ocsm ObjectContentInfoStream * ipsm IPMP Stream * mjsm MPEG-J Stream * mdir Apple Meta Data iTunes Reader * mp7b MPEG-7 binary XML * mp7t MPEG-7 XML * appl Apple specific * meta Timed Metadata track */ public class Hdlr extends Mp4Atom { /** ロガー */ private Logger logger = Logger.getLogger(Hdlr.class); private Bit8 version = new Bit8(); private Bit24 flags = new Bit24(); private Bit32 predefined = new Bit32(); private Bit32 handlerType = new Bit32(); private Bit32[] reserved = new Bit32[3]; { for(int i = 0;i < 3;i ++) { reserved[i] = new Bit32(); } } private String name; /** * コンストラクタ * @param size * @param name */ public Hdlr(Bit32 size, Bit32 name) { super(size, name); } /** * コンストラクタ */ public Hdlr() { super(new Bit32(), Type.getTypeBit(Type.Hdlr)); } /** * minimumLoadで読み込むようにしておく。 */ @Override public void minimumLoad(IReadChannel channel) throws Exception { super.minimumLoad(channel); BitLoader loader = new BitLoader(channel); loader.load(version, flags, predefined, handlerType); loader.load(reserved); logger.info(IntUtil.makeHexString(handlerType.get())); name = new String(BufferUtil.safeRead(channel, getSize() - 32).array()); logger.info(name); } /** * {@inheritDoc} */ @Override protected void requestUpdate() throws Exception { } }