NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
阅读:8909回复:25

ARM9上音频驱动的问题,急急急!

楼主#
更多 发布于:2007-12-04 12:06
有个问题困扰很久了,调通了音频驱动和触摸屏,但是发现一个问题,
当在屏幕上快速的画一个弧线时:
1、如果关闭点击屏幕的声音,那么在手写输入和触摸屏测试程序中的弧线都是圆滑的。
2、如果打开点击屏幕的声音,那么在触摸屏测试程序中的弧线是圆滑的,但是手写输入的窗口中的弧线的第一笔变成了一根直线,然后才是弧线。也就是说开始的第一点之后的一些点不见了。
(说明一下,通过232口监视触摸屏的数据,然后在PC的画图软件里面按照每个点的坐标连起来,弧线是圆滑的。)

有那位大侠知道这是什么原因造成的呢。
传奇小容
禁止发言
禁止发言
  • 注册日期2017-11-01
  • 最后登录2017-12-16
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望50点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2017-11-13 00:53
用户被禁言,该主题自动屏蔽!
ppoopp
驱动牛犊
驱动牛犊
  • 注册日期2004-05-05
  • 最后登录2013-11-19
  • 粉丝0
  • 关注0
  • 积分192分
  • 威望71点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-25 14:38
我也遇到过这个问题,后来挨个检查播放初始化代码,修改确认减小dealy时间才有所改善,不知道各位有没有其他好的方法
jackylijiesi
驱动牛犊
驱动牛犊
  • 注册日期2007-02-19
  • 最后登录2009-06-02
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-04-16 09:57
你的codec程序loading太大了吧
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-11-08 18:00
是的,人眼对图象的视觉没有耳朵对声音的感觉灵敏.
当然,不同的人对视觉/听觉感觉的灵敏度也是有差异的,就象有的人能提出CD和MP3音质的差别,有的人能在60HZ(甚至75Hz)感觉到屏幕闪烁,而有的人感觉不到.
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
high
论坛版主
论坛版主
  • 注册日期2002-08-10
  • 最后登录2010-07-26
  • 粉丝4
  • 关注0
  • 积分60分
  • 威望655点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分60分
5楼#
发布于:2008-05-20 03:06
视频vdeio时候,如果掉帧,我们不会明显感觉到(24fps的标准,但是15fps的看起来也很连贯)
但是音频audio不行, 人耳对声音比较敏感,所以音频的实时性比较高比较严格.
fanghw
驱动牛犊
驱动牛犊
  • 注册日期2008-03-18
  • 最后登录2008-06-25
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-03-27 09:01
学习学习.............................................................
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-01-22 22:18
这个与音频的初始化无关的,音频驱动在第一次Load的时候就已经初始化好了。所以,操作Touch的时候,不会涉及到音频初始化,只能用到了Codec的数据采集。
但是,这要当前存在一个线程优先级比Touch IST高,则Touch IST将挂起,但Codec的数据采集仍在继续,且存放在FIFO中。
http://hanson.cnblogs.com/
thinkerwin
驱动牛犊
驱动牛犊
  • 注册日期2004-12-17
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分389分
  • 威望43点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-01-12 17:58
引用第15楼NewTech于2007-12-16 12:19发表的  :
这个不是手写识别驱动的问题,是用户UI跟手写的接口的那部分代码,里面只处理了MOUSEMOVE消息的参数,而没有处理缓冲区的数据。


说得不错, 这是系统响应的问题、用户Draw代码问题;尤其在中文版的系统中,这种现象更加突出
我是一只欲飞小小鸟
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
9楼#
发布于:2007-12-18 09:52
用户被禁言,该主题自动屏蔽!
sniper167
驱动中牛
驱动中牛
  • 注册日期2006-07-12
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分13分
  • 威望411点
  • 贡献值0点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-12-17 10:15
这个帖子 是个好帖
[url]http://sniper167.bokee.com[/url]
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-12-16 12:19
这个不是手写识别驱动的问题,是用户UI跟手写的接口的那部分代码,里面只处理了MOUSEMOVE消息的参数,而没有处理缓冲区的数据。
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-12-16 10:40
你用什么手写输入法?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-12-16 02:27
这样做会比较麻烦,因为还牵扯到录音的问题,以及一些硬件内部的切换。
今天忙了一天,跟手写的厂家沟通了一下,拿到一个测试程序,现在问题比较明朗了。

如果在音频驱动中延时,确实会使系统挂起,结果就是好几个点才产生一个MOUSEMOVE的消息,当前的参数反映的就是最后一个点坐标,前面几个点的数据被放到缓冲区中了,而手写只读取MOUSEMOVE消息的参数作为当前的坐标,从而导致从第一点直接画一根直线到当前点,中间点都没有处理。

其实经过测试发现,即便音频驱动没有延时,但是如果系统这是正好在处理一个优先级高的进程,一样会导致2~3点才产生一个MOUSEMOVE消息,只是间隔比较小不太明显摆了。

不知大家对此有没有什么好办法。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2007-12-12 21:16
可以把大部分初始化的代码放到INIT中,就是说系统启动以后只做一次.
以后STOP时只是它CODEC置为STOP状态,
PLAY时让它RUN就行了.
学海无涯
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2007-12-12 17:45
在hwctxt.cpp的HardwareContext::StartOutputDMA()里面,
在这个里面需要初始化音频硬件,需要一定的延时。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-12-09 08:16
你什么地方会延时2ms啊,你这具体是个什么流程.
学海无涯
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2007-12-06 18:54
多谢microsun,但是实际上touch的驱动是有返回数据的。
现在我把延时改到2ms,手写可以工作了。
但是如果播放音乐是有声音的,但是点击屏幕时,声音时有时无了。
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2007-12-05 21:10
应该是系统去执行AUDIO的IST了,这个IST用的时间很长,因而TOUCH驱动没有时间响应,把一部分点丢了.
学海无涯
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-12-05 11:16
问题可以确定是在初始化音频硬件的时候需要延时一段时间,如果这个时间长了就会影响到其他的进程(手写输入)的代码运行,我想问下怎么会出现这样的现象呢。
上一页
游客

返回顶部