VLC架构及流程分析
0x00 前置信息
VLC是一个非常庞大的工程,我从它的 架构 及流程入手进行分析,涉及到一些很细的概念先搁置一边,日后详细分析。
0x01 源码 结构(Android Java相关的暂未分析)
# build-android-arm-linux-androideabi/:第三方库。
# modules/:模块代码。
# modules/demux: 解复用模块代码。
# modules/codec: 解码模块相关代码。
# modules/access: 访问模块相关代码。
# 其他:未详细分析。
# src/: VLC架构核心代码。
# src/config/: 从命令行和配置文件加载配置,提供功能模块的读取和写入配置。
# src/control/: 提供动作控制功能,如播放/暂停,音量管理,全屏,日志等。
# src/extras/: 平台特殊性相关代码。
# src/modules/: 模块管理。
# src/network/: 提供网络接口。
# src/posix/: 多线程相关。
# src/osd/: 显示屏幕上的操作。
# src/interface/ : 提供代码中可以调用的接口中,如按键后硬件作出反应。
# src/playlist/: 管理播放功能,如停止,播放,下一首,随机播放等。
# src/text/: 字符集。
# src/input/: 输入流相关代码。
# src/video_output/ : 初始化视频播放器,把从解码器获得的数据处理后播放。
# src/audio_output/ : 初始化音频混合器,把从解码器获得的数据处理后播放。