之前我已經確定說ffmpeg是以一個一個macroblock的形式去作inverse transform,prediction及deblocking filter
雖然說這跟standard寫得順序似乎有點出入
standard中寫是順序是要decode完一個完整frame的時候 才會一口氣做完deblocking filter
這裡就浮現了一個問題 就是每個macroblock都有可能會作intra prediction的動作(好 standard中寫只有I跟SI picture)
那在decode現在的macroblock會需要附近已經decode出來的macroblcok
那這些macroblock究竟是已經做完deblock filter還是還沒有做的勒
我看了standard發現這些時還沒有進行deblocking filter的macroblock
這時候就會發現ffmpeg的h.264的code一定有在這個地方動手腳 可能是將還沒deblocking的macroblock不知道存在哪裡
不然要怎麼reference 不過這裡我之後再看
接下來我在看standrad中luma在boundary filtering strength小於4的時候的function
基本上做的事是跟h264_loop_filter_luma_c一樣 但是裡面的判斷式 跟standard中寫得並沒有完全一樣
我想一定是因為ffmpeg為了加速改寫了一大堆的東西 不過還好的是ffmpeg中的變數名稱還認得出來
不過看的話可能要在花點時間
還有就是小記一下h264_loop_filter_luma_c是一次處理16條6個byte的內容
另外我有沿者filter_mb來開始看code
發現其實要看的code其實沒有很多 有很多部份是跟mbaff 就查一下這是什麼吧
這好像是有field的時候才會需要的東西 去除掉這些東西的話
其實要看的code就沒這麼多了
2009年9月20日 星期日
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言