引用:
Originally posted by mycai
是360x120沒錯,抱歉打錯了。
舉個例子好了,以chroma如下的frame(隨便打的)
0 2 4 6 8 10 14 22 18 16 14 12
Field DCT時奇偶分別downsample的話,就成了
1 9.5 17 和 5 19 13
兩個field的資料upsample再合併就成了
1 3.5 4.5 6.5 8 14.5 13.5 19.5 16.5 16 18 12.5
而直接將整個frame downsample就成為
1 5 9 18 17 13
upsample回去
1 2 3.5 6 7.5 11.5 16 19 18 16 14 12.5
哪個比較接近原數值該是一看就明白了,
交錯記錄的YUV420比循序更接近原數值雖不是不可能,但要遇到也不容易。
也可以找張普爾的DVD,拿有IVTC成功的部份來格放,就能看出Frame和Field DCT的差異。
|
啊,不會這樣。downsampling 的過程在一開始的時候就做好了,畫面的組成是 Frame 還是 Field 由 picture_structure 決定,在 Frame 結構的畫面裡一樣可以使用 Field DCT,Frame/Field DCT 只是決定要怎麼重新排列 Macroblock 裡面的係數,和取樣無關。iDCT 的時候解出來的係數會再重新組合回原來的順序,然後才 upsampling。而且在 YUV 4:2:0 的時候,Chroma 只能用 Frame DCT。
downsampling 的話可以很簡單
Progressive:
c1
c2
chroma=(c1+c2)>>1
>>1 是右移一個 bit 的意思,相等於 /2 不保留餘數,注意不保留餘數喔。
實作的時候為了要用 MMX 加速,像 XviD 是用 round-up average:
chroma = (c1+c2+1)>>1
這樣便可以用 pavg[us]b 這個指令加速,或是 round-down average:
chroma = ((c1-1)+c2+1)>>1
用 pavgb 加速
upsampling 比較複雜,例如 MSDN 上提供的 cubic convolution interpolation
http://msdn.microsoft.com/library/e...ue#yuvformats_3
看下面那張 Figure 14.
>>4 是右移四個 bit,注意不保留餘數喔。
所以我以為 Frame/Filed DCT 除了壓縮效率以外是沒有差的?
引用:
若是一般的encoder真有判斷用Field還是Frame DCT壓縮會比較有利的話,
那麼就算沒有IVTC也會有近半的Frame是用Frame DCT才是,
但我從來沒有看過有這種東西…
|
請問您是用哪一個軟體看的呢?我也想要有一個比較方便可以抽 Macroblock 層的資訊出來看的軟體,一般的軟體頂多顯示到 Slice 層就沒了 
是的,DVD 只能用 YUV 4:2:0 格式,可是 MPEG-2 還可以用 4:2:2 以及沒有在任何 Profile 裡面的 4:4:4 格式。MPEG-2 規定 YUV 4:2:0 的時候 Chroma 只能使用 Frame DCT,要 4:2:2 以上,Chroma 才能像 Luminance 一樣,可以有不同的 DCT Type。