pango99
驱动牛犊
驱动牛犊
  • 注册日期2001-08-21
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1593回复:8

怎样开发内存缓冲的程序

楼主#
更多 发布于:2002-09-30 06:04
在笔记本上开发一视频采集软件,由于笔记本硬盘太慢,造成采集丢帧(也就是将视频数据丢失了),因此想出了在物理内存中开辟一区域做缓冲区(100M以上),将采集到的数据先往缓冲区里放,再有另一专门的线程将缓冲区中的数据写回硬盘.可程序写完后发现,就是将缓冲区加大到200M,程序运行没几秒钟,缓冲区就溢出了,我用的笔记本硬盘是4200转的,按理说在物理内存中开200M的缓冲区应该够弥补硬盘速度的缺陷的,是不是我的想法有什么问题?或是有没有什么办法可加快WriteFile()写盘的速度?
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-09-30 09:23
视频采集卡的速率是多少
alan2u
驱动巨牛
驱动巨牛
  • 注册日期2001-12-11
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分5926分
  • 威望43813点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-09-30 09:24
加快写磁盘的速度的唯一办法就是减少磁头移动
wlrwx
驱动小牛
驱动小牛
  • 注册日期2002-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望11点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-09-30 09:25
如果采集速率大于磁盘IO的话,那就不行。 :D :D :D
真正的浪子―――― 是掠过城市的微风,每个人都能感到他的清新,可没有人能留住...... 亦是划过天际的流星,所有人都能仰望他夺目的光芒,没有人能触及...... 风止于森林,流星损于黄土......非凡浪子归于他的最爱......
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-09-30 11:44
数据不能很快的写到硬盘上去,buffer再大也没有用啊。
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-09-30 11:49
或许可以这样,我认为你的想法是正确的,没有逻辑上的错误,但是需要有一个同步措施。即保证缓冲不会溢出,又不会遗漏数据,如果两者速度极端不匹配,想做到完全不丢视频数据很难,但是至少可以改观不少。
在写缓冲的时候,先检查缓冲是否用完,如果用完,则转为直接写盘,以保证数据量大时不丢失数据。
Tom_lyd
pango99
驱动牛犊
驱动牛犊
  • 注册日期2001-08-21
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-09-30 19:11
忘了说一点,其实造成写盘速度慢的真正原因是由于程序要一边播放一AVI文件,一边进行采集,造成了硬盘磁头移动太频繁,所以我想出内存缓存的办法来解决,不知可行不可行?
wlrwx
驱动小牛
驱动小牛
  • 注册日期2002-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望11点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-01 00:00
忘了说一点,其实造成写盘速度慢的真正原因是由于程序要一边播放一AVI文件,一边进行采集,造成了硬盘磁头移动太频繁,所以我想出内存缓存的办法来解决,不知可行不可行?


只要绝对IO速度(最大磁盘IO速度-播放对速度的影响)大于数据采集速度就可行,否则是不可能的... :mad: :mad: :mad:
真正的浪子―――― 是掠过城市的微风,每个人都能感到他的清新,可没有人能留住...... 亦是划过天际的流星,所有人都能仰望他夺目的光芒,没有人能触及...... 风止于森林,流星损于黄土......非凡浪子归于他的最爱......
xiaogame
驱动牛犊
驱动牛犊
  • 注册日期2002-10-01
  • 最后登录2002-10-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-10-01 02:45
几秒就用完200m,笔记本硬盘现在没有这么快哦,就是台式机上的最新式硬盘都勉强啦
游客

返回顶部