以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  C++音频解码编程技巧讨论  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=76679)


--  作者:发生地
--  发布时间:9/9/2009 4:40:00 PM

--  C++音频解码编程技巧讨论
C++在大规模、高性能计算,游戏开发、嵌入式应用开发,以及传统的客户端软件和构件开发中是十分强大的。如今智能手机市场发展,一日千里,手机机能的提高,智能手机普及率的扩大,3g时代的来临,手机已经成为微型移动计算机了,各大移动厂商已经把手机系统平台之争看做手机的未来之争,占有移动平台的优势,谁就占有了未来,在智能手机平台,各种中高级的应用会层出不穷,C++的地位会更加巩固,作用会大大的发展。

目前中国三大运营商为了抢占3G平台的先机,现在都加强与终端厂商和软件厂商的深度合作,建设自己的手机系统平台。

Google公司08年推出Android手机操作系统,基于Linux2.6开放平台设计,并不断丰富完善。Android平台的图形渲染能力比其它几家强,同时还内置了Google 的Gmail,Gtalk等原有业务,能看出在国外市场,用惯Google的用户,会感到设计很贴心。

随后,中国移动推出了Ophone OS开放智能操作系统平台,也是基于Linux 2.6,兼容Android的所有应用,这样首先保证了一定数量的应用软件可提供用户。同时,还内置了中国移动的全部增值服务,为用户提供更丰富的应用体验。这里还包括MMarket(网上软件下载商店),专门向中国移动将近5亿的手机用户销售个人软件作者的各类手机应用软件,7:3分成,个人作者可以拿7成。这可以说是我们工程师的福音,多了条子创业之路。中国移动还有众多的商业客户,行业OA办公软件系统的市场也不可小靚啊。所以,Ophone未来给大家带来的发展机会,值得关注。

Android和Ophone OS的开发语言C/C++,Java,这个正是他,他们架构的绝妙之处,众所周知,C/C++是老牌语言在中低层的应用开发中游不可替代的地位,但开发效率的问题一直是他天生的缺点,Java可以说天生就是来弥补C++的不足的,在高层的业务开发中java是很强的力量,PC机的很多领域只能用C/C++来开发,这对于目前手机操作系统硬件低等原因来说,C/C++必定是不二的选择,而Java来讲,和硬件关系不密切,不过安全性很高,怎么样才能把这两种语言有机的结合在一起呢

JNI在平台应用情况和好处
我们首先介绍一下java的性能问题,Java程序其本身的缺陷,那就是其效率问题。由于Java是一种介于解释型和编译型之间的语言,其对内存的管理是通过JVM虚拟机来实现的,同样的程序,如果用编译型语言C来实现,其运行速度一般要比Java快得多,这就迫使开发者寻求一种java和C/C++相结合的模式来弥补彼此的不足,于是JNI(Java Native Interface,Java本地化方法)技术运用而生, 目前JNI技术在很多平台上如wince/mobile,linux,symbian都有了很大的应用,不过在这些平台上并没有发挥JNI技术的绝对优势,为了让JNI技术能够发挥出自身的绝对力量,于是Ophone OS系统制定出来完美的解决方案

下面我就通过在Ophone平台上的多媒体实例来讲一下C/C++与java是怎么结合工作的

Ophone OS的OpenCore模块概述
OpenCore的另外一个常用的称呼是PacketVideo,它是Ophone OS的多媒体核心。OpenCore是这套多媒体框架的软件层的名称。在Ophone OS的开发者中间,二者的含义基本相同。对比Android的其它程序库,OpenCore的代码非常庞大,它是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。

多媒体框架在Ophone OS系统中的位置(红包标记)

按此在新窗口浏览图片
从框架图可以看出多媒体处理Libraries层,这说明Ophone OS的媒体层是通过os方式供上层使用,实际上一般都是用c/c++来实现,然后层过上层语言,比如Java的JNI方式去调用
媒体的编解码库使用了OpenMAX 1L interface接口进行展,这使得和具体的硬件不相关,为厂家的移植带来了方便
OpenCore本身集成了目前流行的媒体格式,如本地文件3GP,MPEG-4等等,在线播放的http,rtsp/rtp流媒体协议

配套的Ophone OS源码OpenCore模块源码下载
Ophone OS开源项目是用Git进行版本控制的,大家可以到http://code.google.com/p/msysgit/downloads/list 上下载Git-1.6.4-preview20090730.exe,然后安装,安装完运行开始菜单->Git->Git Bash,会出现一个dos窗口,输入git clone git://android.git.kernel.org/platform/external/opencore.git回车,下载完成后的源码在C:\Documents and Settings\Administrator\opencore目录,当然大家也可以自己创建一个空目录,运行Git,在Git提供的shell,切换路径到你刚才创建的目录下(cd命令)

按此在新窗口浏览图片
下面我们对PVPlayer进行简单的说明

下面是通过JNI方式调用
MediaPlayer mp;
mp = MediaPlayer.create(this,xxx.mp3);
mp.prepare();
mp.start();
以上的简单的一个播放mp3格式的程序,他的巧妙之处在于,Ophone是基于Linux平台的开源手机操作系统,提供了软件开发,所以Ophone手机的内部核心依然是linux, 不过Ophone提供了比Linux更为安全的开发模式,Linux支持c++上层开发,这样就会使得一些不良开发者,借助这一有利优势,开发一些恶性操作,不过Ophone系统屏蔽这一缺陷,有过C/C++开发底层,java通过JNI的方式来调用,这样即不失C/C++的高效率,又同时增加了系统的安全性,使得jni技术实现跨平台开发同时兼顾效率的有效方法


学习网站
Android可以去这里看看[url]http://www.android.com[/url]。开发经验交流内容已经很丰富了。

对Ophone有兴趣的读者,可以登录[url]http://www.ophonesdn.com[/url] 网站,一个提供开发指导不错的网站,是中国移动在OphoneOS上的官方网站,而且正在举行发帖赢活动。现在是3G疯行的时刻,平台手机开发人员紧缺,这个时机大家有一定要把握啊。我不想独享,特地和大家分享一下啊。


--  作者:不爱上班
--  发布时间:9/11/2009 10:26:00 AM

--  
擦,没看懂。----

--  作者:caicmt
--  发布时间:9/14/2009 11:09:00 AM

--  一直觉得Java效率低,到ophone上,还挺不错的
一直觉得Java效率低,到ophone上,还挺不错的
--  作者:我的爱
--  发布时间:9/14/2009 6:50:00 PM

--  
Java和ophone结合,效果还挺不错的。


--  作者:庭院深深
--  发布时间:9/17/2009 3:36:00 PM

--  
简单的了解了一下ophone,ophonesdn网站上面介绍得这么细,应有尽有,无论是入门文章,还是深入研究都有很丰富的帖子,
--  作者:沉默的熊
--  发布时间:9/20/2009 11:26:00 AM

--  C++音频解码编程技巧讨论[原创]
Ophone Os的图形引擎根据自己的需要, 实现各种图形图像的特效处理的并形成native(c++)组件,让java层通过JNI调用。丰富自己软件的功能并实现高效率运算。
--  作者:卡卡妮
--  发布时间:9/24/2009 5:04:00 PM

--  
Ophone Os的图形引擎根据自己的需要, 实现各种图形图像的特效处理的并形成native(c++)组件,让java层通过JNI调用。丰富自己软件的功能并实现高效率运算。

--  作者:稻飞虱D
--  发布时间:9/26/2009 3:00:00 PM

--  
最近Android 发布了 Native Development Kit (NDK) 可以在平台上 用C++来开发了。 Ophone OS据说很快也要支持NDK,对C++程序员是大福音了。
--  作者:稻飞虱D
--  发布时间:9/30/2009 11:07:00 AM

--  
现在越来越多的PC厂商开始打移动市场。跟中移动合作的DELL就是个例子。移动这块市场还真招人稀罕。
--  作者:稻飞虱D
--  发布时间:10/6/2009 5:10:00 PM

--  
Ophone OS 是相当不错的平台。其SDK 提供的java API已经非常强了,相对于一般手机Kjava 和 其他手机提供的 java sdk的总和了,而且还有C++写JNI来补充功能.
--  作者:稻飞虱D
--  发布时间:10/8/2009 10:43:00 AM

--  
楼主啊,希望你再接再厉努力写更多的文章
--  作者:稻飞虱D
--  发布时间:10/12/2009 11:36:00 AM

--  
帖子还不错,经常拿过来看一下……移动开发必然是未来发展趋势,现在观望。
--  作者:稻飞虱D
--  发布时间:10/13/2009 11:26:00 AM

--  
touch触屏是主流。才对。Iphone为啥那么好,主要是软件应用很强。
--  作者:小男孩123
--  发布时间:10/16/2009 2:38:00 PM

--  
移动为什么有钱,中国用户三分之二的占有比例,所以说如若是中国移动这几年大力发展ophone的推广普及以及软件开发的话,那真是很有前途的国产开源手机系统。
--  作者:稻飞虱D
--  发布时间:10/19/2009 5:11:00 PM

--  
要说从C++整到移动上,绝对不轻松的事情。现在移动开发还是集中于2G傻瓜系统symbian。智能机在全球数量的增加与被人们的热捧。Symbian系统本身已经很难满足现在智能机的要求了。目前最主流的开发系统就是Android OphoneOS IphoneOS,但国内这三种平台开发个人或团队都不多。何况iphone最具优势的软件应用在中国还没发商用。不知道拖到什么时候,最具发展潜力的还是android 和ophoneOS
--  作者:猪猪887
--  发布时间:10/22/2009 2:41:00 PM

--  
移动市场的趋势流行化,让我们更加关注移动市场。国内ophoneOS 国外ANDROID。你要说Iphone哪去了。对不起,我不想给苹果那99欧元。
--  作者:稻飞虱D
--  发布时间:10/24/2009 9:39:00 PM

--  
说到系统,iphone现在不能质疑的是全球第一。但只限于全球,不行带中国的。
自古商贩不怕横的不怕黏糊的,就怕当官的。什么事儿一挨着政治。就没了边了。
洋鬼子的东西肯定不如土生长的待遇好。Ophone和iphone系统在华的发展,就是如此。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
125.000ms