/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.packet.mpegts.nw; import com.ttProject.media.mpegts.CodecType; import com.ttProject.media.mpegts.field.PmtElementaryField; import com.ttProject.media.mpegts.packet.Pes; import com.ttProject.media.mpegts.packet.Pmt; public abstract class MediaData { /** 動作pid保持 */ private short pid; /** コーデック情報保持 */ private CodecType type = null; /** pcrであるかどうかフラグ */ private boolean pcrFlg = false; /** * pmtから必要な情報を取り出しておく。 * @param pmt */ public void analyzePmt(Pmt pmt, PmtElementaryField field) throws Exception { pid = field.getPid(); type = field.getCodecType(); pcrFlg = (pid == pmt.getPcrPid()); } /** * pcrであるかの判定 * @return */ public boolean isPcr() { return pcrFlg; } /** * 対応pid参照 * @return */ public short getPid() { return pid; } /** * コーデック情報参照 * @return */ public CodecType getCodecType() { return type; } /** * pesデータを解析します。 * @param pes */ public abstract void analyzePes(Pes pes); /** * pesのデータを確認する * @param pes */ protected boolean checkPes(Pes pes) { if(pes.getPid() != pid) { return false; } if(type == null) { return false; } return true; } /** * 現在保持しているデータの終端pts値 * @return */ public abstract long getLastDataPts(); /** * 現在保持しているデータの先頭pts値 * @return */ public abstract long getFirstDataPts(); }