T264中内存的使用

T264中内存的使用
[email protected]

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]
指向有效的参考帧(后向参考)。

各种帧指针的倒换过程:


 

发布了32 篇原创文章 · 获赞 8 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/lipku/article/details/444803
264