转自:https://codesequoia.wordpress.com/2010/04/19/what-are-cbr-vbv-and-cpb/

It’s common mistake to to consider CBR (Constant Bit Rate) as “every frame is allocated the same number of bits”. If it were the case, then what would be the purpose of P or B frames? The whole purpose of P/B frame is to reduce the number of bits by referencing another frame. Of course, there are a lot of CBR streams with P or B frames. You can easily see every frame have very different number of bits even in a CBR stream.

So, what is CBR? In MPEG-2 and H.264, CBR means the number of bits fed to the decoder is constant over time. In other words, the data transfer rate to the decoder is constant. It’s nothing to do with the number of bits of individual frames.

Confused? How is it possible to allocate different number of bits to frames while keeping the incoming data rate constant?

Answer: you need a buffer. To understand the logic, consider a water outlet, a water tank, and a series of “picture decode guys” lined up in front of the tank.

The water (coded MPEG-2 or H.264 stream) is constantly flowing into the tank. The guys are lined up in front of the tank and remove the water for each frame to be decoded. The removal happens at the fixed time interval in most cases.

Even though Mr.I, P, and B are removing different amount of water (=each frame needs different number of bits), the water outlet speed is constant thanks to the tank (buffer).

In MPEG-2, the buffer is called VBV buffer (Video Buffer Verifier Buffer). In H.264, the buffer is called CPB (Coded Picture Buffer).

The water level of the tank at certain time instance is called buffer fullness and described in number of bits. The size of the tank is called VBV buffer size in MPEG-2 and CPB buffer size in H.264.

The coded stream must be constructed so that the tank (=buffer) never overflow or underflow. There are commercial/non-commercial software called “buffer verifier” to check the errors.

When the buffer size is set to large value (it’s an encoded stream parameter), the encoder can use large variance of bits for each frame which generally results in better video quality. However, the decoder needs to have the large buffer, which means more expensive hardware.

最新文章

  1. Jexus V5.8.2 正式发布,强劲的高性能 web 服务器
  2. TCP/IP 协议难点之一—— IP分片
  3. FAST特征点检测
  4. Hdu2544 最短路径 四种方法
  5. 性能监控工具javamelody与spring的集成
  6. 《SAS编程和数据挖掘商业案例》第14部分学习笔记
  7. srping标签和hibernate查询
  8. sort()没有返回值
  9. MySQL学习记录(不断更新)
  10. 关于jQuery中的trigger和triggerHandler方法的使用
  11. Andorid之页面布局优化
  12. [物理学与PDEs]第2章习题2 质量力有势时的能量方程
  13. artTemplate js模板引擎动态给html赋值
  14. MIT提出精细到头发丝的语义分割技术,打造效果惊艳的特效电影
  15. elipse安装php
  16. js数组知识点总结及经典笔试题
  17. 埃及分解:将2/n分解成为1/x+1/y的格式
  18. Matlab 使用的一些常用技巧
  19. 【洛谷P1100】高低位交换
  20. ssrf小记

热门文章

  1. C#上机实验(三)
  2. 练习使用Unicorn、Capstone
  3. linux程序开机自动启动
  4. BST(二叉搜索树)的基本操作
  5. [Fundamental of Power Electronics]-PART I-4.开关实现-4.2 功率半导体器件概述
  6. CSS3新增了哪些新特性
  7. python3使用myqr生成链接二维码
  8. CLUSTAL W论文解读
  9. php中的一些没有用过的,但是见到过的方法 函数
  10. C# Linq 延迟查询的执行