Linux Multimedia Guide
Author: Jeff Tranter
Publisher: O'Reilly & Associates, Inc.
E-mail: nuts@ora.com
URL: http://www.ora.com/
Price: $32.95 US
ISBN: 1-56592-219-0
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
User's Guide
A Survey of Multimedia Applications
Multimedia Programmer's Guide
Appendices
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 second longest section, “A Survey of Multimedia Applications”, covers applications for the various forms of multimedia. There are chapters on sound and music applications, graphics and animation applications, hypermedia applications and games. When I first reviewed this text, I hadn't really considered games as real multimedia applications, mostly because I seldom play games on my computer. I now realize that was a mistake—one need only look at the big computer retail chains' shelves of MS and Mac games to realize this fact. Games implemented as network applications using Java, JavaScript and the new Tcl/Tk plug-in for Netscape are not covered, but general X Windows, SVGA and command-line style games are discussed briefly.
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.

Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
| Designing Electronics with Linux | May 22, 2013 |
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
- New Products
- Linux Systems Administrator
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Web & UI Developer (JavaScript & j Query)
- Designing Electronics with Linux
- Dynamic DNS—an Object Lesson in Problem Solving
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi

It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Featured Jobs
| Linux Systems Administrator | Houston and Austin, Texas | Host Gator |
| Senior Perl Developer | Austin, Texas | Host Gator |
| Technical Support Rep | Houston and Austin, Texas | Host Gator |
| UX Designer | Austin, Texas | Host Gator |
| Web & UI Developer (JavaScript & j Query) | Austin, Texas | Host Gator |
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?




5 hours 55 min ago
16 hours 35 min ago
22 hours 21 min ago
22 hours 39 min ago
1 day 32 min ago
1 day 2 hours ago
1 day 9 hours ago
1 day 9 hours ago
1 day 11 hours ago
1 day 17 hours ago