import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.Arrays;
import jtssplitter.data.PATData;
import jtssplitter.data.PIDs;
import jtssplitter.data.PMTData;
PIDs pidss=getTablePID(origpath,p_table);
p_table=pidss.Program_Table;
pids=pidss.PIDs;
+ int pmt_pid=pidss.PMT_PID;
byte[] tb=new byte[188];
try {
FileInputStream in = new FileInputStream(origpath);
if ((ii==0)&&(readti>187)){
//Mpeg2TSPacket m2tp2=new Mpeg2TSPacket();
wbyte=m2tpp.splitPAT(tb,p_table);
+ }else if ((ii==pmt_pid)&&(readti>187)){
+ wbyte=tb;
+ ArrayList<PMTData> pmtss=m2tpp.readPMT(tb, pmt_pid);
+ int[] new_pids=new int[pmtss.size()+3];
+ new_pids[pmtss.size()]=0;
+ new_pids[pmtss.size()+1]=pmt_pid;
+ new_pids[pmtss.size()+2]=pmtss.get(0).PCR_PID;
+ for (int i=0;i<pmtss.size();i++){
+ new_pids[i]=pmtss.get(i).Elementary_PID;
+ }
+ if (!Arrays.equals(pids, new_pids)){
+ pids=new_pids;
+ }
+
}else if (readti>187){
wbyte=tb;
+
}else {
readend=true;
}
if (alreadyreaded==false){
bis.skip(188);
}
- int bbb=bis.available();
- //if (bis.available()<188){
- // readend=true;
- //}
if (wbyte!=null){
bos.write(wbyte);
}
}
ret.add(0);
ret.add(patd_det.PID);
+ ret.add(pmt.get(0).Elementary_PID);
for (int i=0;i<pmt.size();i++){
if (patd_det.Program_TABLE==pmt.get(i).Program_Table){
if (!(ret.contains(pmt.get(i).Elementary_PID))){
- ret.add(pmt.get(i).Elementary_PID);
+ if ((pmt.get(i).Stream_Type==0x02)||(pmt.get(i).Stream_Type==0x0f)){
+ ret.add(pmt.get(i).Elementary_PID);
+ }
}
}
}
+ pids.PMT_PID=patd_det.PID;
pids.Program_Table=patd_det.Program_TABLE;
pids.PIDs=new int[ret.size()];
for (int i=0;i<ret.size();i++){