Category Archives: General

Per-Frame Metadata

Someone asked me a question in email today that I thought I would pass on to the broader group. Are there any general methods for attaching general metadata — e.g., EXIF data — to individual video frames?


video frame metadata

At first thought, this strikes me as a container-level matter. However, there could be a video codec that embedded metadata in each frame and could be stored in any generalized container format.

Personally, I have always been more aware of issues surrounding content playback vs. content creation which I admit is somewhat of a weakness in my overall multimedia knowledge. The submitter had in mind data along the lines of absolute timestamps and GPS coordinate information to be included with every frame. This may seem a tad excessive but you can never underestimate other peoples’ requirements.

GHOP

Google announced their Highly Open Participation Contest today. I really hope that the name is not a backronym inspired by the common acronym for International House of Pancakes. GHOP is an effort to bring pre-university students into the open source fold through a Summer of Code-like program. Whereas GSoC projects were required to center around code, these GHOP efforts can be related to documentation, QA, R&D, translation, and assorted other areas, as specified by participating project’s issue trackers.


Google Highly Open Participation Contest Logo

10 open source projects were selected for this initial run. FFmpeg was not one of them. According to the FAQ page, “each project has a fairly low barrier to entry”. I admit, that would eliminate FFmpeg from consideration right away.

First Digital Pictures

If Michael can show off the very first pictures from his new digital camera, then so can I… where “new” is roughly July, 2003. I was organizing thousands of digital photos from the last 6 years and found what must be the first pictures from my current digital camera, based on the filename. And wouldn’t you know, the pictures were of felines:


Wide-eyed kitten

It’s all coming back now — I invested in the Canon Powershot S400 back when I was fostering a family of 5 kittens and their mother for the local animal shelter.


Scooter the kitten

So it has come to this– posting cat pictures. Eh, it’s a holiday. Above was Scooter. He was the bravest of the litter. This was feeding time:


Kitten feeding time

As you can plainly see, I’m not a very good photographer. Plus, I had a phenomenal amount of difficulty adjusting to this new camera, which was a substantial feature upgrade from the S100 I had purchased 2 years earlier. Many of my earliest photos can out very blurry or with saturated colors until I learned how the camera expected to be used.

Bash Too Smart For Its Own Good

So I’m running the latest Ubuntu release in a virtual machine under my main Windows XP machine (it’s a blessing that I no longer need to choose between operating systems these days– I can run them all simultaneously on the same machine if I wish). Today I noticed a feature of Bash that for all I know has been in place for over a decade. I just have never seen it enabled by default in any distribution before. I had to do some research — indeed, one of the first problems in Unix is learning how to ask the right question — but I eventually figured out that the feature is called “Programmable Completion”.

Tab completion is God’s gift to command line navigation. It’s something I always take 10 seconds to carefully explain to anyone who is struggling with the Unix command line for the first time since navigating through a filesystem is agonizing without it. Programmable completion takes tab completion and tries to make it smarter. I first noticed this peculiar behavior on my Ubuntu VMware session today. If there are 2 files in the current directory, xyz.tar.gz and xyz.tar.bz2, then typing ‘tar zxvf x<TAB>’ automatically completes xyz.tar.gz while ‘tar jxvf x<TAB>’ automatically completes to xyz.tar.bz2. I noticed this, thought it was an interesting touch, thought for a moment about how it might work, and immediately wondered what would happen if the underlying mechanism isn’t aware of a mapping that I need.

It didn’t take long before I ran into that eventuality. I was trying to play some impossibly obscure formats with xine. I navigated to the necessary directories only to find that they were apparently empty of any files. I never realized just how important tab completion is to me. Now I’m reading pages of documentation trying to figure out how to disable programmable completion entirely. (It would probably be enough to ask the desktop terminal emulator to run my own Bash config files on startup– I don’t understand why I have to specifically configure such programs to do this.)

Effectively, Bash is making a decision here about what files it thinks I want to see. I’m surprised a Linux distribution would program that kind of behavior by default. How condescending is it when a Microsoft OS tells you that there are entire sets of files that you don’t need to see? Maybe that’s not a fair comparison, as the programmable completion feature is more akin to a list of file filters in a “File Open…” dialog box. Thing is, there’s no obvious way to select “show all files”.

Computer programs get into trouble when they try to anticipate what a normal user needs. More often, such programs have the effect of shaping end user behavior to account for the educated guesses that the computer makes.