14.3.2 VC平台下编译和运行XviD CODEC
由于xvidcore-1.0.0工程是VC 6.0平台,所以在使用VC 2005时,需要进行工程转换及修改各种格式错误。xvidcore方案中有4个项目:libxvidcore是XviD CODEC,xvid_bench是CODEC部分模块的检查程序,xvid_decraw是MPEG-4视频解码,xvid_encraw是MPEG-4视频编码。使用VC++(www.cppentry.com) 2005运行XviD的过程如下。
启动VC++(www.cppentry.com) 2005开发环境。
双击xvidcore-1.0.0\build\win32\目录下的xvidcore.dsw,则VC++(www.cppentry.com) 2005提示如图14-12所示的画面:VC 6.0项目转换为VC 2005。
|
| 图14-12 VC 6.0项目转换为VC 2005 |
单击图14-12中的"全是"按钮,把旧版的VC工程转换为VC++(www.cppentry.com) 2005的项目。转换完成的xvidcore项目如图14-13所示。
选择图14-13中的"xvid_encraw"选项并单击鼠标右键,在弹出的快捷菜单中选择"设为启动项目"命令。
|
| (点击查看大图)图14-13 VC++(www.cppentry.com) 2005开发环境 |
生成xvid_encraw。项目xvid_encraw依赖于libxvidcore库,所以要编译生成xvid_encraw,则首先生成libxvidcore。可能出现的问题及解决办法如下。
项目libxvidcore产生多个"_CRT_SECURE_NO_DEPRECATE"警告。我们可以通过配置"属性→C/C++(www.cppentry.com)→预处理器/预处理器定义",来产生_CRT_SECURE_NO_ DEPRECATE。
如果error C2632"int"后面的"int"非法,则可以通过文件portab.h屏蔽代码:
//# define intptr_t int32_t
|
如果出现nasm: error: no input file specified,则出错文件为\xvidcore-1.0.0\src\image\ x86_asm\colorspace_yuyv_mmx.asm。
这是因为旧版的VC在转换为VC++(www.cppentry.com) 2005时,汇编文件的编译选项在转换过程中增加了双引号。我们可以通过更改出错文件colorspace_yuyv_mmx.asm的编译选项,选择该文件并单击鼠标右键,菜单"属性/自定义生成步骤/常规",删除命令行中的双引号"""。
在清理解决方案时,会出现"vc80.idb正在被使用"而无法删除的信息。即使关闭VC 2005,该文件还是不能删除。这时候我们通过"工具→选项→项目和解决方案→生成并运行"→"最大并行项目执行数"命令将其修改为1即可。
为编码器控制台应用程序添加命令行参数。用鼠标右键单击xvid_encraw项目,按照路径"属性→配置属性→调试",输入命令参数-asm -i e:\\yuv\\foreman.cif -o e:\\bitmp4\\foreman_enc.mp4 -type 0 -w 352 -h 288 -frames 300 -max_key_interval 100 -quality 2 -single -bitrate 300。
参数的意义见表14-2编码器参数说明。
表14-2 编码器参数说明
|
名称< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
值 |
描述 |
|
-asm |
|
是否使用平台CPU的汇编指令 |
|
-stats |
|
输出重建图像Y、U、V的PSNR值 |
|
-i |
e:\\yuv\\foreman.cif |
输入的YUV视频文件 |
|
-o |
e:\\bitmp4\\foreman_enc.mp4 |
输出的MPEG-4码流文件 |
|
-type |
0 |
视频类型0=I420 |
|
-w |
352 |
视频图像宽度 |
|
-h |
288 |
视频图像高度 |
|
-frames |
300 |
要编码的视频帧数 |
|
-max_key_interval |
100 |
I帧最大间隔 |
|
-quality |
2 |
编码图像质量,如1/2像素
MC、ADSP的ME |
|
-single |
|
使用码流控制 |
|
-bitrate |
300 |
码流大小,单位为Kbps |
为解码器控制台应用程序添加命令行参数。用鼠标右键单击xvid_decraw项目,按照路径"属性→配置属性→调试"输入命令参数-asm -i e:\\bitmp4\\foreman_enc.mp4 -o e:\\bitmp4\\foreman_dec.yuv。参数的意义如表14-3所示。
表14-3 解码器参数说明
|
名称 |
值 |
描述 |
|
-asm |
|
是否使用平台CPU的汇编指令 |
|
-i |
e:\\bitmp4\\foreman_enc.mp4 |
MPEG-4码流文件 |
|
-o |
e:\\bitmp4\\foreman_dec.yuv |
解码后的YUV文件 |
【责任编辑:
云霞 TEL:(010)68476606】