1.  在前面的介绍中,从Java到MediaPlayer---Binder---MediaPlayerService::Client已经讲清楚了。可是,在MediaPlayerService::Client <MediaPlayerService::create-> new Client / MediaPlayerService::Client::setDataSource->getPlayerType/createPlayer->android::createPlayer>中调用android::createPlayer之后,并把新创建的真正的Player保存到MediaPlayerService::Client中的mPlayer之后就没有下文了。

 

2. 真正的Player到底是什么样的?

根据本人的了解,有PVPlayer, StagefrightPlayer,MidiFile,VorbisPlayer,每个Player处理不同的媒体类型,他们通过getPlayerType(const char* url)的返回值进行分工完成。每个Player都有自己的特长,并做自己善于做的事情。详细分工情况见代码:sp createPlayer(player_type playerType, void* cookie,
        notify_callback_f notifyFunc)
函数。

3. 如果要在自己的芯片上实现硬件Demux和硬件Decoder(如对于机顶盒中的TS流),怎么办呢?

据本人了解,有两种办法:

1)基于MediaPlayerInterface接口,实现其中所有的接口函数,自已创建一个XXPlayer,并增加到android::createPlayer中。每个接口函数的具体实现就与以前在Linux环境下实现的方式一样,简单吧,以前的成果都可以用上了。

2)在现在的Player(如StagefrightPlayer)中写Extractor和Decoder插件。

为了实现第二种方案,需要先了解StagefrightPlayer的架构。为什么两种方案都需要了解呢,因为怎么做,取决于你的首席架构师或CTO等。

 

 

 

 

 

更多相关文章

  1. C语言函数以及函数的使用
  2. android中去掉空格--trim函数
  3. Android三角函数
  4. ISurfaceComposer接口有13个成员函数
  5. Android jni系统变量、函数、接口定义汇总
  6. Android 页面惯性回弹效果,Nested接口接口简单实现。
  7. sscanf函数引起android 5.0卡死,C++中慎用C库函数
  8. Android硬件抽象层学习
  9. Android实现自己的回调函数

随机推荐

  1. android 弹出的软键盘遮挡住EditText文本
  2. Android的binder机制分析
  3. Android之Http网络编程(一)
  4. Android之A面试题③应用程序启动过程源代
  5. Android Service之MountService源码分析
  6. 理解android中ListFragment和Loader
  7. Google Android(安卓)SDK舍弃Java ME,支持
  8. LinearLayout组件右对齐
  9. 修改Android中的文件权限
  10. Android(安卓)ListView使用BaseAdapter与