From 86442d975a9610c7e115a7b2e1a0aa01283ce6a5 Mon Sep 17 00:00:00 2001 From: gn64_jp Date: Mon, 7 Dec 2009 07:55:17 +0000 Subject: [PATCH] fix to read correct Pointer_Field used in PAT. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@304 4e526526-5e11-4fc0-8910-f8fd03428081 --- .../trunk/src/jtssplitter/Mpeg2TSPacket.java | 10 ++++++-- jTsSplitter/trunk/src/jtssplitter/Tsfile.java | 27 +++++++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java b/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java index fabb24b..09ee221 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java +++ b/jTsSplitter/trunk/src/jtssplitter/Mpeg2TSPacket.java @@ -289,14 +289,20 @@ public class Mpeg2TSPacket { payload_byte = null; } if ((PID == 0) && (begin_payload_unit) && (payload_byte != null)) { - payload_byte = makePAT_byte(pointer_byte, payload_byte, p_table); + byte[] new_pointer=new byte[1]; + new_pointer[0]=0; + payload_byte = makePAT_byte(new_pointer, payload_byte, p_table); + //payload_byte = makePAT_byte(pointer_byte, payload_byte, p_table); bPAT_payload = payload_byte; } - if (payload_byte != null) { + if ((payload_byte != null)&& (begin_payload_unit)) { ByteArrayOutputStream baos = new ByteArrayOutputStream(ts.length); baos.write(header_byte, 0, header_byte.length); baos.write(pointer_byte, 0, pointer_byte.length); baos.write(payload_byte, 0, payload_byte.length); + for (int ir = 0; ir < 188-baos.size(); ir++) { + baos.write(0xFF); + } return baos.toByteArray(); } else { return null; diff --git a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java index 7bcc4cc..e70791c 100644 --- a/jTsSplitter/trunk/src/jtssplitter/Tsfile.java +++ b/jTsSplitter/trunk/src/jtssplitter/Tsfile.java @@ -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 pats=new ArrayList(); + pats=m2tp2.getPAT(); + boolean containp_table=false; + for (int iii=0;iii0){ + 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