引用:
Originally posted by mycai
我從沒用力去K過MPEG,這方面我遠沒有你了解…
不過真是一時被上面那句話搞迷糊了
即使chroma的DCT是以Frame為單位,但之前的downsample是對奇偶field分別進行的啊~~~
之前的討論真是有點牛頭沒對上馬嘴……
這點其實拿張DVD來看就可以看出來了。
不然在交錯畫面時,chroma的downsample還對整個frame作不會完蛋才怪。
以前在普威爾的討論區也有提過這個問題,
當時雖然Jackei大表示比起field和frame在chroma downsample上的差異,
他比較在意的還是壓縮效率上的差別。
因為以DVD2AVI的6 step upsample來說,兩者差異已不是那麼明顯,
若是在一些數十step upsample的高階player上,差異看來就會更小。
所以Field DCT時chroma是以field單位 downsample這點該不會有錯。
|
mycai 兄:
其實我也不是很了解,這方面 jackei 大大^n要遠遠遠遠比我了解多了,我也是看了他的文章才慢慢了解一點這些東西的(而且還可能有理解錯誤的地方... 狂汗)。
我重新看了一次我們的討論,我想我找到問題的癥結所在了。
首先,Chroma 是不會用 Field DCT 的,因為標準規定,YUV 4:2:0 格式,Chroma 只能用 Frame DCT。
其二,DCT Type 和怎麼 downsampling 無關,downsampling 是以整張畫面為單位,在做 DCT 之前就先做好的。DCT Type 只是決定要怎麼 "重新排列" Macroblock 裡面的 DCT 係數,使得 DCT 的轉換更有效率。這個決定可以以更小的 Macroblock 為單位作切換的。譬如說在交錯畫面中,也有可能畫面上大部分的區域都是靜止不動的,因此並沒有交錯,只有人物開口說話的部分是交錯的。那麼我們就可以切換,在大部分靜態的背景區域,因為無交錯,垂直的關聯性高,所以還是使用 Frame DCT。只有在有動作的交錯區域,我們才使用 Field DCT。
其三,畫面是以 Frame 為單位壓縮或是以 Field 為單位壓縮由 picture_structure 這個旗標決定。如果 progressive_frame 這個旗標等於 1(DVD2AVI 的 Frame Type 會顯示 Progressive),代表畫面是循序的,此時 picture_structure 會等於 Frame,同時另一個 frame_pred_frame_dct 旗標也會等於 1,代表此畫面中的 Macroblock 一律使用 Frame Prediction 的動作預測模式和 Frame DCT。
如果 progressive_frame 這個旗標等於 0(DVD2AVI 的 Frame Type 會顯示 Interlaced),則 picture_structure 還是可以為 Frame,還是可以用 Frame Prediction 和 Frame DCT。
其四,downsampling 的取樣是以整張畫面為單位的,當畫面是循序畫面時
progressive_frame = 1
chroma = (c1+c2)/2
當畫面是交錯畫面時
progressive_frame = 0
chroma1 = 0.75*c1 + 0.25*c3, chroma2 = 0.25*c2 + 0.75*c4
當然還可以用其他更複雜的 filter 來做 downsampling
所以您的意思應該是指 downsampling 的問題而不是 DCT Type 的問題?
小弟是從 DCT Type 的方向去想,所以前面的討論完全牛頭不對馬嘴 ^^;
不知道這樣整理有沒有釐清我們討論的問題?