2007年8月6日星期一

  1. Download XVID Source Code

这里使用的是xvidcore-1.1.2版本.

  1. Prepare Build Environment

    1. Visual Studio 6

Microsoft Visual C++ 6.0 Enterprise Edition

    1. Service Pack 5 for Visual Studio 6

http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx

注意, 如果只安装了sp6而没有安装sp5, Visual C++ Processor Pack是无法安装的.

    1. Visual C++ 6.0 Processor Pack

http://msdn2.microsoft.com/zh-cn/vstudio/Aa718349.aspx


    1. NASM - the famous Netwide Assembler

我用的是0.98.3.5版本. nasm.exe放在D:Program FilesMicrosoft Visual StudioVC98Bin目录.


    1. DirectX 9.0 SDK

Microsoft DirectX 9.0 SDK

安装在D:DXSDK目录.


然后打开Microsoft Visual C++, Tools->Options->Directories, “Include files”中添加

  • D:DXSDKInclude

  • D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSES


在”Library Files”添加

  • D:DXSDKLib

  • D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSESRELEASE


使用Visual C++打开D:DXSDKSamplesC++DirectShowdshow.dsw项目. 编译BaseClasses filesWin32 Release版本, 编译成功后在D:DXSDKSamplesC++DirectShowBaseClassesRelease会有一个”STRMBASE.lib”文件.

  1. Compile XVID

    1. Xvid Core

首先看一下xvidcore-1.1.2/doc/INSTALL文件.

使用VC++打开${xvidcore}/build/win32/xvidcore.dsw项目.

libxvidcore- Win32 Release设为active project

Build the project (F7), 编译成功后会在${XVIDCORE}/build/win32/bin/下产生一个xvidcore.dll文件.

    1. VFW (Video For Windows)

然后使用VC++打开${XVIDCORE}/vfw/vfs.dsw项目, 编译后会在${XVIDCORE}/vfs/bin/目录下生成xvidvfs.dll文件, 并执行命令:

copy "..buildwin32binxvidcore.dll" ".bin" (Project Setting->Post-Build step)

xvidcore.dll拷贝到与xvidvfs.dll相同的目录.


${XVIDCORE}/vfs/bin/目录下, 右键点击”xvid.inf”, 选择”安装”. 要看一下是否安装成功, 检查一下是否存在”控制面板->声音和音频设备->硬件->视频编码解码器->属性->XviD MPEG-4 Video Codec”.

    1. DSHOW

使用VC++打开$(XVIDCORE)/dshow/dshow.dsw项目, 编译后会在$(XVIDCORE)/dshow/bin目录下生成xvid.ax文件, 执行命令

regsvr32 $(XVIDCORE)/show/bin/xvid.ax

GraphEdit中查看, 应该可以看到注册上的filter



找一个xvid编码格式的avi文件, 其属性如图所示:


GraphEdit, 插入”File Source (Async.)” filter, 选择avi文件. 然后选择”XviD MPEG-4 Video Decoder” filter, 连接”File Source”Output和”XviD MPEG-4 Video Decoder”的”XForm In”, GrapEdit会自动在中间加入一个”AVI Splitter” filter, 然后鼠标右键点击”XviD MPEG-4 Video Decoder”的”XForm Out”, 在弹出菜单中选择”Render Pin”, GraphEdit会自动加入”Video Renderer” filter, 这样, 一个完整的Filter Graph就构建成功, 如下图所示.


附一些关于XviD DirectShow Filter的讨论

http://www.directshow.cn/forum/search.php?searchid=11&orderby=lastpost&ascdesc=desc&searchsubmit=yes

http://list.xvid.org/pipermail/xvid-devel/2005-March/004915.html

  1. Reference

http://www.discdude.net/xvid/compile.html


没有评论: