xvid解码时提示Division by zero或Access violation的错误该如何解决?

51flyou 2007-01-04 04:20:50
1.我使用xvid mpeg-4 codec filter编码后网络发送数据、从网络接收数据后用xvid mpeg-4 video decoder filter解码.就算编码参数使用默认值,只要有b帧,解码时当出现第2个i帧时就会出现Division by zero的错误.把max_bframes设为0则不会出现任何问题,其实这也是禁止编码b帧.解码时能够保证是从i帖开始解码、并且数据没有错误.

2.当我不使用xvid filter,而直接使用xvidcore.dll提供的api解压缩数据时则会出现Access violation的错误.错误就发生在xvidcore的
decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward)这个函数中,
并且是
MACROBLOCK *mb = &dec->mbs[y * dec->mb_width + x];
MACROBLOCK *last_mb = &dec->last_mbs[y * dec->mb_width + x];
mb,last_mb里面的某些变量没有设置值.


请问这些该如何解决,大家提示下.
谢谢了.
...全文
417 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
何亮-1108 2007-01-10
  • 打赏
  • 举报
回复
理论上,所有的帧都可以丢!
只是解码出来的图像没法看而已了,I帧最好别丢!
何亮-1108 2007-01-05
  • 打赏
  • 举报
回复
那就是确定解码器的问题了?
是这样吗?
那你把你录下来的m4v文件发给我,我帮你看看是不是xvid的解码器问题!
heliang1108@vip.sina.com
qq: 421351916
Oversense 2007-01-05
  • 打赏
  • 举报
回复
自己写的程序有bug,或者xvid设定有问题
51flyou 2007-01-05
  • 打赏
  • 举报
回复
是我的问题,在把编码后的数据送入buf时,如果buf满了就没送入.
结果解码就有问题.

想问下大家,编码类型为p,b的帧可以丢弃吗?i帧呢?
51flyou 2007-01-04
  • 打赏
  • 举报
回复
to heliang1108:

"先排除网络问题!单纯的把编码出来的数据给解码器,看看是否有问题!"

已经是这样做了,但还是存在这样的问题.
何亮-1108 2007-01-04
  • 打赏
  • 举报
回复
先排除网络问题!单纯的把编码出来的数据给解码器,看看是否有问题!
51flyou 2007-01-04
  • 打赏
  • 举报
回复
to heliang1108:

为了避免网络传输造成的问题,我先做了一个测试,把编码后的数据存在本地一个buf,然后从这个buf中读数据解码后显示,因此数据应该不存在问题,即便这样,问题还是存在.

谢谢你的回复!
何亮-1108 2007-01-04
  • 打赏
  • 举报
回复
首先,xvid的解码器肯定不会有问题,或者说可能性非常小!
于是问题出在编码器或者网络传输上,后者的可能性非常大!

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧