/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.media.h264; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.util.BufferUtil; /** * flvやmp4にはいっているnalの中身と同じデータは00 00 01に続くデータではなく、サイズ(4バイト)に続く形ではいっている模様です。 * @author taktod * */ public class DataNalAnalyzer extends FrameAnalyzer { @Override public Frame analyze(IReadChannel ch) throws Exception { if(ch.size() < 4) { throw new Exception("読み込みバッファ量がおかしいです。"); } int size = BufferUtil.safeRead(ch, 4).getInt(); // 以降、このサイズがデータ // 始めの1バイトを読み込んでどういうデータか確認する。 if(size <= 0) { throw new Exception("データ指定がおかしいです。"); } if(ch.size() - ch.position() < size) { throw new Exception("データが足りません。"); } // byteをみてデータがなにであるか確認する必要がありそう。 Frame frame = super.analyze(ch); frame.setSize(size); frame.analyze(ch); return frame; } }