/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under The MIT license.
*/
package com.ttProject.media.flv;
import com.ttProject.media.flv.tag.AudioTag;
import com.ttProject.media.flv.tag.VideoTag;
import com.ttProject.nio.channels.IReadChannel;
public class TagAnalyzer implements ITagAnalyzer {
private final FlvManager manager = new FlvManager();
@Override
public Tag analyze(IReadChannel ch) throws Exception {
Tag tag = null;
do {
if(tag != null) {
ch.position(tag.getPosition() + tag.getInitSize());
}
tag = manager.getUnit(ch);
if(tag == null) {
return null;
}
} while((tag instanceof VideoTag || tag instanceof AudioTag) && tag.getSize() <= 15); // メディアデータなのに、内容がない場合は合っても仕方ないので捨てます。
// tagデータの実データ部のみ、読み込みさせる。(Tag.getTagを実行すると、fileのpointerが先頭部分だけすすんでいるため。)
tag.analyze(ch, false);
ch.position(tag.getPosition() + tag.getInitSize());
return tag;
}
}