§ ¶The "subtitler" filter, screen size, and font encodings
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:
- Why are my font sizes and border widths screwed up?
- Why does my foreign-language text appear garbled?
- Why don't my pictures and animations show up?
Fortunately, both of these are easy to fix.
(Read more....)§ ¶Why Avisynth can't be used with 64-bit VirtualDub
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....)
§ ¶How not to use Remote Desktop
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....)
§ ¶Me and RPGs
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.
(Read more....)