T264中内存的使用

T264中内存的使用
lipku@pku.org.cn

T264_open()中分配所有内存。这里着重解释一下参考帧序列的内存分配。其代码段如下:

  uint8_t* p = T264_malloc(t->edged_width * t->edged_height + (t->edged_width * t->edged_height >> 1), CACHE_SIZE);

t->refn[i].Y[0] = p + EDGED_HEIGHT * t->edged_width + EDGED_WIDTH;

t->refn[i].U = p + t->edged_width * t->edged_height + (t->edged_width * EDGED_HEIGHT >> 2) + (EDGED_WIDTH >> 1);

 t->refn[i].V = p + t->edged_width * t->edged_height + (t->edged_width * t->edged_height >> 2) + (t->edged_width * EDGED_HEIGHT >> 2) + (EDGED_WIDTH >> 1);

t->refn[i].mb = T264_malloc(t->mb_height * t->mb_width * sizeof(T264_mb_context_t), CACHE_SIZE);

 
其内存布局如图所示,在每一个参考帧的周围有一圈边界内存。UV跟在Y[0]后面,大小为Y[0]1/4
这里分配了para->ref_num + 1个参考帧内存,比ref_num多分配的一帧用来存储当前帧的重建帧数据。t->refn[1:ref_num - 1]是参考帧序列。t->refn[0]是重建帧。

数据结构:
t->cur
指向当前原始帧。
t->rec
指向当前重建帧。
t->refn[1:ref_num - 1]指向参考帧序列。
t->refn[0]跟t->rec一样指向当前重建帧。

其中refn[I].poc表示参考帧在图像序列中的位置(该参考帧由序列中哪个重建帧产生的)。当poc=-1时表示该块内存无效(不能用作参考帧)。
t->ref[0][0:n-1]
指向有效的参考帧(前向参考)。
t->ref[1][0:n-1]
指向有效的参考帧(后向参考)。

各种帧指针的倒换过程:


  uint8_t* p = T264_malloc(t->edged_width * t->edged_height + (t->edged_width * t->edged_height >> 1), CACHE_SIZE);

t->refn[i].Y[0] = p + EDGED_HEIGHT * t->edged_width + EDGED_WIDTH;

t->refn[i].U = p + t->edged_width * t->edged_height + (t->edged_width * EDGED_HEIGHT >> 2) + (EDGED_WIDTH >> 1);

 t->refn[i].V = p + t->edged_width * t->edged_height + (t->edged_width * t->edged_height >> 2) + (t->edged_width * EDGED_HEIGHT >> 2) + (EDGED_WIDTH >> 1);

t->refn[i].mb = T264_malloc(t->mb_height * t->mb_width * sizeof(T264_mb_context_t), CACHE_SIZE);

 
其内存布局如图所示,在每一个参考帧的周围有一圈边界内存。UV跟在Y[0]后面,大小为Y[0]1/4
这里分配了para->ref_num + 1个参考帧内存,比ref_num多分配的一帧用来存储当前帧的重建帧数据。t->refn[1:ref_num - 1]是参考帧序列。t->refn[0]是重建帧。

数据结构:
t->cur
指向当前原始帧。
t->rec
指向当前重建帧。
t->refn[1:ref_num - 1]指向参考帧序列。
t->refn[0]跟t->rec一样指向当前重建帧。

其中refn[I].poc表示参考帧在图像序列中的位置(该参考帧由序列中哪个重建帧产生的)。当poc=-1时表示该块内存无效(不能用作参考帧)。
t->ref[0][0:n-1]
指向有效的参考帧(前向参考)。
t->ref[1][0:n-1]
指向有效的参考帧(后向参考)。

各种帧指针的倒换过程:


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值