Archive for June, 2006

Week In Review

Where we’re at (major end-user visible items):

  • Sound sounds great thanks to a new, 100% ALSA framework; look at that beautiful A/V sync!
  • Thanks to all the responses on Penguin Eyes; after trying 3 different webcams (it’s not like we don’t have loads laying around the office) I found one that works with the spca5xx driver (also, thanks to the Gentoo Portage system for making driver installation simple); one of the other cameras made my Linux machine crash; anyway, the webcam support works again in Linux Flash Player via Video4Linux (API v1)
  • ActionScript 3.0 engine runs

Quick question: Does anyone know why the bcm5700 network driver, GPL-licensed and available for download from HP, is not included in the Linux kernel? Long story but, wow, it would sure help our development process if it was.

I would be remiss if I did not mention that this has been a big week in Flash-land. Flash Player 9 is officially released for Windows and MacOS X/PPC. Further, MacOS X/Intel Flash Player was released as beta this week.

Flash Player 9 for Linux is still… in process.

Resource(s)

Some commenters have expressed dismay that Adobe has apparently allocated so few resources to the Linux Flash Player effort, namely, just me. I just wanted to assure you all that there are more people officially allocated to the Linux effort in various capacities. I was just chosen to present this blog since I have the most experience, ah, facilitating communication with Linux end users.

Further, it’s interesting to note that when I started at Adobe, I found out that there is a shadow cabal of engineers that very much want to see the current Flash Player run on Linux, and would even try their hand with the current codebase from time to time. But there are only so many hacking hours in the day which is why more dedicated resources were enlisted to devote to the Linux task.

I am presently unaware of any shadow cabal of FreeBSD enthusiasts in the Flash organization.

Penguin Eyes

So, how many of you use webcams under Linux? What webcam makes and models do you use? How easy is it to set up a webcam and on which distributions? How many different Linux APIs, frameworks, or outright hacks exist for reading data from a webcam?

Global Domination

Flash Player is an international affair. Thus, the Player would like to automatically detect which language it should use when presenting localized textual information. According to this page, one way to detect the user’s preferred language is to examine the LANG environment variable. That seems to have wide acceptance. However, I noticed that on my Gentoo system, that string is not set by default (in fact, none of the default environment variables indicate “en”).

This is why I wanted to solicit feedback: Is LANG the best method? Are there alternative methods I should use in conjunction with LANG?

Another issue: Input method editor (IME). What facilities are available, stable, and hopefully more or less standard for this?

Baseline

Tinic thought that some readers might find development process details to be interesting. With that, let me state enthusiastically that I (heart) Autotools!

The Autotools are a suite of utilities including automake, autoconf, and libtool that have become the de facto standard for facilitating the building and distribution of open source software. When you get a package, unpack it, type ‘./configure; make; make install’, you are seeing the Autotools’ work in action (usually; some projects fake it). When the Linux Flash Player team inherited the Flash Player 7 code base, the build system was comprised of a series of ad-hoc Makefiles. There was room for improvement but I didn’t want to autotool the build system at first. It seemed like overkill. Plus, when I think of Autotools, I usually think of a system that facilitates source code distribution. Not necessary since Adobe isn’t open sourcing the Player at this time.

However, after some research regarding how to do some things that I really, really wanted (like proper automated dependency generation), I realized that the Autotools take care of common build system headaches. Certainly, some contend that the Autotools constitute an even larger headache. Fortunately, between the Autobook, the official manuals, and thousands of existing projects already using the tools, comprehension is within reach.

So I autotool’d the Flash Player source to facilitate building on Linux. Then I got my wish of proper dependencies which means, for better or worse, the build system knows that most source files, one way or another, depend on that one particular header file that I just modified.

It’s important to acknowledge that the Autotools really, honestly do know how to just “Do The Right Thing”. After autotool’ing the project, a few strange build idiosyncrasies and minor bugs (and at least one major bug) disappeared, having apparently been artifacts of the legacy build system. Overall, we have much more confidence in the built binaries thanks to the Autotools.

Don’t be afraid of the Autotools.

See Vee

Some have wondered aloud in the comments section on this and other blogs, if this blog is a Machiavellian ploy to dupe Linux users into believing that there will be a Flash Player 9 for Linux. I certainly hope not as I would feel more foolish than anyone, given the amount of work I’ve been putting in so far to make Flash Player 9 work on Linux.

A few things you may care to know about me: I have been using Linux full time as my personal operating system since 1999. By 2000 I noticed that multimedia support was somewhat lacking. I did some multimedia homework and eventually started contributing to a few open source multimedia projects that you may have heard of, including xine, FFmpeg, and MPlayer (you can grep for my name in the source files).

Philosophically, I operate from the position that there is no technical reason that Linux can not have the same level of multimedia support as Windows or Mac OS.

In September, 2005, I happened upon Tinic’s blog post entitled “Porting the Flash Player to ‘alternative’ platforms” in which he mentioned in passing that Macromedia was looking for someone to port Flash Player to Linux. I applied for the job and now here I am.

Hear This

The Advanced Linux Sound Architecture (ALSA) is the standard choice for audio output under Linux these days. Thus, that is the audio API we will be coding to for Flash Player 9.

My question is: Is there a compelling reason to support Open Sound System (OSS) from here on out? There are other areas we’d like to work on and if we can avoid having to invest resources maintaining the legacy OSS module, that’s one less item on our list of things to validate.

Some have suggested that we use one of the multimedia framework solutions available for Linux. Recommended candidates include GStreamer and xine. I know xine quite intimately and I seriously don’t believe that this approach makes sense. GStreamer might be more plausible, based on my reading of their literature. However, this approach seems to add more layers than is really necessary. I know I tend towards oversimplification, but audio programming is generally a matter of opening and configuring the audio interface and then either writing a buffer of samples (audio playback) or reading a buffer of samples (audio recording). That’s not especially complicated.

New Thread

I noticed the comment section of the last thread was getting a bit long so I wanted to open a new thread to allow all interested parties to continue voicing their reasoned feedback.

As for the Linux Flash Player, all I have to say right now is that we are working diligently.