OSDN Git Service

fix to read correct Pointer_Field used in PAT.
[rec10/rec10-git.git] / jTsSplitter / trunk / src / jtssplitter / Tsfile.java
index 7bcc4cc..e70791c 100644 (file)
@@ -62,7 +62,32 @@ public class Tsfile {
                         alreadyreaded=true;
                         int readti=bis.read(tb);
                         if ((ii==0)&&(readti>187)){
-                            //Mpeg2TSPacket m2tp2=new Mpeg2TSPacket();
+                            Mpeg2TSPacket m2tp2=new Mpeg2TSPacket();
+                            m2tp2.readTS_byte(tb);
+                            ArrayList<PATData> pats=new ArrayList<PATData>();
+                            pats=m2tp2.getPAT();
+                            boolean containp_table=false;
+                            for (int iii=0;iii<pats.size();iii++){
+                                if (pats.get(iii).Program_TABLE==p_table){
+                                    containp_table=true;
+                                }
+                            }
+                            if (!containp_table){
+                                for (int iii=0;iii<pats.size();iii++){
+                                    if (pats.get(iii).Program_TABLE>0){
+                                        System.out.println("Program Tableの変更を検知"+Integer.toString(p_table)+" to "+Integer.toString(pats.get(iii).Program_TABLE));
+                                        p_table=pats.get(iii).Program_TABLE;
+                                        for (int it=0;it<pids.length;it++){
+                                            if (pids[it]==pmt_pid){
+                                                pmt_pid=pats.get(iii).PID;
+                                                pids[it]=pmt_pid;
+                                            }
+                                        }
+                                        iii=pats.size();
+                                    }
+                                }
+                            }
+
                             wbyte=m2tpp.splitPAT_byte(tb,p_table);
                             //wbyte=m2tpp.splitPAT(tb, p_table);
                             /*byte[] wbytet=m2tpp.splitPAT(tb, p_table);