测试通过,并进行了优化。思路:

  • 拷贝0001到数据区。
  • 得到size,复制size到缓冲区。
  • 循环直到结束。

  为了保证性能,由调用方传递一个临时缓冲区。

  具体代码如下,测试通过:


static int tdav_codec_h264_get_stapa_pay(const uint8_t* in_data, tsk_size_t in_size, const void** out_data, tsk_size_t *out_size, void** temp_buffer, tsk_size_t* temp_size)
{uint8_t*   buf = in_data;tsk_size_t len = in_size;int      dst_len = 0;uint8_t *dst     = NULL;if (in_size <= H264_FUA_HEADER_SIZE) {TSK_DEBUG_ERROR("Too short");return -1;}if (*temp_size < (in_size*2)){*temp_size   = in_size*2;*temp_buffer = tsk_realloc(*temp_buffer, *temp_size);}dst = *temp_buffer;buf ++;len --;const uint8_t *src = buf;int src_len        = len;while (src_len > 2) {uint16_t nal_size = (src[0] << 8 | src[1]);src     += 2;src_len -= 2;if (nal_size <= src_len){memcpy(dst, NAL_START_SEQUENCE, sizeof(NAL_START_SEQUENCE));dst     += sizeof(NAL_START_SEQUENCE);dst_len += sizeof(NAL_START_SEQUENCE);memcpy(dst, src, nal_size);dst     += nal_size;dst_len += nal_size;}else{TSK_DEBUG_ERROR("nal size exceeds length: %d %d\n", nal_size, src_len);return -1;}src     += nal_size;src_len -= nal_size;}*out_data = *temp_buffer;*out_size = dst_len;return 0;
}

H264 STAP-A解包代码(测试通过)相关推荐

  1. 字符串拼接的四种方式详解,代码测试

    字符串拼接的四种方式 1. 使用+ 号进行字符串拼接 2. concat() 方法 3 .StringBuffer(线程安全,效率没有 StringBuilder 高) 4. StringBuilde ...

  2. 文本搜索引擎Lucene之filed详解和代码测试

    1.索引创建和查询过程 文档数据采集,一般是数据库的数据和爬虫获取的数据.而Lucene不提供信息采集的类库,需要自己编写一个爬虫程序实现信息采集,也可以通过一些开源软件实现信息采集,如下: Solr ...

  3. Protobuf解包组包

    解包代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  4. 头脑王者对战游戏html5源码,头脑王者分析笔记及微信小程序解包源码

    最近感觉微信小程序比较火,周围很多人在玩"跳一跳"和"头脑王者"之类的小游戏. 对于小程序我也产生了浓厚的兴趣. 一开始看到官方的小程序的介绍,也看了小程序的部 ...

  5. 文件加密打包和解密解包

    文件打包加密和解包解密 提示:这里记录上一章提到的加密解密进行一个进阶的 打包+加密 -- + --解包+解密 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 加密解密+打包解包 文 ...

  6. 【FFMPEG】基于RTP的H264视频数据打包解包类

    最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...

  7. 国标PS流解包(解封装)代码

    该代码最初的版本来自于互联网,首先感谢前辈无私分享的精神,这个PS流解析代码小巧和可读性好,是学习PS格式的一个很好的参考例子.但原来的代码有不少Bug,QuickGBLink在原先代码基础上做了很多 ...

  8. java rtp 分片_RTP 协议解包为 H264 裸流

    RTP 协议解包为 H264裸流 一. 为什么使用 RTP 协议? TCP 传输流媒体数据由于其可靠性,会造成很大的网络延时和卡顿. UDP 传输由于其不可靠性,会导致丢帧,如果是关键帧,则会花屏一个 ...

  9. CAN报文的打包与解包及代码自动生成

    本文目录 1.背景 2.所需要的软件与硬件 3.Motorola编码和Intel编码 1.自动打包和解包 2.手动解包 4.实例 1.打包模型建立 2.数据对象管理 3.对比测试 4.等效性测试 5. ...

  10. H264视频传输、编解码----RTP协议对H264数据帧拆包、打包、解包过程

    H264帧需要通过RTP协议进行传输,这其中就涉及到H264数据帧的封包.拆包和解包等过程. RTP协议格式 下面是 RFC 3550 中规定的 RTP 头的结构: 0 1 2 3 40 1 2 3 ...

最新文章

  1. cmake 常用变量和常用环境变量查表手册
  2. 日常生活小技巧 -- “Error: Encountered an improper argument”的解决方法
  3. ThreadLocal在Spring中的应用
  4. OS- -计算机硬件简介
  5. 计算机操作员理论知识试题,计算机操作员理论考试试题.doc
  6. 深度优先搜索——First Step(洛谷 P3654)
  7. stm32经典笔试题_嵌入式面试经典30问
  8. springboot+junit测试
  9. 手把手教你用jmeter做压力测试(详图)
  10. JAVA基础编程——数据库编程
  11. 遗传算法(Genetic Algorithm, GA)及MATLAB实现
  12. 各位大佬,Spark的重点难点系列暂时更新完毕
  13. JAVA 异或校验byte数组
  14. linux系统修改etc,Linux系统中修改/etc/profile文件的方法
  15. Mac显示隐藏文件命令
  16. 解决 have unmet dependencies: youdao-dict :
  17. 2004-2019年分省农产品进出口额
  18. 相亲app开发,解决内存循环引用的问题
  19. js高级面试题总结(es6)
  20. 在数据集Euroc v dataset下跑双目ORB-SLAM2

热门文章

  1. python语言的两种注释方法_python中编写注释的方法
  2. 在mysql中productname_ASP如何读出数据库里的英文符号.....%rs(ProductName)% 其是ProductName=10×26wood...
  3. 模板引擎工作原理_zuma致:新手SEO须知搜索引擎工作原理
  4. html如何加入浮动客服,css如何实现客服悬浮效果
  5. ip变更会影响账号登陆吗_代理IP的匿名度级别会影响自身稳定性吗
  6. 内是不是半包围结构_什么是结构化面试、无领导小组讨论、结构化小组面试?教你快速搞懂国考面试三大形式。...
  7. python中sort与sorted的区别_python排序函数sort()与sorted()的区别
  8. python中有readall吗_在python中使用tn.read_all()读取数据
  9. php无限极 left right,PHP超牛逼无限极分类生成树方法
  10. js highcharts拆线图