/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.packet.mpegts; import java.nio.ByteBuffer; /** * httpLiveStreamingで利用するヘッダ情報パケット * @author taktod */ public class MpegtsHeaderPacket extends MpegtsPacket { /** * コンストラクタ * @param manager */ public MpegtsHeaderPacket(MpegtsPacketManager manager) { super(manager); } /** * ヘッダーであるか応答する。 */ @Override public boolean isHeader() { return true; } @Override public boolean analize(ByteBuffer buffer) { // header処理 while(buffer.remaining() >= 188) { boolean isPmtChecked = false; int pid = getPid(buffer); // pmtがくるまで取得しなければいけない。 if(pid == MpegtsPacketManager.PATId) { analizePat(buffer); } else if(getManager().isPmtId(pid)) { analizePmt(buffer); isPmtChecked = true; } // 188バイトのデータを追記します。 byte[] data = new byte[188]; buffer.get(data); getBuffer(188).put(data); if(isPmtChecked) { // pmtの解析がおわっている場合は処理完了済み return true; } } // データが足りなくておわった。 return false; } }