如何编译xvidcore-0.9.1
一、把如下三个文件由UNIX格式转换成DOS格式
1、...\xvidcore-0.9.1\examples\Makefile
2、...\xvidcore-0.9.1\build\generic\Makefile
3、...\xvidcore-0.9.1\build\win32\libxvidcore.dsp
转换方法一:
1、用写字板打开其中一个文件(比如,...\xvidcore-0.9.1\examples\Makefile),“文件”-〉“另存为”
2、把“保存类型”改为“文本文档 - MS-DOS格式”,文件名自取(比如 a)
3、关闭写字板,删除文件...\xvidcore-0.9.1\examples\Makefile,把刚才保存的a.txt改名为Makefile
转换方法二:
1、用UltraEdit打开其中一个文件(比如,...\xvidcore-0.9.1\examples\Makefile),打开时会有对话框提示要不要转换成DOS格式,
选“是”
2、用UltraEdit新建一个文件,把刚才打开的文件全部复制到新建的文件中,把新建的文件保存(文件名自取,如 a )
3、删除文件...\xvidcore-0.9.1\examples\Makefile,把刚才保存的a.txt改名为Makefile
二、下载新的nasm.exe
链接:www.sf.net/projects/nasm
或者直接下载这个版本(2003/3/12最新版0.98.36): http://easynews.dl.sourceforge.net/sourceforge/nasm/nasm-0.98.36-win32.zip
下载解压后文件名为nasmw.exe,更名为nasm.exe,保存到VC的bin目录下(比如我的VC 6.0装在D:\Program Files\目录下,
那就放到这里:D:\Program Files\Microsoft Visual Studio\VC98\Bin\
好,到此除了xvid_bench工程外,其余四个(xvid_encraw、xvid_decraw、xvid_stat、odivx_enc_dec)都能编译通过
但还是有一个警告:
D:\xvidcore-0.9.1\src\bitstream\mbcoding.c(194)
: warning C4146: unary minus operator applied to unsigned type, result
still unsigned
意思是一元的“-” 操作符用在无符号整型数上,结果仍然是无符号整型数;我不知道怎么能搞定它,是不是把警告级别调整一下就行了?
三、如何编译xvid_bench工程
1、点击“Project”->“Settings”
2、在弹出的对话框左边,选择xvid_bench工程
3、在C/C++选项卡里,找到Preprocessor definitions一栏,添加两个宏定义:ARCH_IS_32BIT,ARCH_IS_IA32
恭喜你,大功告成!
附:
《How to Compile XviD with Microsoft Visual C++ 6.0》
Written by David Carroll
Last updated: January 1, 2003
OK,
you've got your copy of Microsoft Visual C++ 6.0. You should be able to
just download the source code, click on the project file, and a few
second later, you'll have the Xvid Binary. Right? Well, unfortunately,
it's not that easy. However, it's not that hard either.
I. Downloading Necessary Files
Xvid depends on a number of libraries and programs that do not come standard with Microsoft Visual C++ 6.0.
You need:
1) Service Pack 5 for Visual Studio 6 - http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.asp
I
don't believe you actually need Service Pack 5 to compile Xvid However,
you should download it to get all the latest bug fixes and runtime
libraries. Trust me, it'll make your life easier later when you try to
compile other programs. You can download the service pack or order it
on CD from the Microsoft Developers Network (MSDN) by clicking the link
above.
2) NASM - the famous Netwide Assembler - http://sourceforge.net/projects/nasm/
Xvid uses NASM to "compile" the code written in assembly language (the *.asm files). Download the Win32 binary.
3) DirectX 8.1b SDK - http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp
To
build the DirectShow filter, you need the DirectX SDK (Software
Development Kit). This SDK is not available by itself on CD, but the
Microsoft Platform SDK CD includes the DirectX SDK (along with several
other SDK's like the Windows Core SDK, Media Player SDK, etc.). You can
order the Microsoft Platform SDK CD from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
II. Configuring the Compiler
1) Installing Service Pack 5
The
Service Pack is easy to install since it comes with an installer. The
installer's filename is "setupsp5.exe". Just find the file and
double-click it.
2) Installing and Configuring NASM
a) Unzip the file to an easy to remember directory of your choosing (i.e., "C:\DEV\NASM")
b)
Xvid expects the filename to be "nasm.exe" (probably because all other
versions except the Win32 version has that name). For some reason, the
Win32 version NASM has a filename of "nasmw.exe." I recommend making a
copy of "nasmw.exe" and renaming it "nasm.exe."
c) Load up Microsoft Visual C++.
i) Click on the "Tools" menu and select "Options."
ii) Click on the "Directories" tab.
iii) Select "Executable Files" from the "Show Directories For" dropdown box.
iv) Add the path to NASM (e.g., "C:\DEV\NASM")
3) Installing and Configuring the DirectX SDK
The DirectX SDK comes with an installer. I recommend installing to a directory like C:\DEV\DXSDK.
To configure the DirectX SDK:
a) Load up Microsoft Visual C++.
b) Click on the "Tools" menu and select "Options."
c) Click on the "Directories" tab.
d) Select "Include Files" from the "Show Directories For" dropdown box.
e)
Add the following entry: "
f) Use the little up arrow icon to move the entries to the top of the list.
III. Compiling XVID
Now
you can download the source code, click on the workspace file, and a
few second later, you'll have the Xvid Binary. Just make sure you build
the xvidcore first.
IV. Installing XVID
For Windows users, there are really only three files you have to be concerned with:
1)
xvid.dll and xvid.inf - both of these files are in the "
To install the Xvid Video for Windows codec (aka xvid.dll)
a) Simply right-click the "xvid.inf" and select "Install" from the context menu.
That's
it, you're done. To verify that the file has been installed correctly,
go to the Control Panel and select "Multimedia", then click on the
"Devices" tab and finally see if "XVID" is listed under the "Video
Compression Codecs" section. If you wish to uninstall the Xvid codec,
select "XVID MPEG-4 CODEC" from the "Add/Remove Program" list in the
Control Panel.
2) xvid.ax -This file is in the "
To install the Xvid DirectShow filter (aka xvid.ax)
a)
First copy the "xvid.ax" file to a safe place (i.e., "C:\Program
Files\xvid"). The Video for Windows codec is automatically copied to
the Windows system directory when you install it. The DirectShow filter
is not. Therefore, if you delete the source code directory, you lose
your DirectShow filter.
b) Once you have copied the "xvid.ax" file
to a safe place, go to the Start Menu and select "Run." Type "
That's it,
you're done. There really is no easy way to verify that the DirectShow
filter was properly installed other than to play a Xvid encoded video.
To uninstall the DirectShow filter, go to the Start Menu and select
"Run." Type "
V. Troubleshooting FAQ
Q. Why do I get the following error message:
Assembling ..\..\src\utils\x86_asm\mem_transfer_mmx.asm
Bad command or file name
A. You did not correctly install NASM.
Q. What causes this error: "CXvidDecoder.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_IYUV"?
A.
This is caused by an outdated strmbase.lib. You need to build a new
one. The path to the project file is
Q. I have ffdshow, do I need to install the XviD DirectShow filter?
A. No, not really.
Q. When trying to open a workspace file (.dsw), I get an "empty" workspace (i.e., there are no source files listed) and/or
When trying to open a project file (.dsp), I get a"This makefile was not generated by Developer Studio" error.
A.
Often, this can be caused by having UNIX line breaks (LF) in the .dsw
and .dsp files, as opposed to Windows line breaks (CR\LF). It is
interesting to note that .dsw and .dsp files are just text files; you
can open them up in any text editor. If you open the .dsw and .dsp
files in a text editor that can't handle UNIX line breaks (namely
Notepad) you will probably see big, black squares at the end of lines.
You can "fix" this error by following this procedure.
a) Do NOT let Microsoft Visual C++ attempt to fix the problem! Press "No" when prompted.
b)
Open the .dsw and .dsp files in a text editor that understands UNIX
line breaks. WordPad is one and it is available with most copies of
Windows.
c) Once open, simply re-save the file (In WordPad, make
sure you set the save as type to "Text Document"). All UNIX line breaks
should be converted to Windows line breaks.
Also, I have noticed
that some "archive" utilities like Winzip will perform the UNIX ->
Windows line break conversion automatically so I recommend you use
those utilities. At the time of writing, archive utilities that don't
perform this conversion include PowerArchiver and WinRAR.
Q. I get lots of error messages similar to the following:
..\..\src\quant\x86_asm\quantize_mmx.asm:429: parser: instruction expected
..\..\src\quant\x86_asm\quantize_mmx.asm:430: symbol `movdqa' redefined
A. You are using an old version of NASM, download a newer version from http://sourceforge.net/projects/nasm/
by
测试:
编码是
xvid_encraw -w 176 -h 144 -t 0 -i foreman.qcif -o test.m4v(xvidcore-1.1.0-beta2)
解码是
xvid_decraw -t 1 -i test.m4v -d 1