Monthly Archives: February 2009

Capturing DV Screenshots

I have a specific task I need to do: I need to view a DV stream captured from an NTSC video source via DV bridge and capture screenshots. Since there is a lot of footage, I need to be able to seek easily through the stream (not unreasonable since DV is purely intra-coded, i.e., it consists of independently coded keyframes). Since this is television source material, I want the data competently deinterlaced while viewing and certainly when the screenshots are taken. One more thing — I want the screenshots to retain their 720×480 resolution that looks correct on a computer monitor, and not be squished down to 640×480, overscan region and all.

If you must know, it’s because I play lots of games for my Gaming Pathology project and contribute data for them — including screenshots — to the MobyGames database for posterity. I have a huge number of console games yet to cover and the screenshot dilemma is one thing that is holding me up. Consider the need to properly preserve representative screenshots of the Sega Saturn version of Space Jam for future generations of video game historians to study.


Sega Saturn - Space Jam

I didn’t think this would be such a tall order. Continue reading

Måns Got A Gdium

I lost the thread on those pre-release Gdium netbooks sometime ago. After being accepted into the One Laptop Per Hacker program, I responded affirmatively but never heard anything else. So how did Måns Rullgård manage to get ahold of one?

It’s all good. Check out the link to his blog for all the surface details of the OS and default software. The important thing is that we have a computer with a MIPS 64-bit CPU in the FFmpeg developer community. It should only be a matter of time before the unit starts serving FATE duty alongside the Alpha in Måns’ flat.

Investigating Alternate Continuous Integration Software

Ever since I figured out that FATE falls into the category of continuous integration (CI) software, I have been evaluating alternate, established, mature software packages that might be able to supplant FATE for managing FFmpeg automated building and testing. I don’t think it’s fair to say that I have been disappointed with the offerings I have found out there; it’s just that many other software packages have apparently approached this problem from a slightly different angle, with a slightly different set of assumptions, and slightly different resources on which to deploy a solution.

For starters, when I read the overviews for a number of these packages, I am never quite sure if they actually do what FATE already does. Many packages brag about their amazing abilities to perform continuous builds on many platforms. I might be missing something crucial here, but that fact alone doesn’t impress me. From my perspective, and in my experience, automating the build among multiple independent machines is the easy part. The difficult part is managing tests and aggregating the results back to a central location.

Aside: Sometimes I back up and wonder: Why aren’t our tests integrated into the build process? Oh yeah, they are: ‘make test’. But why can’t that general test be made to cover all the functionality? Because the ‘make test’ regression suite depends on the existence of both an encoder and a decoder for a particular format. FFmpeg covers a large amount of formats that it can only decode, not encode (and no one is going to step up to write even naive corresponding encoders for these formats in the near future, nor would I argue that they should). Therefore, it becomes necessary to test asymmetric decoder (and demuxer) functionality using individual tests as I designed FATE to do.

I designed FATE such that a client program would run on diverse platforms, constantly check for and rebuild new FFmpeg code, run a battery of tests, and log the results of the build and tests (including status, stdout, stderr, and performance stats) back to a central server. I wanted the client to be written in Python and use only the (expansive) standard Python library, if possible. More stringent were the server requirements: I needed something that operated via HTTP backed by PHP or Perl — because that’s what my web host provides, at least if I want to talk to MySQL (Ruby is also an option; so is Python as long as the CGI script doesn’t need to talk to MySQL).

“But you could host the central server at home on your own broadband and use whatever configuration you want.” Actually, administering things like web and email services is something I would rather pay a few dollars per month for someone else to do on my behalf. I am quite adamant about this. I feel the same way about laundry.

“If FATE ain’t broke, why fix it?” Well, it is sort of broken, or at least incomplete. Many of these packages already boast features like email notifications and even IRC notifications, in addition to better web interfaces– features that I would like to implement when time permits. And at the very least, surveying other CI software might give me ideas about how to improve FATE.

Can existing CI packages solve my problems? Continue reading

Researching The HTML 5 Video Tag

Discussions of the proposed <video> tag in HTML5 invariably make my ears perk up, maybe because it could be perceived — under the right circumstances — as alleged competition against what I do at my day job. But I’m still interested in all topics concerning multimedia technology, and this sounds like a big one. Plus, Mozilla recently announced that it would donate 100 grand to Wikimedia to help improve Ogg and Theora.


100 Grand candy bar

Quick glossary/refresher on key terminology: Vorbis = audio codec; Theora = video codec; Ogg = container format that wraps and delivers Vorbis, Theora and several other types of media.

So, the video tag is supposed to be the promised land of video on the web (just like SVG is supposed to be the open answer to Flash). I’m looking at this from a purely pragmatic perspective. Here are 2 big questions about media meant for delivery via the media tag:

  1. How do people create the media?
  2. How do people consume the media?

I want to ponder these questions. Continue reading