首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

Android多媒体开发笔记【4】- 下层mediaPlayer 是怎么调到Stagefright的【2】【图解】

2012-10-10 
Android多媒体开发笔记【4】-- 上层mediaPlayer 是如何调到Stagefright的【2】【图解】基于android 4.1.1 源码【1

Android多媒体开发笔记【4】-- 上层mediaPlayer 是如何调到Stagefright的【2】【图解】

基于android 4.1.1 源码

Android多媒体开发笔记【4】- 下层mediaPlayer 是怎么调到Stagefright的【2】【图解】

【1】mediaserver 启动后会把media相关一些服务添加到servicemanager中,其中就有mediaPlayerService.这样应用启动前,系统就有了mediaPlayerService这个服务程序。   

new MediaPlayer();  调用SDK中 MediaPlayer.java (frameworks\base\media\java\android\media\MediaPlayer.java)

static sp<MediaPlayerBase> createPlayer(player_type playerType, void* cookie,        notify_callback_f notifyFunc){    sp<MediaPlayerBase> p;    switch (playerType) {        case SONIVOX_PLAYER:            ALOGV(" create MidiFile");            p = new MidiFile();            break;        case STAGEFRIGHT_PLAYER:            ALOGV(" create StagefrightPlayer");            p = new StagefrightPlayer;            break;        case NU_PLAYER:            ALOGV(" create NuPlayer");            p = new NuPlayerDriver;            break;        case TEST_PLAYER:            ALOGV("Create Test Player stub");            p = new TestPlayerStub();            break;        case AAH_RX_PLAYER:            ALOGV(" create A@H RX Player");            p = createAAH_RXPlayer();            break;        case AAH_TX_PLAYER:            ALOGV(" create A@H TX Player");            p = createAAH_TXPlayer();            break;        default:            ALOGE("Unknown player type: %d", playerType);            return NULL;    }    if (p != NULL) {        if (p->initCheck() == NO_ERROR) {            p->setNotifyCallback(cookie, notifyFunc);        } else {            p.clear();        }    }    if (p == NULL) {        ALOGE("Failed to create player object");    }    return p;}

在上面中已经看不到opencore的影子了,creaPlayer 中会根据类型来创建播放器的实例。Stagefright的实例就是在这里创建的。

下一步我们能真正进入到Stagefright里了







热点排行