版本: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. C#中foreach语句的迭代器实现机制

    C#中的foreach语句可用于循环遍历某个集合中的元素,而所有的只要支持了IEnumerable或IEnumerable<T>泛型接口的类型都是可以 用foreach遍历的.其具体的遍历 ...

  2. Android的回调模拟

    想要彻底理解安卓中用的回调,最好的办法是自己写一个类似的实现安卓中回调功能的实现方法. 我自己写了一个可以实现setOnClickListener回调的工程: 具体目录: 工程源码的具体地址:http ...

  3. 简单的webservice

    Hi,大家好! 今天主要和大家分享,如何搭建一个Web服务,做Android开发,不可避免会涉及到客户端开发,我们怎么样来实现一个服务端,怎么样来实现一个客户端,并相互传递数据.就算调用别人的服务时, ...

  4. Laravel 5.1 ACL权限控制 三 之权限准备及实现权限管理

    请自动参照到上上篇文章 1.创建控制器 php artisan make:model Permission php artisan make:model Role 2.创建表 php artisan ...

  5. 第四节 二维条码与磁卡、IC卡、光卡之比较

    二维条码同其他几种自动识别技术的比较可见下表: 比较点 二维条形码 磁卡 IC卡 光卡 抗磁力 强 弱 中等 强 抗静电 强 中等 中等 强 抗损性 强可折叠可局部穿孔可局部切割 弱不可折叠不可穿孔不 ...

  6. Ext JS学习第四天 我们所熟悉的javascript(三)

    此文用来记录学习笔记: •javascript之函数 •this关键字的使用 –this关键字总是指向调用者,谁调用函数,this就指向谁 •call.apply的使用 –call和apply主要应用 ...

  7. CodeForces 508C Anya and Ghosts 贪心

    做不出题目,只能怪自己不认真 题目: Click here 题意: 给你3个数m,t,r分别表示鬼的数量,每只蜡烛持续燃烧的时间,每个鬼来时要至少亮着的蜡烛数量,接下来m个数分别表示每个鬼来的时间点( ...

  8. [POJ 1521]--Entropy(哈夫曼树)

    题目链接:http://poj.org/problem?id=1521 Entropy Time Limit: 1000MS    Memory Limit: 10000K Description A ...

  9. C#实现时间戳转化

    /// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name=”timeStamp”></para ...

  10. hdu3483之二项式展开+矩阵快速幂

    A Very Simple Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...