vlc主要模块简介

  VLC 属于Video LAN开源项目组织中的一款全开源的流媒体服务器和多媒体播放器。内部 采用全模块化结构,在系统内部,通过动态的载入所需的模块,放入一个module_bank的结构体中统一管理,连VLC的Main模块也是通过插件的方 式动态载入的(通过module_InitBank函数在初始化建立module_bank时)。对于不支持动态载入插件的系统环境中,VLC也可以采用 builtin的方式,在VLC启动的时候静态载入所需要的插件,并放入module_bank统一管理。
  VLC 的模块分成很多类别主要有:access、access_filter、access_output、audio_filter、 audio_mixer、audio_output、codec、control、demux、gui、misc、mux、packetizer、 stream_output、video_filter、video_output、interface、input、playlist等(其中黑体为核 心模块)。VLC无论是作为流媒体服务器还是多媒体播放器,它的实质思路就是一个“播放器”,实质处理的是ES、PES、PS、TS等流间的转换、传输与显示。
  这里主要的文件模块做了梳理,请大家多多指教😊。

1. 主要线程

主线程:

vlc/src/input/input.c

解码线程:

vlc/src/input/decoder.c

2.网络及数据相关文件

网络相关:

vlc/modules/access/http.c
vlc/src/network/tcp.c
vlc/src/network/Io.c

数据相关:

vlc/src/input/strem.c

3. 视频相关

3.1 m3u8相关文件

m3u8文件解析及视频地址的维护 及TS包解析 、同步

vlc/modules/strean_filter/httplive.c: 
vlc/modules/demux/ts.c

3.2 mp4相关文件

mp4 处理 、同步

vlc/modules/demux/mp4/mp4.c 
vlc/modules/demux/mp4/libmp4.c  

4. 缓存队列

vlc/src/input/es_out.c
vlc/src/misc/block.c
vlc/src/misc/picture_fifo.c

5. 解码文件

vlc/modules/codec/avcodec/video.c
vlc/modules/codec/avcodec/audio.c
vlc/modules/codec/videotoolbox.m

6. 输出

6.1 视频输出

vlc/src/video_output/video_output.c
vlc/modules/video_output/ios2.m
vlc/modules/video_output/iospanorama.m 

6.2 音频输出

vlc/modules/audio_output/audiounit_ios.m
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容