欢迎来到天天文库
浏览记录
ID:37904428
大小:32.00 KB
页数:4页
时间:2019-06-02
《TS流解析之PAT表格解析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、TS流解析之PAT表格解析2009-03-1816:54:59
2、分类:视频编解码阅读2112评论1字号:大中小订阅PAT表格定义如下:typedefstructTS_PAT_Program{unsignedprogram_number:16;//节目号unsignedprogram_map_PID:13;//节目映射表的PID,节目号大于0时对应的PID,每个节目对应一个}TS_PAT_Program;//PAT表结构体typedefstructTS_PAT{unsignedtable_id:8;//固定为0x00,标志是该表是PATunsignedsection_syntax_in
3、dicator:1;//段语法标志位,固定为1unsignedzero:1;//0unsignedreserved_1:2;//保留位unsignedsection_length:12;//表示这个字节后面有用的字节数,包括CRC32unsignedtransport_stream_id:16;//该传输流的ID,区别于一个网络中其它多路复用的流unsignedreserved_2:2;//保留位unsignedversion_number:5;//范围0-31,表示PAT的版本号unsignedcurrent_next_indicator:1;//发送的PAT是当前有效还是下一个P
4、AT有效unsignedsection_number:8;//分段的号码。PAT可能分为多段传输,第一段为00,以后每个分段加1,最多可能有256个分段unsignedlast_section_number:8;//最后一个分段的号码std::vectorprogram;unsignedreserved_3:3;//保留位unsignednetwork_PID:13;//网络信息表(NIT)的PID,节目号为0时对应的PID为network_PIDunsignedCRC_32:32;//CRC32校验码}TS_PAT;解析代码如下:HRESULTCTS
5、_Stream_Parse::adjust_PAT_table(TS_PAT*packet,unsignedchar*buffer){packet->table_id=buffer[0];packet->section_syntax_indicator=buffer[1]>>7;packet->zero=buffer[1]>>6&0x1;packet->reserved_1=buffer[1]>>4&0x3;packet->section_length=(buffer[1]&0x0F)<<8
6、buffer[2];packet->transport_stream_id=buffer[3
7、]<<8
8、buffer[4];packet->reserved_2=buffer[5]>>6;packet->version_number=buffer[5]>>1&0x1F;packet->current_next_indicator=(buffer[5]<<7)>>7;packet->section_number=buffer[6];packet->last_section_number=buffer[7];intlen=0;len=3+packet->section_length;packet->CRC_32=(buffer[len-4]&0x000000FF)<<24
9、(bu
10、ffer[len-3]&0x000000FF)<<16
11、(buffer[len-2]&0x000000FF)<<8
12、(buffer[len-1]&0x000000FF);intn=0;for(n=0;nsection_length-12;n+=4){unsignedprogram_num=buffer[8+n]<<8
13、buffer[9+n];packet->reserved_3=buffer[10+n]>>5;packet->network_PID=0x00;if(program_num==0x00){packet->network_PID=(buffer[10+n
14、]&0x1F)<<8
15、buffer[11+n];TS_network_Pid=packet->network_PID;//记录该TS流的网络PIDTRACE("packet->network_PID%0x",packet->network_PID);}else{TS_PAT_ProgramPAT_program;PAT_program.program_map_PID=(buffer[10+n]&0x1F)<<8
16、buffer[11+n];PAT_p
此文档下载收益归作者所有