在数字电视行业几年中,积累的一些知识总想通过某种方式表达出来,就用软件吧。在eclipse下用java语言解析pat表。
首先:
建立一个pat表的类。
<pre name="code" class="java">/*
* PAT是Program Association Table的简称,即”节目关联表”.
* PAT定义了当前TS流中所有的节目,其PID恒为0x00,它是PSI信息的根节点,
* 要查找节目必须从PAT表开始.PAT表描述了当前TS流中包含什么样的PID,
* 主要包括当前流的NIT表格的PID,当前流中有多少个不同类型PMT表,每个PMT表对应的频道号等信息.
*
*
*/
package com.dvb.dvb;
import java.util.ArrayList;
import android.R.integer;
import android.util.Log;
public class Pat {
private int table_id; //: 8; //固定为0x00 ,标志是该表是PAT
private int section_syntax_indicator; // : 1; //段语法标志位,固定为1
private int zero; //: 1; //0
private int reserved_1; // : 2; // 保留位
private int section_length; // : 12; //表示这个字节后面有用的字节数,包括CRC32
private int transport_stream_id; //: 16; //该传输流的ID,区别于一个网络中其它多路复用的流
private int reserved_2; // : 2;// 保留位
private int version_number; // : 5; //范围0-31,表示PAT的版本号
private int current_next_indicator; // : 1; //发送的PAT是当前有效还是下一个PAT有效
private int section_number; // : 8; //分段的号码。PAT可能分为多段传输,第一段为00,以后每个分段加1,最多可能有256个分段
private int last_section_number; // : 8; //最后一个分段的号码
ArrayList<TS_PAT_Program> program;
private int reserved_3; //: 3; // 保留位
private int network_PID; // : 13; //网络信息表(NIT)的PID,节目号为0时对应的PID为network_PID
private int CRC_32; //: 32; //CRC32校验码
private static final String TAG = "PAT";
class TS_PA