Symbian OS音频以及构架

Symbian OS电话里的音频子系统主要包含两种独立的音频数据流。一种是电话声音数据,另一种是多媒体数据。

电话里这两种至关重要的用例要求有良好的音质和长时间通话的能力。专用于声音数据的数字音频总线用来保证这些需求。

在Symbian OS电话上实际使用的原始硬件音频格式是16位的脉冲编码调制(pulse code modulated, PCM)数据。声音的质量范围介于通话时的单声道8kHz和音乐播放时的立体声48kHz之间。

PCM音频硬件可以很简单,只要求很少的设置以保证音量和选择正确的输出路径。然后所要做的全部工作把数据按照所要求的速率填充到硬件——DMA硬件很便于完成这种任务。如果数据传输发生了延迟,音频硬件将立即产生抖动、重叠不连续等现象。
2.9.1 电话音频

电话声音数据在通话中是最基本的元素。在解决因长距离的卫星传输所产生的滞后问题而让用户有高质量通话的基础上,在声音延迟上还有严格的限制。为了保证做到这点,系统设计者为通话期间的低延迟响应和低电量消耗而优化了控制软件和硬件路径。

BP包含不通过Symbian OS执行声音频带音频处理的DSP。通话期间,Symbian OS将运行于低电模式,只是在显示器需要更新时才被唤醒。

正常的通话将在模拟音频电路中结束。这个电路里包含从模拟到数字和从数字到模拟的转换器,这种转换器被连接到麦克风和扬声器。使用蓝牙(BT)耳机时,PCM数据通过蓝牙耳机自己的专用接口被直接传输到BT模块中。

Symbian OS需要额外的音频路径以把系统声音融合到正在进行中的通话音里。这是为了处理诸如短信提示音、低电和第二个来电等事情。传递通过IPC连接到BP发送的原始音频数据,就可以完成这种声音的融合,在BP里,DSP将系统声音混合进音频流里。
2.9.2 多媒体音频

系统里除语音数据之外而产生的声音中,多媒体音频是很普通的一个部分。主要的多媒体声音有:

• 具有多种格式的铃声

• 提示来短信的警告

• 闹钟和日程表产生的提示

视频电话

• MP3播放

• 录音机记录的声音

• 视频的收集和播放

在系统的高层,由Symbian多媒体框架(MMF)进行控制,以支持媒体播放器、文件格式和插件。

多媒体设备框架(Multimedia Device Framework, MDF)将包含多媒体数字信号编解码器,多媒体数字信号编解码器将在PCM数据与设备驱动层的DevSound之间提供传输服务。

视频电话(Video telephony, VT)是个特殊的例子,因为这种情况下的实时音频数据不通过Symbian OS传输。电话中的音频部分将与视频一起形成64kb/s的数据流。VT电话系统必须分离到达的数据流,解码音频和视频部分,然后同步地进行播放。这项工作由专用硬件或者DSP来完成,它需要全部的200MHz ARM CPU以运行多媒体数字信号编解码器。

音频系统的主要复杂性是音频源和接收器数量的不断增长,以及它们可能被连接的方式。比如,目前的电话有多媒体耳机、扬声器、蓝牙和调频收音机。如果硬件不能混合并路由所有可能组合中的每一个音频源,就有可能产生问题。现在的一些音频用例还不能相互兼容,而是要求相互中断。

=====================================================================================

说明: 本文由Bequan翻译自Symbian Press的Symbian OS Internals: Real-time Kernal Programming一书。任何人需要转载或引用,请先通过Email(a-pangu@163.comsymbianchn@gmail.com)与Bequan联系,在获得许可后方可转载或引用,否则视为侵权行为。转载或引用时,请在文章中注明上述翻译信息。

 

Commented by Vincent:

调用过程大致为:
Client thread: Client app调用client utility
Controller thread: controller plugin->DevSound, DevVideo, DevASR, DevMIDI

 

其中controller framekwork目的是为symbian提供多媒体plugin支持。
这些plugin叫做controller plugin,可以把多媒体数据从source传送到一个或多个sink处。
比如,audio controller可以把一个文件源(file source)输出到一个扬声器(speak sink)或把microphone数据源保存到文件中。
controller plugin通常支持一个或多个多媒体格式,比如wav或mpeg4。
plugin是通过ECOM框架管理的,所以允许用户安装扩展。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值