- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VLC源码分析1
VLC源码分析
目录
1 VLC源码结构
vlc核心的是libvlc,它提供界面,应用处理功能,所有的libvlc的源代码都放在src目录及其子目录
1.1 ./config/
从命令行和配置文件中加载配置
1.2 ./control/
提供动作控制功能,如播放等操作
1.3 ./extras/
大多是平台的特殊代码
1.4 ./modules/
模块管理
1.5 ./network/
提供网络接口(socket管理,网络接口)
1.6 ./osd/
显示屏幕上的操作
1.7 ./test/
libvlc测试模块
1.8 ./text/
字符集
1.9 ./interface/
提供代码中可以调用的接口,如按键后的硬件作出反应
1.10 ./playlist/
管理播放功能
1.11 ./input/
建立并读取一个输入流,并且分离其中的音频和视频,然后把分离好的音频和视频流发给解码器
1.12 ./audio_output/
初始化音频混合器,即设置正确的同步频率,并对从解码器传来的音频流重新取样
?
1.13 ./video_output/
初始化视频播放器,把从解码器得到视频画面转化格式从yuv到rgb,然后播放
1.14 ./stream_output/?
输出音频流和视频流到网络
1.15 ./misc/
libvlc使用的其他部分功能,如线程系统,消息队列等.
2 configure详解
?
概述
VLC 属于Video?LAN开源项目组织中的一款全开源的流媒体服务器和多媒体播放器。作为流媒体服务器,VLC跨平台,支持多操作系统和计算机体系结构;作 为多媒体播放器,VLC可以播放多种格式的媒体文件。主要包括有:WMV、ASF、MPG、MP、AVI、H.264等多种常见媒体格式。
VLC 采用全模块化结构,在系统内部,通过动态的载入所需的模块,放入一个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无论是作为流媒体服务器还是多媒体播放器,它的实质思路就是一个“播放器”,之所以这么形象描述,是因为(The?core?gives?a?framework?to?do?the?media?processing,?from?input?(files,?network?streams)?to?output?(audio?or?video,?on?ascreen?or?a?network),?going?through?various?muxers,?demuxers,?decoders?and?filters.?Even?the?interfaces?are?plugins?for?LibVLC.?It?is?up?to?the?developer?to?choose?which?module?will?be?loaded.?摘 于官网说明) 它实质处理的是ES、PES、PS、TS等流间的转换、传输与显示。对于流媒体服务器,如果从文件作为输入 即:PS-DEMUX-ES-MUX-TS;对于多媒体播放器如果采用UDP方式传输 即:TS-DEMUX-ES。
1.?插件管理框架
在VLC中每种类型的模块中都有一个抽象层/结构体,在抽象层或结构体中定义了若干操作的函数指针,通过这些函数指针就能实现模块的动态载入,赋值相关的函数指针的函数地址,最后通过调用函数指针能调用实际模块的操作。
对 于VLC所有的模块中,有且仅有一个导出函数:vlc_entry__(MODULE_NAME)。(其中MODULE_NAME为宏定义,对于main 模块,在\include\modules_inner.h中定义为main)动态载入模块的过程是:使用module_Need函数,在 module_bank中根据各个插件的capability等相关属性,寻找第一个能满足要求并激活的模块。所谓激活是指,调用插件的初始化函数成功。 对于
您可能关注的文档
- SHIP一舟6A类屏蔽综合布线解决方案(金融).doc
- 全国美育基础2011年10月高等教育自学考试试题与答案.doc
- SPC培训教材(30页).doc
- SCR介绍与方案.doc
- SPSS上机实验案例分析.doc
- SPSS学习系列30主成份分析.docx
- SPR咖啡厅WLAN设计文档.doc
- stewart运动学分析.docx
- STM32中断管理函数.doc
- Quantum与ATV71的Modbus串行通信指导.doc
- 《新能源汽车电机碳纤维转子技术要求》征求意见稿.docx
- 《电缆线生产用牵引设备》征求意见稿.docx
- 《电缆线生产用牵引设备》征求意见稿.pdf
- 电解锰产业废物综合利用标准——利用电解锰渣制备水处理填料技术指南-编制说明-(征求意见稿).docx
- 《土家医特色门诊建设指南》征求意见稿.docx
- 《水产类净菜》编制说明(征求意见稿).docx
- 《电化学储能系统安全设计与防火技术规范》(征求意见稿)编制说明.docx
- 《菌菇类净菜》(征求意见稿).docx
- 《升压站无功补偿装置(SVG)运行维护规程》(征求意见稿).docx
- 《基于印刷 OLED 薄膜封装材料的压电式喷头模组》征求意见稿.docx
文档评论(0)