stagefright框架下的awesomeplayer设置数据源阶段

Android的MediaPlayerService下一个重要的框架就是stagefright(演讲胆怯者),在它之下就是具体的播放器了。与其关系同等的是NuPlayer,本文将分析stagefright常规框架和一些关键技术。

先看几个类的关系:

class MediaPlayerBase : public RefBase
class MediaPlayerInterface : public MediaPlayerBase
class StagefrightPlayer : public MediaPlayerInterface 
struct AwesomePlayer 

struct AHandler : public RefBase 
struct NuPlayer : public AHandler 
struct NuPlayerDriver : public MediaPlayerInterface

以RefBase为基准,MediaPlayerBase和AHandler处于同一级,StagefrightPlayer与NuPlayerDriver为同一级,代表两种不同的架构的播放器。AwesomePlayer与NuPlayer为同一级,代表在两种不同播放器架构下具体的播放器实现。
一般说来,现在本地文件播放用AwesomePlayer,而流媒体用NuPlayer,难道是NuPlayer对RTP处理得更好?

一个播放器通常的架构或者说工作流程为:

创建播放器 – 设置数据源 – 音视频分离 – 编解码 – 渲染 – 画面呈现

先来看下AwesomePlayer的构造函数:

AwesomePlayer::AwesomePlayer()
    : mQueueStarted(false),      
      mAudioPlayer(NULL),
      mFlags(0),
      mExtractorFlags(0),
      mVideoBuffer(NULL),
      mDecryptHandle(NULL),      

      DataSource::RegisterDefaultSniffers();

    mVideoEvent = new AwesomeEvent(this, &AwesomePl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值