Proposed 2006 Summer of Code tasks
This commit is contained in:
120
doc/2006-summer-of-code.txt
Normal file
120
doc/2006-summer-of-code.txt
Normal file
@@ -0,0 +1,120 @@
|
||||
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 $
|
||||
Reference in New Issue
Block a user