vlc
奔向火星005
该博客只是本人记录笔记用的,非分享和教程,有很多描述不清或错误的地方,请多多包涵,当然,欢迎指正~
展开
-
vlc分析之基础结构
vlc的基础结构主要为:typedef struct vlc_list_t vlc_list_t; typedef struct vlc_object_t vlc_object_t; typedef struct libvlc_int_t libvlc_int_t; typedef struct date_t date_t;现只分析vlc_object_t和libvlc_int_t其中vlc_obj原创 2017-05-13 12:46:59 · 323 阅读 · 0 评论 -
vlc分析之基础变量
1.vlc的变量主要为variable_t,实际上它相当于一个键值对: 2.创建一个variable_t:int var_Create( vlc_object_t *p_this, const char *psz_name, int i_type )从该函数可以看出,一个variable_t总是关联着一个vlc_object_t 的,即一个vlc_object_t 内部管理者许多variable_原创 2017-05-13 13:39:05 · 409 阅读 · 0 评论 -
vlc之vlc_object_t对象的内存模型
上面提到,vlc_object_t对象之中管理着许多variable_t变量,直接看源码还是挺绕的,直接画了一张内存模型图: 每一个vlc_object_t对象在内存中的“上面”都会有一个vlc_object_internals_t(具体可看void *vlc_custom_create()创建vlc_object_t的代码),vlc_object_internals_t中的var_root指针以原创 2017-05-13 14:11:33 · 1233 阅读 · 1 评论 -
VLC之加载插件(一)
vlc的插件是在libvlc_new()函数中完成的,该函数创建vlc程序中最核心的对象libvlc_instance_t,真正的加载动作在AllocateAllPlugins()中,从程序开始到AllocateAllPlugins()的流程为: AllocateAllPlugins()中,首先得到程序运行路径,然后得到插件的路径paths: 应用程序路径\plugins\; 然后在该路原创 2017-05-13 15:31:17 · 1487 阅读 · 0 评论 -
加载插件(二)之静态加载
举个例子来说明插件的加载,以核心插件为例,它在libvlc_new中执行,流程如下: 上图中的vlc_entry__core是一个函数指针,定义在modules.h中:/** Core module */ int vlc_entry__core (int (*)(void *, void *, int, ...), void *);那么vlc_entry__core 定义在哪里呢,为什么调用它会跳原创 2017-05-28 22:37:47 · 573 阅读 · 0 评论 -
加载插件(三)
接着(二),重新把vlc_entry__core 写出来:int vlc_entry__core (vlc_set_cb vlc_set, void *opaque) { module_t *module; module_config_t *config = NULL; if (vlc_set (opaque, NULL, VLC_MODULE_CREATE, &mo原创 2017-05-28 23:16:19 · 467 阅读 · 0 评论 -
加载插件(四)之动态加载
(三)中介绍了核心模块的加载,其实那是静态加载,现在我们介绍一下动态加载,从AllocatePluginFile()说起,参考(一)可以看到它的位置,这里不重复了。 流程如下: 上图中,调用Windows api LoadLibraryW()来加载动态库,返回动态库的句柄handle, 然后调用GetProcAddress得到动态库的输出地址,我们看到GetProcAddress的参数,也就原创 2017-05-29 00:41:56 · 380 阅读 · 0 评论 -
module_t说明
前面几章介绍加载插件时或许你已经注意到了,每个插件其实是由一个module_t结构体管理的,我们看下module_t结构体, 它在modules.h文件中:struct module_t { module_t *next; //说明它是链表的一个节点 module_t *parent; module_t *submodule; unsigned原创 2017-05-29 13:14:02 · 736 阅读 · 0 评论 -
vlc流程
总流程如下:原创 2017-06-01 08:29:48 · 401 阅读 · 0 评论