Last century's HQ video
April 22, 2026
Heads up: this is a long post. Feel free to skip to the end for the technical part.
Titan is back! Who is “Titan”? It's none other than my 1999 PC! But first, a bit of history so you can catch up with the rolling stock. After its first appearance on this blog, Titan kept going strong for a good while. Then a few years ago, Windows 98 decided to kick the bucket after I installed the chipset drivers. My mistake for trying to fix something that wasn't broken. Well, 98 is not known for its robustness anyway, so I just reinstalled it (for the thousandth time :D). It worked fine for a while, then some day, Titan wouldn't boot. Just a black screen that left me completely clueless about the issue. I tried shuffling RAM sticks around, a different GPU, reseating the CPU cartridge… No dice. Had I plugged in a speaker, maybe I would have gotten some clue… But I didn't. So I put Titan aside and in its place came a Socket 7 system I had recently refurbished.
It stayed that way for a while until recently, when I decided time had come to attempt to breath some life into him again. Of course, cardiopulmonary resuscitation had not been maintained during the months Titan spent on the sideways. Thus, hopes were slim. But this time around I was equipped with a speaker and a PCI debug card, strongly determined to fatten them a bit. After laying the motherboard bare on a salvaged piece of cardboard, right next to another PC, I effectively created a FrankenTitan by hooking the motherboard up to the other's PC PSU. Having a spare PSU would surely lack taste ;-) I started simple: CPU, GPU, a known good CR2032 battery and one RAM stick. The speaker pierced my ears with one long beep. Then nothing. Apparently, for this BIOS, one long beep means “RAM issue”. After finding an unofficial manual for this motherboard on the retro web, I was intrigued by the fact that if using a single RAM stick, it recommended to put it in slot 1. On my end, it was in slot 3, the farthest from the CPU, as that's what’s recommended for modern machines. Titan is different. After moving my RAM stick to slot 1, Titan finally agreed to grant me the sacrosanct short beep. POST successful!
Just like that, Titan was back. A few days were all it took me to bring it back to its full glory: a dedicated case and PSU, 2 sticks of RAM, its faithful ISA sound card, a mechanical hard drive loaded with a brand new Windows 98 SE install, and a DVD drive that will play an interesting role a bit later. And with that, I could finally solve a mystery that bogged me ever since I had discovered months ago that a VOGONS user was able to decode a 480p Xvid video on the very same CPU that makes Titan tick. My previous attempts were limited to 360p MPEG2. What gives? How could someone shove more pixels with a more advanced codec down this CPU's throat? The first thing that came to my mind was the wide gap in software stack: I was using Windows 98 and VLC media player, while they were using Windows 2000 with PowerDVD 4.0. I didn't feel like wiping my brand new 98 install, so a switch to 2000 was out of the question. But PowerDVD, I could try. I had a gut feeling that if I wanted to play back higher quality video than what I had previously achieved, I would either need a highly optimized CPU-only decoder, or a GPU-assisted one. If GPU-assisted video decode was ever a thing last century.
I was wrong to be skeptical about GPU-assisted video decode on such an old setup. It is not as new a thing as I thought it to be: PowerDVD 2.55, as far back as the late 1990s, already did it! I preferred this one over 4.0, as the latter seems to belong more to the 2000s. I want to play HQ videos, 1990s style! So 2.55 it is. Turns out that it supports a select few GPUs for hardware-accelerated motion compensation, and Titan's GPU, the mighty S3 Savage4, is among the chosen ones! Upon reading this in the README, the hype immediately grew to unbearable levels. Then quickly took a nose dive when PowerDVD refused to play back all the files I thew at it. All. Of. Them. Heck, even the file playback feature was hidden behind a small button of its UI! When I finally saw the light and realized that PowerDVD was first and foremost conceived to play back… DVDs… (who would’ve guessed?), I shoved one in the DVD drive, and voilà, PowerDVD finally agreed to display some moving pictures. And boy did they look crisp! It was the best video play back I had ever seen from Titan. I'd say the picture quality is very good on a 15”, 1024×768 screen. And perfectly fluid at that, with some CPU cycles to spare even, as the mighty Pentium 3 was chugging along effortlessly, averaging around 50% usage. Having witnessed that, I made it a priority to find out how to produce my own video file(s) that PowerDVD would accept.
Given that PowerDVD 2.55 is very DVD-focused, I took a peek at the DVD specification as summarized by Wikipedia. The highest resolution of the spec is either 720×480 at 30fps (PAL) or 720×576 at 23.97fps (NTSC). The video codec to use is MPEG2 with a bit rate averaging around 6000Kb/s, with a total (audio+video+subtitles) ceiling of 9800Kb/s. Not too shabby! Although PowerDVD seems to take a few shortcuts that do affect image quality a bit compared to a modern player, I have to give my hats off to the engineers that worked magic so that last century's toasters could handle such high quality. On the audio front, the spec mentions several codecs. I chose AC-3 as it should be available for NTSC and PAL players both. It took me a while to find the right FFMPEG setup to produce files close enough to the spec that PowerDVD would accept them. It boils down to a few parameters:
- You have to use a DVD container (that's
-f dvd)
- PowerDVD seems quite picky about audio bit rate. A 5.1 channels stream decodes just fine at 448Kb/s, but a stereo one cannot go above 160Kb/s without producing annoying crackling during playback. My attempts to go below 128Kb/s were also unsuccessful, but the audio quality is less than desirable at such low bit rates anyway.
- Most content nowadays is presented with an aspect ratio of 16:9 or even 2.35:1. That's a bit tricky because the DVD spec does not offer a 16:9 resolution. The trick is to set a display aspect ratio (DAR) that stretches the pixels horizontally. If encoding at 720x576, the pixels have to be stretched during playback to 1024x576, which is 16:9. For 2.35:1, you basically encode at 16:9 with black borders. There's no other choice because that aspect ratio is not standard in the DVD spec.
- Every time I've tried changing the refresh rate of a video, I get stutters in the resulting encode. So I don't change it and just target a resolution that's compatible with the original material refresh rate according to the DVD spec. That's also the reason why I don't use the
target presets of FFMPEG, as those will mess with refresh rate. For 23.97 or 25fps, I go for 720x576, effectively targeting NTSC. For 29.97 or 30fps, I go for 720x480, effectively targeting PAL.
To maximize quality, I chose a 2-pass encode. Here are the 2 commands that I use, one for each pass. Please note that the commands below assume a target resolution of 720x576 with 16:9 aspect ratio, and adds black borders if necessary. When targeting 720x480, in the -vf part of the commands, you should replace the "576" with "480" (obviously), but also the "1024" with "853". That's to keep the target 16:9 aspect ratio.
$ ffmpeg -i in.mp4 -c:v mpeg2video -b:v 6000k -vf "scale=720:1024*ih/iw,pad=720:576:(ow-iw)/2:(oh-ih)/2,setdar=16/9" -bufsize 1835k -maxrate 9800k -pass 1 -an -sn -f null NUL
$ ffmpeg -i in.mp4 -c:a ac3 -b:a 160k -c:v mpeg2video -b:v 6000k -vf "scale=720:1024*ih/iw,pad=720:576:(ow-iw)/2:(oh-ih)/2,setdar=16/9" -bufsize 1835k -maxrate 9800k -f dvd -pass 2 out.mpg
I've encoded a few files with these commands, and I'm pleased to report that they play back fine with PowerDVD 2.55. Now going further, I could try to create real DVDs that play on commercial players. That would also allow me to add subtitles, which are not supported with my current workflow. I know that the dvdauthor tools should allow to do that, and more (menus anyone?). I've yet to try it though, might be for another time.
PS: You might be wondering where the "Titan" name comes from. It's pretty simple: when I got it, Titan was setup in a very (very) tall case. Think of a standard ATX case with power supply at the top, but with lots of spare room above the 5.25" bays and the power supply. So when Windows asked me to name it during its first install… A quick glance at the case and inspiration struck me :-)