X264的版本號


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,其中的宏定義如下:    

#define X264_REV 2699
#define X264_REV_DIFF 0
#define X264_VERSION " r2699"
#define X264_POINTVER "0.148.2699"

 這幾項宏定義是在編譯前運行configure時,由configure調用version.sh生成的,version.sh內容如下:  

#!/bin/sh
[ -n "$1" ] && cd $1

git_version() {
trap 'rm -f config.git-hash' EXIT
git rev-list HEAD | sort > config.git-hash
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
if [ $LOCALVER \> 1 ] ; then
    VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'`
    VER_DIFF=$(($LOCALVER-$VER))
    echo "#define X264_REV $VER"
    echo "#define X264_REV_DIFF $VER_DIFF"
    if [ $VER_DIFF != 0 ] ; then
        VER="$VER+$VER_DIFF"
    fi
    if git status | grep -q "modified:" ; then
        VER="${VER}M"
    fi
    VER="$VER $(git rev-list HEAD -n 1 | cut -c 1-7)"
    VERSION=" r$VER"
fi
}

VER="x"
VERSION=""
[ -d .git ] && (type git >/dev/null 2>&1) && git_version
echo "#define X264_VERSION \"$VERSION\""
API=`grep '#define X264_BUILD' < x264.h | sed -e 's/.* \([1-9][0-9]*\).*/\1/'`
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%左右。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM