version 1.40, 2005/12/21 15:50:38 |
version 1.41, 2005/12/31 19:51:15 |
|
|
toc_buffer[n].addr.msf.second, |
toc_buffer[n].addr.msf.second, |
toc_buffer[n].addr.msf.frame) - blk; |
toc_buffer[n].addr.msf.frame) - blk; |
else |
else |
len = ntohl(toc_buffer[n].addr.lba) - blk; |
len = toc_buffer[n].addr.lba - blk; |
} |
} |
return play_blocks(blk, len); |
return play_blocks(blk, len); |
} |
} |
|
|
ts = toc_buffer[tr1].addr.msf.second; |
ts = toc_buffer[tr1].addr.msf.second; |
tf = toc_buffer[tr1].addr.msf.frame; |
tf = toc_buffer[tr1].addr.msf.frame; |
} else |
} else |
lba2msf(ntohl(toc_buffer[tr1].addr.lba), |
lba2msf(toc_buffer[tr1].addr.lba, &tm, &ts, &tf); |
&tm, &ts, &tf); |
|
if ((m1 > tm) |
if ((m1 > tm) |
|| ((m1 == tm) |
|| ((m1 == tm) |
&& ((s1 > ts) |
&& ((s1 > ts) |
|
|
s2 = toc_buffer[n].addr.msf.second; |
s2 = toc_buffer[n].addr.msf.second; |
f2 = toc_buffer[n].addr.msf.frame; |
f2 = toc_buffer[n].addr.msf.frame; |
} else { |
} else { |
lba2msf(ntohl(toc_buffer[n].addr.lba), |
lba2msf(toc_buffer[n].addr.lba, &tm, |
&tm, &ts, &tf); |
&ts, &tf); |
m2 = tm; |
m2 = tm; |
s2 = ts; |
s2 = ts; |
f2 = tf; |
f2 = tf; |
|
|
ts = toc_buffer[tr2].addr.msf.second; |
ts = toc_buffer[tr2].addr.msf.second; |
tf = toc_buffer[tr2].addr.msf.frame; |
tf = toc_buffer[tr2].addr.msf.frame; |
} else |
} else |
lba2msf(ntohl(toc_buffer[tr2].addr.lba), |
lba2msf(toc_buffer[tr2].addr.lba, &tm, &ts, |
&tm, &ts, &tf); |
&tf); |
f2 += tf; |
f2 += tf; |
if (f2 >= 75) { |
if (f2 >= 75) { |
s2 += f2 / 75; |
s2 += f2 / 75; |
|
|
ts = toc_buffer[n].addr.msf.second; |
ts = toc_buffer[n].addr.msf.second; |
tf = toc_buffer[n].addr.msf.frame; |
tf = toc_buffer[n].addr.msf.frame; |
} else |
} else |
lba2msf(ntohl(toc_buffer[n].addr.lba), |
lba2msf(toc_buffer[n].addr.lba, &tm, &ts, &tf); |
&tm, &ts, &tf); |
|
if ((tr2 < n) |
if ((tr2 < n) |
&& ((m2 > tm) |
&& ((m2 > tm) |
|| ((m2 == tm) |
|| ((m2 == tm) |
|
|
s2 = toc_buffer[n].addr.msf.second; |
s2 = toc_buffer[n].addr.msf.second; |
f2 = toc_buffer[n].addr.msf.frame; |
f2 = toc_buffer[n].addr.msf.frame; |
} else { |
} else { |
lba2msf(ntohl(toc_buffer[n].addr.lba), |
lba2msf(toc_buffer[n].addr.lba, &tm, &ts, &tf); |
&tm, &ts, &tf); |
|
m2 = tm; |
m2 = tm; |
s2 = ts; |
s2 = ts; |
f2 = tf; |
f2 = tf; |
|
|
if (msf) { |
if (msf) { |
return (e->addr.msf.minute * 60 + e->addr.msf.second); |
return (e->addr.msf.minute * 60 + e->addr.msf.second); |
} else { |
} else { |
block = ntohl(e->addr.lba); |
block = e->addr.lba; |
lba2msf(block, &m, &s, &f); |
lba2msf(block, &m, &s, &f); |
return (m*60+s); |
return (m*60+s); |
} |
} |
|
|
return e->addr.msf.frame + e->addr.msf.second * 75 + |
return e->addr.msf.frame + e->addr.msf.second * 75 + |
e->addr.msf.minute * 60 * 75; |
e->addr.msf.minute * 60 * 75; |
} else { |
} else { |
block = ntohl(e->addr.lba); |
block = e->addr.lba; |
lba2msf(block, &m, &s, &f); |
lba2msf(block, &m, &s, &f); |
return f + s * 75 + m * 60 * 75; |
return f + s * 75 + m * 60 * 75; |
} |
} |
|
|
block = msf2lba(e->addr.msf.minute, e->addr.msf.second, |
block = msf2lba(e->addr.msf.minute, e->addr.msf.second, |
e->addr.msf.frame); |
e->addr.msf.frame); |
} else { |
} else { |
block = ntohl(e->addr.lba); |
block = e->addr.lba; |
if (!name || lastflag) { |
if (!name || lastflag) { |
lba2msf(block, &m, &s, &f); |
lba2msf(block, &m, &s, &f); |
/* Print track start */ |
/* Print track start */ |
|
|
next = msf2lba(e[1].addr.msf.minute, e[1].addr.msf.second, |
next = msf2lba(e[1].addr.msf.minute, e[1].addr.msf.second, |
e[1].addr.msf.frame); |
e[1].addr.msf.frame); |
else |
else |
next = ntohl(e[1].addr.lba); |
next = e[1].addr.lba; |
len = next - block; |
len = next - block; |
lba2msf(len, &m, &s, &f); |
lba2msf(len, &m, &s, &f); |
|
|
|
|
*sec = s.data->what.position.reladdr.msf.second; |
*sec = s.data->what.position.reladdr.msf.second; |
*frame = s.data->what.position.reladdr.msf.frame; |
*frame = s.data->what.position.reladdr.msf.frame; |
} else { |
} else { |
lba2msf(ntohl(s.data->what.position.reladdr.lba), |
/* |
&mm, &ss, &ff); |
* NOTE: CDIOCREADSUBCHANNEL does not put the lba info into |
|
* host order like CDIOREADTOCENTRYS does. |
|
*/ |
|
lba2msf(betoh32(s.data->what.position.reladdr.lba), &mm, &ss, |
|
&ff); |
*min = mm; |
*min = mm; |
*sec = ss; |
*sec = ss; |
*frame = ff; |
*frame = ff; |