Constructors, Avatars and Codecs

Redesigned the avatar which my friend Joey made for me a few years back. Cleaned up the edged, and changed the font.

While editing some videos last night, that I made of World of Warcraft last year (a 3-man Onyxia fight), I got thinking about designing a development codec. Since the files I recorded were at a stupidly high resolution of 1680×1050 at 30fps (about 30GB each), it was taking forever to do anything with them.

So I thought, how about a codec with the high quality bitstream data, but with a low quality editing stream to go with it. Big emphasis on random access and bidirectional seeking would be key to this my friend Gavin pointed out to me on IRC. Then when you’ve done editing using the low quality stream, it can be applied to the high quality when converting.

Would be nice if the C++ standard included constructors like PHP5 is introducing ( __construct() ), so whenever you change a class name, you don’t have to renamed the constructor(s) and destructor.

KalDLL Pro: Customization

kaldll_6The functionality of the DLL grew and grew as more people asked for more features.

One of these features was a better uptime counter, since the function I was using was GetTickCount(), with 32 bits representing milliseconds, it was limited for 49.7 days before it would rollover back to the beginning again.

kaldll_7I found a value in the registry that was updated regularly and was used to store a 64 bit uptime, though it was documented as not reliable to use on all system.

This new uptime counter allowed up 585 million years to pass before a rollover, which for systems using Windows, was very doubtful would be able to achieve.

kaldll_13Eventually it was requested for KalDLL to also have the ability to output information about what is currently playing in Winamp.

So after a bit of research again, I found that using the Windows message system, I could retrieve information about the current song and artist being played in Winamp.

KalDLL Pro

kaldllpro_1Expanding on my idea of KalDLL, I began adding additional features to it. One of which was the ability to display system stats.

I found some code on the internet which would, using assembly, retrieve information about the CPU.

Further expanding my understand of using C++, I began using the CreateWindow() API to create buttons, lists and text boxes for input, and the WM_PAINT message for drawing images.

kaldll_14My first attempt at this gave the looked of a low memory system, unless I managed to change the font object being used.

With a slightly improved version, it was possible to create custom “/<command>” for mIRC that could be formatted to output specific information from one of the many libraries I had added to KalDLL.

KalDLL and the Away Beep

kaldll_9This origin of this DLL came from the Away Beep script I original wrote in mIRC.

It all started when I was on IRC I wanted to get someones attention, it was quite important at the time since they were my web host and they hadn’t payed their bill so my sites were down.

But despite efforts to get their attention, they were AFK, so I began work on a mIRC script that would play a few beeping sounds if a certain character string was typed.

kaldll_10The script became quite popular on the IRC channel and eventually spread to other channels and servers.

I eventually made if so that you activate the beep, you needed to send “@<username>” where “<username>” is the name of the person your trying to get the attention of. So for me, it was “@Kaluriel

There was a limitation to the script though, which was that it wasn’t asynchronous to mIRC so everything frozen until it had done.

kaldll_12

And if multiple people had spammed it, you could be stuck and eventually disconnected from the server for not replying to a PING message.

So I began work on a plugin for mIRC that would multithread this process, and give better control over composing. So I began work on KalDLL.

I don’t have any images of the KalDLL version of away beep so I’ve substituted with the KalDLL Pro version, theres not much difference, I kept the same style during the port over.