2011-05-03 35 views
3

我需要一个简单和快速的视频编解码器与alpha支持作为替代Quicktime动画,对常规视频有可怕的压缩率。简单和快速的视频编码/解码

由于我还没有找到任何好的开源编码器/解码器与alpha支持,我一直在试图写自己的(从huff-yuv灵感)。

我的策略是:

  1. 转换为YUVA420
  2. 减去当前帧从以前的(无需关键帧)。
  3. 霍夫曼编码上一步的结果。将每个帧拆分为64x64块,并为每个块创建一个新的huffman表并对其进行编码。

有了这个策略,我实现了体面的压缩率60-80%。我可能可以通过在步骤1之后将每帧分割成块来提高压缩率,并且将运动向量添加到减少来自步骤2的数据输出。然而,比60%更好的压缩率比性能更低。

四核cpu可接受的压缩速度60ms /帧。

但是,解码速度受到影响,40ms /帧(在完全cpu使用情况下几乎不实时)。

我的问题是,是否有一种方法来压缩视频,解码速度快得多,但仍能获得体面的压缩率?

解码huffman编码的符号似乎相当缓慢。我还没有尝试过使用表查找,但不确定表查找是否是一个好主意,因为我为每个块都有一个新的huffman表,并且构建查找表非常昂贵。据我已经能够找出它不可能使用任何SIMD或GPU功能。有其他选择吗?请注意,它不一定是无损的。

回答

1

你想尝试一个Golomb码而不是霍夫曼码。 golomb码是IMO更快的解码Huffman码。如果它不一定是无损的,你希望使用希尔伯特曲线和DCT,然后使用哥伦布代码。您想用空间填充曲线细分框架。国际海事组织连续细分一个帧和一个sfc也是一个解码速度非常快。

+0

您想使用希尔伯特曲线而不是莫顿曲线。 – Bytemain 2011-05-31 22:31:32