Alright, so here we are again tackling the 3d-checkerboard (CB) format but this time we've got it. It's just even more slow than the half-mirrored modes and it should be 60fps at either 1280x720 or 1920x1080, left-eye-view first (top left corner pixel). Most formats seem to be left eye first by the way. The 60fps describes the video going to the TV which then creates two frames from every one so that the TV outputs 120fps to your face, 60fps per eye. Anyway here it is:
*** interlaced to LR/RL to 1920x1080 60fps checkerboard (10 second test)
mencoder d:\interlaced.avi -o d:\checkerboard.avi -ofps 60 -endpos 10 -oac copy
-vf ilpack,il=d,scale,rotate=1,ilpack,il=d,scale,rotate=2,
geq=p(X\,Y)*gt(W/2\,X)+p(X\,Y+H/2)*lt(W/2\,X)*gt(H/2\,Y)+p(X\,Y-H/2)*lt(W/2\,X)*lt(H/2\,Y),
rotate=1,ilpack,il=i,scale=1080

1,rotate=2,ilpack,il=i,scale=::1
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000
-ofps defines the output fps. Don't forget the "o" in -ofps or else you will be redefining the input fps which is normally not needed.
OK, that command is big and hairy so let's just look at the parts of -vf.
1) ilpack,il=d,scale,rotate=1,ilpack,il=d,scale,rotate=2
This is the deinterlace/rotate/deinterlace/unrotate routine that gets you from interlaced to a 2x2 format of LL/RR.
2) geq=p(X\,Y)*gt(W/2\,X)+p(X\,Y+H/2)*lt(W/2\,X)*gt(H/2\,Y)+p(X\,Y-H/2)*lt(W/2\,X)*lt(H/2\,Y)
changes LL/RR to LR/RL by swapping Quadrant 1 with Quadrant 4.
2a) p(X\,Y)*gt(W/2\,X) --- this gets you the unchanged left half of L/R
2b) p(X\,Y+H/2)*lt(W/2\,X)*gt(H/2\,Y) --- puts Q4 image data into Q1
2c) p(X\,Y-H/2)*lt(W/2\,X)*lt(H/2\,Y) --- puts Q1 image data into Q4
3) rotate=1,ilpack,il=i,scale=1080

1,rotate=2,ilpack,il=i,scale=::1
Converts from LR/RL to CB format with a rescale via a rotate/interlace/scale/unrotate/interlace routine. Note that since the image is sideways during the scale, I use 1080:1920 instead of 1920:1080 so don't think it's a mistake. If you want 1280x720, then use 720:1280. Also don't put a normal scale right after the geq since it gave me bad results for some reason. Also don't forget the :1 after the scale for preserving interlacing integrity and you need it.
Or you could do the process in two steps which is what I prefer:
2x2, LR/RL: an intermediary format
I recommend this conversion in two steps. One to get to a 2x2 format of LR/RL, and the second step to rescale and get to your CB format.
*** interlaced to 60fps LR/RL
mencoder d:interlaced.avi -o d:\LR-RL-60.avi -ofps 60 -endpos 10 -oac copy -vf ilpack,il=d,scale,rotate=1,ilpack,il=d,scale,rotate=2,
geq=p(X\,Y)*gt(W/2\,X)+p(X\,Y+H/2)*lt(W/2\,X)*gt(H/2\,Y)+p(X\,Y-H/2)*lt(W/2\,X)*lt(H/2\,Y)
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000
OK, so that gets you to LR/RL at 60fps and original resolution. You can check your file and see how it looks, then proceed with the next step. Note I convert to 60fps now instead of later just because I'm more confident that there will be no ghosting due to interpolated frames in case the encoder does that. That being said, it's probably OK to go to 60 fps during the next step instead if you want to since the encoder probably won't interpolate new frames and just duplicate whole frames instead in order to achieve the new framerate.
*** LR/RL to checkerboard with rescale to 1920x1080
mencoder d:\LR-RL-60.avi -o d:\CB.avi -ofps 60 -oac copy
-vf rotate=1,ilpack,il=i,scale=1080

1,rotate=2,ilpack,il=i,scale=::1
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000
This way if there are problems with the final video, you might be able to spot where it is more easily. Like before, use the scale in the place it's shown or you may have problems... ghosting if you scale later and an odd colored stripe on a screen edge if you put it before.
Playback:
From what I've read, you need your desktop in the same res as the 3d input your tv takes, then play your video in fullscreen and enable 3d mode on your tv and it should work. One possible hitch is if your video driver decides to smooth out the image for you and cause massive ghosting so in that case use -vo directx:noaccel or, for linux users, -vo xv:noaccel or -vo x11. I may have to ask someone to test this for me if I give them a CB file I've created. It should play in other players too.
Final comments:
I've heard AVISYNTH is good for converting to CB so it's probably much faster and maybe I'll learn it someday but maybe not. Also, converting to jpegs and using netpbm tools would also be faster but that technique has some potential A/V sync loss problems. As far as it goes, I kind of like this method since it's pretty simple once you have the equations and have the time to do an overnight conversion. Still, I might post about how to do this with netpbm tools but I'll leave that for next year. I think that's it for now.
Whew:
Am I done yet? It wasn't supposed to be this long and I still have to talk about frame-sequential. I have been working on it but it takes alot of time to test different systems. It looks like OS/card/driver matter but I've had great success on my XP system with an FX-5200 card. I just want to do some more testing on another system before I post.
see ya,
--- iondrive ---