xvid源代碼以及文件結構
文件結構:
build
debian
doc
dshow
examples
src
vfw
依次對應相應的開發。其中src目錄下的文件是core。如果使用VC編譯項目的話,進入build/win32目錄下,打開Xvidcore.dsp即可。
在dshow目錄下是一個Decoder Filter,你可以通過它編譯出一個基於CVideoTransformFilter的Filter。
在vfw目錄下,你可以採用vfw的編程方式。
在doc目錄下,Install是DOS文件格式,你可以通過閱讀這個文章,知道如何獲取最新的xvid的代碼,如果編譯xvidcore等。
另外你如果想編譯成功的話可能需要下載nasm.exe程序.
編譯分爲Ia32和Ia64兩部分.
目錄結構如下:
decoder.c /
encoder.c /
xvid.c /
bitstream/bitstream.c / ---對字節流操作的代碼
bitstream/mbcoding.c / ---對VLC和VOP字節操作
bitdustream/cbp.c /
dct/fdct.c / ---DCT變換
dct/idct.c / ---DCT逆變換
dct/simple_idct.c /
image/colorspace.c / ---顏色空間變化
image/image.c /
image/interpolate8x8.c / ---8*8/16*16低通的轉換
image/font.c / ---字符處理部分
image/postprocessing.c / ---圖像處理部分
image/qpel.c /
image/reduced.c /
motion/estimation_bvop.c / ---B幀vop預測部分
motion/estimation_common.c / ---模版搜索
motion/estimation_gmc.c /
motion/estimation_pvop.c / ---P幀VOP預測部分
motion/estimation_rd_based.c /
motion/gmc.c /
motion/motion_comp.c / ---運動補償
motion/vop_type_decision.c / ---VOP類型描述
motion/sad.c /
prediction/mbprediction.c / ---mpeg 宏塊預測
plugins/plugin_single.c / ---流控操作
plugins/plugin_2pass1.c /
plugins/plugin_2pass2.c /
plugins/plugin_lumimasking.c /
plugins/plugin_dump.c /
plugins/plugin_psnr.c /
quant/quant_h263.c / ---h263 的量化
quant/quant_matrix.c / ---量化參數
quant/quant_mpeg.c /
utils/emms.c /
utils/mbtransquant.c /
utils/mem_align.c / ---內存對齊操作
utils/mem_transfer.c / ---內存轉換
utils/timer.c
SRC_IA32 = /
bitstream/x86_asm/cbp_3dne.asm / ---優化字節流操作
bitstream/x86_asm/cbp_mmx.asm /
bitstream/x86_asm/cbp_sse2.asm /
dct/x86_asm/fdct_mmx_ffmpeg.asm / ---用MMX優化ffmpeg
dct/x86_asm/fdct_mmx_skal.asm /
dct/x86_asm/fdct_sse2_skal.asm /
dct/x86_asm/idct_3dne.asm /
dct/x86_asm/idct_mmx.asm /
dct/x86_asm/idct_sse2_dmitry.asm /
dct/x86_asm/simple_idct_mmx.asm /
image/x86_asm/colorspace_rgb_mmx.asm / ---rgb/yuv的轉換
image/x86_asm/colorspace_yuv_mmx.asm /
image/x86_asm/colorspace_yuyv_mmx.asm /
image/x86_asm/interpolate8x8_3dn.asm /
image/x86_asm/interpolate8x8_3dne.asm /
image/x86_asm/interpolate8x8_mmx.asm /
image/x86_asm/interpolate8x8_xmm.asm /
image/x86_asm/reduced_mmx.asm /
image/x86_asm/qpel_mmx.asm /
motion/x86_asm/sad_xmm.asm /
motion/x86_asm/sad_sse2.asm /
motion/x86_asm/sad_mmx.asm /
motion/x86_asm/sad_3dne.asm /
motion/x86_asm/sad_3dn.asm /
quant/x86_asm/quantize_h263_mmx.asm / ---針對Intel和AMD優化H263的量化參數
quant/x86_asm/quantize_h263_3dne.asm /
quant/x86_asm/quantize_mpeg_xmm.asm /
quant/x86_asm/quantize_mpeg_mmx.asm /
utils/x86_asm/mem_transfer_mmx.asm / ---針對Intel和AMD優化內存轉換
utils/x86_asm/mem_transfer_3dne.asm /
utils/x86_asm/interlacing_mmx.asm /
utils/x86_asm/cpuid.asm
僅僅列舉了一部分的代碼樹, 以上這部分的代碼是重要的. 這時候你可以打開libxvidcore項目進行閱讀了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.