From owner-FreeBSD-users-jp@jp.FreeBSD.org Wed Jan  9 21:36:20 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g09CaKv75045;
	Wed, 9 Jan 2002 21:36:20 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from pop03.dreamnet.ne.jp (smtp3.dreamnet.ne.jp [202.217.109.103])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g09CaKm75040
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Wed, 9 Jan 2002 21:36:20 +0900 (JST)
	(envelope-from chi@bd.mbn.or.jp)
Received: from chino.localhost ([210.144.226.47]) by pop03.dreamnet.ne.jp
          with ESMTP
          id <20020109123617.QIFT1062.pop03.dreamnet.ne.jp@chino.localhost>
          for <FreeBSD-users-jp@jp.FreeBSD.org>;
          Wed, 9 Jan 2002 21:36:17 +0900
Posted-Date: Wed, 09 Jan 2002 21:33:33 JST
To: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: Your message of "Wed, 26 Dec 2001 03:01:53 +0900 (JST)".
	<20011226.030153.07649338.nishinao@m3.kcn.ne.jp>
From: chi@bd.mbn.or.jp (Chiharu Shibata)
X-Mailer: mnews [version 1.22] 1999-12/19(Sun)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-=-mnews-multipart-=-"
Message-Id: <20020109123617.QIFT1062.pop03.dreamnet.ne.jp@chino.localhost>
Date: Wed, 9 Jan 2002 21:36:19 +0900
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+011218
X-Sequence: FreeBSD-users-jp 66369
Subject: [FreeBSD-users-jp 66369] Re: CD-Extra
	=?ISO-2022-JP?B?GyRCJE4bKEI=?= audio track
	=?ISO-2022-JP?B?GyRCNVs9UCQ3GyhC?= 
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: chi@bd.mbn.or.jp


---=-mnews-multipart-=-
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

$B$3$s$K$A$O!"<FED$G$9!#$A$g$C$H4V$,6u$-$^$7$?$,!"(B
Wed, 26 Dec 2001 03:01:53 JST$B$K(B
nishinao@m3.kcn.ne.jp$B$5$s$O=q$-$^$7$?!#(B

>T10 $B$N(B Web (http://www.t10.org/) $B$+$i(B MMC2 $B$N(B draft(PDF file) $B$,<h$l$k$N$G(B
>$B%3%^%s%I$N@53N$J$3$H$O$=$A$i$r;2>H$7$F$_$F2<$5$$!#(B
>
>ATAPI_READ_TOC $B$G$O(B ccb[2] $B$K(B format $B$r;XDj$9$k$3$H$G(B TOC $B0J30$K$b(B
>Full TOC $B$d(B CD-TEXT $BEy$bF@$k$3$H$,$G$-$^$9!#(B
-snip-
>format 2(Full TOC) $B$r;H$&$H3F%;%C%7%g%s$N(B Lead-out $B$rF@$k$3$H$,$G$-$k$N$G(B
>$B$3$N7d4V$r=|30$G$-$^$9!#(B

$B65$($FD:$$$?>pJs$r85$K(BFull TOC$B$rF@$k$3$H$K@.8y$7$^$7$?!#(B
$B$?$@$7!"<j85$N(B<CD-ROM CDU76E-NE>$B$O(Bformat$B%Q%i%a!<%?$N0LCV$,(BMMC2$B$N(B
ccb[2]bit2-0$B$G$O$J$/$F!"(Bccb[9]bit7-6$B$K$"$j$^$7$?!#(B
$B$=$N8e!"$$$m$$$m;qNA$r5y$C$F$$$k$H!"$=$l0J30$K(Bccb[9]bit7-5$B$H=q$+$l$?(B
$B$b$N$b$"$j!"(BFull TOC$B<hF@$N6qBNE*$JJ}K!$O%I%i%$%V$K$h$C$F%P%i%P%i$N$h(B
$B$&$G$9!#(B
$B!t$b$7$+$7$?$i8E$$%I%i%$%V$@$H!VL5$$!W(B=TOC$B$7$+<h$l$J$$$b$N$b$"$k!)(B

$B$^$?!"$;$C$+$/F@$?(BFull TOC$B$N>pJs$r3hMQ$9$k$K$O!"3F%H%i%C%/$N3+;O0LCV(B
$B$7$+3JG<$G$-$J$$(Bstruct cd_toc_entry$B9=B$BN$r8+D>$9I,MW$,$"$k$H;W$o$l(B
$B$^$9$,!"$3$N9=B$BN$O(BREAD TOC$B%3%^%s%I$N1~Ez%a%C%;!<%8$N9=B$$=$N$b$N$G(B
$B$"$k$H$$$&A0Ds$G%3!<%I$,=PMh$F$$$k$N$G!"$A$g$C$H9M$($kI,MW$,$"$j$=$&(B
$B$G$9!#(B

$B$H$$$&$o$1$G!"(BFull TOC$B$rFI$s$GI=<($9$k$@$1$7$+$G$-$J$$(B($B$=$l$b(BATAPI$B$N(B
$B$_$G!"$J$*$+$D%I%i%$%V$,8B$i$l$k(B)$B%Q%C%A$G$9$,!"2?$+$N;29M$K$J$l$P$H$$(B
$B$&$3$H$GE:IU$7$F$*$-$^$9!#(B
$BBh(B1$B%;%C%7%g%s$N(BLead-out(= CD-Extra$B$N(Baudio$BItJ,$N=*N;0LCV(B)$B$r(BMSF$B$H(BLBA$B$G(B
$BI=<($7$^$9$N$G!"Nc$($P(B
$B!&I=<($5$l$?(BLBA$B$,(B210000
$B!&(B(audio$B$N(B)$B:G=*%H%i%C%/$N3+;O(BLBA$B$,(B180000
$B$@$H$7$?$i!"(B
%dd if=/dev/acd0t## of=track##.raw bs=2352 count=30000
                                                ^^^^^^^ = 210000 - 180000
$B$N$h$&$K(Bcount$B%Q%i%a!<%?$rM?$($k$3$H$G!"(BCD-Extra$B$N:G=*%H%i%C%/$G$bL52;(B
$BIt$J$7$G%-%C%A%j5[$$=P$;$k$+$H;W$o$l$^$9!#(B
-- 
$B<FED(B $B@i=U(B($B!i(B) chi@bd.mbn.or.jp <http://plaza17.mbn.or.jp/~chi/>
---=-mnews-multipart-=-
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Description: atapi-fulltoc.diff
Content-Disposition: attachment; filename="atapi-fulltoc.diff"

--- atapi-cd.c	2002/01/01 05:02:26	1.2
+++ atapi-cd.c	2002/01/09 11:03:50
@@ -1273,6 +1273,69 @@
 	    cdp->toc.hdr.ending_track - cdp->toc.hdr.starting_track + 1);
     }
 #endif
+
+#if 1
+  {
+    static struct fulltoc {
+	struct ioc_toc_header	hdr;
+	union cd_fulltoc_entry {
+#if 0
+	    struct {
+		u_char	session_number;
+		u_int	control:4;
+		u_int	addr_type:4;
+		u_char	tno;
+		u_char	point;
+		u_char	min;
+		u_char	sec;
+		u_char	frame;
+		u_char	zero;
+		u_char	pmin;
+		u_char	psec;
+		u_char	pframe;
+	    } sess;
+#endif
+	    u_char	desc[11];
+	} tab[MAXTRK + 3];
+    } fulltoc;
+    union cd_fulltoc_entry *p, *q;
+    int i;
+
+    bzero(&fulltoc, sizeof(fulltoc));
+    len = sizeof(fulltoc);
+    ccb[0] = ATAPI_READ_TOC;
+    ccb[1] = 1<<1;	/* MSF */
+    ccb[2] = 2;		/* Format(for MMC-2 drive) */
+    ccb[6] = 1;		/* First Session No */
+    ccb[7] = len>>8;
+    ccb[8] = len;
+    ccb[9] = 2<<6;	/* Format(for SONY drive) */
+    if (atapi_queue_cmd(cdp->atp, ccb, (caddr_t)&fulltoc, len,
+			ATPR_F_READ | ATPR_F_QUIET, 30, NULL, NULL)) {
+	return;
+    }
+
+    printf("last session=%d\n", fulltoc.hdr.ending_track);
+    p = fulltoc.tab; q = NULL;
+    for (i = 0; i < ntohs(fulltoc.hdr.len) - 2; i += 11) {
+#ifdef ACD_DEBUG
+	printf("%11D\n", (u_char *)p, " ");
+#endif
+	if (p->desc[0] == 1		/* session number */
+	&&  p->desc[3] == 0xa2) {	/* point */
+	    q = p;
+	}
+	p++;
+    }
+
+    if (q != NULL) {
+	printf("total time of first session=%02x:%02x.%02x(lba%u)\n",
+		q->desc[8], q->desc[9], q->desc[10],
+		msf2lba(bcd2bin(q->desc[8]), bcd2bin(q->desc[9]), bcd2bin(q->desc[10])));
+    }
+  }
+#endif
+
     return;
 }
 

---=-mnews-multipart-=---

