OmegaMattman
This user is offline.
Pure, Unadulterated ManiaI'm curious, althorr1138, what method did you use to IVTC? I'm in the process of manually ITVCing the US SWE LaserDisc for a basic backup, but I've only had to deal with the cadence errors at reel changes. Being from the same source, I thought I'd be running into some of these others spotted by Darth Mallwalker.
althor1138
This user is offline.
Darth Mallwalker said:
Well I'm sorry to be 'that guy' again
Yeah I'd rather have known before I release it again. Thanks for the help! I was about ready to fix everything and start encoding but I guess it can wait a few more days lol.
I was using selectevery and manually throwing out the frames but moth3r showed me this:
dw=avisource().assumetff().doubleweave()
a = dw.Pulldown(0, 2).Subtitle("0, 2")
b = dw.Pulldown(1, 3).Subtitle("1, 3")
c = dw.Pulldown(2, 4).Subtitle("2, 4")
d = dw.Pulldown(0 ,3).Subtitle("0 ,3")
e = dw.Pulldown(1, 4).Subtitle("1, 4")
show=ShowFiveVersions(a, b, c, d, e)return(show)
I found it to be quicker and easier to spot which pulldown to use with the showfiveversions filter. I imagine the same thing could be implemented with the selectevery method also. Are there any benefits or drawbacks to using either method?
EDIT: I'm really hoping you guys don't find so much wrong with ESB or ROTJ lol.
Luke threw twice....maybe.
Darth Mallwalker
This user is offline.
THC-1138 meets TK-420selectEvery() is better if the source is YV12. Yours probably isn't.
I will have a few more ESB frames to check. Haven't seen ROTJ
so if you want help with that one, show your script!
Mattman, don't be alarmed if your SWE don't have all the same cadence changes.
Not long ago poita shared the first reel of his SWE cap which had only two cadence changes. (JSC had four changes within the first reel.)
However, in practice you must take into account the "fuckwit factor". Just talk to Darth Mallwalker...
-Moth3r
Chewtobacca
This user is online.
Darth Mallwalker said:
selectEvery() is better if the source is YV12.
I don't understand why this is the case, because Pulldown() is implemented using SelectEvery() internally. Is it just that it is easier to spot problematic frames with SelectEvery()?
althor1138
This user is offline.
EDIT: I haven't even started ROTJ yet btw.
I used several avs files for star wars because it was so many changes and lines but I used one for ESB so here it is:
#setmemorymax(2000)
#setmtmode(5,0)
side1raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side1.avi")
s1p1=side1raw.assumetff().doubleweave().pulldown(0,2).trim(704,0).trim(0,15585)
s1p22=side1raw.separatefields().trim(40722,0).weave().assumetff().doubleweave().pulldown(2,4).trim(0,15145)
s1p21=side1raw.separatefields().trim(40722,0).weave().assumetff().doubleweave().pulldown(2,4).trim(15146,15146).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s1p2=s1p22 ++ s1p21
s1p3=side1raw.separatefields().trim(78590,0).weave().assumetff().doubleweave().pulldown(2,4).trim(0,1439)
s1=s1p1 ++ s1p2 ++ s1p3
side2raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side2.avi")
s2p11=side2raw.separatefields().trim(804,0).weave().assumetff().doubleweave().pulldown(1,4).trim(0,14322)
s2p12=side2raw.separatefields().trim(804,0).weave().assumetff().doubleweave().pulldown(1,4).trim(14323,14323).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s2p1= s2p11 ++ s2p12
s2p2=side2raw.separatefields().trim(36614,0).weave().assumetff().doubleweave().pulldown(0,3).trim(0,13038)
s2p3=side2raw.separatefields().trim(69212,0).weave().assumetff().doubleweave().pulldown(2,4).trim(0,13195)
s2=s2p1 ++ s2p2 ++ s2p3
side3raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side3.avi")
s3p1=side3raw.separatefields().trim(824,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,2277)
s3p21=side3raw.separatefields().trim(6518,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,31049)
s3p22=side3raw.separatefields().trim(6518,0).weave().assumetff().doubleweave().pulldown(0,2).trim(31050,31050).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s3p2=s3p21 ++ s3p22
s3=s3p1 ++ s3p2
side4raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side4.avi")
s4p11=side4raw.separatefields().trim(726,0).weave().assumetff().doubleweave().pulldown(1,4).trim(0,2)
s4p12=side4raw.separatefields().trim(726,0).weave().assumetff().doubleweave().pulldown(1,4).trim(3,3).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s4p13=side4raw.separatefields().trim(738,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,15552)
s4p1=s4p11 ++ s4p12 ++ s4p13
s4p21=side4raw.separatefields().trim(39620,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,13001)
s4p22=side4raw.separatefields().trim(39620,0).weave().assumetff().doubleweave().pulldown(0,2).trim(13002,13002).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s4p2=s4p21 ++ s4p22
s4p3=side4raw.separatefields().trim(72126,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,8296)
s4=s4p1 ++ s4p2 ++ s4p3
side5raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side5.avi")
s5p11=side5raw.separatefields().trim(696,0).weave().assumetff().doubleweave().pulldown(1,3).trim(0,2)
s5p12=side5raw.separatefields().trim(708,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,7160)
s5p1=s5p11 ++ s5p12
s5p21=side5raw.separatefields().trim(18610,0).weave().assumetff().doubleweave().pulldown(0,2).trim(0,15034)
s5p22=side5raw.separatefields().trim(18610,0).weave().assumetff().doubleweave().pulldown(0,2).trim(15035,15035).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s5p2=s5p21 ++ s5p22
s5p3=side5raw.separatefields().trim(56198,0).weave().assumetff().doubleweave().pulldown(0,3).trim(0,14350)
s5=s5p1 ++ s5p2 ++ s5p3dw=s5p3.assumetff().doubleweave()
a = dw.Pulldown(0, 2).Subtitle("0, 2")
b = dw.Pulldown(1, 3).Subtitle("1, 3")
c = dw.Pulldown(2, 4).Subtitle("2, 4")
d = dw.Pulldown(0 ,3).Subtitle("0 ,3")
e = dw.Pulldown(1, 4).Subtitle("1, 4")
show=ShowFiveVersions(a, b, c, d, e)
finalvid=s1 ++ s2 ++ s3 ++ s4 ++ s5
return(finalvid)
Luke threw twice....maybe.
Darth Mallwalker
This user is offline.
THC-1138 meets TK-420Pulldown(a,b) is implemented internally as SelectEvery(5,a,b)Chewtobacca said:
I don't understand why this is the case, because Pulldown() is implemented using SelectEvery() internally.
However, in practice you must take into account the "fuckwit factor". Just talk to Darth Mallwalker...
-Moth3r
msycamore
This user is offline.
You learn something new every day...or night. It's nice you're helping out with this Mallwalker!
We want you to be aware that we have no plans—now or in the future—to restore the earlier versions.
Sincerely, Lynne Hale publicity@lucasfilm.com
drngr
This user is offline.
SelectEvery(10,a,b,c,d) is also slightly faster because it only reconstructs 1 frame instead of 2 for every 5. But there is the downside that only one of the five "patterns" works for each source cadence (as the AviSynth documentation notes, with the Pulldown method there will be two that work out of the five versions shown).
So the script above that was written to only check where Pulldown breaks would take twice as long to write with SelectEvery(10,a,b,c,d).
Anyway, for that method I've been using an .avsi function instead of adding the big block of lines to every script. I had written my own manual+semi-manual IVTC plugin that seemed to run a little faster still but I introduced a bug at some point that made it crash on exit all the time and abandoned it.
althor1138
This user is offline.
I like the idea of using a function. It would save a lot of typing. I like typing so it never really bothered me that much but if it makes things easier to understand then it's worth it I think.
Luke threw twice....maybe.
Darth Mallwalker
This user is offline.
THC-1138 meets TK-420althor1138 said:
side1raw=AVISource("E:\STAR WARS\Laserdisc\JSC\ESB\Theater750HD\side1.avi")
s1p1=side1raw.assumetff().doubleweave().pulldown(0,2).trim(704,0).trim(0,15585)
s1p22=side1raw.separatefields().trim(40722,0).weave().assumetff().doubleweave().pulldown(2,4).trim(0,15145)
s1p21=side1raw.separatefields().trim(40722,0).weave().assumetff().doubleweave().pulldown(2,4).trim(15146,15146).separatefields().trim(0,-1).nnedi2(dh=true).assumefps("ntsc_film")
s1p2=s1p22 ++ s1p21
s1p3=side1raw.separatefields().trim(78590,0).weave().assumetff().doubleweave().pulldown(2,4).trim(0,1439)
s1=s1p1 ++ s1p2 ++ s1p3
However, in practice you must take into account the "fuckwit factor". Just talk to Darth Mallwalker...
-Moth3r
msycamore
This user is offline.
althor1138 said:
Here is a little clip. It is interleaved with 1 clip being the raw capture and the other being the adjusted clip I plan on using for the 720p version. I've just adjusted the levels and tried to not crush or blow out any information. I have applied a halo reducer which I think I'm going to use. I wouldn't say it fixes the right-edge halo problem but I think it makes it better.
Hey, what's up with the "strobo-effect" or is it only a problem on my end? And how do I get to check the 720p version??
We want you to be aware that we have no plans—now or in the future—to restore the earlier versions.
Sincerely, Lynne Hale publicity@lucasfilm.com
althor1138
This user is offline.
It alternates between the raw capture and the settings I planned on using. You should probably not watch this temporally but step through it. I just wanted to see what people thought of the settings. I haven't done the 720 yet. I think in a couple days I'm going to go through and double check everything that has been pointed out as wrong and fix it. Then I'll encode the raw 480p and then I'll add the tweaks and upsize to 720p.
Luke threw twice....maybe.
Chewtobacca
This user is online.
Darth Mallwalker said:
Perhaps I should have said:
SelectEvery(10, is better than SelectEvery(5, if the source is YV12.
With 4:2:0 source you want to keep whichever two fields were encoded together.
Not always the first two or always last two, but alternating.
I believe I understand now. Thanks for the explanation.
msycamore
This user is offline.
althor1138 said:
It alternates between the raw capture and the settings I planned on using.
Yeah, stupid me... it took a while before it hit me. Sorry, I'm really slow today. :)
althor1138 said:
You should probably not watch this temporally but step through it. I just wanted to see what people thought of the settings. I haven't done the 720 yet.
If you want an epileptic seizure, I can recommend it. Anyway, the sample looks great, the reduced haloing is nice. What filter are you using for the dehaloing?
We want you to be aware that we have no plans—now or in the future—to restore the earlier versions.
Sincerely, Lynne Hale publicity@lucasfilm.com
althor1138
This user is offline.
I used several successive calls to generalconvolution to create an edge mask on the right side of bright areas next to dark areas and then shifted the mask over to match the right-edge halo of my laserdisc player. Then I used overlay with the mask and mode="multiply" to get rid of the halo. This isn't on every disc though so I guess it's combination of the laserdisc and the player which creates this sometimes. On ESB and TPM it's not very prominent like on SW for example.
source=avisource()
conv1=conv.converttorgb32().GeneralConvolution(0, "
1 0 -1
2 0 -2
1 0 -1 ", 8)
conv2=conv1.GeneralConvolution(0, "
0 0 0 0 0
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0 ")
conv3=conv2.GeneralConvolution(0, "
0 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0 ")
overlaymask=overlay(source,conv3,mode="multiply",mask=conv3.converttorgb32().mask(conv3.converttorgb32()))
return(overlaymask)
Luke threw twice....maybe.
althor1138
This user is offline.
Darth Mallwalker said:
Fixed the following GOUT frames:
15592 - was combed, see Post_98 above
30739 - was nnedi()ed, but two fields are present
30745 - was missing, but it's nnedi()able
Please check this field:
side1raw.separatefields().trim(82191,-1)
Does it contain Han or blackness?
If Han, then add this line:
s1p33=side1raw.separatefields.trim(82191,-1).nnedi2(dh=true).assumefps("ntsc_film")
to restore GOUT 32186
Moving on to side2, please check the following fields:
side2raw.separatefields().trim(804,-1)
side2raw.separatefields().trim(102203,-1)
Do they contain picture or blackness?
Thanks for this. I've checked the Han or black frame and it contained Han. ESB was very easy to IVTC compared to SW but I can see it needs some fine grooming as well. What a total mess this set is.
Luke threw twice....maybe.
msycamore
This user is offline.
althor1138 said:
I used several successive calls to generalconvolution to create an edge mask on the right side of bright areas next to dark areas and then shifted the mask over to match the right-edge halo of my laserdisc player. Then I used overlay with the mask and mode="multiply" to get rid of the halo. This isn't on every disc though so I guess it's combination of the laserdisc and the player which creates this sometimes. On ESB and TPM it's not very prominent like on SW for example.
Nice, thanks for that. I think most of the edge-enhancement artifacts we see is present in these transfers to begin with already, I don't know how much more work you're willing to spend on the 720p but you could easily improve the look of it if you wanted by just correcting the chroma shift in it, think it's most visible in the first few reels... good examples are the red wall lights on the blockade runner, the red light of Artoo in the canyon and the binary sunset, but I recall the shift isn't off by the same amount from scene to scene or is that constant so it may be a little tedious work.
http://www.geocities.com/siwalters_uk/chromashift.html


an example I did on arnie.d's cap to demonstrate the ugly bleed/shift in it, not perfect but definitely an improvement. Just a suggestion... hope you leave the 480p unfiltered.
We want you to be aware that we have no plans—now or in the future—to restore the earlier versions.
Sincerely, Lynne Hale publicity@lucasfilm.com
Darth Mallwalker
This user is offline.
THC-1138 meets TK-420I could continue to tweeze this, but must be past the point of diminishing returns
so instead I'll just turn it loose:
Mallwalker said:
s1p11= side1raw.assumetff.separatefields.trim(1760,1761).weave.assumefps("ntsc_film")
s1p12= side1raw.assumetff.separatefields.trim(1762,40721).doubleweave.pulldown(0,3)#(0,2)
s1p1 = s1p11 ++ s1p12 ##_______________________________________________________________________# 2+2:3...2:3
s1p21= side1raw.assumetff.separatefields.trim(40722,-1).nnedi2(dh=true).assumefps("ntsc_film")
s1p22= side1raw.assumetff.separatefields.trim(40723,78587).doubleweave.pulldown(1,3)#(0,3)
s1p23= side1raw.assumetff.separatefields.trim(78588,78589).weave.assumefps("ntsc_film")
s1p2 = s1p21 ++ s1p22 ++ s1p23 #_______________________________________________________________# 1+3:2...3:2+2
s1p31= side1raw.assumetff.separatefields.trim(78590,-1).nnedi2(dh=true).assumefps("ntsc_film")
s1p32= side1raw.assumetff.separatefields.trim(78591,82190).doubleweave.pulldown(1,3)#(0,3)
s1p33= side1raw.assumetff.separatefields.trim(82191,-1).nnedi2(dh=true).assumefps("ntsc_film")
s1p3 = s1p31 ++ s1p32 ++ s1p33 #_______________________________________________________________# 1+3:2...3:2+1
s1 = s1p1 ++ s1p2 ++ s1p3
s2p11= side2raw.assumetff.separatefields.trim(804,-1).nnedi2(dh=true).assumefps("ntsc_film")
s2p12= side2raw.assumetff.separatefields.trim(805,36611).doubleweave.pulldown(0,3)#(0,2)
s2p13= side2raw.assumetff.separatefields.trim(36612,36613).weave.assumefps("ntsc_film")
s2p1 = s2p11 ++ s2p12 ++ s2p13 #_______________________________________________________________# 1+2:3...3:2+2
s2p2 = side2raw.assumetff.separatefields.trim(36614,69211).doubleweave.pulldown(0,3)#(1,3)
s2p2 = s2p2 ##________________________________________________________________________________# 3:2...2:3
s2p31= side2raw.assumetff.separatefields.trim(69212,-1).nnedi2(dh=true).assumefps("ntsc_film")
s2p32= side2raw.assumetff.separatefields.trim(69213,102202).doubleweave.pulldown(1,3)#(0,3)
s2p33= side2raw.assumetff.separatefields.trim(102203,-1).nnedi2(dh=true).assumefps("ntsc_film")
s2p3 = s2p31 ++ s2p32 ++ s2p33 #_______________________________________________________________# 1+3:2...3:2+1
s2 = s2p1 ++ s2p2 ++ s2p3
s3p11= side3raw.assumetff.separatefields.trim(824,825).weave.assumefps("ntsc_film")
s3p12= side3raw.assumetff.separatefields.trim(826,6517).doubleweave.pulldown(0,3)#(0,2)
s3p1 = s3p11 ++ s3p12 ##_______________________________________________________________________# 2+2:3...3:2
s3p2 = side3raw.assumetff.separatefields.trim(6518,46069).doubleweave.pulldown(0,2)#(0,3)
s3p2 = s3p2 ##________________________________________________________________________________# 2:3...3:2
s3p31= side3raw.assumetff.separatefields.trim(46070,84142).doubleweave.pulldown(0,3)#(1,3)
s3p32= side3raw.assumetff.separatefields.trim(84143,-1).nnedi2(dh=true).assumefps("ntsc_film")
s3p3 = s3p31 ++ s3p32 ##_______________________________________________________________________# 3:2...2:3+1
s3 = s3p1 ++ s3p2 ++ s3p3
s4p11= side4raw.assumetff.separatefields.trim(726,727).weave.assumefps("ntsc_film")
s4p12= side4raw.assumetff.separatefields.trim(728,39619).doubleweave.pulldown(0,2)#(0,3)
s4p1 = s4p11 ++ s4p12 ##_______________________________________________________________________# 2+2:3...3:2
s4p21= side4raw.assumetff.separatefields.trim(39620,39621).weave.assumefps("ntsc_film")
s4p22= side4raw.assumetff.separatefields.trim(39622,72123).doubleweave.pulldown(0,3)#(0,2)
s4p23= side4raw.assumetff.separatefields.trim(72124,72125).weave.assumefps("ntsc_film")
s4p2 = s4p21 ++ s4p22 ++ s4p23 #_______________________________________________________________# 2+2:3...3:2+2
s4p31= side4raw.assumetff.separatefields.trim(72126,72127).weave.assumefps("ntsc_film")
s4p32= side4raw.assumetff.separatefields.trim(72128,92867).doubleweave.pulldown(0,3)#(0,2)
s4p3 = s4p31 ++ s4p32 ##_______________________________________________________________________# 2+2:3...2:3
s4 = s4p1 ++ s4p2 ++ s4p3
s5p11= side5raw.assumetff.separatefields.trim(696,-1).nnedi2(dh=true).assumefps("ntsc_film")
s5p12= side5raw.assumetff.separatefields.trim(697,18609).doubleweave.pulldown(1,3)#(0,3)
s5p1 = s5p11 ++ s5p12 ##_______________________________________________________________________# 1+3:2...2:3
s5p21= side5raw.assumetff.separatefields.trim(18610,18611).weave.assumefps("ntsc_film")
s5p22= side5raw.assumetff.separatefields.trim(18612,56196).doubleweave.pulldown(0,3)#(0,2)
s5p23= side5raw.assumetff.separatefields.trim(56197,-1).nnedi2(dh=true).assumefps("ntsc_film")
s5p2 = s5p21 ++ s5p22 ++ s5p23 #_______________________________________________________________# 2+2:3...2:3+1
s5p3 = side5raw.assumetff.separatefields.trim(56198,0).doubleweave.pulldown(0,3).trim(0,14350) # pulldown(1,3)
s5 = s5p1 ++ s5p2 ++ s5p3 #________________________________________________________________# 3:2...
However, in practice you must take into account the "fuckwit factor". Just talk to Darth Mallwalker...
-Moth3r
OmegaMattman
This user is offline.
Pure, Unadulterated ManiaAny updates, althor1138? It's been a little over a month since I've seen any news on this project.
althor1138
This user is offline.
I've been capturing all of the other Star Wars laserdiscs that I own. That is complete now. I think what I am going to do is put the raw files on usenet. I so far have captured:
JSC trilogy
DC trilogy
SE trilogy
The Phantom Menace
Luke threw twice....maybe.
AntcuFaalb
This user is offline.
The Interweb is a Series of Tubesalthor1138 said:
I've been capturing all of the other Star Wars laserdiscs that I own. That is complete now. I think what I am going to do is put the raw files on usenet. I so far have captured:
JSC trilogy
DC trilogy
SE trilogy
The Phantom Menace
Wow, cool! Thanks!
"And I'm shocked at you Moth3r for being off-topic, Because if people off-topic you say "stay on-topic, STAY on-topic, STAY ON-TOPIC", and we are not in the Off topic section of OT.com, now are we?" –pat man
"Look again." –Moth3r
althor1138
This user is offline.
I'm currently posting SW to the newsgroup. The first post should be finished in a couple of hours. This is my first time posting so please bear with me. The first post will have some incomplete files because I messed up the upload a couple of times but I've re-uploaded them so everything should be there.
Luke threw twice....maybe.
drngr
This user is offline.
Got Sides 1+2 okay after a little repair. Thanks. :)
Chewtobacca
This user is online.
It looks like I need to buy a new hard drive. :D Thanks, althor.
althor1138
This user is offline.
Thanks for the feedback! If there is interest I'll be uploading the rest of the trilogy and probably the 97SE trilogy as well. I see no reason to post the DC.
Luke threw twice....maybe.