What has changed since version 0.0:

Bugfix:
The first version (0.0) had a bug in function OpenCdRom:
the cdrom device has been opened with O_RDWR instead O_RDONLY.
Earlier kernels tolerated this.

Obsoleted patches:
The scsi_ioctl.c patch has now been included into the mainstream
kernel since 1.1.20.

The scsi.c patch has been obsoleted by 12-byte support in the
generic interface since 1.1.20.

Both have been excluded.

History and state:
The first version used the toshiba propietary sector size of
2368 bytes to read an cdda audio sector plus sub q channel
information with one scsi request (wow, that was fast).
These read requests were issued via the ioctl() interface
which allows arbitrary scsi commands.

Unfortunately this is not very much standard, so i changed
the sector size to very common 2352 bytes and read the sub
q channel information via an (extra) ioctl(). I experienced 
nonmonotonous position data when reading sectors contigouosly.
In order to reduce overhead i made sub q channel (position) 
requests happen only once a second instead of 75 times a second.

Further optimizing was motivated when trying to copy the sound
data to a sound card on the fly. At first unnecessary copying
had to be eliminated. Furthermore i tried to read more than one
sector per request. I got some severe scsi errors so i stopped
doing this soon (see file TODO).

This version tries to offer more interfaces to cdroms than
before. When Eberhard Moenkeberg added cdda support for his
sbpcd driver, the need for support of more than my toshiba
drive arose. I struggled some time with the question of 
adding kernel support for scsi drives concerning cdda or
keeping it outside in an application or lib. Since sampling is
considered as a seldom needed feature, i decided to put it into the
application.

This led to an interface modul which seperates the low level stuff
and keeps the main module small.
There is now support for the generic scsi interface (thanks 
to Drew and Eric), which can be used to pass scsi commands 
to cdrom drives also (although pressing ^c may hang the process).

I tried to make cdda2wav more friendly to support more drives, but
unfortunately i'm not able to test other drives myself (due to lack 
of them).

For nonscsi-drives there is the ioctl interface introduced by the 
sbpcd driver (called 'cooked ioctl' to discriminate from the scsi 
ioctl interface). The results when using this interface depend fully
on the implementation in the kernel. 
For sonys cdu31a cdda kernel support exists since 1.1.62 and is 
pretty noncritical.
For the sbpcd driver one tester reported bad sampling quality, but test 
conditions were unclear. Consider this as alpha at the moment...

Currently no other nonscsi drivers support cdda, but when they do,
they probably will use the same interface as sbpcd. So cdda2wav 
should handle them correctly.

For SCSI drives two further variants of cdda reading commands are 
known to me. One should work (but is untested) for NEC drives. The 
other one should work for Hitachi and Sony drives (Sony 8003 has 
been tested).
This is based on information from the german magazine c't and the 
cdrom-faq from the ftp server rtfm.mit.edu. Hopefully plextors 
quadruple speed drive will be compatible.

So more alpha testers for those SCSI drives are needed!


