libcdio-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libcdio-devel] Google 2006 summer of code for libcdio?


From: R. Bernstein
Subject: [Libcdio-devel] Google 2006 summer of code for libcdio?
Date: Sat, 15 Apr 2006 05:36:44 -0400

I read in that the 2006 google Summer of Code is in progress.
See http://code.google.com/soc/mentorfaq.html#1

Using the existing TODO from libcdio, I've drafted a number of
possible projects. In some cases where the todo items were suggested
or motivated by others, I've listed those names as possible "mentors".

Right now libcdio doesn't have a "mentoring organization", but I will
propos FSF as the mentoring organization.

Those of you with CVS commit access, feel free to modify or amend as
needed. Below is my initial list. However you might want to check
CVS doc/2006-summer-of-code.txt for updates. (CVSWeb link is
http://cvs.savannah.gnu.org/viewcvs/libcdio/libcdio/doc/2006-summer-of-code.txt)

 - - - 
1. Add, finish or improve an OO API.

   Some work has been done to extend the API to Python, and Perl (via
   SWIG), Ruby and C++. With the exception of Ruby these are OO
   interfaces as well. However most languages do not cover the full
   language. In particular handling MMC (Multi-media) commands is
   missing and a CD-Paranoia interface (OO or not) is missing. Pick
   one of these existing API's or extend to a new API (e.g. Java),
   preferably an OO one. All of the OO API's are fairly new, so if you
   feel you want to improve on the API, that's okay too.

2. Add, finish a CD-image format parser. Use it say to write a
   CD-image format converter.

   The existing CD-image format parsers are ad hoc. Several image
   (cdrdao or bin/cue) have a text file and currently libcdio uses C
   strstr and strtok to parse this. In some cases image reading is
   incomplete: 
      * cdrdao can only handle reading from one file
      * CD-Text doesn't allow specification of the encoding
      * handling "silence" in CUE/BIN

   Some work has been done to create Bison grammars for cdrdao and
   cue/bin image formats; some basic tests of these parser has been
   done, but no semantic actions have been added to integrate this
   into the library. Add the semantic actions. Feel free to add other
   (preferably non-proprietary) CD-Image formats. Use the parsers to
   write a translator between the image formats. Standard good
   practice is to translate into an intermediate language for the N
   "languages" and then the generate output language from that. This
   requires 2N for the N*N combinations (rather than N*N individual
   translators).

3. Finish UDF and/or ISO 9660 handling. 
   
   UDF (Universal Data File) is used for example in DVD discs and
   Data. It will be used by in the new Blue-Ray technology. Think of
   it as a modernized Unicode version of the old ISO 9660 standard).

   UDF support is probably the most often requested missing feature of
   libcdio.  Some work has been done to define the UDF structures and
   there is some UDF handling in the current version (0.77) and even
   more in will appear in the next 0.78. The full UDF specification is
   much more than currently will exist even in 0.78. Fill out UDF
   support. 

4. write a "tar" command for ISO 9660 and/or UDF images.

   There is an ISO 9660 library. An often requested feature is to add
   something like a "tar" command for ISO 9660 images or UDF images.
   For ISO 9660, currently there are commands to list the contents of
   an ISO 9660 image file and extract a single file. In version the
   next version of libcdio 0.78, there will probably be corresponding
   commands for UDF. Take GNU tar and extend it to ISO 9660 or UDF
   images.

5. Add EAC (exact audio copy) features, possibly on top of
   cd-paranoia.  Fix possible cd-paranoia bugs.
   
   EAC (http://www.exactaudiocopy.de/) is a freeware program for
   Microsoft Windows and is used to copy audio data from an audio CD
   to a stereo WAV file. It is similar to cdparanoia
   (http://www.xiph.org/paranoia/) and libcdio has a multi-OS port of
   this. The concensus seems to be that EAC does a better job.

   cdparanoia can probably be extended to do better, more like EAC.
   There may be bugs in cdparanoia especially with silence which is
   confused with the silence that appears in a track gap.  More or
   better regression tests should be done for medium and large
   jittering.
   
   [Peter Creath may want to mentor this.]

6. Modify libcdio to handle CD-ROM drive customization. 

   Some programs which work with CD-ROMs allow for a database of
   CD-ROM drives capabilities. Most notably xmcd
   (http://www.amb.org/xmcd/). cdparanoia has such a capability
   although it is not user-configurable like xmcd. Add a CD-ROM
   capability database with user customization and modify libcdio to
   use that for various operations. CD-ROM capabilities might include
   how to get drive capabilities (e.g. MMC MODE-SENSE page 2A command
   in either the 6 or 10 byte version or via MMC GET-CONFIGURATION command.)

   For other capibilities listed those listed in xmcd.

7. Wide character support for CD-Text.
   [Burkhard Plaum has might want to mentor this. If so he should
   write a more detailed description than given above]

8. libcdio API overhaul. 

   The current C API is ugly and it has become apparent if you compare
   some of the OO interfaces to C API. Some deliberately missing routines

   * read_mode1, read_mode2, and read_audio routines which are 
     combined into a single read audio routine. 
   * cdio_have_xxx (where xxx is aix, bsdi, etc) routines which are
     subsumed by a cdio_have_driver suffices. 

   The "mode_access" parameter on the open_cd is largely not used and
   would be better done via CD-ROM drive customization. (See 6). There
   might be a CD-ROM "exclusive access" mode versus shared read as
   currently exists.
   
   The API is also non-reentrant; for example particular there is a
   static loglevel variable. However tricky here either maintaining
   backward compatibility or coming up with a workable proposal for
   having the multiple APIs.

   [Herbert Valerio Riedel or Nicolas Boullis may want to mentor
   this. If so they might want to elaborate or expand on the above.]

9. Revise to use glib rather than home-grown routines. 
   
   libcdio has it's own list-processing, byte swapping routines. In
   particular the routines in bytesex.h and ds.h. Replace these with
   the corresponding glib routines.

$Id: 2006-summer-of-code.txt,v 1.1 2006/04/15 09:19:03 rocky Exp $




reply via email to

[Prev in Thread] Current Thread [Next in Thread]