What are CBR, VBV and CPB?
来源:互联网 发布:淘宝的无印良品都是假 编辑:程序博客网 时间:2024/05/16 10:49
转自: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.
- What are CBR, VBV and CPB?
- What are FeliCa and PaSoRi?
- What are KVO and KVC?
- What are DASD volumes and labels?
- What are the __init* and __exit* macros ?
- What and where are the stack and heap?
- What and where are the stack and heap?
- What and where are the stack and heap?
- What and where are the stack and heap?
- What are the difference between DDL, DML and DCL commands?
- What are /MSOffice/cltreq.asp and /_vti_bin/owssvr.dll?
- What are training set, validation set and test set?
- What are the difference between DDL, DML and DCL commands?
- What are the difference between DDL, DML and DCL commands?
- What Are the Differences Between Smaller Couriers and FedEx-_899
- What are Teamsite, FormsPublisher, SitePublisher, Livesite, OpenDeploy and DataDeploy?
- Can someone explain what Business Units, TableSets and SetIDs are
- What are training set, validation set and test set?
- c-language: 库函数
- WebtestRecorder---Selenium Webdriver脚本录制插件
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- 转:作用域与上下文环境
- awk相关操作(简单举例查询IP地址)
- What are CBR, VBV and CPB?
- 【c++知识归纳】继承与多态(二)
- 多线程记录操作记录
- 当面临抉择的时候,如何决定何去何从?
- 全栈工程师移动开发实践━MyEclipse激活
- OSI七层模型和TCP/IP四层模型
- c-language: 内存管理
- redis安装与启动,停止,设置密码
- Python 自动刷博客浏览量(转载,请尊重原创)