Log in

View Full Version : game boy player


njahnke
13th July 2006, 11:50
apologies in advance if this is common knowledge here. i really need to start frequenting this forum given that digital video is now like my entire life.

the gamecube (and by extension the game boy player) employs a kind of deflicker to its output. there is actually a toggle for this in the smash bros melee options, though i can't think off the top of my head what they called it. you would know it if you saw it though - it does a great job of cutting down on the flicker on an analog tv, but unfortunately it's a portal to hell for capturing the game ...

my understanding of how it works is sketchy, but i know that splitting the fields of resulting video (and therefore doubling the framerate) results in video whose every other frame is one half pixel different vertically than the previous. clearly, you can't move things distances of less than a pixel without making things rather unclear, and so i tend to refer to what this thing does as "blurring the even field". perhaps that's how it works - thin horizontal lines that would normally flicker are blurred, but the image still seems quite sharp, because it's only one field that's been blurred.

anyway, i've dealt with this in a variety of ways over the years, each (hopefully) better than the last, but now i'm becoming much more proficient in avisynth, and i've gotten the picture to a point where the difference between every other frame is obvious (even after being mutilated by vhs, the even field is significantly fuzzier than the odd).

i was able to put the fields back on top of each other vertically (this is only a half resolution source) by actually using LeakKernelBob() with a threshold of 0, then separating the fields, so (i use a dvd recorder to capture):

AC3source(MPEG2source("C:\aj\aj.d2v"),"C:\aj\aj.ac3").converttorgb32
Lanczos4Resize(640,480) #comes in 720x480 so needs aspect ratio correction
LeakKernelBob(order=1,threshold=0,sharp=true,map=false)
Crop(86,78,-90,-82) #game boy player border
separatefields
changefps(59.94) #framerate is now 2x too fast due to deint + field sep

here are some pics i took that illustrate the blurring problem pretty well i think: even (http://nate.quandra.org/aj-even.PNG) odd (http://nate.quandra.org/aj-odd.PNG)

i tried to find a place where things didn't move very much between two frames so the difference would be clear.

okay so, i need to either blur or sharpen one of the fields, right? well, that didn't work out so well:

clip1=selecteven.sharpen(0.5,0)
clip2=selectodd.sharpen(0,0)
interleave(clip1,clip2)

something like that will work, but it doesn't reproduce the blur from the gamecube very well, and it's still brutally obvious that the adjacent frames aren't buddies, and i don't even want to think about what that does to the compression.

so, does anyone have any thoughts? i'm open to completely changing how i process game boy player video, but i suspect just a simple filter or two will do the trick - i just need recommendations on which ones. i process video like this not only from vhs sources, but from good dvd sources recorded with s-video, also, so solutions for either or both types of source would be great.

thanks in advance.

DK64_MASTER
16th July 2006, 05:49
apologies in advance if this is common knowledge here. i really need to start frequenting this forum given that digital video is now like my entire life.

the gamecube (and by extension the game boy player) employs a kind of deflicker to its output. there is actually a toggle for this in the smash bros melee options, though i can't think off the top of my head what they called it. you would know it if you saw it though - it does a great job of cutting down on the flicker on an analog tv, but unfortunately it's a portal to hell for capturing the game ...

my understanding of how it works is sketchy, but i know that splitting the fields of resulting video (and therefore doubling the framerate) results in video whose every other frame is one half pixel different vertically than the previous. clearly, you can't move things distances of less than a pixel without making things rather unclear, and so i tend to refer to what this thing does as "blurring the even field". perhaps that's how it works - thin horizontal lines that would normally flicker are blurred, but the image still seems quite sharp, because it's only one field that's been blurred.

anyway, i've dealt with this in a variety of ways over the years, each (hopefully) better than the last, but now i'm becoming much more proficient in avisynth, and i've gotten the picture to a point where the difference between every other frame is obvious (even after being mutilated by vhs, the even field is significantly fuzzier than the odd).

i was able to put the fields back on top of each other vertically (this is only a half resolution source) by actually using LeakKernelBob() with a threshold of 0, then separating the fields, so (i use a dvd recorder to capture):

AC3source(MPEG2source("C:\aj\aj.d2v"),"C:\aj\aj.ac3").converttorgb32
Lanczos4Resize(640,480) #comes in 720x480 so needs aspect ratio correction
LeakKernelBob(order=1,threshold=0,sharp=true,map=false)
Crop(86,78,-90,-82) #game boy player border
separatefields
changefps(59.94) #framerate is now 2x too fast due to deint + field sep

here are some pics i took that illustrate the blurring problem pretty well i think: even (http://nate.quandra.org/aj-even.PNG) odd (http://nate.quandra.org/aj-odd.PNG)

i tried to find a place where things didn't move very much between two frames so the difference would be clear.

okay so, i need to either blur or sharpen one of the fields, right? well, that didn't work out so well:

clip1=selecteven.sharpen(0.5,0)
clip2=selectodd.sharpen(0,0)
interleave(clip1,clip2)

something like that will work, but it doesn't reproduce the blur from the gamecube very well, and it's still brutally obvious that the adjacent frames aren't buddies, and i don't even want to think about what that does to the compression.

so, does anyone have any thoughts? i'm open to completely changing how i process game boy player video, but i suspect just a simple filter or two will do the trick - i just need recommendations on which ones. i process video like this not only from vhs sources, but from good dvd sources recorded with s-video, also, so solutions for either or both types of source would be great.

thanks in advance.

Still encoding speedruns? ;)

Sorry, I was lurking, and I saw your post here. I got nothing to add.

scharfis_brain
16th July 2006, 09:51
provide an untouched sample video.

dbzgundam
20th July 2006, 21:50
As far as I know "deflicker" on SSBM is merely an antialiasing filter.

njahnke
30th July 2006, 21:36
provide an untouched sample video.
oops, i got a message informing me about the first response to this thread, but i never received another reply notification. i only saw these additional responses in the process of showing the thread to someone else. i apologize for the delay. here is a huffyuv-compressed raw from virtualdub of a good part of the video in question:

http://nate.quandra.org/ajdoom9_huffyuv.avi (783.52 MB)

As far as I know "deflicker" on SSBM is merely an antialiasing filter.
you may well be right. the game boy player/ssbm filter connection is probably only in my mind.

hrlslcbr
1st August 2006, 18:13
I'm not sure if it's just an AA filter, because it 'blurs' textures too; something a normal antialiasing filter wouldn't do, and I don't think the GC has enough power to do something like transparent AA.

njahnke
6th August 2006, 13:06
update: found a solution in the superior deinterlacer mvbob().

mvbob(bobth=0)

can still slightly tell adjacent supposedly identical frames apart but it's probably just vhs mutilation. definitely won't bother x264 much.