h264流头类型分辨方法
来源:互联网 发布:淘宝官方改价软件 编辑:程序博客网 时间:2024/04/29 19:00
unsigned char * src = (unsigned char* )bufIn + RTP_HEADLEN;
unsigned char head1 = * src; // 获取第一个字节
unsigned char head2 = * (src + 1 ); // 获取第二个字节
unsigned char nal = head1 & 0x1f; // 获取FU indicator的类型域,
unsigned char flag = head2 & 0xe0 ; // 获取FU header的前三位,判断当前是分包的开始、中间或结束
unsigned char nal_fua = (head1 & 0xe0 ) | (head2 & 0x1f); // FU_A nal
bool bFinishFrame = false ;
if (nal == 0x1c ) // 判断NAL的类型为0x1c=28,说明是FU-A分片
{ // fu-a
if (flag== 0x80 ) // 开始
{
* pBufOut = src - 3 ;
* (( int * )( * pBufOut)) = 0x01000000 ; // zyf:大模式会有问题
* ((char * )( * pBufOut) + 4 ) = nal_fua;
* pOutLen = len - RTP_HEADLEN + 3 ;
}
else if (flag == 0x40 ) // 结束
{
* pBufOut = src + 2 ;
* pOutLen = len - RTP_HEADLEN - 2 ;
}
else // 中间
{
* pBufOut = src + 2 ;
* pOutLen = len - RTP_HEADLEN - 2 ;
}
}
else // 单包数据
{
* pBufOut = src - 4 ;
* (( int * )( * pBufOut)) = 0x01000000 ; // zyf:大模式会有问题
* pOutLen = len - RTP_HEADLEN + 4 ;
}
unsigned char * bufTmp = (unsigned char* )bufIn;
if (bufTmp[ 1 ] & 0x80 )
{
bFinishFrame = true ; // rtp mark
}
else
{
bFinishFrame = false ;
}
return bFinishFrame;
}
unsigned char head1 = * src; // 获取第一个字节
unsigned char head2 = * (src + 1 ); // 获取第二个字节
unsigned char nal = head1 & 0x1f; // 获取FU indicator的类型域,
unsigned char flag = head2 & 0xe0 ; // 获取FU header的前三位,判断当前是分包的开始、中间或结束
unsigned char nal_fua = (head1 & 0xe0 ) | (head2 & 0x1f); // FU_A nal
bool bFinishFrame = false ;
if (nal == 0x1c ) // 判断NAL的类型为0x1c=28,说明是FU-A分片
{ // fu-a
if (flag== 0x80 ) // 开始
{
* pBufOut = src - 3 ;
* (( int * )( * pBufOut)) = 0x01000000 ; // zyf:大模式会有问题
* ((char * )( * pBufOut) + 4 ) = nal_fua;
* pOutLen = len - RTP_HEADLEN + 3 ;
}
else if (flag == 0x40 ) // 结束
{
* pBufOut = src + 2 ;
* pOutLen = len - RTP_HEADLEN - 2 ;
}
else // 中间
{
* pBufOut = src + 2 ;
* pOutLen = len - RTP_HEADLEN - 2 ;
}
}
else // 单包数据
{
* pBufOut = src - 4 ;
* (( int * )( * pBufOut)) = 0x01000000 ; // zyf:大模式会有问题
* pOutLen = len - RTP_HEADLEN + 4 ;
}
unsigned char * bufTmp = (unsigned char* )bufIn;
if (bufTmp[ 1 ] & 0x80 )
{
bFinishFrame = true ; // rtp mark
}
else
{
bFinishFrame = false ;
}
return bFinishFrame;
}
0 0
- h264流头类型分辨方法
- h264码流类型
- JavaScript语言分辨浏览器方法
- H264 RTP头分析
- H264 RTP头分析
- H264 RTP头分析
- H264 RTP头分析
- H264标准头
- h264 NAL头解析
- h264 NAL头解析
- H264 NAL头解析
- H264 NAL头解析
- h264 NAL头解析
- h264 NAL头解析
- H264 NAL头解析
- h264 NAL头解析
- h264 NAL头解析
- h264 NAL头解析
- 五,redis数据类型-无序set
- ASP.NET C#如何获取当月或上个月的第一天和最后一天
- Java小程序之哈夫曼树与文件压缩和解压缩(一)哈夫曼树构造篇
- 从request获取各种路径总结
- 关于webview最详细讲解(包含 h5 和android 交互)
- h264流头类型分辨方法
- No virtual method newJsonReader
- Android ScrollView监听滑动到顶部和底部的两种方式
- maven pom文件详解
- 正则表达式
- 查询当前用户下的所有表信息
- 特殊MAC地址--官方保留
- 程序员的那些搞笑牛逼注释
- QT线程(一):线程类