New ioctl to support Enhanced CD (or Extra CD)
Fabian Keil
freebsd-listen at fabiankeil.de
Sat Apr 11 04:56:43 PDT 2009
Jean-Sébastien Pédron <dumbbell at FreeBSD.org> wrote:
> Enhanced CD (or Extra CA) is an Audio CD with an additionnal data track
> at the end. Audio tracks belong to the first session while the data
> track belongs to the second session. Therefore the last audio track ends
> way before the data track start.
>
> The first consequence is that the duration of the last audio track isn't
> reported correctly. Here is the output of cdcontrol(1) with such a CD[1]:
> $ cdcontrol info
> ...
> 12 46:03.67 9:54.43 207142 44593 audio
> 13 55:58.35 6:38.51 251735 29901 data
>
> The expected output is:
> $ cdcontrol info
> ...
> 12 46:03.67 7:22.43 207142 33193 audio
> 13 55:58.35 6:38.51 251735 29901 data
>
> A more "audible" consequence is that cdparanoia(1) copies 9'54" of data
> instead of 7'22". The end of the ripped file is full of garbage.
>
> I made a patch (attached) that adds a new ioctl to query the start
> address of the last session. This new ioctl is named
> CDIOREADLASTSESSIONADDR. The patch also includes changes to cdcontrol(1).
>
> I added a new member at the end of struct acd_softc to store the last
> session address. I don't know if this causes ABI breakage.
>
> Linux' corresponding ioctl is CDROMMULTISESSION. Beside this address, it
> returns a flag named "xa_flag". Currently, I don't understand what it is
> but it may be useful to add it to our ioctl too if someone knows its
> purpose.
>
> Before I spend some time to teach cdparanoia(1) about this new ioctl,
> I'd like some feedback on this patch, especially the name and the struct
> ioc_read_last_session_addr. I would appreciate some test reports too! :)
Does cdda2wav fail to rip the disc, too?
I always rip CDs with cdda2wav and don't remember ever having
problems with Audio CDs with additional data tracks on them.
Here's an example:
fk at TP51 /tank/iriver-spiegel/vorbis $cdrecord dev=1,0,0 -toc
Cdrecord-ProDVD-ProBD-Clone 2.01.01a58 (i386-unknown-freebsd8.0) Copyright (C) 1995-2009 Jörg Schilling
scsidev: '1,0,0'
scsibus: 1 target: 0 lun: 0
Using libscg version 'schily-0.9'.
Device type : Removable CD-ROM
Version : 0
Response Format: 2
Capabilities :
Vendor_info : 'HL-DT-ST'
Identifikation : 'RW/DVD GCC-4241N'
Revision : '1.04'
Device seems to be: Generic mmc2 DVD-ROM.
Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).
Driver flags : MMC-3 SWABAUDIO BURNFREE
Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R
cdrecord: Warning: The DMA speed test has been skipped.
first: 1 last 16
track: 1 lba: 0 ( 0) 00:02:00 adr: 1 control: 0 mode: -1
track: 2 lba: 18082 ( 72328) 04:03:07 adr: 1 control: 0 mode: -1
track: 3 lba: 31630 ( 126520) 07:03:55 adr: 1 control: 0 mode: -1
track: 4 lba: 46795 ( 187180) 10:25:70 adr: 1 control: 0 mode: -1
track: 5 lba: 63665 ( 254660) 14:10:65 adr: 1 control: 0 mode: -1
track: 6 lba: 80502 ( 322008) 17:55:27 adr: 1 control: 0 mode: -1
track: 7 lba: 86587 ( 346348) 19:16:37 adr: 1 control: 0 mode: -1
track: 8 lba: 109885 ( 439540) 24:27:10 adr: 1 control: 0 mode: -1
track: 9 lba: 119572 ( 478288) 26:36:22 adr: 1 control: 0 mode: -1
track: 10 lba: 130400 ( 521600) 29:00:50 adr: 1 control: 0 mode: -1
track: 11 lba: 147227 ( 588908) 32:45:02 adr: 1 control: 0 mode: -1
track: 12 lba: 165110 ( 660440) 36:43:35 adr: 1 control: 0 mode: -1
track: 13 lba: 175982 ( 703928) 39:08:32 adr: 1 control: 0 mode: -1
track: 14 lba: 202420 ( 809680) 45:00:70 adr: 1 control: 0 mode: -1
track: 15 lba: 228530 ( 914120) 50:49:05 adr: 1 control: 4 mode: 2
track: 16 lba: 255626 ( 1022504) 56:50:26 adr: 1 control: 4 mode: 2
track:lout lba: 316474 ( 1265896) 70:21:49 adr: 1 control: 4 mode: -1
cdcontrol reports an incorrect duration for track 14:
fk at TP51 /tank/iriver-spiegel/vorbis $cdcontrol info
Starting track = 1, ending track = 16, TOC size = 138 bytes
track start duration block length type
-------------------------------------------------
1 0:02.00 4:01.07 0 18082 audio
2 4:03.07 3:00.48 18082 13548 audio
3 7:03.55 3:22.15 31630 15165 audio
4 10:25.70 3:44.70 46795 16870 audio
5 14:10.65 3:44.37 63665 16837 audio
6 17:55.27 1:21.10 80502 6085 audio
7 19:16.37 5:10.48 86587 23298 audio
8 24:27.10 2:09.12 109885 9687 audio
9 26:36.22 2:24.28 119572 10828 audio
10 29:00.50 3:44.27 130400 16827 audio
11 32:45.02 3:58.33 147227 17883 audio
12 36:43.35 2:24.72 165110 10872 audio
13 39:08.32 5:52.38 175982 26438 audio
14 45:00.70 5:48.10 202420 26110 audio
15 50:49.05 6:01.21 228530 27096 data
16 56:50.26 13:31.23 255626 60848 data
170 70:21.49 - 316474 - -
But cdda2wav gets it right and rips the audio tracks correctly:
fk at TP51 /tank/iriver-spiegel/vorbis $cdda2wav -B dev=1,0,0 -paranoia
Type: ROM, Vendor 'HL-DT-ST' Model 'RW/DVD GCC-4241N' Revision '1.04' MMC+CDDA
307200 bytes buffer memory requested, transfer size 65536 bytes, 4 buffers, 27 sectors
#Cdda2wav version 2.01.01a58_freebsd_8.0_i386_i386, real time sched., soundcard, libparanoia support
AUDIOtrack pre-emphasis copy-permitted tracktype channels
1-14 no no audio 2
DATAtrack recorded copy-permitted tracktype
15-16 uninterrupted no data
Table of Contents: total tracks:16, (total time 70:19.49)
1.( 4:01.07), 2.( 3:00.48), 3.( 3:22.15), 4.( 3:44.70), 5.( 3:44.37),
6.( 1:21.10), 7.( 5:10.48), 8.( 2:09.12), 9.( 2:24.28), 10.( 3:44.27),
11.( 3:58.33), 12.( 2:24.72), 13.( 5:52.38), 14.| 3:16.10|, 15.[ 6:01.21],
16.[19:32.44]
Table of Contents: starting sectors
1.( 0), 2.( 18082), 3.( 31630), 4.( 46795), 5.( 63665),
6.( 80502), 7.( 86587), 8.( 109885), 9.( 119572), 10.( 130400),
11.( 147227), 12.( 165110), 13.( 175982), 14.( 202420), 15.( 228530),
16.( 255626), lead-out( 316474)
CDINDEX discid: kbNkxvXP4ppH.K8LpGB5MxaqEp0-
CDDB discid: 0xc9107b10
CD-Text: detected
CD-Extra: not detected
Album title: 'FASHION NUGGET' [from CAKE]
Track 1: 'FRANK SINATRA'
[...]
Track 14: 'SAD SONGS AND WALTZES'
samplefile size will be 510689804 bytes.
recording 2895.0666 seconds stereo with 16 bits @ 44100.0 Hz ->'audio'...
using lib paranoia for reading.
cdda2wav: Operation not permitted. cannot set posix realtime scheduling policy
percent_done:
100% track 1 'FRANK SINATRA' recorded successfully
100% 0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift
100% 241 overlap(0.5 .. 0.5)
[...]
100% track 14 'SAD SONGS AND WALTZES' recorded successfully
100% 0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift
100% 200 overlap(0.5 .. 0.5)
I never understood why people are still using cdparanoia ...
Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20090411/544685d0/signature.pgp
More information about the freebsd-current
mailing list