DVD for Linux: An Interview with LSDVD Developers
October 19, 1999
Linux falls woefully short of other operating systems in its support for playing DVDs. We interviewed Paul Volcko and Gad Berger, members of the LSDVD group, who with Dave Klint are hard at work developing application support for DVD decoding.
Moviebone: What is the scope of the LSDVD project?
Paul Volcko: Well, there will likely be two phases to the first version of LSDVD. The first phase will be released (open sourced most likely) once a DVD decoder card is supported under Linux. This will more than likely just be a GUI that utilizes whatever API(s) the driver/card vendor supplies. The second phase will use that same GUI (perhaps with a few tweaks) but will weave in full software decoding support (MPEG-2, PCM, AC-3, CSS) as well as a custom DVD Navigation API. We have intentions of open sourcing as much as possible of both the first and second phase (once we have initial development done) but will more than likely be bound by some licensing restrictions, since we have every intention of developing and distributing LSDVD as a fully compliant and licensed DVD player application.
Moviebone: What is the relationship between LIVID and LSDVD?
Paul Volcko: LIVID is a project started by Matthew Pavlovich that seemed to have the intent of getting the Matrox G200 DVD add-on board supported on Linux. Since it was started, however, the goals of the project have expanded to include a number of sub-projects, such as CSS decryption, IFO parsing, etc. LSDVD, on the other hand, is and always has been aiming to produce a DVD player application and perhaps a codec or two needed for software playback. The two projects aren't directly affiliated, although our team members do participate in the LIVID mailing list and will continue to.
Moviebone: As we understand it, the first problem--unlocking the drive--has been solved. Was this done by watching the interactions on a Windows box, or through reference to specifications?
Paul Volcko: The CSS authentication code was reached through a reverse-engineering/disassembly of a windows DVD player application, apparently. The original code was actually what looked like code ripped verbatim from a disassembly. It has since been manually converted to C. There doesn't appear to have been any use of CSS specifications documentation for it. The "author" of the original code remains anonymous, as far as I know.
Moviebone: How stable is the UDF filesystem implementation?
Paul Volcko: Ben Fennema and a group of developers working with him have been working on UDF for a long time now. They have made steady progress and I believe that it is actually making it into the 2.4.x kernel release slated to happen in mid to late November, last I heard. Reading functionality has been fairly stable for a some time (perhaps the last few months), the writing/deleting functionality is still being worked on, however. For the purposes of DVD playback UDF support is in place. Check out www.csc.calpoly.edu/~bfennema/udf.html for the latest source.
Moviebone: What is the status of open-source software-based MPEG-2 decoders? Is there any one in particular that would make the best starting point for further work? You mentioned on the list that the ones you know of will require some heavy optimization to play in realtime. Is MPEG-2 decoding part of LSDVD?
Paul Volcko: The most likely candidate for a good mpeg-2 codec starting point is at home.germany.net/100/5083/index.htm, which was produced by Joachim Koenig and friends. I believe there is another mpeg-2 player available at mpeg.openprojects.net. I'm not sure what kind of development efforts have been going into that player though. Either one though is still in development and will require some heavy assembler optimization to become usable on a software DVD playback system. The progress is good though and there are no real legal barriers to making an open source mpeg-2 codec. When it is used within a player application, however, that legality line becomes fuzzy.
Gad Berger: On another note, MpegTV [ http://www.mpegtv.com/ ] is a company that currently sells an mpeg-2 decoder for Linux, along with versions for many other platforms. This doesn't fit into the scope of open projects, but it works well for a reference. MpegTV offers a free trial player with the only limitation being that sound playback is limited.
Moviebone: MMX has done a lot for multimedia performance under Windows. I've heard that MMX support is going into the GCC backend. Does this, or handcoded MMX, offer any value to LSDVD?Paul Volcko: Once we get into phase two of development, MMX and the extra operations provided by the PIII and K7/Athlon chips (SIMD and 3DNow!) will be very helpful. Any MPEG-2 or AC-3 related code that we create for LSDVD will likely utilize at least MMX extension operations. I don't think that getting a usable codec would really be possible without them. While we will likely use hand coded routines as opposed to relying on GCC integrated features, they will undoubtedly be of value to us.
Moviebone: Could you give a summary of what is known about the DVD's encryption process? Is there really one key per hardware manufacturer? How many bits per key? Is a brute-force attack on a single key likely to bear fruit?
Paul Volcko: hehe... I don't know a lot about the exact processes involved in CSS decryption. The few things I do know (I think :) are that there are a few different types of keys involved in CSS authentication and decryption. A disc key, which is actually a concatenation of 400+ 40 bit "player" keys, ending up as a 2048 byte key. Title keys, which are 40 bits in length. And a bus/obfuscation key, which is generated by the CSS processes for data transfer over computer busses. As to brute forcing a single key, I've seen estimates that all 400+ "player" keys could be brute forced in 20-50 hours on a dual PPro machine. For information of the processes involved in decryption and the latest that the Linux community knows, check out the LIVID mailing list archives. There is something that is important to consider in all of this CSS decryption cracking stuff, though. What will be the movie industry's reaction to widespread dissemination of the CSS methods? This is an important point and forces the Linux DVD development community (as well as other OS developers) to exercise some caution and be responsible in what they do.
Moviebone: A lot of DVD sound and video playback technology is encumbered by patents or held as trade secrets. It would be nice to see a gzip/bzip-like analog to Dolby 5.1 sound. Is there any chance of non-proprietary formats arising?
Paul Volcko: Actually, while the Dolby 5.1 (AC-3) format is patented by Dolby Labs, it is actually a publicly available spec (ATSC A/52). In fact, this spec is what allowed Aaron Holtzman to write the now open source AC-3 codec that's publicly available. Because there are patents there is some question as to the legality of the non-licensed distribution of the AC3DEC package, but the point is that it is actually an "open" specification by many poeple's standards. Because of this, coupled with the difficulty level involved in writing a whole new AC-3-like audio encoding mechanism, and an even higher level of difficulty in getting industry wide support, I don't see a replacement format for AC-3 (or any of the other DVD related data formats) coming into use. From a purely technical standpoint the chances are good that a truly and fully open standard could find its way into use, but because of the element of a closed standards body (DVD-Forum) and other business elements, it isn't likely.
Moviebone: There seems to be a great deal of confusion among list members about patent, copyright, and trade secret protection in general, and how that applies to DVD in particular. We're not going to make intellectual property lawyers out of anyone, but is there anywhere developers can go to sort out these issues as they pertain to DVD?
Paul Volcko: Thats a really great question. I wish I had a really good answer. Unfortunately, short of consulting a patent lawyer or a lawyer coming forward and offering some pro-bono work, there isn't any really definitive source of information on these issues. There are a few people on the LIVID mailing list that seem to have some decent information on the subject of intellectual property, patents, copyrights, and reverse engineering, but all of them are not lawyers and can only offer their non-professional opinions. Of course, instead of fighting the system, one can play along with it and get the licensing and whatnot needed (assuming the money is available to them to get the licensing) and then try to make the best out of it. For instance, by providing a player at a relatively low cost and open sourcing as much as possible. This last option is the one LSDVD has been pursuing.
Moviebone: How is the project doing on clue and bodies? Are you still looking for help? If so, in what areas?
Gad Berger: Currently, the team consists of two computer engineers, Gad Berger, Paul Volcko, and one software engineer, Dave Klint. Our team is capable of completing the tasks set forth for the first release, and all subsequent releases. Later down the road, it may be worthwhile to find one or two more members to decrease the work load. Only time and the direction of the project will dictate what qualifications will characterize a new addition to the team.
Moviebone: Are there sites you would recommend for basic information about DVD technology, file formats, and the like?Paul Volcko: besides those I've already mentioned:
Gad Berger: Here's some that I bookmarked:
Moviebone: What are your day jobs?
Paul Volcko: I'm a full-time student at RIT in the Computer Engineering program (4th year). Currently I'm on co-op at a place that has nothing to do with computer engineering (at least they don't let me do anything having to do with it, thats reserved for the full time engineering staff). :)
Gad Berger: I'm a fourth year student at RIT, also in the Computer Engineering program, and an active member of the Computer Science House. While working on the project, I'm taking a full course load, and spending a lot of time not sleeping.
Moviebone: How long have you been developing for Linux?
Paul Volcko: I've been programming in C and C++ for a while now, probably 8 or more years. I've been using Linux on and off for the last 5 years or so. This is my first major Linux oriented software development project though, beyond tweaking a NIC driver or two. I've programmed for Solaris before, however, and have a history of some mid-sized personal and employer projects on DOS and Windows 95/98/NT platforms.
Gad Berger: I never really programmed anything more than a batch file in DOS (if you want to consider that programming), before I arrived in college. Everything I learned about programming happened during college. For about 3 1/2 years now I've complained that my uptime was considerably decreased because the Engineering department wants us to use a Windows- based circuit designer, and there is no DVD support for Linux. Our project hopes to fix one of my uptime problems, but I'll leave it to the GEDA group to help me with the other :)
Moviebone: Any guess on how long until a casual user can watch a DVD on his Linux box using a hardware decoder? A software decoder?
Paul Volcko: Sigma Designs (www.sigmadesigns.com and Convergence (www.convergence.de or www.linuxtv.org) are both coming out with a DVD decoder card that has Linux support slated. Both cards are supposed to be on the market fairly soon, I think. So most likely before Christmas on the hardware playback (just in time for Y2K to ruin life as we know it :) Software playback is probably another 3-6 months out, at least for a true DVD player application. I expect that inside of 4 months one will be able to do VOB file dumps to MPEG-2 and AC-3 codecs that are starting to see enough optimization to produce some non-scaled almost-full frame rate playback. A true DVD player application that ties in software decoding and full DVD menuing and automated playback control, etc is probably more in the 6 month time frame.
Moviebone: Thank you both very much for your time, and best of luck with the project!