/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under GNU GENERAL PUBLIC LICENSE Version 3. */ package com.ttProject.transcode.xuggle.packet; import java.util.ArrayList; import java.util.List; import com.ttProject.media.Unit; import com.ttProject.media.aac.Frame; import com.ttProject.media.aac.FrameAnalyzer; import com.ttProject.media.aac.frame.Aac; import com.ttProject.nio.channels.ByteReadChannel; import com.ttProject.nio.channels.IReadChannel; import com.xuggle.xuggler.IPacket; import com.xuggle.xuggler.IStreamCoder; /** * packetからadtsのaacを取り出す * @author taktod */ public class AacDepacketizer implements IDepacketizer { /** * AacのFrameに変換します。 */ @Override public List<Unit> getUnits(IStreamCoder encoder, IPacket packet) throws Exception { if(!packet.isComplete()) { return null; } List<Unit> frameList = new ArrayList<Unit>(); // packetデータからAacをつくる。 FrameAnalyzer analyzer = new FrameAnalyzer(); IReadChannel packetChannel = new ByteReadChannel(packet.getData().getByteArray(0, packet.getSize())); Frame aacFrame = null; while((aacFrame = analyzer.analyze(packetChannel)) != null) { if(aacFrame instanceof Aac) { frameList.add(aacFrame); } } return frameList; } @Override public void close() { } }