三九宝宝网宝宝成长经典故事

android源码里有哪些比较好的算法或框架推荐

02月16日 编辑 39baobao.com

[英国比较好的学校以及学科有哪些]1。学校选择伦敦内好还是有点距离:在伦敦周围比较好,在伦敦就不会想学习了。 2。高中的学习习惯有什么区别:在英国主要是靠自觉,英国老师留作业基本上都不检查。 3。英国高中生...+阅读

Android中对于图形界面以及多媒体的相关操作比较容易实现。而且对于大多数 手机 用户来说,他们主要也就是根据这些方面的功能来对系统那个进行修改。我们可以通过本文介绍的Android多媒体框架的源码解读,来具体分析一下这方面的基本知识。 Android多媒体框架的代码在以下目录中:external/opencore/。这个目录是Android多媒体框架的根目录,其中包含的子目录如下所示: * android:这里面是一个上层的库,它基于PVPlayer和PVAuthor的SDK实现了一个为Android使用的Player和Author。

* baselibs:包含数据结构和线程安全等内容的底层库 * codecs_v2:这是一个内容较多的库,主要包含编解码的实现,以及一个OpenMAX的实现 * engines:包含PVPlayer和PVAuthor引擎的实现 * extern_libs_v2:包含了khronos的OpenMAX的头文件 * fileformats:文件格式的据具体解析(parser)类 * nodes:编解码和文件解析的各个node类。 * oscl:操作系统兼容库 * pvmi: 输入输出控制的抽象接口 * protocols:主要是与网络相关的RTSP、RTP、HTTP等协议的相关内容 * pvcommon:pvcommon库文件的Android.mk文件,没有源文件。

* pvplayer:pvplayer库文件的Android.mk文件,没有源文件。 * pvauthor:pvauthor库文件的Android.mk文件,没有源文件。 * tools_v2:编译工具以及一些可注册的模块。 Splitter的定义与初始化 以wav的splitter为例,在fileformats目录下有解析wav文件格式的pvwavfileparser.cpp文件,在nodes目录下有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h, pvmf_wavffparser_port.h等文件。 我们由底往上看,vwavfileparser.cpp中的PV_Wav_Parser类有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成员函数,此类应该就是最终的解析类。

我们搜索PV_Wav_Parser类被用到的地方可知,在PVMFWAVFFParserNode类中有PV_Wav_Parser的一个指针成员变量。 再搜索可知,PVMFWAVFFParserNode类是通过PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()成员函数生成的。而CreatePVMFWAVFFParserNode()函数是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()类构造函数中通过PVPlayerNodeInfo类被注册到Oscl_Vector 的vector中,在这个构造函数中,AMR,mp3等node也是同样被注册的。

由上可知,Android多媒体框架中对splitter的管理也是与ffmpeg等类似,都是在框架的初始化时注册的,只不过Opencore注册的是每个splitter的factory函数。 综述一下splitter的定义与初始化过程: 每个splitter都在fileformats目录下有个对应的子目录,其下有各自的解析类。 每个splitter都在nodes目录下有关对应的子目录,其下有各自的统一接口的node类和node factory类。

播放引擎PVPlayerEngine类中有PVPlayerNodeRegistry iPlayerNodeRegistry成员变量。 在PVPlayerNodeRegistry的构造函数中,将 AMR, AAC, MP3等splitter的输入与输出类型标示和node factory类中的create node与release delete接口通过PVPlayerNodeInfo类push到Oscl_Vector iType成员变量中。 当前Splitter的匹配过程 PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector& aUuids)函数的功能是根据输入类型和输出类型,在已注册的node vector中寻找是否有匹配的node,有的话传回其唯一识别标识PVUuid。

从QueryRegistry这个函数至底向上搜索可得到,在android中splitter的匹配过程如下: android_media_MediaPlayer.cpp之中定义了一个JNINativeMethod(JAVA本地调用方法)类型的数组gMethods,供java代码中调用MultiPlayer类的setDataSource成员函数时找到对应的c++函数 1.{"setDataSource", "(Ljava/lang/String;)V", (void *) android_media_MediaPlayer_setDataSource}, 2.static void android_media_MediaPlayer_setDataSource (JNIEnv *env, jobject thiz, jstring path) 此函数中先得到当前的MediaPlayer实例,然后调用其setDataSource函数,传入路径 3.status_t MediaPlayer::setDataSource(const char *url) 此函数通过调getMediaPlayerService()先得到当前的MediaPlayerService, const sp& service(getMediaPlayerService()); 然后新建一个IMediaPlayer变量, sp player(service->create(getpid(), this, fd, offset, length)); 在sp MediaPlayerService::create(pid_t pid, const sp& client, const char* url)中 调status_t MediaPlayerService::Client::setDataSource(const char *url)函数,Client是MediaPlayerService的一个内部类。

在MediaPlayerService::Client::setDataSource中,调sp MediaPlayerService::Client::createPlayer(player_type playerType) 生成一个继承自MediaPlayerBase的PVPlayer实例。

以下为关联文档:

今天立冬谁能帮我推荐比较经典的问侯或祝福语经典友情祝福语2006-10-20 18:02亲爱的朋友,江湖风高浪急,但是总会有一处宁静的港湾,让你的小舟暂时地停泊,以获得一时心灵的宁静与充实。 “记取江湖泊船处 ”,记住曾经与你的心...

有哪些比较好的名人故事鲁迅“爱书” 鲁迅先生从少年时代起就养成了爱护图书的好习惯。每次看书,他总是先洗手,一旦发现书脏了,就小心地把它擦干净;他还学会了钉书、补书的本领,备有一套工具,如发现书有...

比较经典的英语段落或句子Great minds think alike. 英雄所见略同。 2 Get going! 赶快动身吧. (用在开始行动时) 3 We've got to hit the road. 我们要快点了. (和上一句用法相同,hit the road表现出紧急...

有没有公认比较好的诗词APP推荐题主来提问,想必是很喜欢诗词吧,我也是,虽然喜欢纸质书籍,但是平时太忙,没有大量时间去阅读,我就给你推荐几款吧。 第一 为你读诗 app图标是“为你读诗”四个绿色的字,有盗版的,别下...

谁有好的经典语录或好的句子37.谁是谁生命中的过客,谁是谁生命的转轮,前世的尘,今世的风,无穷无尽的哀伤的精魂.我回过头去看自己成长的道路,一天一天地观望,我站在路边上,双手插在风衣的兜里看到无数的人群从...

求一些经典的或是写的比较好的短篇文章或散文1.秋天的况味 林语堂 2.我的伊豆(日) 川端康成 3.丑石 贾平凹 4.一只特立独行的猪 王小波 5.远处的青山(英) 高尔斯华绥 一篇反对战争,礼赞和平,具有浓厚人道主义精神的优美散文 6...

比较好的演讲故事推荐一个不知道你要哪方面的。先给你一个激励大家勇于接受挑战自己的,改变的。 老鹰的蜕变 老鹰是世界上寿命最长的鸟类,它一生的年龄可达七十岁。但要活那么长的寿命, 它在四十岁时,必...

大家推荐一下比较好的投资理财类书籍好的投资理财的书籍有很多。分为教科书类,小说类,社科类等等。不知道楼主需要的是哪种。 建议先从一些基础知识学起,看一些教科书,同时看一些名人博客。 (美)博迪(Bodie,Z.)等著,朱宝...

推荐一些比较好看的历史书或历史小说要想读历史书的话还是首选《史记》、《三国志》等一些正史,或者是一些史学大家的书,例如钱穆先生、陈寅恪先生、南怀瑾先生的书。如果想看现在出版的一些历史书,我建议最好在了...

推荐阅读
图文推荐