『漫游』酷论坛>『影音数码技术学习交流』>[思考] 64位系统压片的 ..
翡璃月@2010-03-19 20:16
SetMTmode(2) 先宣告的話
MT就可以調用看要用哪些filter進去了
這幾天剛研究這東西
例如
SetMTmode(2)
MT("""tnlmeans(ms=true,a=1000.0)""",threads=12)
就不會讓vfw4x264.exe因為directshowsource()使用12線導致記憶體佔滿超過2GB而崩壞
xtyz@2010-03-19 22:13
仰望爱妻的楼主大大
summoner@2010-03-20 01:19
引用
最初由 翡璃月 发布
SetMTmode(2) 先宣告的話
MT就可以調用看要用哪些filter進去了
這幾天剛研究這東西
例如
SetMTmode(2)
MT("""tnlmeans(ms=true,a=1000.0)""",threads=12)
就不會讓vfw4x264.exe因為directshowsource()使用12線導致記憶體佔滿超過2GB而崩壞
看看我现在的AVS脚本,是否正确:(32位 avisynth mt)
SetMTMode(2,1)
============
Loadplugin脚本略
============
s=dgmultisource("f:\cctvhd.dgi")
SetMTMode(16)
s=s.tdeint().bilinearResize(1280,720).vinverse().gradfun2db(thr=2.1)
return s
dgmultisource("f:\cctvhd.dgi")-> 这个多线程貌似会卡...因为用显卡的...
1280x720下,x264利用率更低...只有30%...14fps.
roozhou@2010-03-20 05:05
压片用gradfun2db?
summoner@2010-03-20 09:22
更换了64位的avisynth MT
压CCAV-HD的sample, 做tdeint和简单undot.
此时CPU终于有了90%以上的占用率
C:\>x264_64.exe --pass 1 --bitrate 2940 --stats "d:\sub\orz\dh1.stats" --level 4
.1 --threads auto --thread-input --bframes 4 --me dia --ref 1 --subme 1 --no-dct
-decimate --output NUL "d:\dllsx64\test1.AVS"
avs [info]: 1280x720p 0:0 @ 25/1 fps (cfr)
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
x264 [info]: profile Main, level 4.1
x264 [info]: frame I:325 Avg QP:16.08 size:114586
x264 [info]: frame P:24467 Avg QP:19.44 size: 32049
x264 [info]: frame B:43698 Avg QP:22.12 size: 4484
x264 [info]: consecutive B-frames: 11.1% 17.6% 8.4% 12.1% 50.9%
x264 [info]: mb I I16..4: 30.7% 0.0% 69.3%
x264 [info]: mb P I16..4: 27.2% 0.0% 0.0% P16..4: 56.9% 0.0% 0.0% 0.0% 0
.0% skip:15.9%
x264 [info]: mb B I16..4: 2.1% 0.0% 0.0% B16..8: 14.5% 0.0% 0.0% direct:
14.2% skip:69.2% L0:35.6% L1:50.3% BI:14.1%
x264 [info]: final ratefactor: 20.07
x264 [info]: coded y,uvDC,uvAC intra: 52.8% 59.1% 25.0% inter: 21.3% 22.6% 6.8%
x264 [info]: i16 v,h,dc,p: 34% 24% 19% 23%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 21% 14% 8% 8% 7% 8% 7% 9%
x264 [info]: Weighted P-Frames: Y:14.7%
x264 [info]: kb/s:2970.70
encoded 68490 frames, 60.34 fps, 2970.70 kb/s
C:\>
C:\>x264_64.exe --pass 2 --bitrate 2940 --stats "d:\sub\orz\dh1.stats" --level 4
.1 --ref 3 --mixed-refs --bframes 4 --b-adapt 2 --b-pyramid 2 --weightb --direct
auto --deblock -1:-1 --subme 9 --trellis 2 --sar 1:1 --psy-rd 1.0:0.2 --partiti
ons p8x8,b8x8,i4x4,i8x8 --8x8dct --merange 32 --me umh --threads auto --output "
f:\dh1.264" "d:\dllsx64\test.AVS"
avs [info]: 1280x720p 1:1 @ 25/1 fps (cfr)
x264 [info]: using SAR=1/1
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
x264 [warning]: direct=auto not used on the first pass
x264 [info]: profile High, level 4.1
x264 [info]: frame I:325 Avg QP:17.02 size:112504
x264 [info]: frame P:24467 Avg QP:20.16 size: 30204
x264 [info]: frame B:43698 Avg QP:23.48 size: 5293
x264 [info]: consecutive B-frames: 11.1% 17.6% 8.4% 12.1% 50.9%
x264 [info]: mb I I16..4: 15.9% 69.2% 14.8%
x264 [info]: mb P I16..4: 4.5% 9.3% 0.6% P16..4: 43.7% 16.2% 9.3% 0.0% 0
.0% skip:16.5%
x264 [info]: mb B I16..4: 0.1% 0.3% 0.0% B16..8: 45.3% 0.6% 1.0% direct:
2.5% skip:50.2% L0:37.9% L1:44.2% BI:17.9%
x264 [info]: 8x8 transform intra:65.4% inter:69.5%
x264 [info]: direct mvs spatial:20.6% temporal:79.4%
x264 [info]: coded y,uvDC,uvAC intra: 61.7% 74.5% 51.5% inter: 18.7% 26.3% 3.3%
x264 [info]: i16 v,h,dc,p: 56% 16% 7% 21%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 9% 8% 9% 12% 12% 13% 12% 14%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 12% 5% 8% 13% 12% 12% 11% 14%
x264 [info]: Weighted P-Frames: Y:14.7%
x264 [info]: ref P L0: 52.8% 22.7% 14.1% 8.3% 2.2%
x264 [info]: ref B L0: 87.4% 11.1% 1.5%
x264 [info]: ref B L1: 90.8% 9.2%
x264 [info]: kb/s:2940.13
encoded 68490 frames, 18.21 fps, 2940.13 kb/s
C:\>
C:\>
roozhou@2010-03-20 13:38
tdeint居然可以MT?难道是intra-only的?
summoner@2010-03-20 17:37
引用
最初由 roozhou 发布
tdeint居然可以MT?难道是intra-only的?
没有报错,片子预览的时候也没问题,就算过了.
PSST: 我采用的MT模式不是分块,而是多帧同时处理.所以呢,路论上任何插件都可以实现MT(除了我那个CUDA加速的dgdecnv...显卡就一块,多线程反而卡...)
话说你的软件有没有64位版呢?呵呵:p
翡璃月@2010-03-20 22:55
64位不是問題
VirtualDub不是有64位版?
不然打指令也是可以直接讓x264_64.exe吃吧
問題是在於尚有頗多強大的濾鏡沒有64位的版本(前面有提過了)
所以我也還處於使用32位嫁接frame然後64位壓制的方式
roozhou@2010-03-20 23:22
引用
最初由 summoner 发布
没有报错,片子预览的时候也没问题,就算过了.
PSST: 我采用的MT模式不是分块,而是多帧同时处理.所以呢,路论上任何插件都可以实现MT(除了我那个CUDA加速的dgdecnv...显卡就一块,多线程反而卡...)
话说你的软件有没有64位版呢?呵呵:p
关键不是这个,并不是所有滤镜都需要mt,也不是所有滤镜都可以mt。
比如好的反交错需要知道前一帧的处理结果,如果1,3,5,7给第一个线程,2,4,6,8给另一个线程,那出来的结果可能就完全不对了。当然运行时不会出错,但画质就差了。而且CCTV HD是MPEG2的,解码不是瓶颈,resize也不是,tdeint的速度也能接近实时,编码才是瓶颈。
翡璃月@2010-03-20 23:48
引用
最初由 roozhou 发布
关键不是这个,并不是所有滤镜都需要mt,也不是所有滤镜都可以mt。
比如好的反交错需要知道前一帧的处理结果,如果1,3,5,7给第一个线程,2,4,6,8给另一个线程,那出来的结果可能就完全不对了。当然运行时不会出错,但画质就差了。而且CCTV HD是MPEG2的,解码不是瓶颈,resize也不是,tdeint的速度也能接近实时,编码才是瓶颈。
沒有錯[/TX]
還有載入影片的部分也不能夠多線程....
像是 directshowsource 之類的
雖然不會顯示錯誤
但是成品出來畫面可能會跳
因為每個線程...速度不一定相同嘛...
ssnake@2010-03-21 00:14
ffms-mt,或者DSS直接调能多线程的Decoder嘛,为啥必须要MT+DSS呢
翡璃月@2010-03-21 01:32
不過倒是 其實多線程解碼對於一般片源來說似乎也不是必要
甚至說對效能影響是微乎其微....
summoner@2010-03-21 09:03
引用
最初由 roozhou 发布
CCTV HD是MPEG2的,解码不是瓶颈,resize也不是,tdeint的速度也能接近实时,编码才是瓶颈。
这你就错了.
我使用avs2yuv走32位dshow由管道输送到64位编码,或者干脆使用64位dshow的时候,仍然出现CPU资源无法沾满的情况.
我用vdm做过个试验. 在不使用mt的时候,预览avs时VDM的CPU占用从不超过8%,而是用mt时却能达到30%-40%.
另外 ,tdeint 在多线程下从不出错, 你可以自己做个实验
只是itvc肯定是不能用多线程走了.... 最近不压动画tvrip,蓝光都是p的不需要ivtc所以也没怎么试.
roozhou@2010-03-21 12:00
引用
最初由 summoner 发布
我用vdm做过个试验. 在不使用mt的时候,预览avs时VDM的CPU占用从不超过8%,而是用mt时却能达到30%-40%.
只能说,多出来的22%~32%是浪费掉的。看得出来你对多线程的理解有问题。
summoner@2010-03-22 11:54
引用
最初由 roozhou 发布
只能说,多出来的22%~32%是浪费掉的。看得出来你对多线程的理解有问题。
处理的fps速度变快了是事实.
嘛啊怎么说我也是个程序员, mt的部分源码也看过.[/TX]
«123»共3页
| TOP