当前位置: 首页 > news >正文

武汉装修网站建设seo网站关键词优化报价

武汉装修网站建设,seo网站关键词优化报价,长沙做网站最专业,怎么把字体安装到电脑wordpressAndroid中对于图形界面以及多媒体的相关操作比较容易实现。而且对于大多数手机用户来说,他们主要也就是根据这些方面的功能来对系统那个进行修改。我们可以通过本文介绍的Android多媒体框架的源码解读,来具体分析一下这方面的基本知识。Android多媒体框架…

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++函数

http://www.lbrq.cn/news/2751481.html

相关文章:

  • 百度的网站收录怎么做如何创建自己的网站
  • 做外贸一般用什么网站传播易广告投放平台
  • 网站首页模板自定义seo如何优化关键词
  • 百度收录网站链接入口百度推广的优势
  • 惠州做棋牌网站建设哪家服务好推广员是干什么的
  • 企业网站做优化排名象客互动营销案例分析
  • 淄博市沂源县建设局网站茂名seo顾问服务
  • 网站域名根目录在哪里深圳搜索引擎优化seo
  • 丽水网站建设哪家好搜索关键词软件
  • 浅谈高校图书馆网站建设怎样搭建一个网站
  • 做网站费用分几块网络营销意思
  • 如何做b2c网站星巴克网络营销案例分析
  • seo批量建站方法墨子学院seo
  • 天堂2免费服务器开封seo公司
  • 南京网站制作公司怎么样搜索引擎营销成功案例
  • 武汉 外贸网站建设公司淘宝seo排名优化的方法
  • 做网站的人联系电话投广告哪个平台好
  • 三亚市建设局官方网站百度云搜索引擎入口盘多多
  • 南漳网站定制怎么做公众号
  • 医疗网站建设管理海底捞口碑营销案例
  • 青岛网站优化联系方式友情链接举例
  • 网站建设与运营的预算方案刚刚中国宣布重大消息
  • 广州专业的做网站公司足球世界排名前十
  • 做水果为主的b2c网站有哪些手机自动排名次的软件
  • 北京印刷厂seo推广排名公司
  • 购物网站开发文档百度手机助手官网
  • 成都市建设网扬尘监控网站重庆网站建设推广
  • 网站没备案可以做商城吗seo推广排名软件
  • 推广游戏赚钱的平台北京优化网站推广
  • 黑龙江生产建设兵团各连网站百度指数数据分析平台官网
  • gitee 流水线+docker-compose部署 nodejs服务+mysql+redis
  • C++算法题目分享:二叉搜索树相关的习题
  • 聊聊智慧这个东西之三:从食物的毒性、偏性聊起
  • Linux系统top命令详细指南
  • 【CV 目标检测】Fast RCNN模型①——与R-CNN区别
  • 【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑7B大语言模型_20250816