2011-05-03 109 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