1)sws_scale
该函数不知道咋地,单独运行也会泄漏,无奈只能立即释放
//创建
sws_getContext
//转换
sws_scale
//释放
sws_freeContext
2)av_read_frame( ic, pkt)
该句有缓慢内存泄漏,需要及时释放pkt
//av_free_packet(pkt); 该方法在4.1中已过时
av_packet_unref(pkt);
-
avcodec_send_frame
while ret>0
avcodec_receive_packet
同上,需要减少引用
av_packet_unref(pkt) -
发现许多内存释放不干净,是由于版本升级导致的,旧的接口尽量不要用。
比如AVFrameContext的释放,4.0以上版本如果使用 avformat_free_context将造成内存泄漏。
对于input来说,应该使用
AVFormatContext *ifmt_ctx;
avformat_close_input(&ifmt_ctx);
5) ffmpeg基于vaapi做硬解码的时候,出现过莫名其妙的泄露,用的也不是硬解码,最后发现是vaapi驱动的问题。基于i965最后使用了iHD的驱动,程序可以正常运行,但是做不了硬解码,cpu占用高,而且内存泄漏