`
zyy200411
  • 浏览: 46187 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

技术备忘录之十一

阅读更多

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;
}

 

注: 附件为具体实现代码

     实现功能:

  1. 用CMdaAudioOutputStream实现以流形式播放WAV音频文件
  2. 音频混音功能:仅限于具有相同采样率,采样深度以及声道数的多路音频文件
分享到:
评论

相关推荐

    毕业论文安卓78个人备忘录(app).doc

    基于Android平台的开放性和丰富的API,实现备忘录应用的技术可行性较高。通过SQLite数据库管理用户的备忘录数据,可以实现本地存储和检索。对于SD卡访问,Android提供API接口,使得应用可以读写外部存储。 五、功能...

    ipod中文说明书

    - **打印备忘录或用电子邮件发送备忘录**:导出备忘录。 #### 二十一、时钟 - **关于时钟**:多功能时钟应用。 - **设定世界时钟**:查看全球时间。 - **设定闹钟**:设置闹钟提醒。 - **使用秒表**:使用秒表计时...

    iPhone4S中文说明书

    - **打印备忘录或用电子邮件发送备忘录**:说明了如何分享备忘录内容。 #### 十七、时钟 - **关于时钟**:概述了时钟应用的主要功能。 - **设定世界时钟**:介绍了如何设置世界时钟。 - **设定闹钟**:讲解了如何...

    C++ 23种设计模式的实现

    行为型模式关注对象的行为和交互,共有十一种:备忘录模式、责任链模式、模板方法模式、策略模式、命令模式、中介者模式、观察者模式、状态模式、迭代子模式、访问者模式和解释器模式。 * 备忘录模式:在不破坏封装...

    iphone_user_guide_ch.pdf

    - **在多个帐户中使用备忘录**:同步备忘录至其他设备。 #### 十八、提醒事项 - **已计划的提醒事项**:设定未来某时间提醒。 - **位置提醒事项**:到达特定地点时触发提醒。 - **提醒事项设置**:调整提醒事项...

    c++设计模式 经典的

    备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,以便以后恢复。C++中,备忘录类存储关键数据,而发起者类可以恢复到之前的状态。 十七、观察者模式 观察者模式定义了对象之间的一对多依赖关系,当一个...

    建筑工程监理实施规划范本.doc

    16项监理工作制度,包括图纸会审、施工组织设计审核、开工报告审批、材料检验、隐蔽工程验收、质量监理、事故处理、检验、进度监督、造价监督、报告制度、竣工验收、现场协调会、备忘录签发、工程款和索赔签审等 ...

    设计模式简介

    行为型模式包括十一中设计模式:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式...

    java设计模式解释

    备忘录模式是一种行为型设计模式,它捕获一个对象的内部状态,并允许稍后恢复到以前保存的状态。这样,对象可以在内部状态改变时创建快照,以便之后能够恢复到这个状态。 **应用场景:** 当需要记录对象的内部状态...

    设计模式精解-附c实现源代码

    备忘录模式在不破坏封装的前提下,捕获和存储一个对象的内部状态,以便以后恢复它。 二十、观察者模式(Observer) 观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象...

    以轻松的语言比喻了java的23种模式

    备忘录模式是一种行为型设计模式,它捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 **比喻理解:** 假设你和MM正在进行一场深入的对话,但是突然有事需要离开...

    Python Algorithms, 2nd Edition

    - **备忘录方法**:讨论如何使用备忘录存储子问题的解来避免重复计算。 - **经典动态规划问题**:分析背包问题、最长公共子序列等问题的解决方案。 ##### 九、图算法(Chapter 9: From A to B with Edsger and ...

    大数据库课程设计题目选题参考(16个经典实例及参考资料).doc

    - **系统目标**: 通讯录、备忘录与财务管理。 - **主要功能**: - 通讯录信息管理(姓名、联系方式等); - 备忘录信息管理(时间、地点、事件等); - 日记信息管理(时间、地点、事情等); - 个人财务管理...

    PMPWAY.COM考前冲刺模拟题第1套 答案及解析

    对于需要保留记录的信息,即使内容简单,也应采用**非正式书面沟通**的方式(如备忘录),而非口头沟通。这有助于确保信息被正确记录和传达。 ### 十五、控制图的应用 **控制图**是一种质量控制工具,用于监测过程...

    中国联通信息化管理总体方案.docx

    - **个人办公**:支持个人日程安排、工作备忘录等功能。 - **系统维护子系统**:负责系统的日常维护和技术支持工作。 - **系统管理**:包括用户权限管理、资源分配等工作。 2. **企业内部信息网站** - **企业...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)

    备忘录模式用于在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 以上是《设计模式--基于C#的工程化实现及扩展》一书中涉及的主要设计模式及其在C#和.NET...

    java设计模式例子讲解.doc

    - 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的先前状态。 - 状态模式:允许对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的类...

    Java基础知识点总结.docx

    如单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、...备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式...

Global site tag (gtag.js) - Google Analytics