xCompressCU()递归调用过程
来源:互联网 发布:换手率软件怎么用 编辑:程序博客网 时间:2024/05/17 05:13
在xCompressCU()这个函数里面,一直会见到两个缓存区:rpcBestCU和rpcTempCU。转到xCheckRDCostIntra()里面,实际做预测工作的是estIntraPredQT(),用的都是rpcTempCU。做完预测返回后在最后面有一个xCheckBestMode(),转到里面。
关键的语句就是if( rpcTempCU->getTotalCost() < rpcBestCU->getTotalCost() )。一旦这条语句成立,rpcTemp和rpcBestCU两个缓存区就会交换。
再回到xCompressCU()。体现四叉树子CU划分结构的是for ( UInt uiPartUnitIdx = 0; uiPartUnitIdx < 4; uiPartUnitIdx++ )这个循环区。在这个循环区里面的xCompressCU(),用的是pcSubBestPartCU和pcSubTempPartCU。每预测完一个子CU后,都要执行一次rpcTempCU->copyPartFrom(),即把子CU的最佳预测数据复制到当前CU的Temp里面。
在这个循环区完后,继续往下找,还会发现一个xCheckBestMode()。这个就是决定划分深度的关键。这个函数里面的rpcBestCU代表的就是当前深度的预测数据,rpcTempCU代表的就是4个子CU,也就是下一深度的总预测数据。通过这个函数,就能实现两层深度的预测数据比较,并确定采用哪层深度。
由此总结,每个深度的预测用的都是temp,预测完后跟best比较并交换。best保留作为当前深度的预测数据,而temp再次初始化。在下一深度的4个子CU预测中用的是subtemp,每预测完一个子CU,就跟subbest比较交换,再把subbest的数据复制到已经初始化的temp的相应位置。当temp获取完4个子CU的subbest的数据后,就代表了整个下一深度的数据,这时再与代表当前深度数据的best比较交换。
(转自他人,只为学习)
0 0
- xCompressCU()递归调用过程
- xcompressCU
- xcompressCU
- 数据结构中递归调用过程
- MySQL存储过程递归调用
- 递归调用详解,分析递归调用的详细过程
- 深入理解递归函数的调用过程
- 递归函数的调用过程和方法
- 深入理解递归函数的调用过程
- oracle存储过程的递归调用
- oracle存储过程的递归调用
- 深入理解递归函数的调用过程
- 深入理解递归函数的调用过程
- 深入理解递归函数的调用过程
- 深入理解递归函数的调用过程
- 深入理解递归函数的调用过程
- 深入理解递归函数的调用过程
- 图解递归调用过程(Python)
- 版本控制之道 — 使用Git 笔记
- redis基本使用规则!
- Irrlicht学习笔记(2)--quake3map
- 数据结构与算法(一)概念梳理篇
- 《全栈增长工程师指南》笔记2 效率、学习新技术
- xCompressCU()递归调用过程
- C语言单链表实现约瑟夫环
- 多用字面量语法,少用与之等价的方法
- HDU - 4521 小明系列问题――小明序列 (LIS&DP)好题
- 保存文件选择路径时,弹出对话框 的 原理
- 单元测试,Win7设置wifi热点
- Linux下拷贝整个目录下的所有文件解决方案
- 机器学习---过拟合和模型选择
- 源代码管理的基本操作