通过上一篇文章我们了解了媒体解码器的创建过程,并且可以看到,在媒体解码器创建成功后,分别调用了 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<