自己想写的,既然在网上找到了,也就copy 过来了。
我是用VC6编译的asm文件,然后用.net 2003编译的.c文件。
如何编译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
链接:
或者直接下载这个版本(2003/3/12最新版0.98.36):
下载解压后文件名为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,
resultstill 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 tojust
download the source code, click on the project file, and a fewsecond
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 -
Idon't
believe you actually need Service Pack 5 to compile Xvid However,you
should download it to get all the latest bug fixes and
runtimelibraries. Trust me, it'll make your life easier later when you
try tocompile other programs. You can download the service pack or
order iton CD from the Microsoft Developers Network (MSDN) by clicking
the linkabove.
2) NASM - the famous Netwide Assembler -
Xvid uses NASM to "compile" the code written in assembly language (the *.asm files). Download the Win32 binary.
3) DirectX 8.1b SDK -
Tobuild
the DirectShow filter, you need the DirectX SDK (SoftwareDevelopment
Kit). This SDK is not available by itself on CD, but theMicrosoft
Platform SDK CD includes the DirectX SDK (along with severalother SDK's
like the Windows Core SDK, Media Player SDK, etc.). You canorder the
Microsoft Platform SDK CD from
II. Configuring the Compiler
1) Installing Service Pack 5
TheService
Pack is easy to install since it comes with an installer.
Theinstaller's filename is "setupsp5.exe". Just find the file
anddouble-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
otherversions except the Win32 version has that name). For some reason,
theWin32 version NASM has a filename of "nasmw.exe." I recommend making
acopy 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: "
\SAMPLES\MULTIMEDIA\DIRECTSHOW\BASECLASSES" where you replace with the actual path to the DirectX SDK(i.e., "C:\DEV\DXSDK").
f) Use the little up arrow icon to move the entries to the top of the list.
III. Compiling XVID
Nowyou
can download the source code, click on the workspace file, and afew
second later, you'll have the Xvid Binary. Just make sure you buildthe
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 "\vfw\bin\"
directory. The "xvid.dll" file is theXvid Video for Windows codec. This
file is necessary if you wish toencode any videos using a Video for
Windows compliant program (i.e.,almost every video editor out there).
In theory, you should be able toplay back Xvid files in the Windows
Media Player using this file aswell although this functionality appears
to be broken at this point.Therefore, if you wish to play back files in
a media player, installthe "xvid.ax" file (see below). The "xvid.inf"
file is the setupinformation file. Basically, this file tells Windows
how to install"xvid.dll".
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'sit,
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 "VideoCompression
Codecs" section. If you wish to uninstall the Xvid codec,select "XVID
MPEG-4 CODEC" from the "Add/Remove Program" list in theControl Panel.
2) xvid.ax -This file is in the "\dshow\bin\"
directory. The "xvid.ax" file is the XvidDirectShow filter. Microsoft
has decreed that DirectShow shall replaceVideo for Windows, so in
theory you won't need "xvid.dll". However,this isn't true. Instead, the
DirectShow filter is used mostly forplayback by newer media players.
Most video programs still depend onthe Video for Windows codec for
encoding.
To install the Xvid DirectShow filter (aka xvid.ax)
a)First
copy the "xvid.ax" file to a safe place (i.e., "C:\ProgramFiles\xvid").
The Video for Windows codec is automatically copied tothe Windows
system directory when you install it. The DirectShow filteris not.
Therefore, if you delete the source code directory, you loseyour
DirectShow filter.
b) Once you have copied the "xvid.ax" fileto a safe place, go to the Start Menu and select "Run." Type "="" to="">\system\regsvr32 \xvid.ax" (i.e,C:\windows\system\regsvr32 C:\Program Files\xvid.ax).
That's
it,you're done. There really is no easy way to verify that the
DirectShowfilter 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 "="" to="">\system\regsvr32 /u \xvid.ax"
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 newone. The path to the project file is \samples\Multimedia\DirectShow\BaseClasses\baseclasses.dsw.After
you build the library, I recommend you copy the strmbase.lib fileto \lib.
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 .dswand .dsp
files, as opposed to Windows line breaks (CR\LF). It isinteresting to
note that .dsw and .dsp files are just text files; youcan open them up
in any text editor. If you open the .dsw and .dspfiles in a text editor
that can't handle UNIX line breaks (namelyNotepad) 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 UNIXline
breaks. WordPad is one and it is available with most copies ofWindows.
c)
Once open, simply re-save the file (In WordPad, makesure you set the
save as type to "Text Document"). All UNIX line breaksshould be
converted to Windows line breaks.
Also, I have noticedthat some
"archive" utilities like Winzip will perform the UNIX ->Windows line
break conversion automatically so I recommend you usethose utilities.
At the time of writing, archive utilities that don'tperform 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
by 边城浪子(lmtw 论坛)
测试:
编码是
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