zoukankan      html  css  js  c++  java
  • VS2015编译VLC2.2.1(under WIN7-64)<转>

    概述:

    感谢https://github.com/sunqueen/vlc-2.2.1.32-2013

    这个工程,我的工作基本上都是基于它,我只是觉得他的工程设置不够清晰,重新做了一次。
    区别在于我的工程集中在win32prj文件夹中,config.h,和源码。方便用文本比较工具找出区别,便于VLC下一次更新。
    我没有提供大而全的工程,很多插件我不打算编译。sunqueen在处理汇编部分时将原工程代码用mingw编译成了第三方库,提供给VC调用,并且将原代码删除。这个方法很巧妙,另我耳目一新,但也造成源码的大幅度改动。维护难度加大,或许对需要这些插件的朋友很有用,但我用不着,所以我无需引入这些改动,尽可能最小的改动。
    我的目的是一个安防行业播放器,live555->avcodec->swscale->directdraw.能截图,录像保存,能够处理mp4,TS流。如果后续需要再引入OpenGL,其他解码库。VLC的插件方式不仅精简了发布体积,也方便后续扩展。

    工程结构概述:
    工程分为compat、libvlccore、libvlc、plugins
    compat为基础,提供平台无关的库,libvlccore、libvlc均依赖于它。libvlc同时依赖libvlccore
    plugins依赖compat

    所有的工程都包含一个共同的头文件:config.h,用VS2015编译VLC需要建立很多个项目,为了这些项目有一个统一的配置,大部分设置都写在config.h里面。比如一些define,就不需要每个工程都写了。坏处也是有的,改了其中一项,所有工程都要重新编译。

    config.h是工程的关键文件。每一项都要仔细检查,虽然注释里说如果要define某项设置要将其define 1,但绝大多数只要define一下就行了,因为程序里判断是靠#if def。

    vlc官方win32版都是推荐mingw编译的,因此有需要修改代码的地方,这里一一列出种类

    1、汇编
    libvlccore中有CPU相关的函数,获取CPU能力集保存到上下文中,为以后的函数调用提供依据,GNU的汇编和INTEL的格式不同,好在新版的VS提供了CPUID函数,但一些plugin里面有汇编代码,主要集中在色彩转换上,
    为此我避开了这些代码,用swscale来实现色彩转换,因为其也是用汇编实现,通用性更好

    2、mingw自带函数而vs没有,如gettimeofday,opendir,虽然compat项目本身就为了消除平台相关性,但这部分还得修改。为了让VS2015能用上这些函数,我从mingw-w64-crt文件夹里拷贝了源文件。

    3、VS不支持变量描述的数组,如int array[t],如果t是变量将报错,sunqueen的修改很细心,也很优雅。

    4、VS同一个工程中如果遇到两个同名源文件(文件夹不同),编译目录产生的ojb名也是相同的,后面产生的obj将会覆盖前面的。导致链接失败,这部分的修改主要靠逐个修改VS工程设置,指定obj名称,以避免被覆盖。

    5、命令#warning xxxxx改为#pragma message("warning:xxxxx")

    附上下载链接。第三方库都在里面。实在不能理解csdn的上传机制。

    http://pan.baidu.com/s/1i58p8B7

    ----------------------------------------------------------------------------------------------

    转帖地址:http://blog.csdn.net/wanruirui/article/details/48395975

    ==================================================================

    在此也感谢一下vlc源码提供者git地址:https://github.com/sunqueen

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/wainiwann/p/7513810.html
Copyright © 2011-2022 走看看