Quantcast Avisynth: Need Some Help with my First Script - Page 2 - digitalFAQ.com Forums [Archives]
Go Back    digitalFAQ.com Forums [Archives] > Video Production Forums > Avisynth Scripting

Reply
 
LinkBack Thread Tools
  #21  
11-03-2006, 05:20 AM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Open tmgenc, go into "Environnemental Settings" and then "VFAPI plugin".

1/ verify that the line "Avisynth/Virtualdub script reader" is present and checked.
2/ verify that the priority of this line is bigger than all otehr ones. Else raise it (right click on the name -> Higher priority).
3/ let the cursor on the name "Avisynth / virtual...." for 2 seconds and read in the baloon window if there is an error reported and if the path to the file Readavs.dll is correct.
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Site Staff / Ad Manager
 
Join Date: Dec 2002
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
  #22  
11-03-2006, 05:53 AM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
I already tried the first two on yesterday. Right now I'm at work so I cannot try the third one, I'll do it as soon as I'll be home again in the afternoon. Stay tuned for the forthcoming news
Reply With Quote
  #23  
11-03-2006, 09:55 AM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Hi, Phil, I just came home and checked: the path for readavs.dll is right, but tmpeg still fails to open avs scripts . What can I try now?
Reply With Quote
  #24  
11-03-2006, 11:00 AM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Add a line "ConvertToRGB24()" at the end of the script and test again with this.

Also try to open the script with virtualdubmod if you have it, to see if the problem is the same or not.
Reply With Quote
  #25  
11-03-2006, 11:53 AM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Dialhot
Add a line "ConvertToRGB24()" at the end of the script and test again with this.

Also try to open the script with virtualdubmod if you have it, to see if the problem is the same or not.
I've tried both, and the result is the same: red cross with error message ("cannot open or unsupported" for TMPEG, and "avisynth: open error script open failed" with VirtualDubMod). May the avisynth installation have somehow gotten corrupted?
Reply With Quote
  #26  
11-03-2006, 11:55 AM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by gattotimo
[May the avisynth installation have somehow gotten corrupted?
As the error is also with virtualdub you can tell that the problem is not tmpgenc .
Reinstall avisynth and / or divx codec (or try xvid insteed of divx).

Note: this can be due also to a file in the plugin directory that as nothing to do there : a document, a txt file, or may be an avsi script that is corrupted.
Reply With Quote
  #27  
11-03-2006, 12:08 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Dialhot
Note: this can be due also to a file in the plugin directory that as nothing to do there : a document, a txt file, or may be an avsi script that is corrupted.
Ok, maybe we're there! Installing XVid didn't make any change, but then I tried deleting all the files in the plugins dir and now tmpeg accept avs again. So the plugins dir can ONLY have the dlls? What about the lots of other files (.ccp, .h and so on) which usually come with the filters' packages? Are they just for developpers?

EDIT: As you suggested, there was a corrupted file in the plugins dir. I deleted them all and installed just the dlls needed by the script, and everything works . Maybe the stupid-questions-time is finally over
Reply With Quote
  #28  
11-03-2006, 12:36 PM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by gattotimo
What about the lots of other files (.ccp, .h and so on) which usually come with the filters' packages? Are they just for developpers?
plugin are often in open source, and the file .c .h .cpp are the source files. In the plugin directory you should have only dll.

Quote:
EDIT: As you suggested, there was a corrupted file in the plugins dir. I deleted them all and installed just the dlls needed by the script, and everything works . Maybe the stupid-questions-time is finally over
Don't worry, I had the same problem some weeks ago. You are lucky that I remembered how I solved it
Reply With Quote
  #29  
11-03-2006, 03:19 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Ok, I just finished my first encoding with an advanced script, and results seems pretty good to me. I used the half template, with CQ set to 75 and the maximum bitrate raised to 3500. The final file size for a single episode is 344 MB without audio tracks, so the total file size assuming I'll add both ac3 tracks (eng and italian) would be 575, which is a bit larger than needed to put 8 episode in a single dvd-5 disc (dvd-9 are still too expensive, so I shifted my project to 3 dvd-5 for episodes and another one for extras). I'll try lowering the maximum bitrate to 3000, but maybe it'll be enough to convert one of the audio tracks to mp2. BTW I'm not as trained as you are to spot for video artifacts or errors, so I'd like to post some screenshot I took with DGIndex. They're quite large BMP (about an half MB each), should I convert them to jpg with photoshop or is it better to post them "as they are" to prevent photoshop from altering them during the conversion (and this would be the real last stupid question )?

EDIT: Here are the screenshots.



Reply With Quote
  #30  
11-04-2006, 12:00 PM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Hard to speak with low res bmp. But no need to see them : 3000 will be too low for the lost episode : tree leaves are some of the most difficult things for MPEG2 codec. I mean that scenes shot in a forest always use a lot of bitrate. And guess what you have in lost ? .

I suggest you to let the max at 3500, lower the min to 0, and don't use original 5.1 audio. You should use 2.0 MP2 audio at 128 kbit/s.
Reply With Quote
  #31  
11-06-2006, 04:58 AM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Dialhot
Hard to speak with low res bmp. But no need to see them : 3000 will be too low for the lost episode : tree leaves are some of the most difficult things for MPEG2 codec. I mean that scenes shot in a forest always use a lot of bitrate. And guess what you have in lost ? .
Yesterday I checked some tree leaves scenes, and you're right: there's some pixelation even with the max bitrate set at 3500 (most of that pixelations in the scene where Kate saves the old farmer from the burning car), so I tried to raise the maximum br to 4000 lowering the min to 0, CQ still set to 75... I had a file which is almost the same size as the previus (just 2 MB bigger), which would allow me to put the first language in AC3 and the second one in MP3, but I still didn't check the results quality-wise since I'm at work right now. I'll post some comparison screenshots from the above scene in the afternoon.
Reply With Quote
  #32  
11-06-2006, 12:44 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
I'm right now trying small modification in the script and/or in settings (ie, I shifted LRemoveDust and LimitedSharpenFaster line positions to see what's better) with different encodings of the same source, to post a more accurate screenshot comparison. But I'm noticing the encoding is really slow, about 2,20 hrs for 40 mins of video: I remember reading somewhere in this forum (but I can't remember where ) there's a trick to improve the encoding speed (something like a "useless" script line). Did I misunderstood or such a way to boost speed do exist? I got a 3Ghz P4 (with HT), so I think Tmpeg should work a bit faster
Reply With Quote
  #33  
11-06-2006, 12:49 PM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
The speed you have is not normal, I have quite the same on a 1.3Ghz P4 .
The line that you are talking about in in the LRemoveDust function :

Quote:
function LRemoveDust_YV12(clip input, int clmode, int "limit")
{
input=Crop(input,0,0,-0,-0,true)
limit=default(limit,2)
clmode=default(clmode,17)
repmode = 2
clensed = Clense(input)
rep = Repair(clensed, input, mode=repmode)
rg = RemoveGrain(rep, mode=clmode)
return LimitChange(rg, input, limit, limitU=255)
}
Reply With Quote
  #34  
11-06-2006, 01:21 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Dialhot
The speed you have is not normal, I have quite the same on a 1.3Ghz P4 .
So I remembered right, that's not a regular speed... I'll add that line as soon as my current encoding end. Stay tuned, and thanks as always
Reply With Quote
  #35  
11-06-2006, 02:48 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Hi Phil, I added that line in the function and started a new encoding, but things didn't get better... The estimated time for the usual 40 min episode at 720x576 is almost 5 hrs ! Is there any other script optimization I can use? I'll post the script as it is now as well as the functions used:

The script
Import("C:\Programmi\Avisynth 2.5\plugins\LimitedSharpenFaster.avsi")
Import("C:\Programmi\Avisynth 2.5\plugins\LRemoveDust_YV12.avsi")

dgdecode_mpeg2source("E:\Lavoro KVCD\lost.d2v", cpu=4, idct=7)
BicubicResize(720,576,1./3.,1./3.,2,0,716,572)
TDeint(order=1,tryweave=true)
LRemoveDust_YV12(17,1)
LimitedSharpenFaster()
MergeLuma(blur(0.1))
MergeChroma(blur(1.5)

ScriptClip(" nf = YDifferenceToNext()" +chr(13)+ "unfilter( -(fmin(round(nf)*2, 100)), -(fmin(round(nf)*2, 100)) ).TemporalSoften( fmin( round(2/nf), 6), round(1/nf) , round(3/nf) , 1, 1) ")

Letterbox(16,16,16,16)

function fmin( int f1, int f2) {
return ( f1<f2 ) ? f1 : f2
}

ConvertToRGB24()


LimitedSharpenFaster
function LimitedSharpenFaster( clip clp,
\ float "ss_x", float "ss_y",
\ int "dest_x", int "dest_y",
\ int "Smode" , int "strength", int "radius",
\ int "Lmode", bool "wide", int "overshoot", int "undershoot",
\ int "soft", int "edgemode", bool "special",
\ int "exborder" )
{
ox = clp.width
oy = clp.height

Smode = default( Smode, 3 )
ss_x = (Smode==4)
\ ? default( ss_x, 1.25)
\ : default( ss_x, 1.5 )
ss_y = (Smode==4)
\ ? default( ss_y, 1.25)
\ : default( ss_y, 1.5 )
dest_x = default( dest_x, ox )
dest_y = default( dest_y, oy )
strength = (Smode==1)
\ ? default( strength, 160 )
\ : default( strength, 100 )
strength = (Smode==2&&strength>100) ? 100 : strength
radius = default( radius, 2 )
Lmode = default( Lmode, 1 )
wide = default( wide, false )
overshoot = default( overshoot, 1)
undershoot= default( undershoot, overshoot)
softdec = default( soft, 0 )
soft = softdec!=-1 ? softdec : sqrt( (((ss_x+ss_y)/2.0-1.0)*100.0) ) * 10
soft = soft>100 ? 100 : soft
edgemode = default( edgemode, 0 )
special = default( special, false )
exborder = default( exborder, 0)
#radius = round( radius*(ss_x+ss_y)/2) # If it's you, Mug Funky - feel free to activate it again
xxs=round(ox*ss_x/*8
yys=round(oy*ss_y/*8
smx=exborder==0?dest_x:round(dest_x/Exborder/4)*4
smy=exborder==0?dest_y:round(dest_y/Exborder/4)*4

clp.isYV12() ? clp : clp.converttoyv12()

ss_x != 1.0 || ss_y != 1.0 ? last.lanczosresize(xxs,yys) : last
tmp = last

edge = mt_logic( tmp.mt_edge(thY1=0,thY2=255,"8 16 8 0 0 0 -8 -16 -8 4")
\ ,tmp.mt_edge(thY1=0,thY2=255,"8 0 -8 16 0 -16 8 0 -8 4")
\ ,"max") .mt_lut("x 128 / 0.86 ^ 255 *") #.levels(0,0.86,128,0,255,false)

tmpsoft = tmp.removegrain(11,-1)
dark_limit1 = tmp.mt_inpand()
bright_limit1 = tmp.mt_expand()
dark_limit = (wide==false) ? dark_limit1 : dark_limit1 .removegrain(20,-1).mt_inpand()
bright_limit = (wide==false) ? bright_limit1 : bright_limit1.removegrain(20,-1).mt_expand()
minmaxavg = special==false
\ ? mt_average(dark_limit1, bright_limit1)
\ : mt_merge(dark_limit,bright_limit,tmp.removegrain(1 1,-1),Y=3,U=-128,V=-12

Str=string(float(strength)/100.0)
normsharp = Smode==1 ? unsharpmask(strength,radius,0)
\ : Smode==2 ? sharpen(float(strength)/100.0)
\ : Smode==3 ? mt_lutxy(tmp,minmaxavg,yexpr="x x y - "+Str+" * +")
\ : mt_lutxy(tmp,tmpsoft,"x y == x x x y - abs 16 / 1 2 / ^ 16 * "+Str+
\ " * x y - 2 ^ x y - 2 ^ "+Str+" 100 * 25 / + / * x y - x y - abs / * + ?")

OS = string(overshoot)
US = string(undershoot)
mt_lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x y x - "+OS+" - 1 2 / ^ + "+OS+" + ?")
mt_lutxy( dark_limit, last, yexpr="y x "+US+" - > y x x y - "+US+" - 1 2 / ^ - "+US+" - ?")

Lmode==1 ? mt_clamp(normsharp, bright_limit, dark_limit, overshoot, undershoot) : last

normal = last
zero = mt_clamp(normsharp, bright_limit, dark_limit, 0,0)

Lmode==3 ? mt_merge(normal,zero,edge.mt_inflate()) : normal

edgemode==0 ? last
\ : edgemode==1 ? mt_merge(tmp,last,edge.mt_inflate().mt_inflate().r emovegrain(11,-1),Y=3,U=1,V=1)
\ : mt_merge(last,tmp,edge.mt_inflate().mt_inflate().r emovegrain(11,-1),Y=3,U=1,V=1)

AMNT = string(soft)
AMNT2 = string(100-soft)
sharpdiff=mt_makediff(tmp,last)
sharpdiff2=mt_lutxy(sharpdiff,sharpdiff.removegrai n(19,-1),
\ "x 128 - abs y 128 - abs > y "+AMNT+" * x "+AMNT2+" * + 100 / x ?")

soft==0 ? last : mt_makediff(tmp,sharpdiff2)

(ss_x != 1.0 || ss_y != 1.0)
\ || (dest_x != ox || dest_y != oy) ? lanczosresize(dest_x,dest_y) : last

ex=blankclip(last,width=smx,height=smy,color=$FFFF FF).addborders(2,2,2,2).coloryuv(levels="TV->PC")
\.blur(1.3).mt_inpand().blur(1.3).bicubicresize(de st_x,dest_y,1.0,.0)
tmp = clp.lanczosresize(dest_x,dest_y)

clp.isYV12() ? ( exborder==0 ? tmp.mergeluma(last)
\ : mt_merge(tmp,last,ex,Y=3,U=1,V=1) )
\ : ( exborder==0 ? tmp.mergeluma(last.converttoyuy2())
\ : tmp.mergeluma( mt_merge(tmp.converttoyv12(),last,ex,Y=3,U=1,V=1)
\ .converttoyuy2()) )

(edgemode!= -1) ? last : edge.lanczosresize(dest_x,dest_y).greyscale

return last
}


LRemoveDust_YV12
function LRemoveDust_YV12(clip input, int clmode, int "limit")
{
input=Crop(input,0,0,-0,-0,true)
limit=default(limit,2)
clmode=default(clmode,17)
repmode = 2
clensed = Clense(input)
rep = Repair(clensed, input, mode=repmode)
rg = RemoveGrain(rep, mode=clmode)
return LimitChange(rg, input, limit, limitU=255)
}
Reply With Quote
  #36  
11-06-2006, 02:52 PM
Boulder Boulder is offline
Free Member
 
Join Date: Sep 2002
Location: Lahti, Finland
Posts: 1,652
Thanks: 0
Thanked 0 Times in 0 Posts
You can ditch TDeint. Lost should be progressive.
Reply With Quote
  #37  
11-06-2006, 02:56 PM
gattotimo gattotimo is offline
Free Member
 
Join Date: Oct 2006
Posts: 22
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Boulder
You can ditch TDeint. Lost should be progressive.
Ok, I'll try that too. Do you think this will improve the encoding speed?
Reply With Quote
  #38  
11-06-2006, 04:08 PM
Boulder Boulder is offline
Free Member
 
Join Date: Sep 2002
Location: Lahti, Finland
Posts: 1,652
Thanks: 0
Thanked 0 Times in 0 Posts
It definitely should, TDeint isn't the fastest filter around
Reply With Quote
  #39  
11-06-2006, 06:14 PM
Dialhot Dialhot is offline
Free Member
 
Join Date: May 2003
Posts: 10,463
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Boulder
You can ditch TDeint. Lost should be progressive.
I did not understand why but first disc of the box set (1st half of season 2) is interlaced while 2 other discs are progressive.

Beside this, I need 3h per episode on my 1.3 Ghz but I did not use the adaptative script (no line "Scriptclip" in my script). This is the slowest part of the script !
Reply With Quote
  #40  
11-07-2006, 02:48 AM
Boulder Boulder is offline
Free Member
 
Join Date: Sep 2002
Location: Lahti, Finland
Posts: 1,652
Thanks: 0
Thanked 0 Times in 0 Posts
Could you upload a small sample of the first disc? It would be interesting to see whether it's just field shifted or if there has been some weird NTSC->PAL conversion done again.
Reply With Quote
Reply




Similar Threads
Thread Thread Starter Forum Replies Last Post
Avisynth: Difference between MA script and optimal script? mistermickster Avisynth Scripting 2 08-01-2003 09:36 AM
Avisynth: New 2.5 script CATENA JP Avisynth Scripting 1 07-01-2003 05:53 AM
Avisynth: Need help with AVS 2.52 script for D2S telemike Avisynth Scripting 1 06-05-2003 06:03 AM
Avisynth: What better, AVS 2.5x or 2.0X script? ak47 Avisynth Scripting 1 06-02-2003 06:28 AM
Avisynth: Latest script using Avisynth 2.51 J-Wo Avisynth Scripting 6 04-08-2003 11:46 AM




 
All times are GMT -5. The time now is 10:06 AM  —  vBulletin © Jelsoft Enterprises Ltd