版本:ffmpeg1.2

 
 
 
 
int   
ff_scale_image(
uint8_t *dst_data[4],
int dst_linesize[4],
                                        
int dst_w,
int dst_h,
enum
AVPixelFormat dst_pix_fmt,
                                         
uint8_t *
const src_data[4],
int src_linesize[4],

int src_w,
int src_h,
enum
AVPixelFormat src_pix_fmt,

                                        
void *log_ctx)
{

int ret;

SwsContext
*sws_ctx =
sws_getContext
(src_w, src_h, src_pix_fmt,

dst_w, dst_h, dst_pix_fmt,

if (!sws_ctx) {

av_log(log_ctx,
AV_LOG_ERROR,

 
                                                    
"Impossible to create scale context for the conversion "
 
                                                    
"fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",

av_get_pix_fmt_name(src_pix_fmt), src_w, src_h,

av_get_pix_fmt_name(dst_pix_fmt), dst_w, dst_h);

  
                                                    ret =
AVERROR(EINVAL);

goto
end;

}

if ((ret =
av_image_alloc(dst_data, dst_linesize, dst_w, dst_h, dst_pix_fmt, 16)) < 0)

 
                                
goto
end;

ret = 0;

sws_scale(sws_ctx, (
const
uint8_t *
const*)src_data, src_linesize, 0, src_h, dst_data, dst_linesize);


end:

 
                      
sws_freeContext(sws_ctx);

return ret;

}

 
 

我在使用这个函数进行像素转换的时候,如果反复进行调用就会出现内存泄露,不知道什么原因;

但是如果把这个函数分开使用,即

init()

{

、、、、、

struct
SwsContext *sws_ctx =
sws_getContext(src_w, src_h, src_pix_fmt,
                                                                             dst_w, dst_h, dst_pix_fmt,
                                                                             
SWS_BILINEAR,
NULL,
NULL,
NULL);

if ((ret =
av_image_alloc(dst_data, dst_linesize, dst_w, dst_h, dst_pix_fmt, 16)) < 0)

release();

}

process()

{

、、、、、、、、

sws_scale(sws_ctx, (constuint8_t * const*)src_data, src_linesize, 0, src_h, dst_data, dst_linesize);

}

release()

{

、、、、、、、

sws_freeContext(sws_ctx);

}

这样的话就是正确的,不会出现内存泄露。

ffmpeg中ff_scale_image()内存泄露的更多相关文章

  1. 查找并修复Android中的内存泄露—OutOfMemoryError

    [编者按]本文作者为来自南非约翰内斯堡的女程序员 Rebecca Franks,Rebecca 热衷于安卓开发,拥有4年安卓应用开发经验.有点完美主义者,喜爱美食. 本文系国内ITOM管理平台 One ...

  2. 利用Instrument Leak来发现App中的内存泄露

    XCode提供了一组用于检测内存,调试动画,布局等的工具.对于调试一些性能问题,内存问题非常方便.这里我们使用Leak来发现代码中的内存泄露. 在Leak中启动我们的应用开始监控: 注意,在监控的时候 ...

  3. Android内存优化8 内存检测工具2 LeakCanary——直白的展现Android中的内存泄露

    之前碰到的OOM问题,终于很直白的呈现在我的眼前:我尝试了MAT,但是发现不怎么会用.直到今天终于发现了这个新工具: 当我们的App中存在内存泄露时会在通知栏弹出通知: 当点击该通知时,会跳转到具体的 ...

  4. LeakCanary——直白的展现Android中的内存泄露

    之前碰到的OOM问题,终于很直白的呈现在我的眼前:我尝试了MAT,但是发现不怎么会用.直到今天终于发现了这个新工具: 当我们的App中存在内存泄露时会在通知栏弹出通知: 当点击该通知时,会跳转到具体的 ...

  5. Java中的内存泄露 和 JVM GC(垃圾回收机制)

    一.什么是Java中的内存泄露? 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点, 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连:其次,这些对象是无用的,即程序以 ...

  6. Qt应用中检测内存泄露——VLD

    本文简要描述一下在Qt应用中使用VLD来检测内存泄露.本次测试环境:QtCreator2.3 + Qt4.7.4-vs2008 + VS2008 Express. 1.下载并安装:VLD-2.2: h ...

  7. C++中避免内存泄露常见的解决方式

    常见内存泄露及解决方式-选自ood启发录 new/delete, array new/arrray delete匹配 case 1: 在类的构造函数与析构函数中没有匹配地调用 new/delete! ...

  8. [lua] mac上如何编译snapshot(检测Lua中的内存泄露)

    最近我们的unity手游频繁闪退,只要进入战斗场景,之后一段时间就会闪退,如果是在unity编辑器中则会报出not enough memory的错误!猜测应该是有内存泄漏: 由于我们使用了tolua, ...

  9. Java中的内存泄露的几种可能

    Java内存泄漏引起的原因: 内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏. 长生命周期的对象持有短生命周期对象的引用就很可能发 ...

随机推荐

  1. Oracle Split 函数

    为了让 PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行 ...

  2. python--help

    python help 学习python的过程中,难免遇到一些生疏的东西,为此需要参看相关的文档说明. Linux下众所周知有man可以查找系统的命令帮助页:对于python也提供了自己的帮助文档的2 ...

  3. 深入浅出—JAVA(3)

    3.认识变量 变量有两种:primitive主数据类型和引用. 变量有两种口味:清凉的primitive主数据类型与香辣的对象引用.primitive主数据类型用来保存基本类型的值,包括整数.布尔和浮 ...

  4. There is an error in invoking javac. A full JDK (not just JRE) is required

    最近调整了磁盘分区,硬盘里什么都没有了,可惜了我很多项目还有数据库资源然后把以前ssh项目重新导入进来的时候出现了一个错误org.apache.jasper.JasperException: PWC6 ...

  5. BZOJ 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机

    题目 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机 Time Limit: 5 Sec  Memory Limit: 64 MB Desc ...

  6. 【图文】雪佛兰Suburban 美国特工标准座驾_新闻中心_易车网

    [图文]雪佛兰Suburban 美国特工标准座驾_新闻中心_易车网 雪佛兰Suburban 美国特工标准座驾

  7. android 时间滚动控件 底部弹出

    下载地址:http://download.csdn.net/detail/ldd119/7440895 转载请说明出处 先上个效果图 watermark/2/text/aHR0cDovL2Jsb2cu ...

  8. javascript 生成页面轮播元素

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    ...

  9. ThinkPHP - 模板引擎

    1.导入css/js文件 - CSS文件 <!--<link rel="stylesheet" type="text/css" href=" ...

  10. BZOJ 3282: Tree( LCT )

    LCT.. -------------------------------------------------------------------------------- #include<c ...