关于封装海康PS流转H264需要注意的问题
本人PS流解析成H264的其余文章:
01PS流格式
02封装时遇到的重点问题
03海康PS转H264的编码思想(带图码流解释)
这里记录一下在实现转码PS成H264后封装成C++代码时遇到的一些坑。
1
我在封装的时候,将GetH264FromPs函数声明位static,导致传进来的this指针被销毁(静态没有this),造成我的对象数据全部变成负无穷的数字,无法使用,关键他还没有报错,只有打断点才查处理;
2
C++成员函数不能作为回调函数,因为其有this指针,参数是不一致的,可以使用boost库的funtional+bind去适配,但是对于循环调用C++的成员回调函数,是不行的,或者你认为它很容易出现毛病;一般的做法是回调函数不进行封装,直接作为全局函数进行回调即可。
3
最重要的一点,在获取H264时,最好先开辟一片内存传进去,用于保存h264数据,不要在调用期间new(Easy的代码就是这样做的。。。),否则就像我一样一大堆内存泄露问题,因为循环new是很容易出现问题的,最后还我是自己写一个解决了。大家可以使用工具或者直接粗暴的统计new与delete的内存大小是否对应。