看了这篇文章:分析HM代码,首先必须把class TComDataCU完全搞明白!
原文地址:http://blog.csdn.net/feixiang_john/article/details/8237160
对乒乓buffer不是很清楚,所以查找资料学习下。
ping-pong buffer 也叫双缓存 double buffer, (必须是两个)就是一个缓存在写入的时候, 另一个缓存同时在处理的结构. 用来提高计算机运行速度, 在显示数据处理中常常用到。
你可以有各种读取方式, 但这里指的就是两个. 最常见的例子是显示缓存可以用 ping-pong buffer 结构, 用两个相同的帧存储器 frame buffers, 当一个在扫描输出的时候, 另一个在改写数据. 到下一个周期改写好数据的一帧作扫描输出, 而另一个帧缓存改写数据. 总之是一个在接收数据一个在处理,处理完后两个再交换。从最后的输出来看, 好象每一帧都刷新了数据, 但实际上是分两步作的. 这是用加倍的资源换取速度的方法.两个存储器之间是并行处理的,所以速度才会提升一倍。
图1给出了pingpang的基本原理框图,从图上可以看出使用pingpang的主要作用就是使用多个低速的数据预处理模块处理高速的输入数据流。这样做可以提高系统的数据吞吐量(如果不使用乒乓的话数据预处理模块会成为设计中限制系统数据吞吐量的瓶颈),同时增加了数据缓冲延迟。
自己体会:就是buffer1 和 buffer2要互换功能角色,所以叫乒乓buffer.
在T1时间点: buffer1是数据处理buffer; buffer2是显示输出buffer。
到T2时间点: buffer1中的数据在T0时间点已准备好,此时(T2时刻)buffer1更改成显示输出buffer; 而buffer2此时(T2时刻)更改成数据处理buffer,为下一次传输做准备。