Eoxplayer主框架流程
核心流程
主要流程:
- 采用1个线程Loop实现音/视频的解码渲染。(通常做法是把音视频各用1个线程去解码渲染,各不影响,刚看到还是挺意外的)
- message queue处理控制命令,上报的消息。
主要类:
- ExoPlayerImplInternal:管理source,render和播放流程。
- Mediasource MediaPeriod:url数据下载,extractor,解复用。
- MediaCodecRenderer: 包括了解码和渲染。
playing流程
Loop:
ExoPlayerImplInternal::doSomeWork {
updatePeriods(); //Period 准备
for (Renderer renderer : enabledRenderers) { //audio video render
MediaCodecRenderer::render()
while () {
drainOutputBuffer() //从解码器取帧,然后渲染
codec.queueOutputBuffer()
processOut