mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
Support for wierd CDs with two data tracks before audio.
This commit is contained in:
@@ -157,6 +157,10 @@ namespace CUETools.CDImage
|
|||||||
{
|
{
|
||||||
return _number;
|
return _number;
|
||||||
}
|
}
|
||||||
|
internal set
|
||||||
|
{
|
||||||
|
_number = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint Pregap
|
public uint Pregap
|
||||||
@@ -193,6 +197,10 @@ namespace CUETools.CDImage
|
|||||||
{
|
{
|
||||||
return _isAudio;
|
return _isAudio;
|
||||||
}
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_isAudio = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PreEmphasis
|
public bool PreEmphasis
|
||||||
@@ -321,6 +329,11 @@ namespace CUETools.CDImage
|
|||||||
{
|
{
|
||||||
return (uint) _audioTracks;
|
return (uint) _audioTracks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_audioTracks = (int) value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int FirstAudio
|
public int FirstAudio
|
||||||
@@ -329,6 +342,10 @@ namespace CUETools.CDImage
|
|||||||
{
|
{
|
||||||
return _firstAudio + 1;
|
return _firstAudio + 1;
|
||||||
}
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_firstAudio = value - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint Leadout
|
public uint Leadout
|
||||||
@@ -441,6 +458,8 @@ namespace CUETools.CDImage
|
|||||||
public void InsertTrack(CDTrack track)
|
public void InsertTrack(CDTrack track)
|
||||||
{
|
{
|
||||||
_tracks.Insert((int)track.Number - 1, track);
|
_tracks.Insert((int)track.Number - 1, track);
|
||||||
|
for (int i = (int)track.Number; i < _tracks.Count; i++)
|
||||||
|
_tracks[i].Number++;
|
||||||
if (track.IsAudio)
|
if (track.IsAudio)
|
||||||
_audioTracks++;
|
_audioTracks++;
|
||||||
if (!track.IsAudio && track.Number <= FirstAudio)
|
if (!track.IsAudio && track.Number <= FirstAudio)
|
||||||
|
|||||||
@@ -3131,16 +3131,39 @@ string status = processor.Go();
|
|||||||
}
|
}
|
||||||
|
|
||||||
// use data track length from log
|
// use data track length from log
|
||||||
if (tocFromLog != null && tocFromLog.AudioTracks == _toc.AudioTracks)
|
if (tocFromLog != null)
|
||||||
{
|
{
|
||||||
if (tocFromLog.TrackCount == tocFromLog.AudioTracks + 1 && !tocFromLog[tocFromLog.TrackCount].IsAudio)
|
if (tocFromLog.AudioTracks == _toc.AudioTracks
|
||||||
|
&& tocFromLog.TrackCount == tocFromLog.AudioTracks + 1
|
||||||
|
&& !tocFromLog[tocFromLog.TrackCount].IsAudio)
|
||||||
{
|
{
|
||||||
DataTrackLength = tocFromLog[tocFromLog.TrackCount].Length;
|
DataTrackLength = tocFromLog[tocFromLog.TrackCount].Length;
|
||||||
_toc[_toc.TrackCount].Start = tocFromLog[_toc.TrackCount].Start;
|
_toc[_toc.TrackCount].Start = tocFromLog[_toc.TrackCount].Start;
|
||||||
_toc[_toc.TrackCount][0].Start = tocFromLog[_toc.TrackCount].Start;
|
_toc[_toc.TrackCount][0].Start = tocFromLog[_toc.TrackCount].Start;
|
||||||
_toc[_toc.TrackCount][1].Start = tocFromLog[_toc.TrackCount].Start;
|
_toc[_toc.TrackCount][1].Start = tocFromLog[_toc.TrackCount].Start;
|
||||||
}
|
}
|
||||||
else if (tocFromLog.TrackCount == _toc.TrackCount
|
if (_toc.TrackCount == _toc.AudioTracks
|
||||||
|
&& tocFromLog.TrackCount == tocFromLog.AudioTracks
|
||||||
|
&& tocFromLog.TrackCount > _toc.TrackCount)
|
||||||
|
{
|
||||||
|
int dtracks = tocFromLog.TrackCount - _toc.TrackCount;
|
||||||
|
bool matches = true;
|
||||||
|
for (int iTrack = 1; iTrack <= _toc.TrackCount; iTrack++)
|
||||||
|
if (tocFromLog[iTrack + dtracks].Length != _toc[iTrack].Length)
|
||||||
|
matches = false;
|
||||||
|
if (matches)
|
||||||
|
{
|
||||||
|
for (int iTrack = 1; iTrack <= dtracks; iTrack++)
|
||||||
|
{
|
||||||
|
_toc.InsertTrack(new CDTrack((uint)iTrack, 0, 0, false, false));
|
||||||
|
tocFromLog[iTrack].IsAudio = false;
|
||||||
|
}
|
||||||
|
tocFromLog.FirstAudio += dtracks;
|
||||||
|
tocFromLog.AudioTracks -= (uint) dtracks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tocFromLog.AudioTracks == _toc.AudioTracks
|
||||||
|
&& tocFromLog.TrackCount == _toc.TrackCount
|
||||||
&& tocFromLog.FirstAudio == _toc.FirstAudio
|
&& tocFromLog.FirstAudio == _toc.FirstAudio
|
||||||
&& tocFromLog.TrackCount == tocFromLog.FirstAudio + tocFromLog.AudioTracks - 1)
|
&& tocFromLog.TrackCount == tocFromLog.FirstAudio + tocFromLog.AudioTracks - 1)
|
||||||
{
|
{
|
||||||
@@ -3160,23 +3183,6 @@ string status = processor.Go();
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// use data track length from log
|
|
||||||
if (tocFromLog != null
|
|
||||||
&& _toc.TrackCount == _toc.AudioTracks
|
|
||||||
&& tocFromLog.TrackCount == tocFromLog.AudioTracks
|
|
||||||
&& tocFromLog.TrackCount == _toc.TrackCount + 1)
|
|
||||||
{
|
|
||||||
bool matches = true;
|
|
||||||
for (int iTrack = 1; iTrack <= _toc.TrackCount; iTrack++)
|
|
||||||
if (tocFromLog[iTrack + 1].Length != _toc[iTrack].Length)
|
|
||||||
matches = false;
|
|
||||||
if (matches)
|
|
||||||
{
|
|
||||||
_toc.InsertTrack(new CDTrack(1, 0, 0, false, false));
|
|
||||||
DataTrackLength = tocFromLog[1].Length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// use data track length range from cddbId
|
// use data track length range from cddbId
|
||||||
if (DataTrackLength == 0 && _cddbDiscIdTag != null)
|
if (DataTrackLength == 0 && _cddbDiscIdTag != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -99,6 +99,10 @@ namespace CUETools.TestProcessor
|
|||||||
target.Open("Les Mysterieuses Cites d'Or\\Les Mysterieuses Cites d'Or.cue");
|
target.Open("Les Mysterieuses Cites d'Or\\Les Mysterieuses Cites d'Or.cue");
|
||||||
Assert.AreEqual<string>("-0:-31952:127883:137816:149173:160223:171479:180777:186738:196134:205613:214526:221674:227031:232824:239376:249495:259604:266115:267080:275100:281599:284452:291422:295511:297642:302114:309263:312269:320051:326235:333841", target.TOC.ToString(), "Wrong TOC");
|
Assert.AreEqual<string>("-0:-31952:127883:137816:149173:160223:171479:180777:186738:196134:205613:214526:221674:227031:232824:239376:249495:259604:266115:267080:275100:281599:284452:291422:295511:297642:302114:309263:312269:320051:326235:333841", target.TOC.ToString(), "Wrong TOC");
|
||||||
|
|
||||||
|
// test playstation-type CD-Extra with two data tracks and no info in cuesheet
|
||||||
|
target = new CUESheet(new CUEConfig());
|
||||||
|
target.Open("Les Mysterieuses Cites d'Or\\2.cue");
|
||||||
|
Assert.AreEqual<string>("-0:-31952:127883:137816:149173:160223:171479:180777:186738:196134:205613:214526:221674:227031:232824:239376:249495:259604:266115:267080:275100:281599:284452:291422:295511:297642:302114:309263:312269:320051:326235:333841", target.TOC.ToString(), "Wrong TOC");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
REM GENRE Anime
|
||||||
|
REM DISCID F211631F
|
||||||
|
REM COMMENT "ExactAudioCopy v0.99pb5"
|
||||||
|
FILE "03.dummy" WAVE
|
||||||
|
TRACK 01 AUDIO
|
||||||
|
PREGAP 00:00:03
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "04.dummy" WAVE
|
||||||
|
TRACK 02 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "05.dummy" WAVE
|
||||||
|
TRACK 03 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "06.dummy" WAVE
|
||||||
|
TRACK 04 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "07.dummy" WAVE
|
||||||
|
TRACK 05 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "08.dummy" WAVE
|
||||||
|
TRACK 06 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "09.dummy" WAVE
|
||||||
|
TRACK 07 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "10.dummy" WAVE
|
||||||
|
TRACK 08 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "11.dummy" WAVE
|
||||||
|
TRACK 09 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "12.dummy" WAVE
|
||||||
|
TRACK 10 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "13.dummy" WAVE
|
||||||
|
TRACK 11 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "14.dummy" WAVE
|
||||||
|
TRACK 12 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "15.dummy" WAVE
|
||||||
|
TRACK 13 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "16.dummy" WAVE
|
||||||
|
TRACK 14 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "17.dummy" WAVE
|
||||||
|
TRACK 15 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "18.dummy" WAVE
|
||||||
|
TRACK 16 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "19.dummy" WAVE
|
||||||
|
TRACK 17 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "20.dummy" WAVE
|
||||||
|
TRACK 18 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "21.dummy" WAVE
|
||||||
|
TRACK 19 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "22.dummy" WAVE
|
||||||
|
TRACK 20 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "23.dummy" WAVE
|
||||||
|
TRACK 21 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "24.dummy" WAVE
|
||||||
|
TRACK 22 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "25.dummy" WAVE
|
||||||
|
TRACK 23 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "26.dummy" WAVE
|
||||||
|
TRACK 24 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "27.dummy" WAVE
|
||||||
|
TRACK 25 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "28.dummy" WAVE
|
||||||
|
TRACK 26 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "29.dummy" WAVE
|
||||||
|
TRACK 27 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "30.dummy" WAVE
|
||||||
|
TRACK 28 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
|
FILE "31.dummy" WAVE
|
||||||
|
TRACK 29 AUDIO
|
||||||
|
INDEX 01 00:00:00
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
Exact Audio Copy V0.99 prebeta 5 from 4. May 2009
|
||||||
|
|
||||||
|
EAC extraction logfile from 12. October 2010, 19:17
|
||||||
|
|
||||||
|
Haim Saban & Shuki Levy / Les Mystérieuses Cités d'Or
|
||||||
|
|
||||||
|
Used drive : ATAPI iHAS324 Y Adapter: 6 ID: 0
|
||||||
|
|
||||||
|
Read mode : Secure
|
||||||
|
Utilize accurate stream : Yes
|
||||||
|
Defeat audio cache : Yes
|
||||||
|
Make use of C2 pointers : No
|
||||||
|
|
||||||
|
Read offset correction : 48
|
||||||
|
Overread into Lead-In and Lead-Out : No
|
||||||
|
Fill up missing offset samples with silence : Yes
|
||||||
|
Delete leading and trailing silent blocks : No
|
||||||
|
Null samples used in CRC calculations : Yes
|
||||||
|
Used interface : Native Win32 interface for Win NT & 2000
|
||||||
|
Gap handling : Appended to previous track
|
||||||
|
|
||||||
|
Used output format : User Defined Encoder
|
||||||
|
Selected bitrate : 128 kBit/s
|
||||||
|
Quality : High
|
||||||
|
Add ID3 tag : No
|
||||||
|
Command line compressor : C:\Program Files (x86)\FLAC\flac.exe
|
||||||
|
Additional command line options : -V -8 -T "artist=%a" -T "title=%t" -T "album=%g" -T "date=%y" -T "tracknumber=%n" -T "genre=%m" %s
|
||||||
|
|
||||||
|
|
||||||
|
TOC of the extracted CD
|
||||||
|
|
||||||
|
Track | Start | Length | Start sector | End sector
|
||||||
|
---------------------------------------------------------
|
||||||
|
1 | 0:00.00 | 7:06.02 | 0 | 31951
|
||||||
|
2 | 7:06.02 | 21:19.06 | 31952 | 127882
|
||||||
|
3 | 28:25.08 | 2:12.33 | 127883 | 137815
|
||||||
|
4 | 30:37.41 | 2:31.32 | 137816 | 149172
|
||||||
|
5 | 33:08.73 | 2:27.25 | 149173 | 160222
|
||||||
|
6 | 35:36.23 | 2:30.06 | 160223 | 171478
|
||||||
|
7 | 38:06.29 | 2:03.73 | 171479 | 180776
|
||||||
|
8 | 40:10.27 | 1:19.36 | 180777 | 186737
|
||||||
|
9 | 41:29.63 | 2:05.21 | 186738 | 196133
|
||||||
|
10 | 43:35.09 | 2:06.29 | 196134 | 205612
|
||||||
|
11 | 45:41.38 | 1:58.63 | 205613 | 214525
|
||||||
|
12 | 47:40.26 | 1:35.23 | 214526 | 221673
|
||||||
|
13 | 49:15.49 | 1:11.32 | 221674 | 227030
|
||||||
|
14 | 50:27.06 | 1:17.18 | 227031 | 232823
|
||||||
|
15 | 51:44.24 | 1:27.27 | 232824 | 239375
|
||||||
|
16 | 53:11.51 | 2:14.69 | 239376 | 249494
|
||||||
|
17 | 55:26.45 | 2:14.59 | 249495 | 259603
|
||||||
|
18 | 57:41.29 | 1:26.61 | 259604 | 266114
|
||||||
|
19 | 59:08.15 | 0:12.65 | 266115 | 267079
|
||||||
|
20 | 59:21.05 | 1:46.70 | 267080 | 275099
|
||||||
|
21 | 61:08.00 | 1:26.49 | 275100 | 281598
|
||||||
|
22 | 62:34.49 | 0:38.03 | 281599 | 284451
|
||||||
|
23 | 63:12.52 | 1:32.70 | 284452 | 291421
|
||||||
|
24 | 64:45.47 | 0:54.39 | 291422 | 295510
|
||||||
|
25 | 65:40.11 | 0:28.31 | 295511 | 297641
|
||||||
|
26 | 66:08.42 | 0:59.47 | 297642 | 302113
|
||||||
|
27 | 67:08.14 | 1:35.24 | 302114 | 309262
|
||||||
|
28 | 68:43.38 | 0:40.06 | 309263 | 312268
|
||||||
|
29 | 69:23.44 | 1:43.57 | 312269 | 320050
|
||||||
|
30 | 71:07.26 | 1:22.34 | 320051 | 326234
|
||||||
|
31 | 72:29.60 | 1:41.31 | 326235 | 333840
|
||||||
|
|
||||||
|
|
||||||
|
Track 3
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\03 - Les Cités d'Or (Générique).wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:03.00
|
||||||
|
|
||||||
|
Peak level 100.0 %
|
||||||
|
Track quality 100.0 %
|
||||||
|
Test CRC 5B513BDC
|
||||||
|
Copy CRC 5B513BDC
|
||||||
|
Accurately ripped (confidence 2) [813C9D32]
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
Track 4
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\04 - Le thème de Zia.wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:02.00
|
||||||
|
|
||||||
|
Peak level 100.0 %
|
||||||
|
Track quality 99.9 %
|
||||||
|
Test CRC 76674B12
|
||||||
|
Copy CRC 76674B12
|
||||||
|
Accurately ripped (confidence 2) [1AC98E42]
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
<<<snip>>>
|
||||||
|
|
||||||
|
Track 28
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\28 - L'aventure continue.wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:02.00
|
||||||
|
|
||||||
|
Peak level 92.6 %
|
||||||
|
Track quality 100.0 %
|
||||||
|
Test CRC E471A040
|
||||||
|
Copy CRC E471A040
|
||||||
|
Accurately ripped (confidence 2) [9C394487]
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
Track 29
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\29 - Les Olmèques.wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:02.00
|
||||||
|
|
||||||
|
Peak level 92.6 %
|
||||||
|
Track quality 100.0 %
|
||||||
|
Test CRC 99FBCE76
|
||||||
|
Copy CRC 99FBCE76
|
||||||
|
Accurately ripped (confidence 2) [FE9F299F]
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
Track 30
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\30 - La fille du peuple Inca.wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:02.00
|
||||||
|
|
||||||
|
Peak level 100.0 %
|
||||||
|
Track quality 100.0 %
|
||||||
|
Test CRC 4F2F0F85
|
||||||
|
Copy CRC 4F2F0F85
|
||||||
|
Track not present in AccurateRip database
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
Track 31
|
||||||
|
|
||||||
|
Filename D:\Music Madness\Soundtracks\1998 - Les Mystérieuses Cités d'Or [FLAC]\31 - Tao l'inventeur.wav
|
||||||
|
|
||||||
|
Pre-gap length 0:00:02.00
|
||||||
|
|
||||||
|
Peak level 92.6 %
|
||||||
|
Track quality 100.0 %
|
||||||
|
Test CRC DB2EFF8C
|
||||||
|
Copy CRC DB2EFF8C
|
||||||
|
Track not present in AccurateRip database
|
||||||
|
Copy OK
|
||||||
|
|
||||||
|
|
||||||
|
27 track(s) accurately ripped
|
||||||
|
2 track(s) not present in the AccurateRip database
|
||||||
|
|
||||||
|
Some tracks could not be verified as accurate
|
||||||
|
|
||||||
|
No errors occurred
|
||||||
|
|
||||||
|
End of status report
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
</TestList>
|
</TestList>
|
||||||
<TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d">
|
<TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d">
|
||||||
<TestLinks>
|
<TestLinks>
|
||||||
<TestLink id="06227a46-f5aa-99cb-8bbe-fc70e4892c9d" name="CTDBResponseTest" storage="bin\release\cuetools.testprocessor.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
|
<TestLink id="06227a46-f5aa-99cb-8bbe-fc70e4892c9d" name="CTDBResponseTest" storage="bin\release\cuetools.testprocessor.dll" enabled="false" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
</TestLinks>
|
</TestLinks>
|
||||||
</TestList>
|
</TestList>
|
||||||
</TestLists>
|
</TestLists>
|
||||||
Reference in New Issue
Block a user