Ich bin natürlich zuvor genau nach Didées Guide vorgegangen. Habe die ganzen Masken erstellt und benannt usw.
function VD_DeLogo(clip clip, bool "on_frames", string "range", string "file_deblend", string "file_alpha", \ string "file_color", string "file_repair", float "depth", float "power", int "par_X", int "par_Y", bool "interlaced") { LoadVirtualdubPlugin("C:\Programme\Software\VirtualDub\plugins\delogo.vdf", "_VD_DeLogo") X = round(10*depth) Y = round(10*power) # theoretically: z = 100*log10(par_X/par_Y), as approximation I took a minimax-approximation (calculated with Maple): v = - 48.96556825 + 63.18825967*par_X - 16.00966389*par_X*par_X + 2.473556539*par_X*par_X*par_X \ - .2133268695*par_X*par_X*par_X*par_X \ + .009456579673*par_X*par_X*par_X*par_X*par_X - .0001675297934*par_X*par_X*par_X*par_X*par_X*par_X w = - 48.96556825 + 63.18825967*par_X - 16.00966389*par_X*par_X + 2.473556539*par_X*par_X*par_X \ - .2133268695*par_X*par_X*par_X*par_X \ + .009456579673*par_X*par_X*par_X*par_X*par_X - .0001675297934*par_X*par_X*par_X*par_X*par_X*par_X z = round(v) - round(w) return clip._VD_DeLogo(default(on_frames,false)?1:0, default(range,""), default(file_deblend,""), default(file_alpha,""), \ default(file_color,""), default(file_repair,""), default(X,15), default(Y,40), default(interlaced,false)?1:0, z) } ### ### ### function delogo( clip clp, int Lwidth, int Lheight, string loc, string name, \ float "Cmix", float "Lmix") { # logomask=(name2=="")?clp:imagereader(name2).loop().trim(0,framecount(clp)).converttoyv12(matrix="PC.601") Lmix=default(Lmix,0.0) Cmix=default(Cmix,0.0) ox=clp.width oy=clp.height x1 = (LeftStr(loc,1)=="L") ? 0 : ox-Lwidth y1 = (RightStr(loc,1)=="O") ? 0 : oy-Lheight logo = clp.crop(x1,y1,Lwidth,Lheight) row = (x1==0) ? (y1==0) ? clp.crop(Lwidth,0,-0,Lheight) : clp.crop(Lwidth,oy-Lheight,-0,-0) \ : (y1==0) ? clp.crop(0,0,x1,Lheight) : clp.crop(0,oy-Lheight,x1,-0) rest = (y1==0) ? clp.crop(0,Lheight,-0,-0): clp.crop(0,0,-0,oy-Lheight) ConvertToRGB(logo) log1=VD_DeLogo(false, "", name+"_deblend.bmp", name+"_alpha.bmp", name+"_color.bmp", name+"_repair.bmp", \ 1.5, 3.0, 1, 1, false).ConvertToYV12() log2 = (Cmix==0.0 && Lmix==0.0) \ ? log1 : VD_DeLogo(false, "", name+"_deblend.bmp", name+"_alpha.bmp", name+"_color.bmp", name+"_repair_c.bmp", \ 2.5, 3.0, 1, 1, false).ConvertToYV12() Cmix==0.0 ? log1 : MergeChroma(log1,log2,Cmix) Lmix==0.0 ? last : MergeLuma(last,log2,Lmix) # Removegrain(2).temporalsoften(2,7,7,23,2).AddGrain(5,.0,.0) # name2==""?NOP:maskedmerge(logo,last,logomask.FitY2UV(),Y=3,U=3,V=3) row2 = (x1==0) ? stackhorizontal(last,row) : stackhorizontal(row,last) y1==0 ? stackvertical( row2,rest) : stackvertical( rest,row2) return last } ### ### ### Function ServeLogo( clip clp, int Lwidth, int Lheight, string loc, int "SnipSize", int "avg" ) { SnipSize = default( SnipSize, 56 ) avg = default( avg, 3 ) x1 = (LeftStr(loc,1)=="L") ? 0 : clp.width-Lwidth y1 = (RightStr(loc,1)=="O") ? 0 : clp.height-Lheight clp.crop(x1,y1,Lwidth,Lheight) SelectRangeEvery( SnipSize, 1 ) return TemporalSoften( avg,255,255,255,2 ) }