- 浏览: 46184 次
- 性别:
- 来自: 北京
最新评论
2009-09-02
-
CONE 36 Panic的几种可能的原因
--SDK文档的描述:
Open handles were found during application shutdown
引起CONE 36 panic的原因有以下几种:
1)网上经常看到的“使用RHTTPTransaction后产生CONE 36 Panic”
2)Load 了某个RLibrary,没有将其Close掉;
3)Connect了某个Client,没有将其Close;
4)RFs,RFileLogger connect,使用完未将其Close;
5)RThread, RHeap, RArray等不需要Open(),但是需要Close()或者Reset()
-
软件混音(原文出处:http://blog.csdn.net/tangl_99/archive/2005/11/07/524647.aspx)
--Symbian 6.1上实现的混音是个比较麻烦的问题,因为程序只能同时播放一个音乐,实现混音就需要程序自己来实现。下面是我从newlc上找到的一个关于PCM脉冲编码的音频信号的混音实现,其中包含了一个关键的混音算法!
Hi !!!!
I am not sure weather I have fully understood your question or not, I persume that you are asking
"How can we mix two or more audio stream", If this is the question then I am explaning below the
mixing of the two audio stream (You Can Mix More Audio Stream),
Step 1,
Get the Raw data of the two files, (Example, of the sample 8bit and 8Kh, means one sample is of
8bit)
Step 2
Let the two audio signal be A and B respectively, the range is between 0 and 255. Where A and B are the
Sample Values (Each raw data) And store the resultant into the Y
If Both the samples Values are possitve
Y = A + B - A * B / 255
Where Y is the resultant signal which contains both signal A and B, merging two audio streams into single
stream by this method solves the problem of overflow and information loss to an extent.
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)))
Else Y = A + B - (A * B / (2 pow(n-1))
Step 3.
Add the Header to the Resultant (mixed) data and play back.
If some thing is unclear and ambigious let me know.
Regards
Ranjeet Gupta.
还有简单C程序示意代码,但是其中包含了核心算法:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> int main(int argc,char *argv[]) { char mixname[255]; FILE *pcm1, *pcm2, *mix; char sample1, sample2; int value; pcm1 = fopen(argv[1],"r"); pcm2 = fopen(argv[2],"r"); strcpy (mixname, argv[1]); strcat (mixname, "_temp.wav"); mix = fopen(mixname, "w"); while(!feof(pcm1)) { sample1 = fgetc(pcm1); sample2 = fgetc(pcm2); if ((sample1 < 0) && (sample2 < 0)) { value = sample1 + sample2 - (sample1 * sample2 / -(pow(2,16-1)-1)); }else{ value = sample1 + sample2 - (sample1 * sample2 / (pow(2,16-1)-1)); } fputc(value, mix); } fclose(pcm1); fclose(pcm2); fclose(mix); return 0; }
注: 附件为具体实现代码
实现功能:
- 用CMdaAudioOutputStream实现以流形式播放WAV音频文件
- 音频混音功能:仅限于具有相同采样率,采样深度以及声道数的多路音频文件
- AudioEngine.rar (3 KB)
- 下载次数: 2
发表评论
-
VC下使用Macro (vbs)来实现标准注释的自动添加
2010-11-15 10:40 1951在VC6.0中,Tools->Macro可以直接录制宏, ... -
TCP/UDP包大小
2010-10-29 14:22 1785UDP一次发送数据包的大小,TCP一次发送数据包的大小。MTU ... -
Excel文件操作类
2010-09-06 10:50 1119Excel文件操作封装类 可实现以下功能: 1、打开已有E ... -
Visual C++ 6.0 操作excel2003进行图表绘制
2010-08-13 13:38 5252在实现对excel2003进行读写的基础之上,可以实现exce ... -
【转】Visual C++ 6.0 实现对excel2003的读写
2010-08-13 09:35 48221. 导入excel.h,excel.cpp文件 具 ... -
【转】文本文件与二进制文件
2010-08-04 10:43 1724网上关于文本 ... -
【转】VC++6.0共享内存
2010-08-04 09:25 2143VC++6.0共享内存技术总结 程序1 -- 建立共享区,写 ... -
【转】VC++中进程间相互通信的十一种方法
2010-08-04 09:05 1718进程通常被定 ... -
【转】多线程技术在VC++串口通信程序中的应用研究
2010-08-04 09:00 33661. 概述 在现代的各种实时监控系统和通信系统 ... -
【转】虚拟机(VMware)ubuntu9.04下挂载windows硬盘
2010-08-04 08:35 2170以挂载 F 盘 为例: 1. 关闭ubuntu。 ... -
技术备忘录之十
2009-09-02 17:13 9532009-09-01 symbian中的Log文件 ... -
技术备忘录之九
2009-09-02 17:08 11642009-08-26 symbian SDK第一次 ... -
技术备忘录之八
2009-08-09 20:18 8612009-08-09 VC中全局变量的定义- ... -
技术备忘录之七
2009-08-07 21:39 9772009-08-07 VC中文件读写 今天花了几个小 ... -
技术备忘录之六
2009-08-06 23:02 7922009-08-06 carbide中导入M ... -
技术备忘录之五
2009-08-05 22:24 8332009-08-05 symbian使用的设计模式:采用 ... -
技术备忘录之四
2009-08-03 18:48 10142009-08-03 Symbian开发之Carbide ... -
技术备忘录之三
2009-07-30 15:04 7912009-07-29 eclipse的联想功能-- ... -
技术备忘录之二
2009-07-28 23:07 10052009-07-28 structs2标签< ... -
技术备忘录之一
2009-07-28 09:23 9662009-07-27 eclipse及插件安装和配 ...
相关推荐
基于Android平台的开放性和丰富的API,实现备忘录应用的技术可行性较高。通过SQLite数据库管理用户的备忘录数据,可以实现本地存储和检索。对于SD卡访问,Android提供API接口,使得应用可以读写外部存储。 五、功能...
- **打印备忘录或用电子邮件发送备忘录**:导出备忘录。 #### 二十一、时钟 - **关于时钟**:多功能时钟应用。 - **设定世界时钟**:查看全球时间。 - **设定闹钟**:设置闹钟提醒。 - **使用秒表**:使用秒表计时...
- **打印备忘录或用电子邮件发送备忘录**:说明了如何分享备忘录内容。 #### 十七、时钟 - **关于时钟**:概述了时钟应用的主要功能。 - **设定世界时钟**:介绍了如何设置世界时钟。 - **设定闹钟**:讲解了如何...
行为型模式关注对象的行为和交互,共有十一种:备忘录模式、责任链模式、模板方法模式、策略模式、命令模式、中介者模式、观察者模式、状态模式、迭代子模式、访问者模式和解释器模式。 * 备忘录模式:在不破坏封装...
- **在多个帐户中使用备忘录**:同步备忘录至其他设备。 #### 十八、提醒事项 - **已计划的提醒事项**:设定未来某时间提醒。 - **位置提醒事项**:到达特定地点时触发提醒。 - **提醒事项设置**:调整提醒事项...
备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,以便以后恢复。C++中,备忘录类存储关键数据,而发起者类可以恢复到之前的状态。 十七、观察者模式 观察者模式定义了对象之间的一对多依赖关系,当一个...
16项监理工作制度,包括图纸会审、施工组织设计审核、开工报告审批、材料检验、隐蔽工程验收、质量监理、事故处理、检验、进度监督、造价监督、报告制度、竣工验收、现场协调会、备忘录签发、工程款和索赔签审等 ...
行为型模式包括十一中设计模式:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式...
备忘录模式是一种行为型设计模式,它捕获一个对象的内部状态,并允许稍后恢复到以前保存的状态。这样,对象可以在内部状态改变时创建快照,以便之后能够恢复到这个状态。 **应用场景:** 当需要记录对象的内部状态...
备忘录模式在不破坏封装的前提下,捕获和存储一个对象的内部状态,以便以后恢复它。 二十、观察者模式(Observer) 观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象...
备忘录模式是一种行为型设计模式,它捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 **比喻理解:** 假设你和MM正在进行一场深入的对话,但是突然有事需要离开...
- **备忘录方法**:讨论如何使用备忘录存储子问题的解来避免重复计算。 - **经典动态规划问题**:分析背包问题、最长公共子序列等问题的解决方案。 ##### 九、图算法(Chapter 9: From A to B with Edsger and ...
- **系统目标**: 通讯录、备忘录与财务管理。 - **主要功能**: - 通讯录信息管理(姓名、联系方式等); - 备忘录信息管理(时间、地点、事件等); - 日记信息管理(时间、地点、事情等); - 个人财务管理...
对于需要保留记录的信息,即使内容简单,也应采用**非正式书面沟通**的方式(如备忘录),而非口头沟通。这有助于确保信息被正确记录和传达。 ### 十五、控制图的应用 **控制图**是一种质量控制工具,用于监测过程...
- **个人办公**:支持个人日程安排、工作备忘录等功能。 - **系统维护子系统**:负责系统的日常维护和技术支持工作。 - **系统管理**:包括用户权限管理、资源分配等工作。 2. **企业内部信息网站** - **企业...
备忘录模式用于在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 以上是《设计模式--基于C#的工程化实现及扩展》一书中涉及的主要设计模式及其在C#和.NET...
- 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的先前状态。 - 状态模式:允许对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的类...
如单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、...备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式...