本文基于windows下的vlc,vlc版本为2.2.0。
1、 cpu性能检测:
该功能在加载libvlccore.dll时由系统调用该动态库的DllMain()(/src/win32/thread.c,该函数再调用vlc_CPU_Init())执行的,即发生在WinMain()函数执行之前,加载vlc.exe的依赖库时。通过dumpbin工具查看vlc.exe,可知vlc.exe依赖于libvlc.dll;同样可知,libvlc.dll依赖于libvlccore.dll。
2、获取命令行参数:
获取命令行参数,并在命令行参数中添加如下几个参数:"--media-library","--stats","--no-ignore-config"。
3、调用libvlc_new()创建一个libvlc(libvlc_instance_t)实例:
1. 调用libvlc_threads_init()初始化线程系统;
2. 调用vlc_custom_create(libvlc_InternalCreate())创建一个libvlc_int_t对象;
从vlc_custom_create()可以看出,实际创建的是vlc_object_internal_t和libvlc_priv_t两个连在一起的对象,返回的是libvlc_priv_t中的libvlc_int_t对象的指针:
vlc_object_internal_t |