草民
像草一样的农民!

sourceforge上下载xvid1.1.2源码编译。编译需要nasm汇编器,拷贝到VCtool目录下。
在VC6.0下,可以直接打开编译
如果是VC7.0以上,需要修改所有汇编命令成如下所示
nasm -f win32 -DPREFIX -I$(InputDir) -o $(IntDir)\$(InputName).obj $(InputPath)
编译成功。

另外在使用的时候老是碰到除零错误。错误发生在
libvidcore->decoder.c文件下面这个函数里面
static void
decoder_bframe(DECODER * dec,
        Bitstream * bs,
        int quant,
        int fcode_forward,
        int fcode_backward)
的 如下代码处:
 case MODE_DIRECT_NONE_MV:
        for (i = 0; i < 4; i++) {
            mb->mvs[i].x = last_mb->mvs[i].x*dec->time_bp/dec->time_pp + mv.x;
          mb->mvs[i].y = last_mb->mvs[i].y*dec->time_bp/dec->time_pp + mv.y;

          mb->b_mvs[i].x = (mv.x)
            ?  mb->mvs[i].x - last_mb->mvs[i].x
            : last_mb->mvs[i].x*(dec->time_bp - dec->time_pp)/dec->time_pp;
          mb->b_mvs[i].y = (mv.y)
            ? mb->mvs[i].y - last_mb->mvs[i].y
            : last_mb->mvs[i].y*(dec->time_bp - dec->time_pp)/dec->time_pp;
        }

        decoder_bf_interpolate_mbinter(dec, dec->refn[1], dec->refn[0],
                        mb, x, y, bs, 1);
        break;


没办法,源码也看不懂,但是又必须使用,加了一句:
if(dec->time_pp == 0)
    continue;
总算不出错了。

不知道那位兄弟碰到类似的问题,有什么更好的办法请通知我一声

posted on 2006-11-10 17:08 草民 阅读(722) 评论(2)  编辑 收藏 引用
Comments
  • # re: 使用XVID碰到的问题
    zhong
    Posted @ 2007-06-15 21:27
    兄弟,我也出现此情况,但我不会编译,
    能否把你已经编译好的文件发一份给我 internetzs@msn.com
    thank you very much.  回复  更多评论   
  • # re: 使用XVID碰到的问题[未登录]
    草民
    Posted @ 2007-06-27 14:30
    @zhong
    编译过的文件找不到.编译的方法我已经说过了.
    需要nasm汇编器,上sourceforge上可以找到,下载之后解压,里面有个nasmw.exe的文件,改名为nasm.exe放到vc目录的tools下面
    如果有vc6.0编译的话直接打开工程文件编译即可
    如果是vc2003以上的话,打开工程文件之后,里面的会多很多引号.全部修正成如下格式:
    nasm -f win32 -DPREFIX -I$(InputDir) -o $(IntDir)\$(InputName).obj $(InputPath)
    即可编译  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理