android多媒体框架之流媒体具体流程篇1----base on jellybean(十一)

构成nuplayer的过程,无非就是初始化一些状态,标志位,重要的是起了消息队列,也就是我们上篇写的AHandler消息机制:http://blog.csdn.net/tjy1985/article/details/8063484,我们也不多说了,直接进入setdataSource,先来个概图吧:


setDataSource分三步来走:

1:创建相应的消息

2:根据URL创建对应的source

3:onmessageReceive处理对应的消息

voidNuPlayer::setDataSource(

        const char *url, constKeyedVector<String8, String8> *headers) {

    1sp<AMessage> msg = new AMessage(kWhatSetDataSource, id());----构建一个kWhatSetDataSource的消息

 

    sp<Source> source;

    if (IsHTTPLiveURL(url)) {

     2   source = newHTTPLiveSource(url, headers, mUIDValid, mUID);----创建的HTTPLiveSource

    } else if (!strncasecmp(url,"rtsp://", 7)) {

        source = newRTSPSource(url, headers, mUIDValid, mUID);-----创建RTSPSource实例

    } else {

        source = new GenericSource(url,headers, mUIDValid, mUID);

    }

 

    msg->setObject("source",source);

    msg->post();-----post刚才构建的kWhatSetDataSource消息

}

 

 

voidNuPlayer::onMessageReceived(const sp<AMessage> &msg) {

    switch (msg->what()) {

   3     case kWhatSetDataSource:------------处理kWhatSetDataSource消息

        {

            ALOGV("kWhatSetDataSource");

            CHECK(mSource == NULL);

            sp<RefBase> obj;

           CHECK(msg->findObject("source", &obj));

 

            mSource = static_cast<Source*>(obj.get());

            break;

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值