Log in

View Full Version : Getting interlacing artefects when converting PAL footage to NTSC [SOLVED]


Chibs
22nd September 2011, 15:11
Hello all, thanks for reading.

I'm working on a master for a DVD we're going to release, it's a 30 minute documentary on street photography. Now, we have a limited budget and will have 1000 DVDs made, but want to use them internationally (There's English subtitles on the DVD, film itself is Dutch). To make it work on both PAL and NTSC DVD players we've opted to make it an NTSC DVD, even though the original footage is PAL (720p, 25fps).
Because I'm downsizing from a reasonably larger resolution I decided to add a bit of sharpening before converting it to the NTCS framerate. My scripts (There are two, I figured it might help but sadly it does not) are as follows:


# resize.avs
# Load QTSource for MOV / H264 decoding
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\QTSource.dll")

#Load Video and Audio Sources
Video = QTInput("master.mov")
Audio = WavSource("master.wav")

#Join Video and Audio together
AudioDub(Video,Audio)

#Convert to YV12 colorspace for LSFmod
ConvertToYV12(interlaced=false)

#Spline 36 resize to NTSC standard
Spline36Resize(720,480)

#LSFmod sharpen without preblur
LSFmod(strength=90, Smode = 5, Smethod = 3, preblur="OFF", secure=true, soothe=true, keep=80)


Followed by:


# ntsc.avs
#Load resized and sharpened master
AVISource("resize.avs")

#Split frames into fields
SeparateFields()

#Put frames in correct order, including duplicates
SelectEvery(10, 0,1,2,3,4,5,4,7,6,9,8,9)

#Slow down from 60fps to 59.94fps
AssumeFPS(60000,1001,sync_audio=true).SSRC(48000)

#Resize fields to NTSC standard sizes
Spline36Resize(720,240)

#Interlace video frames
Weave()


However, it seems to create unwanted artefacts, most notably here on the guy's red cap, even more obvious when deinterlacing it to preview.

http://img855.imageshack.us/img855/9225/deinterlace.png

What am I doing wrong, and what would be the best way to approach this making of a universal DVD?

Didée
22nd September 2011, 16:06
It could be wrong YV12(i)<>RGB(i) conversion. (Your output is YV12 interlaced, but VirtualDub is working in RGB and assumes progressive input.)
Add a "ConvertToRGB(interlaced=true)" at the end of the 2nd script, and see if the display in Vdub is correct then.


BTW, your 2nd script could be replaced with this much simpler version:

AVISource("resize.avs")
AssumeTFF() # NTSC

ChangeFPS(60000,1001)

Separatefields().SelectEvery(4,0,3).Weave()

Chibs
22nd September 2011, 18:22
Thanks, that seems to have done the trick! :)