资源简介
RTP打包与解析,荷载类型包括PS和H264
代码片段和文件信息
#include “PSAnalysis.h“
#include
PSBuild::PSBuild() : rtp_seq_(0)
{
}
PSBuild::~PSBuild()
{
}
/***
*@remark: ps头的封装里面的具体数据的填写已经占位,可以参考标准
*@param : pData [in] 填充ps头数据的地址
* s64Src [in] 时间戳
*@return: 0 success others failed
*/
int PSBuild::MakePsHeader(char *pData unsigned long long s64Scr)
{
unsigned long long lScrExt = (s64Scr) % 100;
s64Scr = s64Scr / 100;
// 这里除以100是由于sdp协议返回的video的频率是90000,帧率是25帧/s,所以每次递增的量是3600
// 所以实际你应该根据你自己编码里的时间戳来处理以保证时间戳的增量为3600即可,
//如果这里不对的话,就可能导致卡顿现象了
bits_buffer_s bitsBuffer;
bitsBuffer.i_size = PS_HDR_LEN;
bitsBuffer.i_data = 0;
bitsBuffer.i_mask = 0x80; // 二进制:10000000 这里是为了后面对一个字节的每一位进行操作,避免大小端夸字节字序错乱
bitsBuffer.p_data = (unsigned char *)(pData);
memset(bitsBuffer.p_data 0 PS_HDR_LEN);
bits_write(&bitsBuffer 32 0x000001BA); /*start codes*/
bits_write(&bitsBuffer 2 1); /*marker bits ‘01b‘*/
bits_write(&bitsBuffer 3 (s64Scr>>30)&0x07); /*System clock [32..30]*/
bits_write(&bitsBuffer 1 1); /*marker bit*/
bits_write(&bitsBuffer 15 (s64Scr>>15)&0x7FFF); /*System clock [29..15]*/
bits_write(&bitsBuffer 1 1); /*marker bit*/
bits_write(&bitsBuffer 15 s64Scr&0x7fff); /*System clock [29..15]*/
bits_write(&bitsBuffer 1 1); /*marker bit*/
bits_write(&bitsBuffer 9 lScrExt&0x01ff); /*System clock [14..0]*/
bits_write(&bitsBuffer 1 1); /*marker bit*/
bits_write(&bitsBuffer 22 (255)&0x3fffff); /*bit rate(n units of 50 bytes per second.)*/
bits_write(&bitsBuffer 2 3); /*marker bits ‘11‘*/
bits_write(&bitsBuffer 5 0x1f); /*reserved(reserved for future use)*/
bits_write(&bitsBuffer 3 0); /*stuffing length*/
return 0;
}
/***
*@remark: sys头的封装里面的具体数据的填写已经占位,可以参考标准
*@param : pData [in] 填充ps头数据的地址
*@return: 0 success others failed
*/
int PSBuild::MakeSysHeader(char *pData)
{
bits_buffer_s bitsBuffer;
bitsBuffer.i_size = SYS_HDR_LEN;
bitsBuffer.i_data = 0;
bitsBuffer.i_mask = 0x80;
bitsBuffer.p_data = (unsigned char *)(pData);
memset(bitsBuffer.p_data 0 SYS_HDR_LEN);
/*system header*/
bits_write( &bitsBuffer 32 0x000001BB); /*start code*/
bits_write( &bitsBuffer 16 SYS_HDR_LEN-6);/*header_length 表示次字节后面的长度,后面的相关头也是次意思*/
bits_write( &bitsBuffer 1 1); /*marker_bit*/
bits_write( &bitsBuffer 22 50000); /*rate_bound*/
bits_write( &bitsBuffer 1 1); /*marker_bit*/
bits_write( &bitsBuffer 6 1); /*audio_bound*/
bits_write( &bitsBuffer 1 0); /*fixed_flag */
bits_write( &bitsBuffer 1 1); /*CSPS_flag */
bits_write( &bitsBuffer 1 1); /*system_audio_lock_flag*/
bits_write( &bitsBuffer 1 1); /*system_video_lock_flag*/
bits_write( &bitsBuffer 1 1); /*marker_bit*/
bits_write( &bitsBuffer 5 1); /*video
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 6526 2015-10-29 10:07 include\PSAnalysis.h
I.A.... 232 2014-09-11 10:43 include\RTPAnalysisLibrary.h
I.A.... 8379 2015-11-03 15:11 include\RTPPacketAnalysis.h
I.A.... 22598 2015-10-29 14:42 src\PSAnalysis.cpp
I.A.... 22485 2015-11-03 15:11 src\RTPPacketAnalysis.cpp
目录 0 2015-11-03 15:13 include
目录 0 2015-11-03 15:13 src
----------- --------- ---------- ----- ----
60220 7
- 上一篇:DTN网络仿真工具ONE1.4.1
- 下一篇:VHDL控制进行SPI读写
相关资源
- KEPServerEX v6.4 无限时破解补丁
- org.eclipse.jface.text_3.10.0.v20150603-1752
- rtsp tcp获取h264裸码流
- 改进的VMPSO
- 解析GPS数据并用LCD1602显示
- GPS开发关于如何写GPS程序
- fps200指纹识别模块技术手册
- TPSN实现节点间时间同步
- ApplePS2SmartTouchPad.kext.zip
- 无线传感器网络经典的TPSN同步算法原
- 基于GPS的车辆跟踪系统的设计与实现
- RTP实时传输H.264
- AppScan 7.8破解补丁及方法
- gpsr在ns2中的具体应用
- wps2word_wps_转换_word
-
EllipseJig_ob
jectARX - 纳米压痕lammps
- zw_xinhuojianke-10555810-PSO工具箱.zip
- zw_lw5413-9700981-BPSO.zip
- zw_jksfkdjksdfjkjk-4705079-16PSK以及8PSK,Q
- Mips1.circ
- zw_INGPS.zip
- GPS导航系统仿真源代码+仿真文件+虚拟
- zw_TomGpsTest.zip
- DPS310气压高度计程序
- 基于PSCAD搭建的第一标准模型
- 基于PSO优化的otsu分割算法.zip
- 基于LABVIEW的DPSK
- spss使用教程
- RtspServerForHisiv500
评论
共有 条评论