用户:
密码:
无安全提问
母亲的名字
爷爷的名字
父亲出生的城市
您的一位老师的名字
您个人计算机的型号
您最喜欢的餐馆名称
驾照的最后四位数字
答案:
我要注册
忘记密码
加入收藏
设为首页
开发文档
CNJM首页
业界新闻
手机软件
终端应用
资源下载
EclipseME
CNJM论坛
频道列表
J2ME开发
176篇
服务器端开发
33篇
JAVA语言
71篇
游戏与图形
101篇
WindowsMobile开发
6篇
Symbian开发
61篇
Brew开发
36篇
其它开发平台
6篇
热点文章
向大家推荐几个比...
17493次
[推荐]symbian入门...
10526次
制作sis文件全攻略
9420次
Symbian Series60...
8215次
写给symbian os开...
8089次
Series 60图形开发...
7917次
[转帖]Symbian OS ...
7909次
在.pkg中定义条件...
7543次
请问有大虾知道如...
7383次
连载:Series 60应...
7279次
在Symbian OS中读...
7052次
蔡鸟的一些学习笔...
6559次
文章搜索
搜 索
按 照
文章关键字
责任编辑
文章标题
文章内容
频 道
全部频道
J2ME开发
服务器端开发
JAVA语言
游戏与图形
WindowsMobile开发
Symbian开发
Brew开发
其它开发平台
Symbian Series60上实现混音的办法
编辑:rocks 审核:rocks 文章来源:CSDN博客
关键词:symbian 发表日期:2006-02-23 17:42:45 浏览次数:8216次
本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>
来自:http://www.cnjm.net/tech/article965.html
[转载于CSDN博客]
在Symbian 6.1的CMdaAudioPlayer是无法实现混音的。如果你当前正在播放一段音乐,那么此时如果再播放另外一段音乐,那么之前的音乐就会被迫停止了。那么Symbian Series60上就无法实现混音了吗?不是的,我们看到很多游戏里面都实现了混音,那么他们是怎么做的呢?
显然,我们只能从底层下手。Symbian提供了一个直接播放PCM音频编码的接口,CMdaAudioOutputStream。这个接口是可以直接播放PCM音频编码的。关于PCM编码,请查看一下关于数字通讯方面的资料,其实就是对于连续的波进行离散地采用量化,最后形成的数字编码型号。WAV里面的音频数据大部分都是PCM编码的。
混音的实现方法有两个。
第一个就是直针对两个采样的PCM编码进行线性插值。其实在图像上,图像的混合也是通过有名的alpha混合实现的,alpha混合是一个典型线性插值。
color3 = color1 * alpha + color2*(1-alpha)
不过声音和图像有点不同,声音是波动信号。图像是静态的。也就是说,声音的产生是根据PCM编码的变化值(换句话说,是根据其一阶导数)呈现出来的。声音并不会因为PCM编码的大小而呈现不同的声音,而是根据一个连续区间内的PCM编码的变化幅度来呈现的。
这第一个算法就是类似图像上的alpha混合算法:
If the range of 8-bit sampling is between -127 to 128
If both A and B are negative Y = A +B - (A * B / (-127))
Else Y = A + B - A * B / 128
Similarly for the nbit (ex 16bit data)
For n-bit sampling audio signal
If both A and B are negative Y = A + B - (A * B / (-(2 pow(n-1) -1)))
JAVA手机网[www.cnjm.net]
Else Y = A + B - (A * B / (2 pow(n-1))
第二个办法,就不需要进行类似的数学运算了。这个办法有点类似我们很早以前的那种布置网点的图像混合办法。在以前画漫画的时候经常用到的。以前还专门有卖网点纸的呢,用来实现漫画中的半透明效果。
在混音上,这个办法更加有效。简单来说,就是分成很多微小的时间片,然后在不同的时间片内播放不同的音乐。也有点类似CPU的并发执行一样。从整体上来看,似乎就是几段音乐同时播放了。而为什么在音频上实现效果比图像上更好呢?还是上次那个原因,因为声音是动态播放的。人的耳朵就很难分析来两个那么微小的时间片内的音乐了。
关于这个办法具体的实现,其实在NOKIA的官方网站上已经有了。http://direct.www.forum.nokia.com/info/sw.nokia.com/id/70a2bde5-9b14-41b3-89ae-198b0d8d380d/SoundMixer_Example_v1_0.zip.html
相信很多人在Symbian实现混音的办法都是直接抄袭这个NOKIA实现的例子。它支持16个不同的Channel来混音。首先新开一个线程,然后这个线程就是把多个要播放的PCM编码缓冲合成到一个缓冲区,然后再不断地把这个缓冲区的数据写给CMdaAudioOutputStream里面去。
来自:http://www.cnjm.net/tech/article965.html
相关文章
给Symbian的模拟器换皮肤(换成我们喜欢的手机皮肤)
[2007-07-08]
编写安全的Symbian C++游戏代码
[2007-07-07]
Symbian将在中国开设分公司
[2007-01-11]
Skype首度支持S60手机 微软独占优势不再
[2006-02-23]
2010年微软和Linux智能手机将超越Symbian
[2006-02-23]
在.pkg中定义条件判断60系列平台的版本
[2006-02-17]
在Symbian OS中读取ZIP文件
[2006-02-17]
最新评论
网站简介
|
关于版权
|
广告服务
|
网站地图
|
联系我们
Copyright © www.CNJM.net, All rights reserved
中国JAVA手机网 版权所有
ICP备案:
京ICP备041452