读书人

Android多媒体开发笔记【4】- 下层med

发布时间: 2012-10-10 13:58:11 作者: rapoo

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里了







读书人网 >多媒体

热点推荐