解决 X264 内存泄漏问题

来源:互联网 发布:虚拟机windows xp 编辑:程序博客网 时间:2024/05/22 06:14
这个问题似乎存在很久了,不过一直没人改过来,我现在手里的代码是 2008-7-11的源码快照。 我在网上搜到过一篇文章说是在 x264_encoder_close : 中 最后的 for 循环需要释放  x264_frame_delete( h->thread[i]->fdec ); 这个确实有用,不过内存仍有大量的泄漏。 经过检查,另外两外代码是 analyse.c 文件中: 这个文件有一个全局的指针数组  uint16_t *x264_cost_mv_fpel[52][4];  申请了内存却没释放 另外在 x264_mb_analyse_load_costs 函数中同样有一个静态的 int16_t *p_cost_mv[52]; 这个东西没有办法释放。 知道了原因,解决起来就好办了,在函数内的静态变量改为全局的,然后在analyse.h 声明一下 extern uint16_t *x264_cost_mv_fpel[52][4]; extern int16_t *p_cost_mv[52]; 最后在 x264_encoder_close 中释放就可。要注意的是 p_cost_mv[52] 释放时要先减去 2*4*2048