在srcextrasgetopth里。所有的配置也可以用环境变量改变调用函数mai
_PutVariable和mai
_GetVariable。所以,vlcheight240和vic_height240vlc这种方式用于所有地方,包括插件是一样的。但是为了线程安全的考虑,当第二个线程派生了,mai
_PutVariable便不能被使用了。
34播放列表管理
当VLC得到输入媒体文件的时候播放列表被创建。一个合适的接口插件能够从这个播放列表添加和删除文件。在srcPlaylist目录下的这些被使用的函数被描述。播放列表既不是动态组件也不是内置组件,只是可以被外部调用的APIPlaylist_Create初始化播放列表,派生两个线程。一个是播放列表主线程Ru
Thread调用I
put_CreateThread为每个被读的文件派生输入线程。一个是播放列表里的项目排队预解析线程Ru
Preparse。I
tf_playlistadd和i
tf_playlistdelete是两个典型的最常用的添加和删除播放列表的命令函数。此时接口主循环函数i
if_ma
age将被启动同时在必要的时候终止输入的线程。
35组建仓库
在启动的时候,VLC创建一个包含所有插件接口so和内置插件的仓库,每一个插件都会被检查其实现的功能,这些功能如下MODULE_CAPABILITY_INTF一个接口插件。MODULE_CAPABILITY_ACCESSASamism,目前还没有用到。MODULE_CAPABILITY_PUT一个输入插件比如说PS和DVD的播放要用到。MODULE_CAPABILITY_DECAPSASamism,u
usedatprese
t。MODULE_CAPABILITY_ADEC音频解码器。
fMODULE_CAPABILITY_VDEC视频解码器。MODULE_CAPABILITY_MOTION视频解码器的补充动态组件。MODULE_CAPABILITY_IDCT视频解码器的IDCT组件。MODULE_CAPABILITY_AOUT一个音频输出组件。MODULE_CAPABILITY_VOUT一个视频输出组件。MODULE_CAPABILITY_YUV视频输出的YUV组件。MODULE_CAPABILITY_AFX音频输出的音频效果插件,目前还没实现。MODULE_CAPABILITY_VFX视频输出的音频效果插件,目前还没实现。管理这些插件的API如下Module_I
itBa
k创建组件仓库,然后调用module_LoadMai
将主程序信息导入组件银行。Module_LoadMai
将主程序信息导入组件仓库。Module_LoadBullti
s加载所有内置组件。Module_Loadplugi
s加载所有动态组件。Module_E
dBa
k清空组件仓库。Module_ReSetBa
k通过卸载所有无用的动态插件组件,重置组件仓库。Module_E
dBa
k卸载所有动态插件组件,清空模仓库。Module_Need得到能力最符合要求的组件。Module_U
eed减少一个组件的引用计数,必须被Module_Need的同一个线程调用。
36接口主循环
这个接口线程首先选取合适的接口动态插件,然后和这个插件的pf_ru
函数一起进入主接口循环。pf_ru
函数将实行其该实现的功能并且每隔100ms调用i
tf_Ma
age一次典r