[分享] Direct264 自编译版
dwing吧
全部回复
仅看楼主
level 12
zj262144 楼主
出于没人给direct264编译第三方版本(主要是没patch),故自己决定动手,并打算长期更新(只要direct264在更新)。
编译环境:
win7 x86 + msys 1.0.17.1
mingw-gcc 4.6.0
yasm 1.1.0
Patches:
01. Film Grain Optimization (#1)
02. Fade Compensation (#2)
03. Remove stats before renaming
04. Auto VBV Settings
05. Force Level
06. Automatically Level
07. Filter: hqdn3d/pad/vflip/yadif
08. Logger
09. Encode Time
10. Cosmetic (#3)
#1: help里额外加了需要subme>=7的提示
#2: 额外使用x264_clip3ff函数强制限制fade-compensate的参数范围为0.0-1.0, help添加对应信息
#3: crf显示的有效小数位被我改为2位
其他说明:
1) direct264目前内置GPAC,与l-smash互斥,故不能打此补丁,所以音频建议用(dshow2wav+音频编码器+)其它混流器处理(如roozhou编译的ffmpeg)
2) MixAQ/OreAQ有可能对x264引起问题,再加上direct264本来与官方x264差别较大,故也不能打这些补丁
Build info:
Platform:    X86
System:      WINDOWS
asm:         yes
avs:         yes
lavf:        no
ffms:        no
gpac:        internal
gpl:         yes
thread:      win32
filters:     resize crop select_every hqdn3d pad vflip yadif
debug:       no
gprof:       no
LTO:         no
PIC:         no
shared:      no
visualize:   no
bit depth:   8
说明:取消了lavf和ffms. ffms在direct264里应该不能用;lavf的优势是处理图片序列,所以取消了,这样x264能小不少;gcc换komisar除错的4.6.0 release再次对比了下LTO对x264的编码速度影响,多次测试发现依然不如不带LTO的,故不开启这个开关
gcc CFLAGS相关开关:
-Wshadow -Ofast   -Wall -I. -march=#4 -mfpmath=sse -msse -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize -fno-zero-initialized-in-bss
#4: 本人编译时提供了3个版本的x264, generic为i686, coreix为corei7, k10为amdfam10, 当然后两者我没法做fprofiled
另:make fprofiled时会自动在合适的地方加上-fprofile-generate和-fprofile-use
make fprofiled时的Makefile改动
OPT0 = --crf 30 -b1 -m1 -r1 --me dia --no-cabac --direct temporal --tune ssim --ssim --no-weightb --weightp 0 --b-pyramid 0 --vf resize:640,360,,,,lanczos/pad:0,60,0,60
ifeq ($(MP4),yes)
OPT0 += -o tmpout.mp4
endif
OPT1 = --crf 16 -b2 -m3 -i1 --no-8x8dct --nr 100 --no-dct-decimate -t0 --rc-lookahead 0 --slice-max-mbs 50 --weightp 1 --b-pyramid 1 -I infinite --fade-compensate 0.5
OPT2 = --crf 26 -b4 -m5 -r2 --me umh --merange 64 --cqm jvt --tune psnr --psnr --no-mixed-refs --b-adapt 2 --slice-max-size 1500 --weightp 1 --b-pyramid 1 --vf hqdn3d
OPT3 = --crf 18 --b-adapt 0 -m9 -r5 --me umh -A all --direct auto --no-fast-pskip --no-mbtree --weightp 2 --fgo 10 --vf crop:16,16,16,16
OPT4 = --crf 22 -b4 -r4 --me esa --merange 12 -t2 -A all --psy-rd 1.0:1.0 --slices 4 --weightp 2
OPT5 = --frames 60 --crf 24 -m10 --me tesa -t2 -o tmpout.mkv
OPT6 = --frames 80 -q0 -m9 -r2 -Aall --direct none
OPT7 = --frames 100 -q0 -m2 -r1 -t0 --no-cabac
$(OPT$I) --threads 1
2011年05月14日 06点05分 1
level 12
zj262144 楼主
下载:(基于direct264 svn r375 / x264 core:115 r1955)
u。115。com/folder/f08b3bb7f21
patch only:
www。mediafire。com/?ze26zka9gkqtj
版本说明:
x264_generic.exe     --> 适用于几乎所有的PC
x264_coreix.exe       --> 限 Intel Core i系CPU 可用
x264_k10.exe          --> 限 AMD K10/K10.5架构 CPU/APU 可用
据Doom10的反映和本人实测,目前使用gcc -march=core2编译出来的x264在速度上无论如何都不如i686的,故不单独编译core2的版本;另外又据说k10的版本能比i686的快多达6%左右的速度,故单独编译一个
FULL包里除了x264*.exe外,其余文件为roozhou编译(ffmpeg 2011-03-12, others 2011-03-25)
目前direct264暂不支持64bit编译
2011年05月14日 06点05分 2
level 9
一直想问没有lavf,你的resize哪里来的?
还有,你的patch在哪里?
2011年05月14日 08点05分 3
level 12
zj262144 楼主
resize貌似只要i686-pc-mingw里面有libav和libswscale的li
bp
ack即可,至少我就这么弄不管怎么configure都有resize...
patch下载在2楼的MF地址
2011年05月14日 09点05分 4
level 6
Clang是除GCC外唯一支持Objective-C的编译器?
2011年05月14日 11点05分 6
level 14
如果要长期更新的话,找个适合于发布开源软件包的地方,比如Google Code和sf.net,这些都支持版本管理
2011年05月14日 15点05分 7
level 14
有的代码快,有的代码慢。
clang也只是替换的gcc的前端,后端还是gcc的,所以保证了他俩的编译开关的高度兼容。
2011年05月14日 15点05分 8
level 12
zj262144 楼主
其实我这个主要也就是打下patch, 自主开发性质的东西基本为0(最多也就是检查这些patch是否与现有版本代码相容,然后小作修改罢了)
另外direct264本身就是SF的svn项目,发现就以direct264为版本控制的蓝本在更新上还更方便一些...(估计跟我不擅长运用svn/git这些版本控制也有关系)
2011年05月15日 03点05分 9
level 12
zj262144 楼主
2011.06.22 更新
r380 (x264 r2008)
另因为MF访问困难/无限Reset
patch部分以后只在Google Code发布:code.google.com/p/direct264umod/
2011年06月22日 13点06分 10
level 12
zj262144 楼主
2011.09.03
更新至r396
添加10bit编译版,同时修复了LimitRange下x264内部8->10 bit-depth转换的问题和高位深dither相关处理的问题
增加AQ Mode 3
configure和makefile的fprofiled部分做了下调整和优化
下载参考2楼的115地址和10楼的Google Code地址
2011年09月03日 07点09分 11
level 1
能不能添加for android的profile优化?
2011年09月04日 06点09分 12
level 12
zj262144 楼主
不做fprofile是没问题的
要做fprofile我该如何模拟android环境?
不过最关键的,android可以借助DirectShow编码吗?
非win环境用x264应该是用lavf和ffms输入编码吧?
2011年09月05日 01点09分 13
level 1
请问支持直接替换MEGUI里面的X264.EXE吗?
2011年09月05日 15点09分 14
level 1

是我没说清楚,只是想要个针对android的最优preset。
目前到最新的3.2 android os,只提供baseline级的profile(iphone4可以到profile main),而且只能解码。编码的话大概以后可能会支持,现在的编码采用的是h263。
2011年09月05日 18点09分 15
level 12
zj262144 楼主
用avs输入的话,差别不大
GUI的话,用Direct264GUI更佳
2011年09月06日 00点09分 16
level 12
zj262144 楼主
也许可以--profile baseline --preset veryslow 然后配合tune;再限制下level,用我这个编译版,最好加个--level force
不如试一试
2011年09月06日 00点09分 17
level 12
zj262144 楼主
最后写错,是--level-force
2011年09月06日 00点09分 18
level 1
在高码率下用这个是没有什么问题的,但低码率就要平衡其它参数,只是对于profile baseline还有意义吗
2011年09月06日 04点09分 19
level 12
zj262144 楼主
Android环境受限应该是硬性原因吧,如果没办法摆脱profile baseline的话,低码率是没有什么好办法的
2011年09月06日 05点09分 20
level 7
支持VAX指令么
2011年09月07日 09点09分 21
1 2 3 4 尾页