这个问题折腾好几天了,在这里请教大家有没有解决的办法?

LoveIvy 2004-07-26 03:04:11
我现在做了一个局域网语音聊天的东西,可是等做好了以后,在使用的过程中,等用一段时间后,它自己就会死掉,后来调试一检查,原来是执行waveOutWrite时没了反应。
它执行的顺序是这样的,在语音播放时定义了一个回调函数,每当一个缓冲区播放完毕后,便向接收线程发送一个消息,接收线程接到消息后,便接收数据,然后便进行播放,一般情况下,刚开始播放时是不会出错的,等运行一段时间后(可能五六秒钟也可能一个小时)后,当执行到waveOutWrite时便没有反应了,具体代码如下:

// 回调函数
procedure WaveOutProc(HW: HWAVEOUT; MS: Integer; UX: Cardinal; p1: PWAVEHDR; p2: Cardinal); stdcall; far;
begin
if ms = WOM_DONE then
begin
repeat until waveOutUnprepareHeader(hw, p1, Sizeof(WAVEHDR)) = 0;
if ThreadOut <> 0 then PostThreadMessage(ThreadOut, WM_RECVAUDIO, hw, Integer(p1));
end;
end;

// 接收线程
procedure TAudioRecvThread.Execute;
var
p: PWAVEHDR;
ms: MSG;
J: Integer;
error: Integer;
begin
while not Terminated do
begin
GetMessage(ms, 0, 0, 0);
case ms.message of
WM_RECVAUDIO:
begin
P := PWAVEHDR(ms.lParam);
repeat
J := FSocket.RecvBuffer(@(P^.lpData[0]), BufInSize);
until ((FSocket.LastError = 0){ and (J = BufInSize)}) or Terminated;
p^.dwFlags := 0;
p^.dwBufferLength := J;
p^.dwBytesRecorded := J;
repeat
until (waveOutPrepareHeader(ms.wParam, p, Sizeof(WAVEHDR)) = 0) or Terminated;
repeat
until (waveOutWrite(ms.wParam, p, Sizeof(WAVEHDR)) = 0) or Terminated;
end;
WM_TERMINATE: Terminate;
end; // case
end; // while
end;


不知道waveOutWrite这个函数在什么情况下就没有反应了?
...全文
193 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rex_love_Burger 2004-07-28
  • 打赏
  • 举报
回复
up
CDSoftwareWj 2004-07-28
  • 打赏
  • 举报
回复
hehe^^ 不是吧~~~~~~ 周六??要不你改到星期日,我生日你请我吃饭吧

对了推荐你当 版主吧,我不想当了......

你就用这个ID啦?
LoveIvy 2004-07-28
  • 打赏
  • 举报
回复
谢谢大家的帮助,虽然没有解决什么问题,我还是谢谢大家.
现在这个问题已经不了了之,因为我在别的电脑上测试的时候,这个问题已经不再出现了.
可能是我的电脑有问题吧.

周六晚上我要请客,想来的赶紧报名呀!!

联系人:LoveIvy
报名热线:13315985070
LoveIvy 2004-07-28
  • 打赏
  • 举报
回复
CDSoftwareWj(95927) :
不想当,麻烦
以后就用这个ID了。周六我有重要的事情,比你的生日还重要,是我的终身大事,所以不能改的
ly_liuyang 2004-07-28
  • 打赏
  • 举报
回复
呵呵
flyforlove 2004-07-27
  • 打赏
  • 举报
回复
我觉得这种应答式的设计方式不太好,
应该让线程一直接受声音数据,然后申请填充缓冲区,进行播放,再播放完的时候释放缓冲区。

但是这种方式也有不好之处,就是频繁的申请释放,程序速度受影响。

最好的方式是用一个缓冲区环,循环填充播放,只要环足够大的话,不会出现缓冲区溢出,
这样速度也够快了。
CDSoftwareWj 2004-07-27
  • 打赏
  • 举报
回复
LoveIvy(我爱艾维) 这个ID也是你新注册的吧,以前好像不是这个...
CDSoftwareWj 2004-07-27
  • 打赏
  • 举报
回复
hehe^^ 两个...

按 getit911(Windows转Linux中) 说的看看

TAudio 你有吧
getit911 2004-07-27
  • 打赏
  • 举报
回复
参考Taudioio控件
getit911 2004-07-27
  • 打赏
  • 举报
回复
可能是缓冲区溢出。
LoveIvy 2004-07-27
  • 打赏
  • 举报
回复
w95927w(D版第一铁公鸡^^) :
你有几个号?
tonylk 2004-07-27
  • 打赏
  • 举报
回复
up
CDSoftwareWj 2004-07-27
  • 打赏
  • 举报
回复
UP
tonylk 2004-07-27
  • 打赏
  • 举报
回复
“香菇炖鸡肉”??不是竹笋拷肉就可以。。
LoveIvy 2004-07-27
  • 打赏
  • 举报
回复
刚下载了一个,如果解决了,请大家来我家吃香菇炖鸡肉
LoveIvy 2004-07-27
  • 打赏
  • 举报
回复
没有TAudio这个东西,从那里能找到?

CDSoftwareWj(95927):
换个新鲜的
w95927w 2004-07-26
  • 打赏
  • 举报
回复
等你做出来了,我推荐你当多媒体版版主哦 hehe^^

能认出俺来吧.. 嘿嘿
电脑城实习报告五篇 电脑城实习报告 篇1   初踏社会,心情激动、紧张。激动的是我终于可以长大了,可以开始我真正的人生;紧张的是不知自己是否能适应这个社会,战胜这新环境。   我最先到我哥所在的公司做了一个多月,刚进来公司的时候老板就和我聊了很多,问我网络方面会不会,组装和维护计算机有过吗?我当时真是出了一把冷汗,不过还好平日在学校都有这方面的动手,自己的电脑被我也折腾过一段时间,还是游刃有余的回答了经理的问题。记得实习开始的那一天,我是在无聊中度过的,整日无所事事,几乎在办公桌前坐了一天,空闲得让我要打瞌睡了,真希望可以有人叫我帮忙做点事情啊!过了几天后,才开始做事,可是每天就是单纯的组装和维护计算机,我当然全力以赴,尽心尽力做到最好。现在想想其实这就是我的工作。   后来回武汉在电脑城做了一段时间,觉得没有学到什么东西,于是便回家开了一个电脑维修店,这时,有个哥们要搞个网吧,叫我帮忙,当时想没关系的,我有信心,怎么说也跟计算机相关,不懂就多动手多请教应该很快领悟过来的!劳动节第一天我就开始动手实干了。布线、接水晶头、装机、搞网络和调试;其实除了我,还有一个比较有经验的师傅一起做的,
计算机组装实习报告 尊重的老师:您好! 初踏社会,心情激动、紧张。激动的是我终于可以长大了,可以开始我真正的人生;紧张的是不知自己是不是能适应这个社会,战胜这新环境。 我最先到我哥所在的公司做了一个多月,刚进来公司的时候老板就和我聊了很多,问我网络方面会不会,组装和保护计算机有过吗?我那时真是出了一把冷汗,不过还好平日在学校都有这方面的动手,自己的电脑被我也折腾过一段时间,仍是游刃有余的回答了领导的问题。记得实习开始的那一天,我是在无聊中度过的,整日无所事事,几乎在办公桌前坐了一天,空闲得让我要打瞌睡了,真希望可以有人叫我帮忙做点事情啊!过了几天后,才开始做事,可是天天就是单纯的组装和保护计算机,我固然全力以赴,不遗余力做到最好。此刻想一想其实这就是我的工作。 计算机组装实习报告全文共3页,当前为第1页。后来回武汉在电脑城做了一段时间,感觉没有学到什么东西,于是便回家开了一个电脑维修店,这时,有个哥们要弄个网吧,叫我帮忙, 那时想没关系的,我有信心,怎么说也跟计算机相关,不懂就多动手多请教应该很快领悟过来的!劳动节第一天我就开始动手实干了。布线、接水晶头、装机、弄网络和调试;其实除我,
计算机根底实训报告   导语:四年的大学生活,让我对计算机理论知识有了一定的了解,但实践出真知, 唯有把理论与实践相结合,才能更好地为社会效劳,下面是收集的计算机根底实训,欢 迎大家参考。   我最先到我哥所在的公司做了一个多月,刚进来公司的时候老板就和我聊了很多, 问我网络方面会不会,组装和维护计算机有过吗?我当时真是出了一把冷汗,不过还好 平日在学校都有这方面的动手,自己的电脑被我也折腾过一段时间,还是游刃有余的答 复了经理的问题。记得实习开始的那一天,我是在无聊中度过的,整日无所事事,几乎 在办公桌前坐了一天,空闲得让我要打瞌睡了,真希望可以有人叫我帮助做点事情啊! 过了几天后,才开始做事,可是每天就是单纯的组装和维护计算机,我当然全力以赴, 尽心尽力做到最好。现在想想其实这就是我的工作。   后来回武汉在电脑城做了一段时间,觉得没有学到什么东西,于是便回家开了一个 电脑维修店,这时,有个哥们要搞个网吧,叫我帮助,当时想没关系的,我有信心,怎 么说也跟计算机相关,不懂就多动手多请教应该很快领悟过来的!劳动节第一天我就开 始动手实干了。布线、接水晶头、装机、搞网络和调试;其实除了我,还有一个比较有 经历的师傅一起做的,我一边做还可以一边学,他也会在一边指导,很快我对一些一直 没接触过的事物了解过来!就这么一搞假期一下子就过去了,每天都是早上忙到晚上, 很累,从未那么累!   当网吧搞好后,那个师傅也走了,以后的事情都要我一个人去解决了,处理网吧的 电脑,打印机的故障,不知道是否能够顺利解决,而当真正将故障排除后,心里头有种 说不出的快乐,我知道我的能力十分有限,但我始终没怕过,让我自己去摸索自己去解 决,就算遇到实在不行的话,我会求助同学和朋友,给我做技术支持。我不怕问题的到 来,因为问题总是可以得到解决的!通过这样我学习了许多,成长了不少。   这个五月确实很累,每天拖着疲惫的身子回家,但是后面也渐渐就习惯了。不断有 新的知识学到,心里有一种充实感。大概在7、8月的时候,一个同学联系我一起做网站 ,网页制作可是我大学期间最喜欢的一个科目,现在竟然可以让我在工作中实践,我真 的很开心。但是做了一段时间后,就没有什么劲了,于是便把网站卖了,在家里安心做 事,在家里什么都好,就是信息没有武汉快,幸好有电脑,知识也慢慢的学的多了,时 不时上网找找资料,掌握的也就越多了。   在这段实习的时间里,我经历了很多以前没有的事,就比方第一次领工资虽然只是 一点点的钱,但却是我人生的转折点,一个人在他的学生时代最重要的是学习东西,增 长见识,锻炼能力,尤其在大学学习时候,参于社会实践活动是一个很好的锻炼时机, 赚钱不是主要的,作为学生,能赚多少钱,等你毕业了有的是赚钱的时机,只要有知识 和能力,智慧,你就可以找到好的工作。   实习是为将来打根底的重要阶段,珍惜自己每一个工作的时机,不管什么人,什么 学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事 情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经 历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。   以上就是我这些日子来的体会,我的缺乏之处希望老师给予纠正和指导,谢谢!   经过短短一星期的计算机实训,我深深体会到电脑的神奇和微妙;也意识到自己在 计算机上还有许多缺乏。   老师布置了一些的作业给我们操练,在老师精心的指导下我已把Excel,word,out look,powerpoint等操作的很好了!现在我们已步入大学,经过半年的在校学习,对电 脑还只是初步的认识和理解,但在这学期期间,一直忙于理论知识的学习,没能有时机 放开课本,真正切身感受计算机魅力,所以在实训之前,电脑对我们来说是比较抽象的 ,但通过这次实训,我们揭开了她神秘的面纱,离我们不再遥远!据我了解,大多数同 学都以前接触过电脑,也有玩过一些游戏,却不懂操作一些对我们以后工作有用的系统 。对于我们所学的计算机知识渗透较少,之前都是老师操作为主。此次实训就不同了, 同学们都作了充分准备,在活动中同学们都提前来到教室上课,每位同学都认真的操作 、练习;听着"嗒嗒"的打字声,心里真的不亦乐乎!和我们一同参与实训的还有姚远老 师和滕晓焕老师,在实训中也分别给予了我们指导,并且做详细的讲解,这次实训活动 十分成功,除了各位同学的充分准备,还要感谢学院和食品系的各位领导及专业老师, 没有他们做出努力,给学生手操的平台。   通过这次实训,我们对电脑有了更深刻的认识,做二十一世纪现代人不但要有过硬 的理论知识,良好的心理素质,安康的体魄,还要有超强的电脑操作能力,正所谓"秀才 不出门,便知天下事"为一名食品专业学生来说,必须有较广的社交圈和开阔的知识面, 所以要把电

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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