Best CLT ever.

(March 5, 2006)

Today, the CLT (Chemnitzer Linux-Tage) ended. This is the local linux event (actually the second largest of Germany) I attend every year and have been contributing for three years now. This year, I was again at »Praxis Dr. Tux«, some kind of »live help center« where people can bring their computers and get some help with their problems from experienced users. In addition, I did a comparison (German text) of some distributions targeted at novice users, which was a great success — there were not enough seats for all attendees. In particular, CENSORED got a lot of attention, especially because danimo did a great deal of advertisement. I also did an extra, unplanned presentation on CENSORED at the »Linux night« that was quite a success, too.

OK, I have to stop now, the #s2000 folks are bugging me to leave the place now …

Argh, I lost my partition table!

(February 27, 2006)

Today, Gentoo Linux 2006.0 has been released. I don’t have tried Gentoo ever before, but the 2006.0 Live CD was said to feature a nice user-friendly installer. Because I was still in my »distro testing« mood (a leftover of the preparations for my presentation at CLT), I decided to give the CD a try.
Read more …

Sticking to the Anti-Direct3D camp

(February 21, 2006)

As I already mentioned some time ago, the 3D API of my choice is OpenGL. There are two main reasons not to use Direct3D, the only alternative to GL. The first reason is of course platform-(in)dependence, because I develop stuff for both Windows and non-Windows systems. OK, platform-independence isn’t really a crucial issue for demos as Win32 is the main platform for new-school demoscene stuff nowadays. (Nevertheless, a multi-platform demo still gets some additional appreciation, but that’s nothing you’re going to win a compo with.)

Reason number two: Direct3D is said to be much more complex. I don’t have seen much Direct3D code yet, so this part is mostly prejudice. Today, after a brief IRC conversation with a friend who codes D3D stuff for a living, I decided to give the DirectX Sample Browser (which is part of the SDK) a try. I really wanted to rethink my attitude towards Direct3D. Alas, it ended in disaster — instead of curing me from my aversion for D3D, looking at the tutorials reinforced my anti-D3D opinion …
Read more …

A strange Windows message

(February 18, 2006)

It is widely known that large parts of the Windows API are undocumented. However, although I’m a occasional Windows programmer, I didn’t come across such a mysterious spot until today. The source of confusion is the common explanation of how to make a window moveable by clicking into it anywhere (not just the title bar). The code basically looks like this:

case WM_LBUTTONDOWN:
  ReleaseCapture();
  SendMessage(hWnd, WM_SYSCOMMAND, 61458, 0);
  break;

I don’t get the basic principle of how this code works, but that’s not the problem here. What really caught my attention is that numerical constant that seems to be documented nowhere.
Read more …

LAME weirdness

(February 15, 2006)

Today, a good friend reported something like a bug in MPlayer’s LAME encoder filter. He said that mpgtx, a MPEG audio/video cut and merge program, pretended that the resulting MP3 files are invalid. Some quick investigation revealed that the files indeed started with a chunk of zero bytes, not with a correct MP3 frame. This doesn’t happen with files produced by the standard command-line LAME frontend, so the problem had to be on my side. Read more …

Extending MPlayer

(February 9, 2006)

For quite some time now, I always wanted to record songs from my favourite radio station. However, there was a problem: They only offer a RealMedia stream (at only 44 kbps, but the codec is remarkably good, on par with WMA or Vorbis), which is not as easily recordable as, say, HTTP streaming. However, with the help of the original binary codecs, MPlayer is able to play the stream – so it had to be possible to record it. Unfortunately, MPlayer’s –dump options only record the compressed stream, and MEncoder refuses to transcode it into something usable (.wav, .mp3, …) because it always expects a video stream to be present. Furthermore, none of the dump or transcode options are able to play the stream while recording.

This had to change. And since I had a MPlayer-for-Win32 build environment on my box anyway, this was the right time. After some reasoning, I came up with a functional solution that doesn’t require twiddling around in MPlayer’s innards too much: an audio filter. If –af lame is put into MPlayer’s audio filter chain, it simply encodes all audio samples that pass by into an MP3 file on disk. MPlayer’s audio output is still active, thus an MP3-encoded audio dump is created on-the-fly during playback.
Read more …

My second patch …

(February 7, 2006)

I just submitted my second patch to a public open-source software project. The first one was about one or two years ago, a new feature for a not-too-famous image viewer named QIV. The project I submitted today’s patch to is, erm, somewhat bigger: it’s MPlayer. It’s a patch for the DirectX video output driver that used to take 100% CPU time on some (but not all) systems.
Read more …

Experiences with Delphi 2005 and DirectSound

(February 5, 2006)

I have to admit that the title of this article is misleading, but I didn’t find a better one. It’s not about DirectSound under Delphi – these two just happen to be the topics I was busy with today.
Read more …

Modern OpenGL with lcc-win32, the hard way

(February 4, 2006)

I love OpenGL. Whenever I want to do some real-time 3D stuff, OpenGL is the API of my choice because of its simplyness and platform-independence. But honestly, OpenGL can also be a bitch sometimes. For example, there is no portable way of using textures with non-power-of-two dimensions. Another major annoyance is the way »modern« extensions are handled. To use recent technology like shaders, you need C header files that contain all definitions of the new functions, constants and so on. Annoyingly, these aren’t available in some development environments: Out-of-the-box OpenGL support ends at version 1.1 in both MSVC and my favourite dev system, lcc-win32. Read more …

A lot of updates

(February 4, 2006)

Remember what I said about the tedious job of maintaining software projects? This time, it even struck me twice: Just two days after the release of MPUI 1.1.1, I received a batch of bug reports and other suggestions, so I did another rework of MPUI yesterday. Next to half a dozen minor bugfixes, I finally implemented a »clip info« feature that relieves the user from the task of parsing the (sometimes cryptic) MPlayer output.

This morning, even before I left my bed, a good friend …erm… persuaded me to add a new feature to CENSORED: He is preparing a presentation to be held at the university. The problem is, the computer where he’s going to show the slides is not his, and it’s equipped with an ancient GhostScript installation. The 7.x versions of GS have some serious issues with rendering PDF files generated by pdf(La)TeX. For example, hypens (‘-’) are shown at completely wrong places. To overcome this, I added an option to »render« a PDF into a directory with one PNG file per page, thus allowing to generate images on one computer (that is equipped with a decent version of GhostScript) and presenting them on another one.