不考虑网络下载模块,从播放链路来说,一般包含最基本的五个模块,每个模块是一个单独的线程;以及四个帧数据队列;
如果有其他需求,可以在这个基本框架上再扩展,比如在解码后,渲染前加入一些滤镜处理模块等;
5个模块线程:
1. 解复用模块: 负责媒体文件的解复用,从文件读出视频帧和音频帧数据,分别放入两个队列;
2. 视频解码模块: 负责视频帧解码,从视频帧队列读入帧,并将解码后帧数据放入解码后视频帧队列;
3. 音频解码模块: 负责音频帧解码,从音频帧队列读入帧,并将解码后帧数据放入解码后视频帧队列;
4. 视频渲染模块: 从解码后视频帧队列读入数据,负责视频帧的渲染;
5. 音频渲染模块: 从解码后音频帧队列读入数据,负责音频帧的渲染;
4个队列:
1. 解码前视频帧队列A1;
2. 解码前音频帧队列A2;
3. 解码后视频帧队列B1;
4. 解码后音频帧队列B2;
稍后把框架图补上;