首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
专题开发/技术/项目
多媒体/流媒体开发
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
如何利用DirectSound的流缓冲实现实时接收音频数据
[已结帖,结帖人:xiansheng00]
加为好友
发送私信
在线聊天
xiansheng00
等级:
可用分等级:
贫农
总技术分:
204
总技术分排名:
60084
结帖率:
95.24%
发表于:
2008-08-19 11:57:02
楼主
各位大侠!
小弟最近在做关于DirectSound,现在我想实现一个接口给别人用,如果我不用DirectSound里的事件机制,而采用GetCurrentPosition函数获得写数据的指针。但我在本机上试验了一下,如果读的数据过大,就会覆盖掉之前载入缓冲区的数据。如果自己维护一个写的指针(每次Lock的时候把dwOffset值记下来)就不会产生覆盖的情况,但是要把数据塞给DirectSound的缓冲区不是由我控制(何时塞我并不知道,因为我没负责网络那边的情况。并且我只能提供诸如:SendSoundData给负责接收网络数据的伙伴调用)。还有就是我不能再另外开辟缓冲区,只能用DirectSound的缓冲区(要求这样做)。考虑到从网络上接收到的数据量可能很大。我调用Lock函数的时候有可能会返回两个地址来接收数据,假设数据过大,第二个地址从缓冲区的开始位置填写数据,那么之前没播放的数据有可能会被新来的数据覆盖掉。
还有个问题是如果要采用流缓冲模式的话,要用到DSBPLAY_LOOPING指定它循环播放,但数据来的比较晚,那有从头播放以前的数据,这在视频会议里是不能出现的。
不知各位有什么好的办法?
问题点数:
100
回复次数:
5
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
SoftSoftSoft2008
等级:
可用分等级:
富农
总技术分:
2232
总技术分排名:
9766
发表于:
2008-08-19 13:56:38
1
楼 得分:
10
看一看 DirectX 里面的例子啊。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xiansheng00
等级:
可用分等级:
贫农
总技术分:
204
总技术分排名:
60084
发表于:
2008-08-19 18:04:57
2
楼 得分:
0
DirectX里面的例子都是基于与本地的WAVE文件,我的需求是播放网络传送过来的数据。这些数据还要考虑网络阻塞。来慢了要考虑缓冲区里面之前已经播放的数据的清空
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
firebolt2002
霹雳
等级:
可用分等级:
掌柜
总技术分:
3846
总技术分排名:
5458
发表于:
2008-08-21 23:45:14
3
楼 得分:
90
如果考虑网络阻塞的情况,你可以直接操作dsound的主缓冲区,有数据就直接播放,网络阻塞就写入静音数据。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
asddg67
等级:
可用分等级:
中农
总技术分:
810
总技术分排名:
23184
发表于:
2008-08-22 09:11:05
4
楼 得分:
0
Sample tool
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kaitijunzi
恺悌君子
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
322578
发表于:
2008-08-23 17:01:07
5
楼 得分:
0
用DirectSound的朋友!请教一个问题,用DirectSound编写的录音程序,能实现4声道录音吗?
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友