Linux Multimedia Guide
Author: Jeff Tranter
Publisher: O'Reilly & Associates, Inc.
Price: $32.95 US
Reviewer: Michael J. Hammel
I picked up my copy of The Linux Multimedia Guide by Jeff Tranter back in December of last year, the same month it hit the shelves of my local computer book store. I wrote a fairly supportive review of the text in my “Graphics Muse” column in the Linux Gazette, right after having put to bed my multimedia chapter for the Unix Web Server Book. At the time I thought I understood multimedia fairly well, since the research for my book had been fairly thorough.
When Linux Journal contacted me about doing a review of this text, I jumped at the chance. I figured I could just spiff up my old review and pass it along. It took some time to get around to doing this “spiffing”, and in the intervening period, I realized that this wasn't fair. I needed to go back and re-evaluate the review and the text. Linux users deserve up-to-date information. Besides, I had learned quite a bit more about multimedia.
As it turns out, most of my initial inspection was right on the money. Jeff's book covers a wide range of material related to the creation and use of multimedia files with respect to the Linux operating system. The text is approximately 350 pages, including source code listings for a number of sample multimedia applications. As usual, O'Reilly provides copies of the source from their ftp site. Jeff's coverage of multimedia is thorough, although it lacks detail in a few areas and provides information on subjects that may not be necessary for most multimedia-application developers.
When I first discovered this book, I thought “Rats, Jeff beat me to it.” Much of what Jeff covers is listed in my own Linux Graphics mini-HOWTO (LGH); however, a number of items, such as audio, are not covered by the LGH. There is more detail about video formats and tools and detailed programming considerations for various hardware (CD-ROMs, joysticks and sound devices). All of these make the Linux Multimedia Guide a good addition to the O'Reilly family of Unix books. The text is decidedly aimed at developers and administrators. The actual use, from an end-user perspective, of the various applications is not covered in any serious detail by this text.
The Linux Multimedia Guide is divided into five sections:
Introduction to Multimedia
A Survey of Multimedia Applications
Multimedia Programmer's Guide
The first section introduces the reader to the various concepts involved with multimedia such as the CD-ROMs, image file formats and sound files. The chapters are generally brief, and the one on audio is quite informative. Jeff is the originator and maintainer of the Linux Sound HOWTO, and his experience shows in his coverage of audio issues. There is a discussion on audio file formats as well as a comparison of a few popular sound cards available for Linux.
Section two opens with a discussion on hardware requirements for doing multimedia on Linux systems. Most of this section centers on either the CD-ROM driver or the Linux sound driver, known at various times as Voxware, TASD and OSS Lite and now available commercially from 4Front Technologies (http://www.4front-tech.com/). There is also a short chapter on the joystick driver.
The third section is very similar to the LGH in that the chapters provide the program names and URLs associated with them (if any). The number of applications covered is less than in the LGH, but there are better descriptions of the applications in the book; plus Jeff covers games and audio applications that the LGH does not.
Chapter fourteen opens the fourth section, the “Multimedia Programmer's Guide”. This section is the longest in the book and covers all the devices discussed earlier. Other chapters in this section cover some of the available graphics and windowing toolkits available to multimedia developers. One chapter contains three sample applications.
I didn't say much about this section in my first review but I need to do so now. First, the chapter on programming sound devices is quite good and the sample programs easy to follow. If you're going to program sound for your applications, you definitely should read this chapter.
The chapters on programming the joystick and CD-ROM devices are out of date (the joystick chapter) or irrelevant (CD-ROM) for current multimedia applications. I say this because the future of multimedia on Linux is through X Windows, not SVGA. Joysticks and other pointing devices should be programmed through the X Input Extension (which XFree86 3.3 now supports and the commercial X Server vendors Metro-X and Xi Graphics are rumored to be adding soon) and not via direct management of the device. To be fair, Jeff's book did come out before this support was publicly released by XFree86, and it is only recently that developers have started to make wide use of this server extension.
A CD-ROM's association with multimedia applications is nothing more than another file system, accessed using the usual file system APIs. In general, multimedia-application developers do not need to know how to write drivers for the CD drives. Device driver information is not generally provided in texts on multimedia for other platforms (except for unusual devices). Again, to be fair, I'm not certain whether information on how to write drivers for new CD drives is provided in other texts. This chapter's appearance in the Linux Multimedia Guide is not a detriment to the text, but it is extraneous to multimedia-application developers.
Chapter 17's discussion on graphics and windowing toolkits provides some good reference material but not much detail. It would have been nice to see Jeff take a stance on which toolkits might be most beneficial for developers to start with or at least examine more closely. Also, Jeff missed any reference to OpenGL. Of all the toolkits he mentions, only Java is likely to be of greater interest than OpenGL to Linux multimedia developers. OpenGL and Java are widely accepted standards (real or de facto) whereas most of the other toolkits mentioned are, at best, simply multi-platform. OpenGL is available from both commercial X server vendors (Xi Graphics and Metro-X) using software acceleration only (with hardware acceleration planned) and is also available via Brian Paul's terrific Mesa/GL package.
In general, I find the Linux Multimedia Guide a good reference text with a moderate degree of developer tutorials. Unlike many of the books available for Linux, this text provides a detailed explanation of the various programming interfaces; it is a useful tool beyond the simple “what is this and where do I get it” that many of the HOWTOS provide. The main drawback that I see is that, like most other Linux texts, this text does not provide a user's perspective on any of the tools listed. If Linux is ever to go beyond a developers-only platform, there will need to be detailed user's guides for well-known applications. Still, Jeff does a good job covering the extent of a large topic. Although not likely to be of much interest to experienced developers, I have no problem recommending this book for the beginner or the intermediate user or developer.