翻译来自:唐福林 博客雨 http://blog.fulin.org/2010/05/vp8_first_in_depth_tech_analysis.html
注1:文章来自:http://x264dev.multimedia.cx/?p=377 ,一个 H264 开发者对 VP8 的深入分析。
注2:在Google翻译基础上试译,不足之处请多包涵,欢迎各种建议和意见
The first in-depth technical analysis of VP8
首次深入技术分析
Back in my original post about Internet video, I made some initial comments on the hope that VP8 would solve the problems of web video by providing a supposed patent-free video format with significantly better compression than the current options of Theora and Dirac.
在我原来写的关于互联网视频的博文中,我曾做了一些初步的设想,希望 VP8提供的免专利费的视频压缩视频格式,能显著的超过当前的选择 Theora 和 Dirac,解决当前互联网视频的难题。
Fortunately, it seems I was able to acquire access to the VP8 spec, software, and source a good few days before the official release and so was able to perform a detailed technical analysis in time for the official release.
幸运的是,在官方正式发布前几天,我似乎能够获得VP8规范,软件和源代码,因此能够在正式发布前对它做一个详细的技术分析。
The questions I will try to answer here are:
我会在这里尽量回答这些问题:
1. How good is VP8? Is the file format actually better than H.264 in terms of compression, and could a good VP8 encoder beat x264?
1。VP8有多好?在压缩比方面VP8文件格式真的比 H.264要好,一个好的VP8编码器可以击败x264吗?
On2 claimed 50% better than H.264, but On2 has always made absurd claims that they were never able to back up with results, so such a number is almost surely wrong.
On2公司声称VP8超过H.264标准 50%,但On2公司经常发表荒谬的声明但却从来不能用事实来证明它,所以这样的数字几乎肯定是错误的。
VP7, for example, was claimed to be 15% better than H.264 while being much faster, but was in reality neither faster nor higher quality.
例如VP7,据称超过H.264标准 15%,而且快得多,但实际上既不快,也不是质量更高。
2. How good is On2′s VP8 implementation? Irrespective of how good the spec is, is the implementation good, or is this going to be just like VP3, where On2 releases an unusably bad implementation with the hope that the community will fix it for them?
2。On2公司的VP8的实现如何?先不论规范多么好,它的实现是否足够好,还是和曾经的VP3一样,On2公司发布了一个几乎不能使用的差劲实现,希望开发社区来帮助完善?
Let’s hope not; it took 6 years to fix Theora!
希望不会,修复Theora就已经花了6年的时间!
3. How likely is VP8 to actually be free of patents? Even if VP8 is worse than H.264, being patent-free is still a useful attribute for obvious reasons.
3。VP8的专利免费有多确定?即使VP8不如H.264,专利免费仍然是一个非常吸引人的属性。
But as noted in my previous post, merely being published by Google doesn’t guarantee that it is.
但正如我在前面的博文里提到的,Google 发布它并不能保证它是免费的。
Microsoft did similar a few years ago with the release of VC-1, which was claimed to be patent-free — but within mere months after release, a whole bunch of companies claimed patents on it and soon enough a patent pool was formed.
微软在几年前做了类似的事情,发布了VC-1,声称是免专利费的。 但仅仅过了几个月,一大堆的公司声称拥有关于它的专利,并很快成立了一个专利池。
We’ll start by going through the core features of VP8.
我们将首先浏览一遍VP8的核心特点。
We’ll primarily analyze them by comparing to existing video formats. Keep in mind that an encoder and a spec are two different things: it’s possible for good encoder to be written for a bad spec or vice versa! Hence why a really good MPEG-1 encoder can beat a horrific H.264 encoder.
我们主要分析它们的格式,跟现有的格式做比较。 记住,编码器和规范是两个不同的东西:可能存在根据差的规范写出好的编码器实现,也可能反过来!所以为什么一个很好的MPEG – 1编码器可以击败一个差劲的H.264编码器。
But first, a comment on the spec itself.
但首先,关于规范本身的评论。
The spec consists largely of C code copy-pasted from the VP8 source code — up to and including TODOs, “optimizations”, and even C-specific hacks, such as workarounds for the undefined behavior of signed right shift on negative numbers.
这个规范里存在大量的从 VP8 源代码里拷贝过来的C语言代码,甚至包括一些 TODO,“优化”,甚至一些只在C语言里存在的技巧,比如负数的带符号右移的替代方法。
In many places it is simply outright opaque. Copy-pasted C code is not a spec. I may have complained about the H.264 spec being overly verbose, but at least it’s precise.
在许多地方简直是彻头彻尾不透明。 复制粘贴的C代码不是规范。我可能抱怨过冗长的H.264规格,但至少它是精确的。
The VP8 spec, by comparison, is imprecise, unclear, and overly short, leaving many portions of the format very vaguely explained.
相比之下,VP8 的规范是不确切的,不明确,过于短,还留下许多关于格式的很含糊的解释。
Some parts even explicitly refuse to fully explain a particular feature, pointing to highly-optimized, nigh-impossible-to-understand reference code for an explanation.
有些地方甚至明确拒绝完全解释一个特定的功能,却给了一个高度优化,无法理解的参考代码实现作为解释。
There’s no way in hell anyone could write a decoder solely with this spec alone.
所以根本没有人可以根据本规范来单独的实现一个解码器。
Now that I’ve gotten that out of my system, let’s get back to VP8 itself.
现在我已经摆脱了它(指规范?译者注)了,让我们回到VP8本身。
To begin with, to get a general sense for where all this fits in, basically all modern video formats work via some variation on the following chain of steps:
首先,为了获得一个大概的印象,基本上所有的现代的视频格式,都包含以下步骤的工作:
Encode: Predict -> Transform + Quant -> Entropy Code -> Loopfilter
编码:预测 – > 变换 – > 熵编码 – > 回放过滤
Decode: Entropy Decode -> Predict -> Dequant + Inverse Transform -> Loopfilter
解码:熵解码 – > 预测 – > 逆变换 – > 回放过滤
If you’re looking to just get to the results and skip the gritty technical details, make sure to check out the “overall verdict” section and the “visual results” section. Or at least skip to the “summary for the lazy”.
如果你只是希望得到结果,跳过这些繁琐的技术细节,请直接跳到“整体判决”部分和“视觉效果”一节。或者至少跳到“总结”一节。
Continue reading ›