Xvid 在2410 上面實現

【mpeg4解碼在2410上的實現】 | 2007-04-27 17:26:43

先講講一個有趣的故事        當初mpeg4的標準提出來後,微軟最先實現了它。不過微軟的代碼不公開,並且只用在他自家的media player上。mpeg4視頻壓縮比大,圖像質量好,非常適合盜版及網絡共享。微軟的做法激怒了廣大人民。人民羣衆的力量是偉大的,大家發起了一個名叫divx的開源組織,破解了微軟的mpeg4核心,於是乎網上鋪天蓋地的出現了divx格式的盜版電影。divx到版本3.11後已經佔據了絕大部分的市場份額,這個時候divx的一些創辦者露出了真面目,他們不再公開後繼版本,並推出divx5.1收取許可費。憤怒和失望過後,開源社區剩下的人和divx的另一些創辦者沒有放棄,他們採用完全開源的協議,開始了重新實現mpeg4的工作。於是誕生了xvid。

       我這兒就選擇了xvid代碼做爲基礎。

目標:2410在300M主頻時解碼352*288的mpeg4標準碼流速度達到 25幀

第一步精簡xvid程序         xvid的代碼可以到http://www.xvid.org/下載,上面還提供了許多測試碼流。 1. 在PC上編譯代碼       代碼的大部分修改調試工作先在PC上調試好。流媒體世界論壇http://bbs.lmtw.com/上有一些有用的資料。        我用的vc7.0。 先下載個nasm-0.98.36-win32,解壓後將裏面的nasmw.exe改成nasm.exe,然後將nasm.exe拷貝到Microsoft Visual Studio .NET 2003Vc7in目錄下。        工程文件在xvidcoreuildwin32下,打開它。文件視圖中右健點中一個asm文件,選中屬性-自定義生成步驟-常規-命令行,將裏面的內容改爲nasm -f win32 -DPREFIX -o $(IntDir)$(InputName).obj $(InputPath)。  所有的asm文件都要改。因爲nasm的命令行格式與微軟定義的不同。             改過來之後就可以編譯了。 運行buildwin32in下的xvid_decraw.exe 可以測試下效果。當然要先到http://www.xvid.org/上下載些測試視頻。       命令格式是: xvid_decraw -i test.mp4u -d -c rgb24 -f tga

2.剔除多餘代碼      代碼中有很多是編碼部分的,解碼部分更本不需要。

3.移植到arm平臺    2410對程序的限制和普通cpu差不多,所以代碼基本沒什麼需要修改的。不過2410上還沒有操作系統,所以將所有的window頭文件都去掉。有些函數要自己實現,如memcpy , memset ,strncmp 等。也沒有動態分配內存,需要將程序中的malloc和free去掉,改成預先在內存中分配空間。

現在有了一個可以在2410上跑的基本程序了,不過速度很慢,需要優化。我在200M的主頻下測試解碼352*288碼流只有11.5幀。離老大提出的要求很遠,後面還任重道遠呀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章