Stuff

I don't remember why I originally wrote the subtitling filter. I'd like to say it was because I fansubbed some anime, but my Japanese skills are extremely minimal and my access to unsubtitled anime even less, so that couldn't have been it. I think it may have actually just been to display some on-screen lyrics to music -- probably Yuzurenai Negai from the Magic Knight Rayearth opening. Or something like that.

The two most common questions I get about the subtitler filter I wrote are:

One problem with attempting to port software from 32-bit Windows to
64-bit Windows is that 64-bit processes cannot load 32-bit DLLs, even
on the AMD64 (x64) platform. This is a major annoyance because it means
that 32-bit video codecs, audio codecs, filters, and file format
drivers cannot be loaded into 64-bit VirtualDub. Unfortunately, because
Avisynth is a 32-bit DLL, it cannot be loaded either, and thus Avisynth
scripts cannot be used.

The solution for a problem like this is to create a 32-bit process that
hosts the 32-bit DLLs, and then use interprocess communication (IPC) to
transfer data between the 32-bit and 64-bit processes. This is
suboptimal because of the delays and inefficiencies in switching
processes, but it would work at least and maintain compatibility. There
are a number of IPC mechanisms available on Windows, but most of them
have major deficiencies, such as not being securable, not having
support for waiting or non-blocking I/O, or requiring Windows NT. One
with relatively less suckage is COM marshaling, in which the Windows
COM system automatically transfers a function call and assocated data
across the process boundary.

It turns out that COM marshalling between 32-bit and 64-bit processes
is explicitly allowed by Win64. The AVIFile interfaces implemented by
Avisynth are COM interfaces, and thus should be usable from a 64-bit
processes. Trying to do so, however, just causes AVIFile import errors.
So what's going on? (Read more....)

I finally got around to hacking Pivot to always display the (Read
More...) link, so it's time to celebrate by posting a short entry.

One of the best features that Microsoft added to Windows XP is Remote
Desktop, a.k.a. Terminal Services limited to one user. All you have to
do to use it is to enable Remote Desktop in Control Panel > System
and then use the Terminal Services Client (mstsc.exe) to connect. This
is a godsend on a laptop, where I have to occasionally connect back to
my desktop to get something. Since Terminal Services uses a GDI
mirroring driver, it is faster for non-multimedia apps than VNC, which
polls the screen. The downside is that you can't run 3D apps.

When you use Remote Desktop, make sure you never, ever create a loop.
One day I was connected to my desktop via my laptop, and then after
forgetting which computer I was working on, connected back to my laptop
within the remote session. Both computers promptly went black with
their keyboards locked and I had to hard reset one of the computers to
recover the other! (Read more....)

I've been having some problems with my laptop lately, with it blue-screening more and more over the past week. Usually I would just slap WinDbg on it and figure out what driver was the culprit so I could upgrade or remove it, but it'd gotten so bad that it didn't even dump a minidump to disk. It even once blue-screened on startup with a memory pool corruption error, which was a bad sign (and shortly ate the system registry soon thereafter). Well, a several-hour soak with Memtest86 revealed that the 512MB SODIMM had become flaky. Fortunately I have all of my data copied off intact, including my VirtualDub 1.6.5 development tree and Perforce depot, and am in the process of reinstalling XP with the good 256MB.

In the meantime, I'd been playing Namco's Xenosaga, which turns out is a pretty good RPG for the Playstation 2. RPGs -- the video game kind -- are a bit of a soft spot for me, and I've played a lot of them. The recent crop has been somewhat disappointing, what with Final Fantasy X being a departure from earlier games and X-2 being a total twitchfest. I happened to try Xenosaga on a whim and it turned out to be a bit of a hidden gem. Cheap too, considering it's now in Greatest Hits status. It took me about two weeks to finish it; that it has about a 50hr clear time on average and I didn't take any days off from work should tell you something.