引用:
Originally posted by snic
這功能突然讓我想起另一個 Curve compression 這個設定...
功能好像蠻類似的...
這兩個設定 XVID 都有(雖然從不用的)...不會打架嗎^^"
而且好像也分不太出來使用上差在哪裡(汗
|
看起來有點類似,不過目的是不同的。
當 2nd-pass 壓縮時,會根據 1st-pass 壓出來的 frame size 做縮小(scaling),並且預測要達到目標的 size,要提高多少 quantizer 壓縮。
例如
1st-pass 壓出來結果是
frame no. 1 -> 500K
frame no. 2 -> 200K
frame no. 3 -> 300K
總共 1000K,2nd-pass 設定目標大小 500K,所以縮小 frame size,我們預期壓出來
frame no. 1 -> 500/2 = 250K
frame no. 2 -> 200/2 = 100K
frame no. 3 -> 300/2 = 150K
結果就會是我們要的 500K。
然而每個 frame 調整 quantizer 壓出來,不會剛好符合我們預期、希望的大小,可能會超出,可能會低於,Max overflow/Min overflow 就是在控制,當壓出來超出或低於預期的 bitrate 的時候,codec 要怎麼控制、調整,讓最後的總 size 會符合我們設定的大小。
Max overflow improvement 就是當壓出來 frame size 小於預期,我們可以提高多少 bitrate,也就是可以提供多少 overflow 供 codec 運用。如果都不提供,後面要是場景沒有突然變得太複雜,消耗許多 bitrate,補償這一段低於的部分,最後壓出來總 size 就會低於我們設定的 size。
Min overflow degradation 是當壓出來 size 超過預期,我們要降低多少 bitrate,也就是減少多少 overflow,如果都不減少,後面要是場景沒有回歸簡單,還是不好壓,少了可以補回 bitrate 的機會,最後壓出來總 size 就會高於我們設定的 size。
Max/Min overflow 是在控制這個,而 Curve compression 是計算 scaling 的時候,不要做線性的 scaling,linear-scaling,例如上例是所有 frame 平均對待都除以二,Curve compression 是對於 size 越大的 frame,減少的 bit 越多,size 越小的 frame,減少的 bit 越少。
這是基於 size 越大的 frame,通常是高動態的 frame,高動態畫面壓差一點,可能不容易注意到。
當然這樣做是有缺點的,不一定 size 大的 frame 就是高動態的畫面,它有可能是低動態,但是畫面結構很複雜畫面,這種畫面壓爛的話會很容易注意到,XviD 沒有辦法區別真正的高動態和結構複雜畫面的分別。
Curve compression 是非線性、不對稱的 scaling,它會壓抑高 size 的 frame,提昇低 size 的 frame,使最後每個 frame 的 size 接近差不多一樣。
所以 Max/Min overflow 的設定和 Curve compression 其實是控制不一樣的東西。
上面舉的 scaling 的例子只是方便例,真正的 XviD 用的 linear-scaling 不是那麼簡單都除以二這樣子的做法
