本文主要是介绍MediaCodec源码分析 Codec消息轮转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
本文梳理MediaCodec的消息轮转流程,基于7.0代码。
MediaCodec底层实现为JMediaCodec、MediaCodec.cpp、ACodec,他们之间是通过media包下的ALooper、AHandler、AMeesage这一套机制进行线程间通信的。
本文就是分析这里的流程,先分析ALooper这一套,然后再分析MediaCodec.java是怎么调用操作下去的,ACodec又是如何跟MediaCodec.cpp通信的。
ALooper、AMessage、AHandler
整体来看,这一套和Andriod的Handler机制类似,只是底层使用的等待唤醒实现的。AMessage可以postAndAwaitResponse发送消息然后同步等待返回,这是一个阻塞行为。
include/media/stagefright/foundation/ALooper.h
media/libstagefright/foundation/ALooper.cpp
struct ALooper::LooperThread : public
这篇关于MediaCodec源码分析 Codec消息轮转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!