opengl、ffmpeg内存泄露及混编问题(2017-4-20)

记录备忘(2017-4-20)

ffmpeg

a.
从摄像头获取到数据为yuv422格式,通过ffmpeg库函数或者yuyv转rgb的方式来处理数据,然后用opengl显示。直接用ffmpeg的库来转比较方便,各种格式都有,还有缩放等功能

不过,注意sws_getContext只能调用一次,在初始化时候调用即可,另外调用完后,在析构函数中使用sws_free_Context,将它的内存释放

否则会导致内存一直增长

b.
用sws_scale函数转换出来的图像是上下左右颠倒的,两种处理方法:1.改变传入buffer的数据结构,在转换之前就颠倒过来;2.在opengl渲染的时候改变texture的坐标,用1.0来减去texture的坐标就可以了

opengl

glGenTextures()函数,放到初始化里
这个函数每被调用一次,就给纹理重新分配新的ID,这样重复的次数越多,就占内存越多,最终导致内存泄露

ffmpeg库

a.

在mac app开发中,有个文件需要改为.mm混编

编译器的问题导致ffmpeg的函数成了undefined symbol,这是混编的锅,两种方法:1.不在混编的文件里面调用ffmpeg函数;2.extern “c”

b.

编译出Mac上可以用的ffmpeg库,我直接使用的是ijkplayer提供的源码,在iOS那个目录里面找到iOS的compile-ffmpeg.sh文件里面把编译的选项改为Mac平台支持的i386和x86_64再编译

Mac动态库链接问题

mac动态库要放到指定的位置usr/local/…具体看库的要求,并不是加了header search path和library search path就能解决的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值