ArrayList<Integer> retti = new ArrayList<Integer>();
byte[] tb = new byte[188];
ArrayList<PATData> pat = new ArrayList<PATData>();
+ ArrayList<PATData> pat_ok = new ArrayList<PATData>();
+ ArrayList<PMTData> pmt = new ArrayList<PMTData>();
try {
in = new FileInputStream(fpath);
- int imax = 1000;
+ int imax = 7000;
int mmax = 20000;
for (int i = 0; i < imax; i++) {
if (in.read(tb) == -1) {
Mpeg2TSPacket m2tp;
m2tp = new Mpeg2TSPacket();
m2tp.setPAT(pat);
+ m2tp.setPMT(pmt);
m2tp.readTS_byte(tb);
pat = m2tp.getPAT();
- for (int i2 = 0; i2 < pat.size(); i2++) {
- PATData patdd = pat.get(i2);
- if ((patdd.Program_TABLE != 0) &&(!(retti.contains(patdd.Program_TABLE)))){
- retti.add(patdd.Program_TABLE);
+ pmt = m2tp.getPMT();
+ ArrayList<PMTData> pmtt=m2tp.getPMT();
+ for (int i2=0;i2<pmtt.size();i2++){
+ if (!(pmt.contains(pmtt.get(i2)))){
+ pmt.add(pmtt.get(i2));
}
}
- if (i>imax-10 && pat.size()==0 && i<mmax){
+
+ if (i>imax-10 && pat_ok.size()==0 && i<mmax){
imax=imax+100;
}
+ for (int i3=0;i3<pmt.size();i3++){
+ if (pmt.get(i3).Stream_Type==0x02 || pmt.get(i3).Stream_Type==0x0f){
+ for (int i4=0;i4<pat.size();i4++){
+ if (pmt.get(i3).Program_Table==pat.get(i4).Program_TABLE && !(pat_ok.contains(pat.get(i4)))){
+ pat_ok.add(pat.get(i4));
+ }
+ }
+ }
+ }
+ }
+ for (int i5 = 0; i5 < pat_ok.size(); i5++) {
+ PATData patdd = pat_ok.get(i5);
+ if ((patdd.Program_TABLE != 0) &&(!(retti.contains(patdd.Program_TABLE)))){
+ retti.add(patdd.Program_TABLE);
+ }
}
} catch (IOException ex) {
Logger.getLogger(Tsfile.class.getName()).log(Level.SEVERE, null, ex);
}
- int bst=0;
- for (int i=0;i<retti.size();i++){
- if (retti.get(i)>100 && retti.get(i)<211){
- bst++;
- }
- }
Integer[] rt=retti.toArray(new Integer[retti.size()]);
return rt;
}