通過上一篇文章我們了解了媒體解碼器的創建過程,并且可以看到,在媒體解碼器創建成功后,分別調用了 configure()、setCallback() 和 start() 函數來對解碼器進行配置、回調和啟動。這里我們就來詳細看一下這幾個過程。
一、配置解碼器
首先看一下解碼器的配置,在 NuPlayerDecoder.cpp 中調用 mCodec->configure() 函數,通過前面的分析可以知道調用到了 MediaCodec.cpp 中的對應方法。
1、MediaCodec.cpp
源碼位置:/frameworks/av/media/libstagefright/MediaCodec.cpp
configure
status_t MediaCodec::configure(const sp<AMessage> &format, const sp<Surface> &surface,const sp<ICrypto> &crypto, const sp<IDescrambler> &descrambler, uint32_t flags) {sp<AMessage> msg = new AMessage(kWhatConfigure, this);……
}void MediaCodec::onMessageReceived(const sp<