ffmpeg中264部分的内存管理机制
来源:互联网 发布:为知笔记安卓导出 编辑:程序博客网 时间:2024/06/05 09:16
ffmpeg中264部分的avcodec_default_get_buffer和avcodec_default_release_buffer得内存管理机制,大概看了下,是可以复用的,但是细节还不是很了解。
如:
MPV_frame_start中的
for(i=0; i<MAX_PICTURE_COUNT; i++)
{
if( s->picture.data[0] && !s->picture.reference )//
{
s->avctx->release_buffer(s->avctx, (AVFrame*)&s->picture);
}
}
.....
以及下面if( alloc_picture(s, (Picture*)pic, 0) < 0 )中的avcodec_default_get_buffer来申请内存
里面有个INTERNAL_BUFFER_SIZE大小的队列,然后内存根据以下变量倒来倒去,有点迷糊。
然后我测试的几个264源有get_buffer失败的情况,所以问题肯定在这里,有谁能出来解释一下这里的内存管理流程,简要的说说即可!
avcodec_default_get_bufferz中
pic->age = *picture_number - buf->last_pic_num;//pic->age 是啥意思,一但pic->age==0,就失败了s->picture.reference 跟dropable有关,而dropable又个语法元素nal_ref_idc有关,这个逻辑就有点复杂了,然后internal_buffer_count会动态的++或者- -,最后就会导致get_buffer失败。
我分析的愿意感觉还和stream order和display order有关,跨度太大也会有问题。。。
- ffmpeg中264部分的内存管理机制
- 第二部分 自动内存管理机制
- java中内存管理机制
- OC中内存管理机制
- swoole_server中内存管理机制
- Qt的内存管理机制
- s3c2440的内存管理机制
- addsubview 的内存管理机制
- Java的内存管理机制
- s3c2440的内存管理机制
- cocos2dx的内存管理机制
- Android的内存管理机制
- linux的内存管理机制
- linux的内存管理机制
- linux的内存管理机制
- cocos2dx的内存管理机制
- Ruby的内存管理机制。
- python的内存管理机制
- POJ 3449 Geometric Shapes (线段相交)
- OpenCV学习笔记(24)CLR模式下System::Drawing::Bitmap与cv::Mat图像格式的转换
- android 读取电话号码和联系人
- js模版深度解析
- eclipse中中文乱码
- ffmpeg中264部分的内存管理机制
- Java Pojo转flex vo 工具类
- 雨中飘荡的回忆
- win7系统如何恢复或重装IE8浏览器呢?
- 【C++ Primer 学习笔记】chapter 11 泛型算法
- AC自动机 trie
- Windows 2008 R2 域服务器web方式修改域用户密码
- 数据结构-线性表-顺序表
- 浅谈最近的自身程序员的想法(2012.09.13)