Показать сообщение отдельно
Старый 23.09.2010, 15:17   #415
clom
Главный Кинооператор
Медаль пользователю. СЕРЕБРО Новичок
Регистрация: 11.05.2010
Сообщения: 26
Репутация: 4
lion57 сказал(a):
Пополните свою коллекцию двумя пресетами для обработки SATRemux при создании SATRip. Надоело просто смотреть эти блочные рипы с повышенным звоном на контурах.
SAT MDMC1 MT имеет вид:
Код:
#plugin_files #ccd_sse2.vdf #vdf_arguments:CamCD:0 #Cnr2.dll #RemovegrainSSE3.dll #Repair.dll #SmoothAdjust-x86.dll #Warpsharp.dll #fft3dfilter.dll #dfttest.dll #mvtools2.dll #MT.dll #mt_masktools-25.dll #AddGrainC.dll #Gradfun2db.dll #Ylevels.avs #LimitedSharpenFaster Mod.avs #Gradfun2dbmod.avs setmemorymax(768) MT(""" #ColorYUV(gain_y=0,cont_y=0,cont_u=0,cont_v=0,gain_v=0,gain_u=0,off_u=0,off_v=0) #ConvertToRGB32() #CamCD(10,1) # удаление радужности и цветового шума #converttoyv12() Cnr2("xxx",4,5,255) # удаление радужности и цветового шума #SmoothLevels(Ecenter=128, Smode=4, Lmode=2, protect=8) source = last super = source.MSuper(pel=2, sharp=2, rfilter=4) vf1 = super.MAnalyse(isb= false, blksize = 16, overlap = 4, delta = 1, search = 3, searchparam = 3, dct=5) vb1 = super.MAnalyse(isb = true, blksize = 16, overlap = 4, delta = 1, search = 3, searchparam = 3, dct=5) tsadf = source.mmask(vf1, ml = 100, kind = 1, Ysc = 255, gamma = 0.999, thSCD1 = 400) # маска SAD назад tsadb = source.mmask(vb1, ml = 100, kind = 1, Ysc = 255, gamma = 0.999, thSCD1 = 400) # маска SAD назад tmask = mt_lutxy(tsadb,tsadf,"x 255 < y 255 < x y + 2 / x ? y ? 32 - 255 * 223 /")# комбинированная маска оценки движения NR = source.MDegrain1(super,vb1,vf1,thSAD=240,thSCD1=270,thSCD2=90) mrg = mt_merge(source, NR, tmask,Y=3, U=3,V=3) mrg_super = mrg.Msuper(pel=2) cf1 = MCompensate(mrg, mrg_super, vf1, thSCD1=300) cb1 = MCompensate(mrg, mrg_super, vb1, thSCD1=300) inter = interleave(cf1, mrg, cb1) den = inter.Temporalsoften(1,8,9,15,2).selectevery(3,1) #den = inter.fft3dfilter(wintype=1,degrid=1,bw=32,bh=32,ow=16,oh=16,bt=3,sigma=2.4,sigma2=1.5,sigma3=1.7,sigma4=2.5,plane=0,ncpu=1).selectevery(3,1) #den = inter.dfttest(sstring = "0.0:4.0 0.64:2.4 0.82:3.0 1.0:1.5",tbsize=3,f0beta=1.0,threads=1).selectevery(3,1) # PROTECTING threshold = 16 cutoff = 64 maxdiff = 4 rg17 = den.removegrain(17,-1) iOB = source.mt_lut("x "+string(cutoff)+" >= x 0 ?",U=1,V=1) mB = mt_makediff(iOB,rg17,U=1,V=1).mt_binarize(128+threshold,upper=false,U=1,V=1).removegrain(5,-1) lB = mt_lutxy(den,source,"x y - abs "+string(maxdiff)+" <= x x y - 0 < y "+string(maxdiff)+" - x ? ?",U=1,V=1) smB = mt_merge(den,lB,mB,U=2,V=2) # EDGECLEANING mP = mt_edge(smB,"prewitt",0,255,0,0,V=1,U=1) mS = mP.mt_expand(mode=mt_square(radius=1),U=1,V=1).mt_inflate(U=1,V=1) mD = mt_lutxy(mS,mP.mt_inflate(U=1,V=1),"x y - "+string(64)+" <= 0 x y - ?",U=1,V=1).mt_inflate(U=1,V=1).removegrain(20,-1) smE = mt_merge(smB,Eval("smB." + "Removegrain(2,0)"),mD,luma=true,U=3,V=3) # MASKING mE = mt_edge(smE,"prewitt",0,255,0,0,V=1,U=1).mt_lut(expr="x 1.8 ^",U=1,V=1).removegrain(4,-1).mt_inflate(U=1,V=1) mL = mt_logic(tmask.invert(),mE,"min",U=1,V=1).removegrain(20,-1) mF = mt_logic(tmask,mE,"max",U=1,V=1).removegrain(20,-1) # SHARPENING pmax = source.mt_logic(cb1, "max").mt_logic(cf1, "max") pmin = source.mt_logic(cb1, "min").mt_logic(cf1, "min") sharp = smE.LSFmod(defaults="fast",preblur="ON", strength=90) shrp = sharp.mt_clamp(pmax,pmin,0,0,U=2,V=2) sL = mt_merge(smE,shrp,mL,U=2,V=2) # ENHANCING GF = sL.GradFun2DBmod(thr=1.4,thrC=1.8,str=0.4,strC=0.0,temp=90,adapt=64) FSc = mt_merge(GF,sL,mF,luma=true,U=3,V=3) FSc.mergechroma(den) YlevelsS(0,1.0,255,0,255,false) """,threads=2,overlap=16,splitvertical=false) # or threads=4 # Назначение: для качественной обработки SATRemux # Тип предварительного шумоподавителя: Cnr2 # Тип основного шумоподавителя: на основе векторного анализа оценки движения c последовательным временнЫм и пространственно-временным шумоподавителем # Тип шарпера: LSFmod # Наличие фильтра DeBanding по умолчанию: отключен # Скорость обработки: 6-7 fps on threads=2
По аналогии SAT MDMC2 MT имеет вид:
Код:
#plugin_files #ccd_sse2.vdf #vdf_arguments:CamCD:0 #Cnr2.dll #RemovegrainSSE3.dll #Repair.dll #dfttest.dll #SmoothAdjust-x86.dll #Warpsharp.dll #fft3dfilter.dll #mvtools2.dll #MT.dll #mt_masktools-25.dll #AddGrainC.dll #Gradfun2db.dll #Ylevels.avs #LimitedSharpenFaster Mod.avs #Gradfun2dbmod.avs setmemorymax(768) MT(""" ColorYUV(gain_y=0,cont_y=0,cont_u=0,cont_v=0,gain_v=0,gain_u=0,off_u=0,off_v=0) #ConvertToRGB32() #CamCD(10,1) # удаление радужности и цветового шума #converttoyv12() Cnr2("xxx",4,5,255) # удаление радужности и цветового шума #SmoothLevels(Ecenter=128, Smode=4, Lmode=2, protect=8) source = last super = source.MSuper(pel=2, sharp=2, rfilter=4) vf2 = super.MAnalyse(isb=false, blksize=16, overlap=4, delta=2, search=2, searchparam=2, dct=5, lambda=2000) vf1 = super.MAnalyse(isb=false, blksize=16, overlap=4, delta=1, search=2, searchparam=2, dct=5, lambda=2000) vb1 = super.MAnalyse(isb= true, blksize=16, overlap=4, delta=1, search=2, searchparam=2, dct=5, lambda=2000) vb2 = super.MAnalyse(isb= true, blksize=16, overlap=4, delta=2, search=2, searchparam=2, dct=5, lambda=2000) mask1 = source.mmask(vb2, ml=300, kind = 1, Ysc = 255, gamma=0.999) mask2 = source.mmask(vb1, ml=300, kind = 1, Ysc = 255, gamma=0.999) mask3 = source.mmask(vf1, ml=300, kind = 1, Ysc = 255, gamma=0.999) mask4 = source.mmask(vf2, ml=300, kind = 1, Ysc = 255, gamma=0.999) maskb = mt_lutxy(mask1,mask2,"x 255 < y 255 < x y + 2 / x ? y ?") maskf = mt_lutxy(mask3,mask4,"x 255 < y 255 < x y + 2 / x ? y ?") tmask = mt_lutxy(maskb,maskf,"x 255 < y 255 < x y + 2 / x ? y ? 32 - 255 * 223 /") NR = source.MDegrain2(super,vb1,vf1,vb2,vf2,thSAD=300,thSCD1=320,thSCD2=100) mrg = mt_merge(source, NR, tmask,Y=3, U=3,V=3) mrg_super = mrg.Msuper(pel=2) cf2 = MCompensate(mrg, mrg_super, vf2, thSAD=700, thSCD1=400) cf1 = MCompensate(mrg, mrg_super, vf1, thSAD=700, thSCD1=400) cb1 = MCompensate(mrg, mrg_super, vb1, thSAD=700, thSCD1=400) cb2 = MCompensate(mrg, mrg_super, vb2, thSAD=700, thSCD1=400) inter = interleave(cf2, cf1, mrg, cb1, cb2) den = inter.Temporalsoften(2,8,10,15,2).selectevery(5,2) #den = inter.fft3dfilter(wintype=1,degrid=1,bw=32,bh=32,ow=16,oh=16,bt=5,sigma=2.4,sigma2=1.5,sigma3=1.8,sigma4=3.7,plane=4).selectevery(5,2) #den = inter.dfttest(sigma=4,sigma2=3.2,tbsize=5,f0beta=1.0).selectevery(5,2) # PROTECTING threshold = 16 cutoff = 64 maxdiff = 4 rg17 = den.removegrain(17,-1) iOB = source.mt_lut("x "+string(cutoff)+" >= x 0 ?",U=1,V=1) mB = mt_makediff(iOB,rg17,U=1,V=1).mt_binarize(128+threshold,upper=false,U=1,V=1).removegrain(5,-1) lB = mt_lutxy(den,source,"x y - abs "+string(maxdiff)+" <= x x y - 0 < y "+string(maxdiff)+" - x ? ?",U=1,V=1) smB = mt_merge(den,lB,mB,U=2,V=2) # EDGECLEANING mP = mt_edge(smB,"prewitt",0,255,0,0,V=1,U=1) mS = mP.mt_expand(mode=mt_square(radius=2),U=1,V=1).mt_inflate(U=1,V=1) mD = mt_lutxy(mS,mP.mt_inflate(U=1,V=1),"x y - "+string(32)+" <= 0 x y - ?",U=1,V=1).mt_inflate(U=1,V=1).removegrain(20,-1) smE = mt_merge(smB,Eval("smB." + "Removegrain(2,2)"),mD,luma=true,U=3,V=3) # MASKING mE = mt_edge(smE,"prewitt",0,255,0,0,V=1,U=1).mt_lut(expr="x 1.8 ^",U=1,V=1).removegrain(4,-1).mt_inflate(U=1,V=1) mL = mt_logic(tmask.invert(),mE,"min",U=1,V=1).removegrain(20,-1) mF = mt_logic(tmask,mE,"max",U=1,V=1).removegrain(20,-1) # SHARPENING pmax = source.mt_logic(cb1, "max").mt_logic(cf1, "max") pmin = source.mt_logic(cb1, "min").mt_logic(cf1, "min") sharp = smE.LSFmod(defaults="fast",preblur="ON", strength=100) shrp = sharp.mt_clamp(pmax,pmin,0,0,U=2,V=2) sL = mt_merge(smE,shrp,mL,U=2,V=2) # ENHANCING GF = sL.GradFun2DBmod(thr=1.5,thrC=2.0,str=0.8,strC=0.0,temp=90,adapt=64) FSc = mt_merge(GF,sL,mF,luma=true,U=3,V=3) FSc.mergechroma(den) """,threads=2,overlap=16,splitvertical=false) # or threads=4 # Назначение: для качественной обработки SATRemux # Тип предварительного шумоподавителя: Cnr2 # Тип основного шумоподавителя: на основе векторного анализа оценки движения c последовательным временнЫм и пространственно-временным шумоподавителем # Тип шарпера: LSFmod # Наличие фильтра DeBanding по умолчанию: отключен # Скорость обработки: 3-4 fps on threads=2

К ним можно добавить пресет однопроходного кодирования в заданный битрейт, с такой фильтровой обработкой и одного прохода будет достаточно. Например, в битрейт 1400 кбитс:
Код:
video codec: XviD video cli: -bitrate 1400 -nopacked -notrellis -reaction 64 -averaging 25 -smoother 25 -max_key_interval 250 -vhqmode 4 -imin 1 -imax 2 -pmin 1 -pmax 10 -max_bframes 1 -bvhq -bquant_ratio 150 -bquant_offset 0 -bmin 3 -bmax 10 -lumimasking
В случае, если у вас XviD 1.3.0, надо сменить ключ для VAQ: -lumimasking на -masking 2
Примечание: при аспекте разрешения 16:9 можно в данном пресете снизить максимальные кванты для p- и b-frames: -pmax 4 -bmax 6
Это позволит снизить блочность, вдобавок действие VAQ распространяется только на p-frames с квантами от 1 до 3
Объясните, пожалуйста, что со всем этим делать, а то сам не очень силен в таких делах?
  Ответить с цитированием