查看完整版本: [-- [分享] Direct264 自编译版(2012.03.18更新 x264 core120 r2171) --]

『漫游』酷论坛 -> 『影音数码技术学习交流』 -> [分享] Direct264 自编译版(2012.03.18更新 x264 core120 r2171) [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

<<   1   2  >>  Pages: ( 2 total )

upyzl 2011-04-30 12:40

[分享] Direct264 自编译版(2012.03.18更新 x264 core120 r2171)

一直没有看到direct264的带patch的编译版,去年12月5日还是linuxyouxia好心帮我编译了一个带fadecomp和fgo的mod,不过总不能麻烦别人,于是决定自己动手,丰衣足食好了。

项目:http://code.google.com/p/direct264umod/

编译环境:
Win7 x64 SP1
MSYS 1.0.17.1
mingw-gcc 4.6.3
yasm 1.2.0
libav-v0.8-1060-g90e5b58 [win32threads, 20120316]

Patches:(这部分还是要感谢06_taro提供的diff,至少省去了一个一个找diff的时间;不过因为direct264与官方x264差别较大,大部分都需要手动改)
01. Ofast & LTO config + ModTag (Update)
02. Film Grain Optimization (Update) (help里添加需要subme>=7和0-50范围的提示,增加AVX支持)
03. Fade Compensation (额外使用x264_clip3f将参数范围限制在0.0-1.0, 不然即使用100也是有效的,help里也添加了说明)
04. Remove stats before renaming
05. Auto VBV Settings
06. Force level
07. Filter: hqdn3d/pad/vflip/yadif
08. Logger
09. Encode Time
10. Cosmetic (4位小数被我改成2位)
11. AviSynth 16bit hack
12. Skip bit-depth filter
13. Correct LimitRange 8 -> 10 bit-depth conversion (rawinput部分似乎还需要改动...)
13. Add back "touhou" tune info (New)
14. AQ Mode 3 & 4 (New)
15. Fix AviSynth color space converting matrix (New)
16. Fprofiled Extension (Update)
说明:
1)没打L-Smash的,觉得用direct264的话,音频要么用dshow2wav配合ffdshow audio及音频编码器编码,要么直接用roozhou的ffmpeg复制音轨封装,貌似也没有什么不方便之处(此外direct264是内置GPAC的,不知道如果弄L-Smash会出现什么问题。。。)目前正在考虑如何用L-Smash替换GPAC
2)MixAQ/OreAQ代码部分完全不懂,为了保证x264的稳定性故决定不打这些补丁了
3)之前看到amfilica希望打上me-prepass的补丁(其实我看到umh+prepass>esa也很想打),不过自r9xx后需要对patch做大量代码更改(目前是因为h->mc.get_ref会少参数);另外比较代码,应该很早mv_x/y_min/max_qpel就取代了me-prepass里面的mv_x/y_min/max4,所以me-prepass应该是没有用了

Build Info:(取消了lavf和ffms, ffms显然在direct264里没用;lavf的优势应该是处理图片序列吧,所以取消了,这样x264能小不少)
引用
Platform:      X86
System:        WINDOWS
cli:           yes
libx264:       internal
shared:        no
static:        yes
asm:           yes
interlaced:    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
strip:         yes
PIC:           no
visualize:     no
bit depth:     8 / 10
chroma format: all / 420


direct264 changlog: http://direct264.svn.sourceforge.net/viewvc/direct264/?view=log

----------        下载:      ----------
115网盘文件夹地址
DBank网盘文件夹地址
(只更新完整版)

注意: 如果是第一次用direct264,建议直接下载完整版:http://115.com/file/anm02rya

最上方的Google Code上亦有编译好版本的下载以及所有源码。


版本说明(仅以最新版为例):下载后里面有4个x264*.exe
x264-8bit-all.exe --> 8bit标准版本
x264-8bit-420.exe --> 8bit标准版本,只支持YUV 4:2:0输出(不影响输入)
x264-10bit-all.exe --> 10位深版
x264-10bit-420.exe --> 10位深版,只支持YUV 4:2:0输出(不影响输入)

注1:可能是因为gcc优化的关系,编译的core2版在编码速度上反而还不如generic版,故不提供core2版
注2:只支持4:2:0输出(不影响输入),主要为了更快的编码速度,并且绝大部分情况也只需要4:2:0输出。
注3:不再编译Intel/AMD部分系列专用CPU版本的原因:此次更新涉及巨量汇编优化,gcc优化的优势进一步缩小;此外,对应CPU的编译版我没法做fprofile(这需要使用对应的CPU编译),而gcc fprofile本身就有加速编码速度的作用(同时大幅缩小x264.exe体积)


因为涉及direct264专有部分的汇编相关代码的关系,direct264目前暂不支持x64的编译。  











upyzl 2011-04-30 12:51
本楼简要说明下patch(一定程度上方便新人), 另随7z包里有帮助文件。
这些是按我理解的说明,未必完全正确,故最好事先实测看看,有疑问可先行搜索查询;欢迎各位指正。


Film Grain Optimization:
  - 使用 --fgo <int>  默认0  范围0~50  需要subme>=7  如果是2pass编码,且pass 1时没有使用--slow-firstpass, 则此参数在pass 1时强制归0(不影响pass 2)
  - 作用 顾名思义,主要针对film和grain类型视频的特别优化。全称应该叫PSY Film Grain Optimization, 与x264现有的--psy-rd采用的算法不同。具有抑制Banding产生的作用。一般不需要设很高的值,对动画来说5以内即可。不熟的话最好用2pass斟酌比较看看。 (本人在help里添加了额外的信息;增加AVX支持-->by 06_taro )

Fade Compensation:
- 使用 --fade-compensate <float>  默认0.00  范围0.00~1.00  注意如果使用了--no-psy或者--no-mbtree, 则此参数无效;如果使用--weightp 0,则这个参数会自动+0.1
- 作用 为淡入淡出场景补偿/分配更多的码率。对没有什么fade的场景一般不需要开,现在默认的--weightp 2在这方面就能处理得比较好。按需求使用。 (增加强制限制0.0-1.0  完善help)

Remove stats before renaming:
  - 使用 被动使用。
  - 作用 2pass下对--stat相关有微量性能提升。  

Auto VBV Settings:
- 使用 --vbv-maxrate <auto_high|auto_main>
            --vbv-bufsize <auto_high|auto_main>
  - 作用 根据--profile和--level的参数自动设定该H.264规格等级下对应的VBV数值。

Force level:
  - 使用 --level-force
  - 作用 强制level, 确保视频符合H.264 level规范。

Filter: hqdn3d/pad/vflip/yadif
  hqdn3d

    - 使用 --vf hqdn3d:ls,cs,lt,ct
    - 作用 降噪滤镜,源于Mplayer,质量效果明显优于x264自带的--nr
  pad
    - 使用 --vf pad:[left][,top][,right][,bottom][,width][,height][,red][,green][,blue]
    - 作用 加边。如跟640x360的视频上下各加60像素黑边补成640x480,则用--vf pad:0,60,0,60
  vflip
    - 使用 --vf vflip
    - 作用 垂直翻转视频。
  yadif
    - 使用 --vf yadif:[mode][,order]
    - 作用 反交错滤镜,源于Mplayer. 注意当同时resize时,必须先反交错。

如果想同时使用多个滤镜,比如1280x720的片源,想resize成640x360再加黑边到640x480,参数为--vf resize:640,360/pad:0,60,0,60 其余依此类推。
虽说很多滤镜ffdshow就可以实现,但有时候如果想用CoreAVC解码获取更快的整体编码速度的话(本人测试能有至少5%的编码速度提升,相比ICL12编译的ffdshow),这些滤镜还是挺有用的。

Logger:
  - 使用 --log-file <string> --log-file-level <int/string> 其中CLI窗口部分为自动显示(需要配合direct264自己的--versioninfo)
  - 作用 显示x264写入H.264 SEI的编码信息(即mediainfo里的Encoding Settings);额外以文件形式保存x264在编码时的信息。

Encode Time:
  - 使用 被动使用。
  - 作用 显示开始编码时间、结束编码时间,以及编码耗费时间。

Cosmetic:
  - 使用 被动使用。
  - 作用 美化用。主要是改了crf的显示。  

AviSynth 16bit hack:
  - 使用 被动使用。
  - 作用 让x264支持(含dither伪)16bit AVS输入,而不需要通过avs2yuv等pipe方式。

Skip bit-depth filter:
  - 使用 被动使用。
  - 作用 跳过位深滤镜以防止因dither产生的错误。

Correct LimitRange 8 -> 10 bit-depth conversion:
  - 使用 被动使用。
  - 作用 纠正当使用10bit版x264,输入是Limited Range 8bit-depth时程序内部转换到10bit的错误处理,以更好符合BT.709;FullRange没变。

AQ Mode 3:
  - 使用 --aq-mode 3
  - 作用 BugMaster基于aq mode 2修改而来,相比AQ Mode 2略微提升了SSIM, 速度上有略微损失(同码率,其余条件相同)。

Ofast & LTO config + Fprofiled Extension:
  - 使用 编译相关。
  - 作用 让编译后的x264编码速度更快、体积更小(不过与没有此patch的x264也不会有大的区别)。



roozhou 2011-05-06 21:30
楼主可以尝试加入lavf啊,不然内置的滤镜不能用。

upyzl 2011-05-07 00:11
呃……dshow下小测了 --versioninfo --dscrop --sub --deldup --starttime --endtime --vf resize/pad/crop/select_every/hqdn3d
跟原版有的东西比,没发现跟带lavf的原版有什么区别……还是说我理解错了?

06_taro 2011-05-07 02:26
我的diff全是以l-smash为基础定制的,而且为了方便打上都是按照编号顺序在前面的基础上继续加的patch(自己平时直接type *.diff >01-14.diff然後直接那这个diff去批量……),pure版绝大多数要改,所以不如直接去找komisar等人提供的以原版为基础的diff文件

l-smash和gpac的mux机制也不一样,个人更喜欢l-smash的所以完全没考虑gpac的兼容性……

MeteorRain 2011-05-07 03:19
我现在已经微妙地成为lavf党了…… (滚来滚去

upyzl 2011-05-07 11:15
@06_taro  
其实用komisar等人的diff,也要手改,至少fgo和fadecomp要弄很多。。

@MeteorRain  
MR大用lavf么..主要是之前用lavf各种问题,不知道现在怎么样了……

MeteorRain 2011-05-07 11:58
@upyzl
up大..球详细

upyzl 2011-05-07 12:11
@MeteorRain  

之前主要是播放问题,花屏/闪屏或者不能播放,当时用avs的DSS就没这些问题。。不过那很久以前了的样子,而且貌似lavf一直也在更新吧,应该比以前好多了

ps:你叫我大我压力很大呃。。

roozhou 2011-05-08 00:23
如果l-smash能做成internal的话,我也会考虑的。我个人很不喜欢一大堆lib的那种,最好是把代码放到一起编译,这样编译起来很方便。

06_taro 2011-05-08 02:35
l-smash需要的外置lib都是用於音頻編碼的。如果只要音頻混流,或者enable-lavf時用lavf的內置音頻編碼器的話,l-smash是不需要其他include和lib的(libvo-aacenc之類極少數除外)。相反倒是gpac需要一個又巨大又難編譯的libgpac_static.a

而且l-smash的configure已經改得很到位了,默認只要lib在默認文件夾內的話都不需要extra flags就自動把lib包含進去了,基本上沒有需要手動調整的,當然MSVC編譯的話另當別論= =

話說roozhou大大喜歡用MSVC編譯的話可以試試用icc做compiler,現在的x264代碼應該是完全支持icc的編譯的,而且icc本身又符合c99標準,不像vc的各種RP……

roozhou 2011-05-09 18:39
我从来没用过icc啊,而且用vc的目的就是方便,编译快,便于调试,而且生成的较小。性能上1%左右的差距并不重要。icc在amd上性能很悲剧,而且编译速度太慢,出来的文件比gcc还大,却没gcc快。

gpac我是把代码放到x264_cli的工程里去的,不需要libgpac_static.a。以前的libpthread也是。我想要的是能和x264_cli一起编译,不要做成一个分开的lib需要另外编译。我希望的结果是,下载代码后,在vc里打开工程,按F7就能编译。

mickoo 2011-06-04 08:35
其实我希望direct264能有64bit版,用原版32位和64位的X264对比,发现64位的比32位在我的机器上差距还是很大的,现在无奈只能安装64位的AVS,不知道原版的X264_64能不能调用ffdshow,因为我直接喂的话,是调用ffms的

MeteorRain 2011-06-04 13:58
装64位的ffdshow,没问题。虽然我还是推荐走lavf或者ffms -_,- 省内存,速度又超快

mickoo 2011-06-05 00:08
我装了64位的ffdshow啊,不过他还是调用ffms,我用ffdshow是想用设置分辨率,ffms不知道怎么设置

06_taro 2011-06-05 00:16
原版x264没有dshow作为demuxer,所以当然没法直接在dshow里调用ffdshow……

raw, y4m, avs, lavf, ffms还有direct264的dshow作为demuxer是互斥的,用了ffms就肯定没法同时dshow了

upyzl 2011-06-05 09:29
引用
引用第12楼mickoo于2011-06-04 08:35发表的  :
其实我希望direct264能有64bit版,用原版32位和64位的X264对比,发现64位的比32位在我的机器上差距还是很大的,现在无奈只能安装64位的AVS,不知道原版的X264_64能不能调用ffdshow,因为我直接喂的话,是调用ffms的


因为direct264专有部分的x86_64 asm还没实现,所以编译不了x64的版本,只有等roozhou有时间再完善了……

只要是DirectShow方式就可以调用ffdshow,不过既然都是要用avs,不如就用avs的滤镜好了……


MeteorRain 2011-06-12 13:24
http://www.jsharer.com/download/ff808081308215ef013082423b92006b.htm

手头没法编译x264,所以求补丁可行性测试和效能提升测试……

upyzl 2011-06-12 15:02
引用
引用第17楼MeteorRain于2011-06-12 13:24发表的  :
http://www.jsharer.com/download/ff808081308215ef013082423b92006b.htm

手头没法编译x264,所以求补丁可行性测试和效能提升测试……



编译好的2个x264(direct264):  http://u.115.com/file/dnsn6k49

不过为啥我这速度反而变慢了。。

MeteorRain 2011-06-12 18:11
谢过……主要是想测一下强制指定线程导致减少的线程核心切换带来的损益。因为我这边如果不限定核心的话neroaacenc的编码速度慢了2倍,eac3to和dgindex也要慢一倍左右……

一会儿回家了研究下

MeteorRain 2011-06-12 22:31
测完了,没生效,我再想办法调试下吧 -_-...

roozhou 2011-06-15 20:05
限制核心应该用任务管理器就能实现吧。这种工作更适合让调用编码器的程序来实现(比如GUI)来做,而不是让编码器进程靠参数自己来做。

fansge 2011-06-16 08:50
我的机器也是64位的,还在用32位的x264。现在机器越来越多都是4G内存,所以用的是64位操作系统。

MeteorRain 2011-06-18 01:00
引用
引用第21楼roozhou于2011-06-15 20:05发表的  :
限制核心应该用任务管理器就能实现吧。这种工作更适合让调用编码器的程序来实现(比如GUI)来做,而不是让编码器进程靠参数自己来做。

主要想测试一下把线程固定在核心上的效果。这个任务管理器是做不到的。

另外说下测试结果吧。我这边threads=2的时候定死线程的版本跑的比较快,但是线程数上去以后就比原版慢了。

upyzl 2011-09-07 10:51
更新至Direct264 r396
更新编译环境
增加了一些patch (12-15)
增加10bit编译版

寒小梅 2011-09-10 12:16
终于更新了 顶一个- -

ROLL 2011-09-12 02:47
这位大哥的推论是正确的吗
www.techpowerup.com/forums/showpost.php?&p=2390304&postcount=261
www.techpowerup.com/forums/showpost.php?&p=2390327&postcount=263
如果是x6和8核相比,他茫想的前景太美好了,但如果他用的只不过是x4,这也太high了吧…这预期不是预想之内吗(虽然我是觉的这拉上补下的仮八是不太可能做到2x+

等A记等到和A记没朋友做了
如果十月真是能够买到的话 (我乐观的想也要十月尾),但据闻11月中的I记又会有新U推出,到时候A记铁定会跌价,那十月买的不就短短一月左右没有了几百元的差价…

upyzl 2011-09-12 09:08
推土机具体什么时候上市还是不确定
http://news.mydrivers.com/1/203/203883.htm

至于那位老兄说的,在实物的评测出来前,目前什么都不好说……

mawen1250 2011-09-12 11:37
作为一个A fan,我表示推土机越来越悲剧的感觉

MeteorRain 2011-09-14 05:24
作为一个A fan,我表示等不及推土机了于是去弄了个1090T玩玩……只要160刀

roozhou 2011-09-14 21:00
包开核的640T只要750左右。K10单线程同频性能和core2一个水平。

ROLL 2011-09-15 05:58
作为一个由上年3月就等到现在的铁杆A fan表示,即使偶的已用5年久的旧机由今年一月开始就坏坏的
但偶就算要拔内存,要降频,开关机子要分几钟、再使要和硬盘分页文件不断的打交道,偶也是不会放弃的,因为现在放弃就是输了…(悲情状

基于现在是没有U(推土机)的环境,那也就没有必要买板子空等,而且我也不想帮A记清空旧库存(cpu)…
如果真的是撑不到推土机出来的话,偶也只好泪目考虑转用I记……

即使能撑到推土机
一想到购入时就已经要承受店家新品的“托价”之外,但马上又要承受来自I记新品压力的减价,这差价损失真是高兴不起来

暗影翔 2011-09-16 14:02
引用
引用第30楼roozhou于2011-09-14 21:00发表的  :
包开核的640T只要750左右。K10单线程同频性能和core2一个水平。


拿来压片有一个核心有问题会有大麻烦吧,游戏有一个核心有点问题无所谓
————————————————
推土机旗舰8150从目前的情况看多线程性能达到略超2600,单线程杯具得很,跑满线程的话,单线程性能同频比k10.5还次。
下面的问题就是bd在风冷的条件下能OC到多少,以及功耗如何

ROLL 2011-09-17 09:39
在通用指令集架构标准即将升级到SSE4的大背景之下(何谓通用? I记、VIA、推土机三家同样支持到SSE4)
我就不会去选择老旧的SSE3肥龙了,即使它的单线程性能同频比k10.5还次,是A记P4再版也好…
P4是用过啦,的确挺废,当时用还好,但时间过越久,在新的软件应用之前就越觉是废(频率性能比不大
但推土机嘛…虽然不知道那些XOP、FMA4是不是又一个没什么人用的3DNOW再版…嘛,只要它的未来不要象P4那样越后越觉废就行了…
不过和下年的E-BD相比初版推土机缺少了CVT16这一点,感觉是有点比A记坑了(收不足当年SSE5版推土机的货

11月16日,新的推土机的消息发布(…坑爹啊,是真的推土机,九月等来的就只有这个消息吗 :(
www.miningweekly.com/article/equipment-manufacturer-introduces-new-bulldozer-to-its-d11-range-2011-09-16

mawen1250 2011-09-17 20:35
推土机新的测试:http://www.chiphell.com/thread-266816-1-1.html
x264性能还算相当不错了,仅次于i7 990X
但是单线程性能可能会悲剧,如果AVS用的EP滤镜的话……(多线程的AVS有办法不出错吗?)

roozhou 2011-09-18 00:47
指令集这东西真没必要太在意,SSE4不会有什么明显提升,原有指令的执行效率才是关键。压片如果是要跑2pass的,还是应该注重单线程性能。

不过avs这东西的确对多线程不友好,我看了下即使滤镜内部实现frame level的多线程也做不到,被avs的接口完全限制住了。不像DirectShow里那样可以随心所欲。

ROLL 2011-09-18 01:04
图很小…放大2倍后基本能看,似乎是黙频成绩,有没有开turbo卻未可知
720p好象是这个数
2600k 36.xx i7-9xx 49.xx 8150 43.xx

Pi好悲剧,真的不是L1的关系?!
是卡在L1写入吗,这也太低了吧
BD的L1大小不是比K10缩小了吗,印象中L1越小越容易提高带宽

roozhou 2011-09-18 14:39
Pi这么简单程序能让L1影响了?

暗影翔 2011-09-18 21:47
引用
引用第36楼ROLL于2011-09-18 01:04发表的  :
图很小…放大2倍后基本能看,似乎是黙频成绩,有没有开turbo卻未可知
720p好象是这个数
2600k 36.xx i7-9xx 49.xx 8150 43.xx

Pi好悲剧,真的不是L1的关系?!
是卡在L1写入吗,这也太低了吧
BD的L1大小不是比K10缩小了吗,印象中L1越小越容易提高带宽


越小应该是延迟越低,不一定带宽高

amfilica 2011-09-21 15:42
来了 支持新东西的说

ROLL 2011-10-05 10:40
近日那个快4x的言论,再次增加偶待购的信心(虽然不知道那4x是快在那一部分,对整体编码速度影响有多大)
有没有专业可以略为分析的说一下呢?
来源:外连url

囧~那“金属板”要买套装或是送测才有的吗,吐血,偶又没有打算购买高阶板子的说…
来源:外连url

虽然对下年的BDv2有点口水 (支持FMA3的话,相比旧版BD就会在软件的icl编译版本中较为有好处吧?)
但既然都已将购入目标定为BD,偶应该不会为了那少少性能提升再入手BDv2…

等到正式发布啦…
囧…从评测中有两个高点,Inter-Core Latency慢上代约1倍,慢I店的约4倍,第二个是功耗很华丽夺目…
这个功耗表现还对的起它的性能吗……定价似乎也贵过1100T不少,这样还向不向BD出手是一个问题

偶也是有点明白他的愤怒啦 (主要是耗电方面),所以就校做了 元-手 愤 怒 推.土.机 版的srt时间轴(累)
中文内文自己复帖就是,这时间轴是for yo u tube的

一时间轴公開終了一

泪目…比预想贵出太多……入手不能,入手这个都能去入手2600K (这样的铁杆干不了

06_taro 2011-10-17 01:34
既然現在增加qtaac了總覺得更應該用lsmash了……

upyzl 2011-10-20 11:56
引用
引用第41楼06_taro于2011-10-17 01:34发表的  :
既然現在增加qtaac了總覺得更應該用lsmash了……


是给roozhou大的建议吧
我后来试过还是无法正常整合,水平有限……

upyzl 2011-10-20 13:44
本来希望推土机把I系U价格拉低,估计我还是等IvB出来再考虑是否换PC好了

xijiao2000 2011-10-21 00:59
AVS为源FPS异常

upyzl 2011-10-21 11:47
引用
引用第44楼xijiao2000于2011-10-21 00:59发表的  :
AVS为源FPS异常

如果你确定不是source滤镜相关的问题的话
可以用AssumeFPS
或者用ffdshow开avs加载滤镜(注意要删掉avs本来的source滤镜)
或者用avs input的时候建议不用direct264...



xijiao2000 2011-10-22 16:57
不用AVS的话,direct264能设定帧率吗

upyzl 2011-10-22 18:43
自动设定

删一般重复帧用--deldup
telecine的片子可以用--ivtc
反交错用ffdshow开avs也能挂QTGMC,这个我压过1080i的没问题

还是你有其他需求要特别更改?

xijiao2000 2011-10-22 18:57
想改为23.976FPS的VFR输出怎么处理

06_taro 2011-10-22 21:06
vfr可以養成加--timebase 1001/120000的習慣……


查看完整版本: [-- [分享] Direct264 自编译版(2012.03.18更新 x264 core120 r2171) --] [-- top --]


Powered by phpwind v8.5 Code ©2003-2011 phpwind
Time 0.036514 second(s),query:3 Gzip disabled