• ffmpeg Win8移植记(一)


    最近和同事一起合作,移植ffmepg到Win8平台上。

    Windows Store 要求3个架构X86 X64 ARM, 我们主要做的就是X86和ARM的平台,

    X86的平台移植的文章已经很多了。我推荐这篇文章

    http://blog.sina.com.cn/s/blog_47612ff10101mri6.html 

    但这样编译出来的库并不能在WinRT平台上使用。ffmepg引用了很多WinRT的禁止的API,编译是可以过的,但是通过不了WACK,也不能上传到store上面。

    解决这个问题,一方面要减少ffmepg的功能,另一个方面要改写一些源代码。好在ffmpeg是一个跨平台的库,这些API都可以找到方法去替代。

    另外如果只做本地播放,可以禁止ffmepg的网络,然后再写一个流的protocol注册到ffmpeg里面。

    最后的configure 是这样的

    ./configure --toolchain=msvc --prefix=/home/Jessejiang/Output/  --disable-network --disable-programs --disable-protocols --extra-ldflags=-DWINAPI_FAMILY=WINAPI_FAMILY_APP --disable-dxva2  

    这样编译之后,还有一些log的API,这个需要找到他们,改一下源码就好。

    ARM平台还是有些麻烦的。

    首先,我们需要用 “VS201 ARM兼容工具命令提示”,从这个里面启动msys.

    关键的一步是在configure 里面加入宏_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 和_M_ARM

    最后加上交叉编译和Link的选项-MACHINE:ARM

    最后的configure 是这样的

    ./configure --toolchain=msvc --disable-programs --disable-network--disable-protocols --extra-cflags="-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE -D_M_ARM -DWINAPI_FAMILY=WINAPI_FAMILY_APP" --enable-cross-compile --target-os=win32 --arch=win32  --extra-ldflags="-MACHINE:ARM" --disable-dxva2 --prefix=/home/Jessejiang/Output/ 

    这里用没有对ARM代码进行汇编的优化,因为我试过指定arch平台,但是CPU的架构版本我没办法定义。

    最后,如果大家需要引用头文件到ffmpeg里面,需要用-I 像这样-ID:srcwin8include。 但是configure之后不能马上make,需要再config.mak 文件中找到--extra-cflags 选项,把-ID:srcwin8include 路径加上双引号-I ”D:srcwin8include“

    关于windows phone的移植,我们还没有开始,我猜大概和ARM的差不多。等做到了,我再回来补上。

    听说VS13直接支持C99那ffmpeg或许直接就可以用VS编译了。

  • 相关阅读:
    随机小错2_0527
    随计小错
    C++实现读写文件
    03-树2 List Leaves (25 分)
    获取毫秒级的时间戳
    new对象时,类名后加括号与不加括号的区别
    FoxMail 7.2的邮件存储目录修改
    C/C++ 开源算法库
    VS2015的安装
    脏内存导致BUG的问题
  • 原文地址:https://www.cnblogs.com/zjjcy/p/3384517.html
Copyright © 2020-2023  润新知