全球旧事资料 分类
口并不允许,但是让若干个输入和视频输出线程在同一时刻读取多个文件是可行的这是VLC未来改进的主要方向。现在的客户端就是用这种思想实现的,这就意味着如果没有用到全局锁的话那么一个不能重入的库是不能被使用的尤其是liba52库。VLC输出的流里包含时间戳,被传递给解码器,所有有时间戳标记的流也均被记录,这
f样输出层可以正确及时的播放这些流。时间mtime_t是一个有符号的64bit整形变量,单位是百万分之一秒,是从1970年7月1日以来的绝对时间。当前时间能够被mdate函数恢复。一个线程可以被阻塞到mwaitmtime_tdate等到一个确定的时间才被执行。也可以用msleepmtime_tdelay休眠一段时间。如果有重要的事情要处理的话,那么应该在正常时间到来之前被唤醒如色度变换。例如在modulescodecmpeg_vldeosy
chroc中,通常的解码时间被记录,保证图像被即时解码。
3VLC接口技术分析
31VLC运行过程
通过对相关资料和自己的分析,VLC的运行过程如下ELFLi
ux下可执行文件的格式先被动态加载,然后主线程就变成了接口线程并且在srci
terfacei
terfacec中开始。它执行下列步骤1cpu探测什么型号所有能力MMX,MMXEXT,3DNow,AltiVec等等2消息接口初始化3命令行选项解析组件4创建播放列表5仓库初始化6加载所有内置和动态组件7打开接口8安装信号处理器SIGHUP,SIGINT和SIGQUIT捕获一个,忽略后来的并退出。9派生音频输出线程10派生视频输出线程11主循环事件管理下图表示了这些步骤的执行过程
fVLC的运行过程图
f32消息接口
由于pri
tf函数不是线程安全的,因此在调用pri
tf函数时一个线程的执行将会受到干扰,当这个线程被另一个函数所调用时就会其状态被破坏而退出程序。所以VLC构造了自己的线程安全的消息接口。VLC的线程安全的消息接口有两种实现方式如果在co
figh里定义了INTF_MSG_QUEUE的话,每一个类似pri
tf的函数将会把排队的消息放到链表里,这个链表将会在事件循环中被线程接口用红色标记的方式打印出来。如果INTF_MSG_QUEUE没被定义的话,调用线程将会获得一个pri
tlock用来防止在同一时刻有两个pri
tf操作被执行同时直接打印出消息默认操作。以下为VLC线程安全消息的APIQueueMsg添加一条消息到消息队列,如果消息队列满了,先打印所有的消息FlushMsg打印所有在消息队列里的消息,特别的,消息队列必须被提前加锁,因为该函数不检查锁。Pri
tMsg打印一条消息到stderr,可以打印彩色消息。
33命令行选项
VLC用GNU的getopt解析命令行选项。Getopt结构定义r
好听全球资料 返回顶部