Is any SW player, which can simulate interlacing like is on older TV? I mean, the SW would send first evens and 50ms later would send the odds rows. It sounds simply, but i can not find SW player with this feature.
I have many videos from my camcorder which is PAL and interlaced(Video8). On the internet there are many manuals how to deinterlate such video by many methods. VLC player knows many. I use it, but always it is possible to see typical artefacts how odds and evens rows are not naturally deinterlaced.
Or, is it matter of graphic card? Or monitor?
+ Reply to Thread
Results 1 to 8 of 8
You have to de-interlace when displaying interlaced video on a modern progressive display (not a CRT TV) as they can only display the entire frame at once. CRT computer monitors aren't like CRT TVs either. They refresh the entire screen from top to bottom rather than alternating between odd and even scanlines, so they're progressive too.
For the record though, a progressive PAL display with a refresh rate of 50Hz refreshes 50 times per second, which means it refreshes every 20ms. At 25fps, a full frame displays for two refreshes, or 40ms. For an interlaced source, the fields are 20ms apart, but because they alternative, the odd scanlines are still refreshed every 40ms, as are the even scanlines. That's for an interlaced CRT TV though. Progressive displays can only refresh all the scanlines at the same time.
A 60Hz progressive display (actually 59.94Hz) refreshes every 16.68ms.
@hello_hello, that's not quite true (re: crt monitors). Some monitors could do interlaced as well as progressive. Viewsonic was well known for having a line with that feature, and I owned 2 of them once upon a time (I used one to do interlaced-mode stereo3d early on). And most, if not all, monitors were interlaced, pre-CGA, as they were just re-used tvs (e.g. Apple II, commodore64 - both of which, IIRC, connected the cpu to the tv via standard composite cable).
If the op wants to SIMULATE interlacing, just interleave black lines in there.
I know, modern monitors are progresive. But why a SW-player does not simulate sending odds and evens rows? Most often Video8(288rows interlaced) is grabbed as DV(576i) which is twice more. For SW-player should be easy to send first evens rows and then 20ms(yes, it is 20ms, not 50ms ) later odds rows.
But why? Why would a standard player want to play a video in a legacy, SUBSTANDARD way, other than as a gimmick? How often do you you watch your favorite shows in Sepia tone?
There's a reason the industry calls these "special" effects.
Actually as soon as you'd try to interpret it , simulation like that, it would be much clearer. You'd find out that LCD has different lag times than CRT, has upscale or downscale features as oppose to CRT etc., and adding this, most importantly , using LCD, you have to "draw" a black line, while skipping that actual line while CRT really skips that line and does nothing in between.
What you want is actually done by bob deinterlace, making a field as a frame and posting it on screen and it could be upscaled, downscaled. Size, resolution for LCD does not matter. CRT is set for resolutions.
If you try to simulate posting only fields and skipping lines as CRT does, for example first field as a bottom, then other field, you'd get something like this, if using vapoursynth as a platform for simulation:
import vapoursynth as vs from vapoursynth import core source_path=r'NTSC DV avi.avi' clip = core.avisource.AVISource(source_path) clip = clip.std.SetFrameProp(prop="_FieldBased", intval=1) #1 bff bob = clip.std.SeparateFields() bottom_fields = bob[0::2] #assume even frames only (fields) top_fields = bob[1::2] #assume odd frames only (fields) blank = core.std.BlankClip(bottom_fields, color=(16,128,128)) blank = blank.std.SetFrameProp(prop="_FieldBased", intval=0) bottom_interleave = core.std.Interleave(clips =[bottom_fields, blank] ) bottom_frame = core.std.DoubleWeave(bottom_interleave, tff = True)[::2] top_interleave = core.std.Interleave(clips =[top_fields, blank] ) top_frame = core.std.DoubleWeave(top_interleave, tff = False)[::2] simulation = core.std.Interleave(clips =[bottom_frame, top_frame] ) import havsfunc qtgmc_bob = havsfunc.QTGMC(clip, TFF=False) qtgmc_bob.set_output(0) simulation.set_output(1)
Last edited by _Al_; 20th Feb 2021 at 14:17.
sorry for redundant posts, it needs all scripts allowed, it plays havoc if I do not do that,
As you can see , you have black lines in there, it is unusable, so method to make a field as frame is what it is used.