如何编译xvidcore-0.9.1(转帖)
时间:2005-05-18 来源:windguy
自己想写的,既然在网上找到了,也就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
链接: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, 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 - http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.asp
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 - 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
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 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
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 http://sourceforge.net/projects/nasm/
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
我是用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
链接: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, 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 - http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.asp
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 - 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
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 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
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 http://sourceforge.net/projects/nasm/
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
相关阅读 更多 +