VLC源码分析1.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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等相关属性,寻找第一个能满足要求并激活的模块。所谓激活是指,调用插件的初始化函数成功。 对于

文档评论(0)

youshen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档