OSDN Git Service

te scan fix.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sun, 7 Nov 2010 14:24:37 +0000 (14:24 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sun, 7 Nov 2010 14:24:37 +0000 (14:24 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@751 4e526526-5e11-4fc0-8910-f8fd03428081

jTsSplitter/trunk/src/jtssplitter/Tsfile.java
jTsSplitter/trunk/src/jtssplitter/data/PATData.java

index 65c7802..4a19aac 100644 (file)
@@ -256,9 +256,11 @@ public class Tsfile {
             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) {
@@ -270,27 +272,39 @@ public class Tsfile {
                 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;
     }
index 903b9bb..3106096 100644 (file)
@@ -19,4 +19,5 @@ public class PATData {
      * プログラム番号に対応したPMTが含まれるPID
      */
     public int PID;
+    boolean containVideo=false;
 }