0 X264官方地扯

  http://www.videolan.org/developers/x264.html

1 X264官方编译的二进制程序命名格式

  官方编译出了LINUX,Win32,Win64等不同OS平台下可运行的版本,每个程序(举例x264-r2694-3b70645.exe)的名称以"-"分成三部分,第一部分为x264,第二部是跟据x264所使用git版本库中记录的提交版本号计算出来的提交次数值, 第三部分是git版本库记录的提交的真实版本号的前7个字符截取出的字符串,另外由于X264还编译出了支持10位位深的程序,这类程序是通过在x264后跟10b表达的,10bit位深程序命名示例:x264-10b-r2694-3b70645.exe

2 通过源代码编译出的X264程序,版本号最后一项为什么是x

  这个情况是通过day tarball下载方式下载的源代码,由于没有git相关信息,所以编译出的程序通过-V 查看版本号时会显示诸如:0.148.x,而不是:0.148.2705 3f5ed56(148是X264 Build 版本号)。所以为了同行之间方便交流或程序升级管理方面考虑,最好还是安装git,通过git下载源代码并编译出适合自己的x264程序。

3 X264版本号定义头文件

x264_config.h,其中的宏定义如下:

  1. #define X264_REV 2699
  2. #define X264_REV_DIFF 0
  3. #define X264_VERSION " r2699"
  4. #define X264_POINTVER "0.148.2699"

这几项宏定义是在编译前运行configure时,由configure调用version.sh生成的,version.sh内容如下:

  1. #!/bin/sh
  2. [ -n "$1" ] && cd $
  3.  
  4. git_version() {
  5. trap 'rm -f config.git-hash' EXIT
  6. git rev-list HEAD | sort > config.git-hash
  7. LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
  8. if [ $LOCALVER \> ] ; then
  9. VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'`
  10. VER_DIFF=$(($LOCALVER-$VER))
  11. echo "#define X264_REV $VER"
  12. echo "#define X264_REV_DIFF $VER_DIFF"
  13. if [ $VER_DIFF != ] ; then
  14. VER="$VER+$VER_DIFF"
  15. fi
  16. if git status | grep -q "modified:" ; then
  17. VER="${VER}M"
  18. fi
  19. VER="$VER $(git rev-list HEAD -n 1 | cut -c 1-7)"
  20. VERSION=" r$VER"
  21. fi
  22. }
  23.  
  24. VER="x"
  25. VERSION=""
  26. [ -d .git ] && (type git >/dev/null >&) && git_version
  27. echo "#define X264_VERSION \"$VERSION\""
  28. API=`grep '#define X264_BUILD' < x264.h | sed -e 's/.* \([1-9][0-9]*\).*/\1/'`
  29. echo "#define X264_POINTVER \"0.$API.$VER\""

从中可以看看X264的版本号格式为:0.$API.$VER,其中$API是由X264.h头文件的X264_BUILD宏定义读入的;$VER由git提交记录行(一行一个版号最,多少行就是多少了,也可以理解为提交次数)推导出来的,外加git记录的提交版本号截取出前7个字符构成的字符串。

4 X264的源代码用到版本号宏定义的部分代码

  x264命令行程序的帮助与版本号查询命令的输出部分及x264的资源文件部分。

5 X264的64位VS32版本

  通过简单测试,x264 64位程序比32位同期版本运行速度快10%左右。

X264的版本号的更多相关文章

  1. [X264] MinGW编译x264,VC中调用libx264.dll-------------<参考转>

    1. 下载并按照MinGW,最好就缺省按照    http://sourceforge.net/projects/ ... ler/mingw-get-inst/    把C:\MinGW\bin添加 ...

  2. 移植X264成功

    http://blog.csdn.net/mashang123456789/article/details/8673426 http://blog.csdn.net/b5w2p0/article/de ...

  3. x264阅读记录-1

    x264阅读记录-1 采用x264版本是x264-snapshot-20060316-2245. 1. main函数 x264的main函数位于x264.c中,下面是main函数调用情况: (1)_s ...

  4. (转)windows下编译最新的x264

    二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的( ...

  5. linux 编译ffmpeg 支持x264, x265

    1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...

  6. x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()

    x264代码剖析(三):主函数main().解析函数parse()与编码函数encode() x264的入口函数为main().main()函数首先调用parse()解析输入的參数,然后调用encod ...

  7. x264代码剖析(十五):核心算法之宏块编码中的变换编码

    x264代码剖析(十五):核心算法之宏块编码中的变换编码 为了进一步节省图像的传输码率.须要对图像进行压缩,通常採用变换编码及量化来消除图像中的相关性以降低图像编码的动态范围.本文主要介绍变换编码的相 ...

  8. iOS之应用版本号的设置规则

    版本号的格式:v<主版本号>.<副版本号>.<发布号>  版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1.  产品的主体构件进 ...

  9. Open-Test 测试驱动模式与版本号管理机制

    以测试用例驱动项目开发,coding/case俩条线并走模式.   1.开发人员只负责功能实现:   2.测试人员提供自测用例,研发人员jenkins持续集成项目后自动化执行自测用例,通过后方可转测试 ...

随机推荐

  1. 我的Emacs折腾经验谈(二) Emacs上手难的原因

    既然之前说过要写我怎么继续折腾Emacs的,过了一个星期这里就是第二篇了,突然觉得我把blog这样分节不是很好,每次可能要凑一些东西才有该有的篇幅,而且说的东西可能东一点西一点,这样一篇看下来不利于检 ...

  2. 由IEnumerable和IEnumerator的延伸

    相信大家在学习c#的时候,经常会看到IEnumerable.IEnumerator这样的接口或返回类型,在写代码时经常会对数组或List集合进行遍历.那IEnumerable和IEnumerator是 ...

  3. 快速构建C++项目工具Scons,结合Editplus搭建开发环境

    Windows下C++开发工具用的最多的非VS莫属了(当然也有很多比如eclipse,Qt等等),便捷的项目构建向导,再加上强大的VC助手,使得开发和调试得心应手.并不是说vc就没有缺点,相反缺点也不 ...

  4. Python之路 1Day

    1.python基础入门   作者:黄旭 提示: 语法基于python3.5版本(会提示2.7版本和3.5版本的区别) Python命令行将以>>>开始,比如 >>> ...

  5. android 弹出带输入框的对话框

    private void inputTitleDialog() { final EditText inputServer = new EditText(this);         inputServ ...

  6. crudandroidandroid——CRUD(在上一篇博客的基础上)

    废话就不多说了,开始... 1.Person package com.njupt.sqlite; public class Person { private Integer id; private S ...

  7. 总结 React 组件的三种写法 及最佳实践 [涨经验]

    React 专注于 view 层,组件化则是 React 的基础,也是其核心理念之一,一个完整的应用将由一个个独立的组件拼装而成. 截至目前 React 已经更新到 v15.4.2,由于 ES6 的普 ...

  8. Linux centos7环境下安装JDK的步骤详解

    Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令:   java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...

  9. 关于C/C++中的“auto”

    C/C++ 98标准 C++03标准 意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存.auto的出现意味着,当前变量的作用域为当前函数或代码段的局部变量,意味着当 ...

  10. Mac下使用charles遇到的问题以及解决办法

    最近使用上了Charles,因为之前一直使用Fidder,所以还是碰到了一些问题,这里记录一下. 如何安装破解版 打开charles后,发现访问但是抓不到包 抓取HTTPS的接口,看response是 ...