Manual Gain Control on the Client

Another day, another experiment.

A question was brought up on one of the LinkedIn forums that I follow. I am no fan of Automatic Gain Control (AGC) as it is implemented today (I’m no fan of a lot of things it seems). The reason is that it seems to me that a lot of AGC implementations are pretty naive implementations that just multiply each pixel by a value determined by averaging the frame. I have not come across a system that will allow you to apply a different gain value to different parts of the frame.

AGC introduces a lot of noise into the frame. This in turn causes a) the compression to go to shit, and b) wreaks havoc on the motion detection. A lot of customers will pretty much be recording noise all night.

So why not do it on the client application?

Here’s a quick example I cooked up. I am using a couple of soft-buttons and since we are using the GPU for rendering the video, the cost of doing the multiplication is almost zero (the GPU was built for this sort of thing, so why not use it?)

Nothing fancy.

Button Labels

I was recently in a discussion about labels on buttons. In the good old days, a button had a beveled look and sported a nice RGB(192,192,192) background. It “afforded” clicking, they said.

Today a “button” can be a piece of text with no border at all, it can be an image, an area on an image. Sometimes you need to click it, and sometimes you just need to move your cursor over it. People seem to understand that elements can be clicked, so clearly people are quite capable of understanding when something is clickable.

One thing that I have come across quite a few times is that the label needs to be almost a sentence. Even though very few sites actually do that, I often get the suggestion that the label should not be “files” but “show files”, or “open” should be “open file”, “checkout” should be “go to checkout”. I understand that people who have NEVER used the Internets before (its a series of pipes), would not understand the idea that you need to click a button to do something.

And when you are focusing just on that one button it doesn’t seem to add much clutter. But when ALL buttons have a long description it just becomes very messy, and difficult to navigate.

While it certainly is possible to design applications that cater to the n00b’s and the 1337’s, you usually have to make a choice and then stick with it. If you decide to cater to n00b’s then you make choices that punish the 1337’s and Vice Versa. But picking you target audience, and catering to them is usually a lot better than aiming for both. Don’t shoot rabbits with bear ammo, and don’t try to shoot at a bear with the rabbit gun either.

Windows 8

Looks good.. but haven’t we gotten used to the idea that Microsoft notoriously oversells everything they are working on?

It seems as is “Windows 8” is pretty much Windows 7 w. IE9 running in fullscreen mode. Except the coolness is not Silverlight driven. Instead, they are now embracing HTML5 and javascript, and touting THAT as the panacea. It used to be silverlight and WPF, but I guess that now it is HTML5/JS.

Now the Silverlight/WPF crowd is screaming, and soon the HTML5/JS will too. The IE version with cool 3D HTML5 will naturally have its own, special Microsoft interpretation of the standard.