Rename "morituri" module to "whipper".

Fixes https://github.com/JoeLametta/whipper/issues/100
This commit is contained in:
Frederik “Freso” S. Olesen
2017-04-26 16:51:11 +02:00
parent a8af9b79ab
commit ff309e468c
114 changed files with 198 additions and 198 deletions

0
whipper/test/__init__.py Normal file
View File

38
whipper/test/bloc.cue Normal file
View File

@@ -0,0 +1,38 @@
REM DISCID AD0BE00D
REM COMMENT "whipper 0.5.1"
FILE "data.wav" WAVE
TRACK 01 AUDIO
PREGAP 03:22:70
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 01 04:21:74
TRACK 03 AUDIO
INDEX 01 08:02:12
TRACK 04 AUDIO
INDEX 01 11:57:45
TRACK 05 AUDIO
INDEX 00 15:18:00
INDEX 01 15:18:72
TRACK 06 AUDIO
INDEX 00 18:05:40
INDEX 01 18:06:06
TRACK 07 AUDIO
INDEX 00 21:35:15
INDEX 01 21:35:32
TRACK 08 AUDIO
INDEX 00 26:00:74
INDEX 01 26:01:03
TRACK 09 AUDIO
INDEX 00 29:36:14
INDEX 01 29:36:25
TRACK 10 AUDIO
INDEX 01 33:56:02
TRACK 11 AUDIO
INDEX 00 37:48:26
INDEX 01 37:48:69
TRACK 12 AUDIO
INDEX 00 41:44:45
INDEX 01 41:46:11
TRACK 13 AUDIO
INDEX 00 45:56:11
INDEX 01 45:56:33

116
whipper/test/bloc.toc Normal file
View File

@@ -0,0 +1,116 @@
CD_DA
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
SILENCE 03:22:70
FILE "data.wav" 0 04:21:74
START 03:22:70
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 04:21:74 03:40:13
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 08:02:12 03:55:33
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 11:57:45 03:20:30
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 15:18:00 02:47:40
START 00:00:72
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 18:05:40 03:29:50
START 00:00:41
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 21:35:15 04:25:59
START 00:00:17
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 26:00:74 03:35:15
START 00:00:04
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 29:36:14 04:19:63
START 00:00:11
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 33:56:02 03:52:24
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 37:48:26 03:56:19
START 00:00:43
// Track 12
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 41:44:45 04:11:41
START 00:01:41
// Track 13
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 45:56:11 04:43:60
START 00:00:22

64
whipper/test/breeders.cue Normal file
View File

@@ -0,0 +1,64 @@
REM DISCID BE08990D
REM COMMENT "whipper 0.5.1"
CATALOG 0652637280326
PERFORMER "THE BREEDERS"
TITLE "MOUNTAIN BATTLES"
FILE "data.wav" WAVE
TRACK 01 AUDIO
TITLE "OVERGLAZED"
ISRC GBAFL0700213
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "BANG ON"
ISRC GBAFL0700214
INDEX 00 02:14:51
INDEX 01 02:15:26
TRACK 03 AUDIO
TITLE "NIGHT OF JOY"
ISRC GBAFL0700215
INDEX 00 04:17:74
INDEX 01 04:18:34
TRACK 04 AUDIO
TITLE "WE'RE GONNA RISE"
ISRC GBAFL0700216
INDEX 01 07:44:22
TRACK 05 AUDIO
TITLE "GERMAN STUDIES"
ISRC GBAFL0700217
INDEX 01 11:37:39
TRACK 06 AUDIO
TITLE "SPARK"
ISRC GBAFL0700218
INDEX 00 13:51:54
INDEX 01 13:53:38
TRACK 07 AUDIO
TITLE "INSTANBUL"
ISRC GBAFL0700219
INDEX 00 16:31:20
INDEX 01 16:32:49
TRACK 08 AUDIO
TITLE "WALK IT OFF"
ISRC GBAFL0700220
INDEX 01 19:30:19
TRACK 09 AUDIO
TITLE "REGLAME ESTA NOCHE"
ISRC GBAFL0700221
INDEX 00 22:14:69
INDEX 01 22:16:27
TRACK 10 AUDIO
TITLE "HERE NO MORE"
ISRC GBAFL0700222
INDEX 00 25:06:18
INDEX 01 25:08:01
TRACK 11 AUDIO
TITLE "NO WAY"
ISRC GBAFL0700223
INDEX 01 27:46:64
TRACK 12 AUDIO
TITLE "IT'S THE LOVE"
ISRC GBAFL0700224
INDEX 01 30:19:39
TRACK 13 AUDIO
TITLE "MOUNTAIN BATTLES"
ISRC GBAFL0700225
INDEX 01 32:47:56

217
whipper/test/breeders.toc Normal file
View File

@@ -0,0 +1,217 @@
CD_DA
CATALOG "0652637280326"
CD_TEXT {
LANGUAGE_MAP {
0: 9
}
LANGUAGE 0 {
TITLE "MOUNTAIN BATTLES"
PERFORMER "THE BREEDERS"
DISC_ID "CADD2803CD"
SIZE_INFO { 1, 1, 20, 0, 16, 3, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 3, 22, 0, 0, 0,
0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0}
}
}
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700213"
CD_TEXT {
LANGUAGE 0 {
TITLE "OVERGLAZED"
PERFORMER ""
}
}
FILE "data.wav" 0 02:14:51
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700214"
CD_TEXT {
LANGUAGE 0 {
TITLE "BANG ON"
PERFORMER ""
}
}
FILE "data.wav" 02:14:51 02:03:23
START 00:00:50
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700215"
CD_TEXT {
LANGUAGE 0 {
TITLE "NIGHT OF JOY"
PERFORMER ""
}
}
FILE "data.wav" 04:17:74 03:26:23
START 00:00:35
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700216"
CD_TEXT {
LANGUAGE 0 {
TITLE "WE'RE GONNA RISE"
PERFORMER ""
}
}
FILE "data.wav" 07:44:22 03:53:17
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700217"
CD_TEXT {
LANGUAGE 0 {
TITLE "GERMAN STUDIES"
PERFORMER ""
}
}
FILE "data.wav" 11:37:39 02:14:15
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700218"
CD_TEXT {
LANGUAGE 0 {
TITLE "SPARK"
PERFORMER ""
}
}
FILE "data.wav" 13:51:54 02:39:41
START 00:01:59
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700219"
CD_TEXT {
LANGUAGE 0 {
TITLE "INSTANBUL"
PERFORMER ""
}
}
FILE "data.wav" 16:31:20 02:58:74
START 00:01:29
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700220"
CD_TEXT {
LANGUAGE 0 {
TITLE "WALK IT OFF"
PERFORMER ""
}
}
FILE "data.wav" 19:30:19 02:44:50
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700221"
CD_TEXT {
LANGUAGE 0 {
TITLE "REGLAME ESTA NOCHE"
PERFORMER ""
}
}
FILE "data.wav" 22:14:69 02:51:24
START 00:01:33
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700222"
CD_TEXT {
LANGUAGE 0 {
TITLE "HERE NO MORE"
PERFORMER ""
}
}
FILE "data.wav" 25:06:18 02:40:46
START 00:01:58
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700223"
CD_TEXT {
LANGUAGE 0 {
TITLE "NO WAY"
PERFORMER ""
}
}
FILE "data.wav" 27:46:64 02:32:50
// Track 12
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700224"
CD_TEXT {
LANGUAGE 0 {
TITLE "IT'S THE LOVE"
PERFORMER ""
}
}
FILE "data.wav" 30:19:39 02:28:17
// Track 13
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAFL0700225"
CD_TEXT {
LANGUAGE 0 {
TITLE "MOUNTAIN BATTLES"
PERFORMER ""
}
}
FILE "data.wav" 32:47:56 03:53:66

Binary file not shown.

113
whipper/test/capital.1.toc Normal file
View File

@@ -0,0 +1,113 @@
CD_DA
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300350"
SILENCE 05:22:20
FILE "data.wav" 0 04:32:55
START 05:22:20
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300351"
FILE "data.wav" 04:32:55 04:16:02
START 00:01:05
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300352"
FILE "data.wav" 08:48:57 03:03:65
START 00:01:38
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300353"
FILE "data.wav" 11:52:47 02:16:03
START 00:01:43
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300355"
FILE "data.wav" 14:08:50 03:32:55
START 00:01:50
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300356"
FILE "data.wav" 17:41:30 03:09:70
START 00:01:20
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300357"
FILE "data.wav" 20:51:25 02:27:25
START 00:01:00
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300358"
FILE "data.wav" 23:18:50 02:46:35
START 00:00:35
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300359"
FILE "data.wav" 26:05:10 05:02:72
START 00:00:60
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300360"
FILE "data.wav" 31:08:07 03:50:38
START 00:00:60
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300361"
FILE "data.wav" 34:58:45 03:35:10
START 00:00:65

View File

@@ -0,0 +1,8 @@
CD_ROM
// Track 1
TRACK MODE1
NO COPY
DATAFILE "data_1" 27:30:00 // length in bytes: 253440000

View File

@@ -0,0 +1,109 @@
CD_ROM
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300350"
FILE "data.wav" 0 04:33:60
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300351"
FILE "data.wav" 04:33:60 04:16:35
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300352"
FILE "data.wav" 08:50:20 03:03:70
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300353"
FILE "data.wav" 11:54:15 02:16:10
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300355"
FILE "data.wav" 14:10:25 03:32:25
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300356"
FILE "data.wav" 17:42:50 03:09:50
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300357"
FILE "data.wav" 20:52:25 02:26:60
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300358"
FILE "data.wav" 23:19:10 02:46:60
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300359"
FILE "data.wav" 26:05:70 05:02:72
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300360"
FILE "data.wav" 31:08:67 03:50:43
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBAAA0300361"
FILE "data.wav" 34:59:35 06:04:20
// Track 12
TRACK MODE1
NO COPY
ZERO MODE1 00:02:00
DATAFILE "data_12" 27:30:00 // length in bytes: 253440000
START 00:02:00

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,111 @@
Sending all callbacks to stderr for wrapper script
cdparanoia III release 10.2 (September 11, 2008)
Ripping from sector 0 (track 0 [0:00.00])
to sector 0 (track 0 [0:00.00])
outputting to cdda.wav
##: 0 [read] @ 24696
##: 0 [read] @ 56448
##: 0 [read] @ 88200
##: 0 [read] @ 119952
##: 0 [read] @ 151704
##: 0 [read] @ 183456
##: 0 [read] @ 215208
##: 0 [read] @ 246960
##: 0 [read] @ 278712
##: 0 [read] @ 310464
##: 0 [read] @ 342216
##: 0 [read] @ 373968
##: 0 [read] @ 405720
##: 0 [read] @ 437472
##: 0 [read] @ 469224
##: 0 [read] @ 500976
##: 0 [read] @ 532728
##: 0 [read] @ 564480
##: 0 [read] @ 596232
##: 0 [read] @ 627984
##: 0 [read] @ 659736
##: 0 [read] @ 691488
##: 0 [read] @ 723240
##: 0 [read] @ 754992
##: 0 [read] @ 786744
##: 0 [read] @ 818496
##: 0 [read] @ 850248
##: 0 [read] @ 882000
##: 0 [read] @ 913752
##: 0 [read] @ 945504
##: 0 [read] @ 977256
##: 0 [read] @ 1009008
##: 0 [read] @ 1040760
##: 0 [read] @ 1072512
##: 0 [read] @ 1104264
##: 0 [read] @ 1136016
##: 0 [read] @ 1167768
##: 0 [read] @ 1199520
##: 0 [read] @ 1231272
##: 0 [read] @ 1263024
##: 0 [read] @ 1294776
##: 0 [read] @ 1326528
##: 0 [read] @ 1358280
##: 0 [read] @ 1390032
##: 0 [read] @ 1410024
##: 0 [read] @ 23520
##: 0 [read] @ 55272
##: 0 [read] @ 87024
##: 0 [read] @ 118776
##: 0 [read] @ 150528
##: 0 [read] @ 182280
##: 0 [read] @ 214032
##: 0 [read] @ 245784
##: 0 [read] @ 277536
##: 0 [read] @ 309288
##: 0 [read] @ 341040
##: 0 [read] @ 372792
##: 0 [read] @ 404544
##: 0 [read] @ 436296
##: 0 [read] @ 468048
##: 0 [read] @ 499800
##: 0 [read] @ 531552
##: 0 [read] @ 563304
##: 0 [read] @ 595056
##: 0 [read] @ 626808
##: 0 [read] @ 658560
##: 0 [read] @ 690312
##: 0 [read] @ 722064
##: 0 [read] @ 753816
##: 0 [read] @ 785568
##: 0 [read] @ 817320
##: 0 [read] @ 849072
##: 0 [read] @ 880824
##: 0 [read] @ 912576
##: 0 [read] @ 944328
##: 0 [read] @ 976080
##: 0 [read] @ 1007832
##: 0 [read] @ 1039584
##: 0 [read] @ 1071336
##: 0 [read] @ 1103088
##: 0 [read] @ 1134840
##: 0 [read] @ 1166592
##: 0 [read] @ 1198344
##: 0 [read] @ 1230096
##: 0 [read] @ 1261848
##: 0 [read] @ 1293600
##: 0 [read] @ 1325352
##: 0 [read] @ 1357104
##: 0 [read] @ 1388856
##: 0 [read] @ 1410024
##: 1 [verify] @ 0
##: 3 [correction] @ 1005459
##: 3 [correction] @ 1005480
##: 1 [verify] @ 1005480
##: 1 [verify] @ 1005480
##: -2 [wrote] @ 1175
##: -2 [wrote] @ 1176
##: -1 [finished] @ 1175
Done.

View File

@@ -0,0 +1,373 @@
cdparanoia -A
cdparanoia III release 10.2 (September 11, 2008)
Using cdda library version: 10.2
Using paranoia library version: 10.2
Attempting to set cdrom to full speed...
drive returned OK.
=================== Checking drive cache/timing behavior ===================
Seek/read timing:
[45:24.28]:
204328:1:46 204329:27:33 204356:27:35 204383:27:33 204410:27:35 204437:27:33 204464:27:35 204491:27:33 204518:27:35 204545:27:33 204572:27:35 204599:27:32 204626:27:35 204653:27:33 204680:27:35 204707:27:33 204734:27:35 204761:27:33 204788:27:35 204815:27:33 204842:27:35 204869:27:33 204896:27:35 204923:27:32 204950:27:35 204977:27:33 205004:27:35 205031:27:33 205058:27:35 205085:27:33 205112:27:35 205139:27:33 205166:27:35 205193:27:33 205220:27:35 205247:27:33 205274:27:35 205301:27:33
Initial seek latency (1000 sectors): 46ms
Average read latency: 1.26ms/sector (raw speed: 10.6x)
Read latency standard deviation: 0.04ms/sector
[45:24.27]:
204327:1:45 204328:27:33 204355:27:35 204382:27:33 204409:27:35 204436:27:33 204463:27:35 204490:27:33 204517:27:35 204544:27:32 204571:27:35 204598:27:32 204625:27:35 204652:27:33 204679:27:35 204706:27:33 204733:27:35 204760:27:33 204787:27:35 204814:27:33 204841:27:35 204868:27:32 204895:27:35 204922:27:32 204949:27:35 204976:27:33 205003:27:35 205030:27:33 205057:27:35 205084:27:33 205111:27:35 205138:27:33 205165:27:35 205192:27:33 205219:27:35 205246:27:33 205273:27:35 205300:27:33
Initial seek latency (1000 sectors): 45ms
Average read latency: 1.25ms/sector (raw speed: 10.6x)
Read latency standard deviation: 0.04ms/sector
[45:24.26]:
204326:1:45 204327:27:33 204354:27:35 204381:27:33 204408:27:35 204435:27:33 204462:27:35 204489:27:33 204516:27:35 204543:27:33 204570:27:35 204597:27:33 204624:27:35 204651:27:33 204678:27:35 204705:27:33 204732:27:35 204759:27:33 204786:27:35 204813:27:33 204840:27:35 204867:27:33 204894:27:35 204921:27:33 204948:27:35 204975:27:33 205002:27:35 205029:27:33 205056:27:35 205083:27:32 205110:27:35 205137:27:33 205164:27:35 205191:27:33 205218:27:35 205245:27:33 205272:27:35 205299:27:32
Initial seek latency (1000 sectors): 45ms
Average read latency: 1.26ms/sector (raw speed: 10.6x)
Read latency standard deviation: 0.04ms/sector
[45:24.25]:
204325:1:44 204326:27:33 204353:27:35 204380:27:33 204407:27:35 204434:27:32 204461:27:35 204488:27:33 204515:27:35 204542:27:33 204569:27:35 204596:27:33 204623:27:35 204650:27:33 204677:27:35 204704:27:33 204731:27:35 204758:27:32 204785:27:35 204812:27:33 204839:27:35 204866:27:33 204893:27:35 204920:27:33 204947:27:35 204974:27:33 205001:27:35 205028:27:33 205055:27:35 205082:27:33 205109:27:35 205136:27:33 205163:27:35 205190:27:32 205217:27:35 205244:27:33 205271:27:35 205298:27:33
Initial seek latency (1000 sectors): 44ms
Average read latency: 1.26ms/sector (raw speed: 10.6x)
Read latency standard deviation: 0.04ms/sector
[45:24.24]:
204324:1:45 204325:27:33 204352:27:35 204379:27:32 204406:27:35 204433:27:33 204460:27:35 204487:27:33 204514:27:35 204541:27:33 204568:27:35 204595:27:32 204622:27:35 204649:27:33 204676:27:35 204703:27:33 204730:27:35 204757:27:33 204784:27:35 204811:27:32 204838:27:35 204865:27:33 204892:27:35 204919:27:33 204946:27:35 204973:27:33 205000:27:35 205027:27:33 205054:27:35 205081:27:33 205108:27:35 205135:27:33 205162:27:35 205189:27:33 205216:27:35 205243:27:33 205270:27:35 205297:27:33
Initial seek latency (1000 sectors): 45ms
Average read latency: 1.26ms/sector (raw speed: 10.6x)
Read latency standard deviation: 0.04ms/sector
[40:00.00]:
180000:1:50 180001:27:34 180028:27:37 180055:27:34 180082:27:37 180109:27:34 180136:27:37 180163:27:34 180190:27:37 180217:27:34 180244:27:37 180271:27:34 180298:27:37 180325:27:34 180352:27:37 180379:27:34 180406:27:37 180433:27:34 180460:27:37 180487:27:34 180514:27:37 180541:27:34 180568:27:37 180595:27:34 180622:27:37 180649:27:34 180676:27:37 180703:27:34 180730:27:37 180757:27:34 180784:27:37 180811:27:34 180838:27:37 180865:27:34 180892:27:37 180919:27:34 180946:27:37 180973:27:34
Initial seek latency (1000 sectors): 50ms
Average read latency: 1.31ms/sector (raw speed: 10.2x)
Read latency standard deviation: 0.06ms/sector
[30:00.00]:
135000:1:64 135001:27:38 135028:27:41 135055:27:38 135082:27:41 135109:27:38 135136:27:41 135163:27:38 135190:27:41 135217:27:38 135244:27:41 135271:27:38 135298:27:41 135325:27:38 135352:27:41 135379:27:38 135406:27:41 135433:27:38 135460:27:41 135487:27:38 135514:27:41 135541:27:38 135568:27:41 135595:27:38 135622:27:41 135649:27:38 135676:27:41 135703:27:38 135730:27:41 135757:27:38 135784:27:41 135811:27:38 135838:27:41 135865:27:38 135892:27:41 135919:27:38 135946:27:41 135973:27:38
Initial seek latency (1000 sectors): 64ms
Average read latency: 1.46ms/sector (raw speed: 9.1x)
Read latency standard deviation: 0.06ms/sector
[20:00.00]:
90000:1:63 90001:27:43 90028:27:47 90055:27:43 90082:27:47 90109:27:43 90136:27:46 90163:27:43 90190:27:47 90217:27:43 90244:27:46 90271:27:43 90298:27:47 90325:27:43 90352:27:46 90379:27:43 90406:27:46 90433:27:43 90460:27:46 90487:27:43 90514:27:46 90541:27:43 90568:27:46 90595:27:43 90622:27:46 90649:27:43 90676:27:46 90703:27:43 90730:27:46 90757:27:43 90784:27:46 90811:27:43 90838:27:46 90865:27:43 90892:27:46 90919:27:43 90946:27:46 90973:27:43
Initial seek latency (1000 sectors): 63ms
Average read latency: 1.65ms/sector (raw speed: 8.1x)
Read latency standard deviation: 0.06ms/sector
[10:00.00]:
45000:1:61 45001:27:51 45028:27:55 45055:27:51 45082:27:55 45109:27:52 45136:27:55 45163:27:51 45190:27:55 45217:27:51 45244:27:55 45271:27:51 45298:27:55 45325:27:51 45352:27:55 45379:27:51 45406:27:55 45433:27:51 45460:27:55 45487:27:51 45514:27:55 45541:27:51 45568:27:55 45595:27:51 45622:27:55 45649:27:51 45676:27:55 45703:27:51 45730:27:55 45757:27:51 45784:27:55 45811:27:51 45838:27:55 45865:27:51 45892:27:55 45919:27:51 45946:27:55 45973:27:51
Initial seek latency (1000 sectors): 61ms
Average read latency: 1.96ms/sector (raw speed: 6.8x)
Read latency standard deviation: 0.07ms/sector
[00:00.00]:
0:1:84 1:27:67 28:27:72 55:27:67 82:27:72 109:27:67 136:27:72 163:27:67 190:27:72 217:27:67 244:27:72 271:27:67 298:27:72 325:27:67 352:27:72 379:27:67 406:27:72 433:27:67 460:27:72 487:27:67 514:27:72 541:27:67 568:27:72 595:27:67 622:27:72 649:27:67 676:27:72 703:27:67 730:27:72 757:27:67 784:27:72 811:27:67 838:27:72 865:27:67 892:27:72 919:27:67 946:27:72 973:27:67
Initial seek latency (1000 sectors): 84ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.09ms/sector
Analyzing cache behavior...
Fast search for approximate cache size... 0 sectors
>>> fast_read=10:1:71 seek_read=10:1:0
Fast search for approximate cache size... 1 sectors
>>> fast_read=11:1:0 seek_read=10:1:65
>>> fast_read=11:1:0
Fast search for approximate cache size... 2 sectors
>>> fast_read=12:1:4 seek_read=10:1:61
>>> fast_read=12:1:5
Fast search for approximate cache size... 3 sectors
>>> fast_read=13:1:0 seek_read=10:1:61
>>> fast_read=13:1:5
Fast search for approximate cache size... 4 sectors
>>> fast_read=14:1:5 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
>>> fast_read=14:1:10 seek_read=10:1:56
Slow verify for approximate cache size... 4 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:5:10 seek_read=10:1:0
Attempting to reset read speed to full... drive said OK
Fast search for approximate cache size... 5 sectors
>>> fast_read=15:1:0 seek_read=10:1:54
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
>>> fast_read=15:1:10 seek_read=10:1:56
Slow verify for approximate cache size... 5 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:6:9 seek_read=10:1:0
Attempting to reset read speed to full... drive said OK
Fast search for approximate cache size... 6 sectors
>>> fast_read=16:1:4 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
>>> fast_read=16:1:15 seek_read=10:1:51
Slow verify for approximate cache size... 6 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:7:15 seek_read=10:1:0
Attempting to reset read speed to full... drive said OK
Fast search for approximate cache size... 7 sectors
>>> fast_read=17:1:0 seek_read=10:1:49
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
>>> fast_read=17:1:15 seek_read=10:1:51
Slow verify for approximate cache size... 7 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:8:15 seek_read=10:1:0
Attempting to reset read speed to full... drive said OK
Fast search for approximate cache size... 8 sectors
>>> fast_read=18:1:3 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:21 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:21 seek_read=10:1:45
>>> fast_read=18:1:21 seek_read=10:1:45
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
>>> fast_read=18:1:20 seek_read=10:1:46
Slow verify for approximate cache size... 8 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:9:18 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:45
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
>>> slow_read=10:9:20 seek_read=10:1:46
Approximate random access cache size: 8 sector(s)
Attempting to reset read speed to full... drive said OK
Verifying that cache is contiguous... >>> 34:1:61 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
>>> 34:1:62 seek_read:10:1:49
Drive cache tests as contiguous
Testing background readahead past read cursor... 64
0 >>> 10:8:15 sleep=197299us seek=81:1:0
Testing background readahead past read cursor... 128
0 >>> 10:8:69 sleep=394598us seek=145:1:0
Testing background readahead past read cursor... 192
0 >>> 10:8:73 sleep=591897us seek=209:1:0
Testing background readahead past read cursor... 256
0 >>> 10:8:77 sleep=789196us seek=273:1:0
Testing background readahead past read cursor... 320
0 >>> 10:8:81 sleep=986496us seek=337:1:50
1 >>> 10:8:81 sleep=1150912us seek=337:1:64
Retiming drive...
10:1:65 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:72 1469:27:67 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 65ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.56ms/sec
2 >>> 10:8:106 sleep=1315328us seek=337:1:56
Testing background readahead past read cursor... 264
0 >>> 10:8:81 sleep=813859us seek=281:1:0
Testing background readahead past read cursor... 272
0 >>> 10:8:79 sleep=838521us seek=289:1:50
1 >>> 10:8:72 sleep=978275us seek=289:1:45
Retiming drive...
10:1:56 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 56ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.56ms/sec
2 >>> 10:8:105 sleep=1118028us seek=289:1:39
Testing background readahead past read cursor... 265
0 >>> 10:8:71 sleep=816942us seek=282:1:54
1 >>> 10:8:67 sleep=953098us seek=282:1:52
Retiming drive...
10:1:51 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:71 1469:27:67 1496:27:72 1523:27:66 1550:27:72 1577:27:67 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:72 1739:27:67 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:67 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 51ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.57ms/sec
2 >>> 10:8:106 sleep=1089256us seek=282:1:50
3 >>> 10:8:67 sleep=1225413us seek=282:1:48
4 >>> 10:8:67 sleep=1361569us seek=282:1:46
Retiming drive...
10:1:52 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:72 1469:27:66 1496:27:72 1523:27:67 1550:27:72 1577:27:66 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:67 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 52ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.56ms/sec
5 >>> 10:8:106 sleep=1497727us seek=282:1:44
6 >>> 10:8:90 sleep=1633884us seek=282:1:42
7 >>> 10:8:67 sleep=1770041us seek=282:1:40
Retiming drive...
10:1:52 11:27:67 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:66 1334:27:72 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:67 1604:27:72 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:72 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 52ms
Average read latency: 2.57ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.56ms/sec
8 >>> 10:8:106 sleep=1906197us seek=282:1:60
9 >>> 10:8:67 sleep=2042354us seek=282:1:58
Drive readahead past read cursor: 264 sector(s)
Testing cache tail cursor...
>>> 10:8:67
sleeping 1017324 microseconds
<<< 7:1:0 6:1:55
>>> 10:8:66
sleeping 1017324 microseconds
<<< 6:1:0 5:1:52
>>> 10:8:69
sleeping 1017324 microseconds
<<< 5:1:0 4:1:49
>>> 10:8:72
sleeping 1017324 microseconds
<<< 4:1:0 3:1:69
>>> 10:8:74
sleeping 1017324 microseconds
<<< 3:1:0 2:1:67
>>> 10:8:77
sleeping 1017324 microseconds
<<< 2:1:0 1:1:64
>>> 10:8:79
sleeping 1017324 microseconds
<<< 1:1:0 0:1:61
>>> 10:8:15
sleeping 1017324 microseconds
<<< 0:1:0
Retiming drive...
10:1:0 11:27:1 38:27:1 65:27:1 92:27:1 119:27:1 146:27:3 173:27:3 200:27:3 227:27:3 254:27:3 281:27:91 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:72 1361:27:67 1388:27:72 1415:27:66 1442:27:71 1469:27:67 1496:27:72 1523:27:66 1550:27:71 1577:27:67 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:66 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 0ms
Average read latency: 2.23ms/sector (raw speed: 6.0x)
Read latency standard deviation: 0.88ms/sector
Old mean=2.57ms/sec, New mean=2.23ms/sec
Cache tail cursor tied to read cursor
Testing granularity of cache tail
>>> 10:9:112
sleeping 1017324 microseconds
<<< 18:1:0 17:1:52
>>> 10:9:69
sleeping 1017324 microseconds
<<< 17:1:0 16:1:72
>>> 10:9:80
sleeping 1017324 microseconds
<<< 16:1:0 15:1:69
>>> 10:9:74
sleeping 1017324 microseconds
<<< 15:1:0 14:1:67
>>> 10:9:77
sleeping 1017324 microseconds
<<< 14:1:0 13:1:64
>>> 10:9:79
sleeping 1017324 microseconds
<<< 13:1:0 12:1:61
>>> 10:9:82
sleeping 1017324 microseconds
<<< 12:1:0 11:1:59
>>> 10:9:85
sleeping 1017324 microseconds
<<< 11:1:0 10:1:56
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
>>> 10:9:20
sleeping 1017324 microseconds
<<< 10:1:57
Retiming drive...
10:1:0 11:27:66 38:27:72 65:27:67 92:27:72 119:27:67 146:27:72 173:27:67 200:27:72 227:27:67 254:27:72 281:27:67 308:27:72 335:27:67 362:27:72 389:27:67 416:27:72 443:27:67 470:27:72 497:27:67 524:27:72 551:27:67 578:27:72 605:27:67 632:27:72 659:27:67 686:27:72 713:27:67 740:27:72 767:27:67 794:27:72 821:27:67 848:27:72 875:27:67 902:27:72 929:27:67 956:27:72 983:27:67 1010:27:72 1037:27:67 1064:27:72 1091:27:67 1118:27:72 1145:27:67 1172:27:72 1199:27:67 1226:27:72 1253:27:67 1280:27:72 1307:27:67 1334:27:71 1361:27:67 1388:27:72 1415:27:67 1442:27:72 1469:27:66 1496:27:72 1523:27:66 1550:27:72 1577:27:66 1604:27:71 1631:27:66 1658:27:72 1685:27:66 1712:27:71 1739:27:66 1766:27:71 1793:27:67 1820:27:71 1847:27:66 1874:27:71 1901:27:66 1928:27:71 1955:1:0
Initial seek latency (1946 sectors): 0ms
Average read latency: 2.56ms/sector (raw speed: 5.2x)
Read latency standard deviation: 0.11ms/sector
Old mean=2.57ms/sec, New mean=2.56ms/sec
Cache tail granularity: 1 sector(s)
Cache size (considering rollbehind) too small to test cache speed.
Drive tests OK with Paranoia.

View File

@@ -0,0 +1,111 @@
cdparanoia III release 10.2 (September 11, 2008)
Using cdda library version: 10.2
Using paranoia library version: 10.2
Checking /dev/cdrom for cdrom...
Could not stat /dev/cdrom: No such file or directory
Checking /dev/cdroms/cdrom0 for cdrom...
Could not stat /dev/cdroms/cdrom0: No such file or directory
Checking /dev/cdroms/cdroma for cdrom...
Could not stat /dev/cdroms/cdroma: No such file or directory
Checking /dev/cdroms/cdrom1 for cdrom...
Could not stat /dev/cdroms/cdrom1: No such file or directory
Checking /dev/cdroms/cdromb for cdrom...
Could not stat /dev/cdroms/cdromb: No such file or directory
Checking /dev/cdroms/cdrom2 for cdrom...
Could not stat /dev/cdroms/cdrom2: No such file or directory
Checking /dev/cdroms/cdromc for cdrom...
Could not stat /dev/cdroms/cdromc: No such file or directory
Checking /dev/cdroms/cdrom3 for cdrom...
Could not stat /dev/cdroms/cdrom3: No such file or directory
Checking /dev/cdroms/cdromd for cdrom...
Could not stat /dev/cdroms/cdromd: No such file or directory
Checking /dev/hd0 for cdrom...
Could not stat /dev/hd0: No such file or directory
Checking /dev/hda for cdrom...
Could not stat /dev/hda: No such file or directory
Checking /dev/hd1 for cdrom...
Could not stat /dev/hd1: No such file or directory
Checking /dev/hdb for cdrom...
Could not stat /dev/hdb: No such file or directory
Checking /dev/hd2 for cdrom...
Could not stat /dev/hd2: No such file or directory
Checking /dev/hdc for cdrom...
Could not stat /dev/hdc: No such file or directory
Checking /dev/hd3 for cdrom...
Could not stat /dev/hd3: No such file or directory
Checking /dev/hdd for cdrom...
Could not stat /dev/hdd: No such file or directory
Checking /dev/sg0 for cdrom...
Testing /dev/sg0 for SCSI/MMC interface
Could not access device /dev/sg0 to test for SG_IO support: Permission denied
no SG_IO support for device: /dev/sg0
Could not access device /dev/sg0: Permission denied
generic device: /dev/sg0
ioctl device: not found
Could not open generic SCSI device /dev/sg0: Permission denied
Testing /dev/sg0 for cooked ioctl() interface
/dev/sg0 is not a cooked ioctl CDROM.
Checking /dev/sga for cdrom...
Could not stat /dev/sga: No such file or directory
Checking /dev/sg1 for cdrom...
Testing /dev/sg1 for SCSI/MMC interface
SG_IO device: /dev/sg1
CDROM model sensed sensed: MATSHITA DVD-RAM UJ8A0A SB02
Checking for SCSI emulation...
Drive is ATAPI (using SG_IO host adaptor emulation)
Checking for MMC style command set...
Drive is MMC style
DMA scatter/gather table entries: 167
table entry size: 524288 bytes
maximum theoretical transfer: 37074 sectors
Setting default read size to 27 sectors (63504 bytes).
Verifying CDDA command set...
Expected command set reads OK.
Attempting to set cdrom to full speed...
drive returned OK.
=================== Checking drive cache/timing behavior ===================
Seek/read timing:
[45:24.28]: 46ms seek, 1.26ms/sec read [10.6x] spinning up...
[45:24.27]: 45ms seek, 1.25ms/sec read [10.6x] spinning up...
[45:24.26]: 45ms seek, 1.26ms/sec read [10.6x] spinning up...
[45:24.25]: 44ms seek, 1.26ms/sec read [10.6x] spinning up...
[45:24.24]: 45ms seek, 1.26ms/sec read [10.6x]
[40:00.00]: 50ms seek, 1.31ms/sec read [10.2x]
[30:00.00]: 64ms seek, 1.46ms/sec read [9.1x]
[20:00.00]: 63ms seek, 1.65ms/sec read [8.1x]
[10:00.00]: 61ms seek, 1.96ms/sec read [6.8x]
[00:00.00]: 84ms seek, 2.57ms/sec read [5.2x]
Analyzing cache behavior...
Fast search for approximate cache size... 0 sectors
Fast search for approximate cache size... 1 sectors
Fast search for approximate cache size... 2 sectors

View File

@@ -0,0 +1,158 @@
cdparanoia -A
cdparanoia III release 10.2 (September 11, 2008)
Using cdda library version: 10.2
Using paranoia library version: 10.2
Attempting to set cdrom to full speed...
drive returned OK.
=================== Checking drive cache/timing behavior ===================
Seek/read timing:
[39:43.53]:
178778:1:19 178779:27:19 178806:27:19 178833:27:19 178860:27:19 178887:27:19 178914:27:19 178941:27:19 178968:27:19 178995:27:19 179022:27:19 179049:27:19 179076:27:19 179103:27:19 179130:27:19 179157:27:19 179184:27:19 179211:27:19 179238:27:19 179265:27:19 179292:27:19 179319:27:19 179346:27:19 179373:27:19 179400:27:19 179427:27:19 179454:27:20 179481:27:19 179508:27:19 179535:27:19 179562:27:19 179589:27:19 179616:27:19 179643:27:19 179670:27:19 179697:27:19 179724:27:19 179751:27:19
Initial seek latency (1000 sectors): 19ms
Average read latency: 0.70ms/sector (raw speed: 18.9x)
Read latency standard deviation: 0.01ms/sector
[39:43.52]:
178777:1:19 178778:27:20 178805:27:20 178832:27:20 178859:27:20 178886:27:20 178913:27:20 178940:27:20 178967:27:732 178994:27:14 179021:27:14 179048:27:14 179075:27:14 179102:27:14 179129:27:14 179156:27:14 179183:27:14 179210:27:14 179237:27:14 179264:27:14 179291:27:14 179318:27:14 179345:27:14 179372:27:14 179399:27:14 179426:27:14 179453:27:14 179480:27:14 179507:27:14 179534:27:14 179561:27:14 179588:27:14 179615:27:14 179642:27:14 179669:27:14 179696:27:14 179723:27:14 179750:27:14
Initial seek latency (1000 sectors): 19ms
Average read latency: 1.28ms/sector (raw speed: 10.4x)
Read latency standard deviation: 4.31ms/sector
[39:43.51]:
178776:1:23 178777:27:14 178804:27:14 178831:27:14 178858:27:14 178885:27:14 178912:27:14 178939:27:14 178966:27:14 178993:27:14 179020:27:14 179047:27:14 179074:27:14 179101:27:14 179128:27:14 179155:27:14 179182:27:14 179209:27:14 179236:27:14 179263:27:14 179290:27:14 179317:27:14 179344:27:14 179371:27:14 179398:27:14 179425:27:14 179452:27:14 179479:27:14 179506:27:14 179533:27:14 179560:27:14 179587:27:14 179614:27:14 179641:27:14 179668:27:14 179695:27:14 179722:27:14 179749:27:14
Initial seek latency (1000 sectors): 23ms
Average read latency: 0.52ms/sector (raw speed: 25.7x)
Read latency standard deviation: -nanms/sector
[39:43.50]:
178775:1:231 178776:27:13 178803:27:13 178830:27:13 178857:27:13 178884:27:13 178911:27:13 178938:27:13 178965:27:13 178992:27:13 179019:27:13 179046:27:13 179073:27:13 179100:27:13 179127:27:13 179154:27:12 179181:27:12 179208:27:12 179235:27:13 179262:27:12 179289:27:12 179316:27:12 179343:27:12 179370:27:12 179397:27:12 179424:27:12 179451:27:12 179478:27:12 179505:27:12 179532:27:12 179559:27:12 179586:27:12 179613:27:12 179640:27:12 179667:27:12 179694:27:12 179721:27:12 179748:27:12
Initial seek latency (1000 sectors): 231ms
Average read latency: 0.46ms/sector (raw speed: 29.0x)
Read latency standard deviation: 0.02ms/sector
[39:43.49]:
178774:1:18 178775:27:11 178802:27:11 178829:27:11 178856:27:11 178883:27:11 178910:27:11 178937:27:11 178964:27:11 178991:27:11 179018:27:11 179045:27:11 179072:27:11 179099:27:11 179126:27:11 179153:27:11 179180:27:11 179207:27:11 179234:27:11 179261:27:11 179288:27:11 179315:27:11 179342:27:11 179369:27:11 179396:27:11 179423:27:11 179450:27:11 179477:27:11 179504:27:11 179531:27:11 179558:27:11 179585:27:11 179612:27:11 179639:27:11 179666:27:11 179693:27:11 179720:27:11 179747:27:11
Initial seek latency (1000 sectors): 18ms
Average read latency: 0.41ms/sector (raw speed: 32.7x)
Read latency standard deviation: 0.00ms/sector
[39:43.48]:
178773:1:18 178774:27:11 178801:27:11 178828:27:11 178855:27:11 178882:27:11 178909:27:941 178936:27:9 178963:27:9 178990:27:9 179017:27:9 179044:27:9 179071:27:9 179098:27:9 179125:27:9 179152:27:9 179179:27:9 179206:27:9 179233:27:9 179260:27:9 179287:27:9 179314:27:10 179341:27:9 179368:27:10 179395:27:9 179422:27:9 179449:27:9 179476:27:9 179503:27:10 179530:27:9 179557:27:9 179584:27:9 179611:27:10 179638:27:9 179665:27:9 179692:27:9 179719:27:10 179746:27:9
Initial seek latency (1000 sectors): 18ms
Average read latency: 1.28ms/sector (raw speed: 10.4x)
Read latency standard deviation: 5.60ms/sector
[39:43.47]:
178772:1:21 178773:27:10 178800:27:10 178827:27:10 178854:27:10 178881:27:9 178908:27:10 178935:27:10 178962:27:10 178989:27:10 179016:27:10 179043:27:10 179070:27:10 179097:27:10 179124:27:10 179151:27:10 179178:27:10 179205:27:10 179232:27:9 179259:27:10 179286:27:10 179313:27:10 179340:27:10 179367:27:10 179394:27:10 179421:27:10 179448:27:10 179475:27:10 179502:27:10 179529:27:10 179556:27:10 179583:27:10 179610:27:10 179637:27:10 179664:27:10 179691:27:10 179718:27:10 179745:27:9
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.3x)
Read latency standard deviation: 0.01ms/sector
[39:43.46]:
178771:1:21 178772:27:10 178799:27:9 178826:27:10 178853:27:10 178880:27:10 178907:27:10 178934:27:10 178961:27:10 178988:27:10 179015:27:10 179042:27:10 179069:27:10 179096:27:10 179123:27:10 179150:27:10 179177:27:10 179204:27:10 179231:27:10 179258:27:10 179285:27:10 179312:27:10 179339:27:10 179366:27:10 179393:27:10 179420:27:10 179447:27:10 179474:27:10 179501:27:10 179528:27:10 179555:27:10 179582:27:10 179609:27:10 179636:27:10 179663:27:10 179690:27:10 179717:27:10 179744:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.1x)
Read latency standard deviation: 0.01ms/sector
[39:43.45]:
178770:1:15 178771:27:10 178798:27:10 178825:27:10 178852:27:10 178879:27:10 178906:27:10 178933:27:10 178960:27:10 178987:27:10 179014:27:10 179041:27:10 179068:27:10 179095:27:10 179122:27:10 179149:27:10 179176:27:10 179203:27:10 179230:27:10 179257:27:10 179284:27:10 179311:27:10 179338:27:10 179365:27:10 179392:27:10 179419:27:10 179446:27:10 179473:27:10 179500:27:10 179527:27:10 179554:27:10 179581:27:10 179608:27:10 179635:27:10 179662:27:10 179689:27:10 179716:27:10 179743:27:10
Initial seek latency (1000 sectors): 15ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.44]:
178769:1:21 178770:27:10 178797:27:10 178824:27:10 178851:27:10 178878:27:10 178905:27:10 178932:27:10 178959:27:10 178986:27:10 179013:27:10 179040:27:10 179067:27:10 179094:27:10 179121:27:10 179148:27:10 179175:27:10 179202:27:10 179229:27:10 179256:27:10 179283:27:10 179310:27:10 179337:27:10 179364:27:10 179391:27:10 179418:27:10 179445:27:10 179472:27:10 179499:27:10 179526:27:10 179553:27:10 179580:27:10 179607:27:10 179634:27:10 179661:27:10 179688:27:10 179715:27:10 179742:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.43]:
178768:1:15 178769:27:10 178796:27:10 178823:27:10 178850:27:10 178877:27:10 178904:27:10 178931:27:10 178958:27:10 178985:27:10 179012:27:10 179039:27:10 179066:27:10 179093:27:10 179120:27:10 179147:27:10 179174:27:10 179201:27:10 179228:27:10 179255:27:10 179282:27:10 179309:27:10 179336:27:10 179363:27:10 179390:27:10 179417:27:10 179444:27:10 179471:27:10 179498:27:10 179525:27:10 179552:27:10 179579:27:10 179606:27:10 179633:27:10 179660:27:10 179687:27:10 179714:27:10 179741:27:10
Initial seek latency (1000 sectors): 15ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.42]:
178767:1:21 178768:27:10 178795:27:10 178822:27:10 178849:27:10 178876:27:10 178903:27:10 178930:27:10 178957:27:10 178984:27:10 179011:27:10 179038:27:10 179065:27:10 179092:27:10 179119:27:10 179146:27:10 179173:27:10 179200:27:10 179227:27:10 179254:27:10 179281:27:10 179308:27:10 179335:27:10 179362:27:10 179389:27:10 179416:27:10 179443:27:10 179470:27:10 179497:27:10 179524:27:10 179551:27:10 179578:27:10 179605:27:10 179632:27:10 179659:27:10 179686:27:10 179713:27:10 179740:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.41]:
178766:1:15 178767:27:10 178794:27:10 178821:27:10 178848:27:10 178875:27:10 178902:27:10 178929:27:10 178956:27:10 178983:27:10 179010:27:10 179037:27:10 179064:27:10 179091:27:10 179118:27:10 179145:27:10 179172:27:10 179199:27:10 179226:27:10 179253:27:10 179280:27:10 179307:27:10 179334:27:10 179361:27:10 179388:27:10 179415:27:10 179442:27:10 179469:27:10 179496:27:10 179523:27:10 179550:27:10 179577:27:10 179604:27:10 179631:27:10 179658:27:10 179685:27:10 179712:27:10 179739:27:10
Initial seek latency (1000 sectors): 15ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.40]:
178765:1:21 178766:27:10 178793:27:10 178820:27:10 178847:27:10 178874:27:10 178901:27:10 178928:27:10 178955:27:10 178982:27:10 179009:27:10 179036:27:10 179063:27:10 179090:27:10 179117:27:10 179144:27:10 179171:27:10 179198:27:10 179225:27:10 179252:27:10 179279:27:10 179306:27:10 179333:27:10 179360:27:10 179387:27:10 179414:27:10 179441:27:10 179468:27:10 179495:27:10 179522:27:10 179549:27:10 179576:27:10 179603:27:10 179630:27:10 179657:27:10 179684:27:10 179711:27:10 179738:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.39]:
178764:1:21 178765:27:10 178792:27:10 178819:27:10 178846:27:10 178873:27:10 178900:27:10 178927:27:10 178954:27:10 178981:27:10 179008:27:10 179035:27:10 179062:27:10 179089:27:10 179116:27:10 179143:27:10 179170:27:10 179197:27:10 179224:27:10 179251:27:10 179278:27:10 179305:27:10 179332:27:10 179359:27:10 179386:27:10 179413:27:10 179440:27:10 179467:27:10 179494:27:10 179521:27:10 179548:27:10 179575:27:10 179602:27:10 179629:27:10 179656:27:10 179683:27:10 179710:27:10 179737:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.38]:
178763:1:15 178764:27:10 178791:27:10 178818:27:10 178845:27:10 178872:27:10 178899:27:10 178926:27:10 178953:27:10 178980:27:10 179007:27:10 179034:27:10 179061:27:10 179088:27:10 179115:27:10 179142:27:10 179169:27:10 179196:27:10 179223:27:10 179250:27:10 179277:27:10 179304:27:10 179331:27:10 179358:27:10 179385:27:10 179412:27:10 179439:27:10 179466:27:10 179493:27:10 179520:27:10 179547:27:10 179574:27:10 179601:27:10 179628:27:10 179655:27:10 179682:27:10 179709:27:10 179736:27:10
Initial seek latency (1000 sectors): 15ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.37]:
178762:1:21 178763:27:10 178790:27:10 178817:27:10 178844:27:10 178871:27:10 178898:27:10 178925:27:10 178952:27:10 178979:27:10 179006:27:10 179033:27:10 179060:27:10 179087:27:10 179114:27:10 179141:27:10 179168:27:10 179195:27:10 179222:27:10 179249:27:10 179276:27:10 179303:27:10 179330:27:10 179357:27:10 179384:27:10 179411:27:10 179438:27:10 179465:27:10 179492:27:10 179519:27:10 179546:27:10 179573:27:10 179600:27:10 179627:27:10 179654:27:10 179681:27:10 179708:27:10 179735:27:10
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[39:43.36]:
178761:1:15 178762:27:10 178789:27:10 178816:27:10 178843:27:10 178870:27:10 178897:27:10 178924:27:10 178951:27:10 178978:27:10 179005:27:10 179032:27:10 179059:27:10 179086:27:10 179113:27:10 179140:27:10 179167:27:10 179194:27:10 179221:27:10 179248:27:10 179275:27:10 179302:27:10 179329:27:10 179356:27:10 179383:27:10 179410:27:10 179437:27:10 179464:27:10 179491:27:10 179518:27:10 179545:27:10 179572:27:10 179599:27:10 179626:27:10 179653:27:10 179680:27:10 179707:27:10 179734:27:10
Initial seek latency (1000 sectors): 15ms
Average read latency: 0.37ms/sector (raw speed: 36.0x)
Read latency standard deviation: -nanms/sector
[30:00.00]:
135000:1:21 135001:27:11 135028:27:11 135055:27:11 135082:27:11 135109:27:11 135136:27:11 135163:27:11 135190:27:11 135217:27:11 135244:27:11 135271:27:11 135298:27:11 135325:27:11 135352:27:11 135379:27:11 135406:27:11 135433:27:11 135460:27:11 135487:27:11 135514:27:11 135541:27:11 135568:27:11 135595:27:11 135622:27:11 135649:27:11 135676:27:11 135703:27:11 135730:27:11 135757:27:11 135784:27:11 135811:27:11 135838:27:11 135865:27:11 135892:27:11 135919:27:11 135946:27:11 135973:27:11
Initial seek latency (1000 sectors): 21ms
Average read latency: 0.41ms/sector (raw speed: 32.7x)
Read latency standard deviation: 0.00ms/sector
[20:00.00]:
90000:1:22 90001:27:12 90028:27:12 90055:27:12 90082:27:12 90109:27:12 90136:27:12 90163:27:12 90190:27:12 90217:27:12 90244:27:12 90271:27:12 90298:27:12 90325:27:12 90352:27:12 90379:27:12 90406:27:12 90433:27:12 90460:27:12 90487:27:12 90514:27:12 90541:27:12 90568:27:12 90595:27:12 90622:27:12 90649:27:12 90676:27:12 90703:27:12 90730:27:12 90757:27:12 90784:27:12 90811:27:12 90838:27:12 90865:27:12 90892:27:12 90919:27:12 90946:27:12 90973:27:12
Initial seek latency (1000 sectors): 22ms
Average read latency: 0.44ms/sector (raw speed: 30.0x)
Read latency standard deviation: 0.00ms/sector
[10:00.00]:
45000:1:30 45001:27:14 45028:27:14 45055:27:14 45082:27:14 45109:27:14 45136:27:14 45163:27:14 45190:27:14 45217:27:14 45244:27:14 45271:27:14 45298:27:14 45325:27:14 45352:27:14 45379:27:14 45406:27:14 45433:27:14 45460:27:14 45487:27:14 45514:27:14 45541:27:14 45568:27:14 45595:27:14 45622:27:14 45649:27:14 45676:27:14 45703:27:14 45730:27:14 45757:27:14 45784:27:14 45811:27:14 45838:27:14 45865:27:14 45892:27:14 45919:27:14 45946:27:14 45973:27:14
Initial seek latency (1000 sectors): 30ms
Average read latency: 0.52ms/sector (raw speed: 25.7x)
Read latency standard deviation: -nanms/sector
[00:00.00]:
0:1:33 1:27:19 28:27:19 55:27:19 82:27:19 109:27:19 136:27:19 163:27:19 190:27:19 217:27:19 244:27:19 271:27:19 298:27:19 325:27:19 352:27:19 379:27:19 406:27:19 433:27:19 460:27:19 487:27:19 514:27:19 541:27:19 568:27:19 595:27:19 622:27:19 649:27:19 676:27:19 703:27:19 730:27:19 757:27:19 784:27:19 811:27:19 838:27:19 865:27:19 892:27:19 919:27:19 946:27:19 973:27:19
Initial seek latency (1000 sectors): 33ms
Average read latency: 0.70ms/sector (raw speed: 18.9x)
Read latency standard deviation: -nanms/sector
Analyzing cache behavior...
Fast search for approximate cache size... 0 sectors
>>> fast_read=10:1:35 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:18
>>> fast_read=10:1:18 seek_read=10:1:364
>>> fast_read=10:1:21 seek_read=10:1:21
>>> fast_read=10:1:22 seek_read=10:1:22
>>> fast_read=10:1:22 seek_read=10:1:22
>>> fast_read=10:1:22 seek_read=10:1:22
>>> fast_read=10:1:22 seek_read=10:1:22
>>> fast_read=10:1:22 seek_read=10:1:22
Slow verify for approximate cache size... 0 sectors
Attempting to reduce read speed to 1x... drive said OK
>>> slow_read=10:1:21 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
>>> slow_read=10:1:22 seek_read=10:1:22
Drive does not cache nonlinear access
Drive tests OK with Paranoia.

View File

@@ -0,0 +1,41 @@
cdparanoia III release 10.2 (September 11, 2008)
Using cdda library version: 10.2
Using paranoia library version: 10.2
Checking /dev/cdrom for cdrom...
Testing /dev/cdrom for SCSI/MMC interface
SG_IO device: /dev/sr0
CDROM model sensed sensed: PLEXTOR DVDR PX-L890SA 1.05
Checking for SCSI emulation...
Drive is ATAPI (using SG_IO host adaptor emulation)
Checking for MMC style command set...
Drive is MMC style
DMA scatter/gather table entries: 1
table entry size: 524288 bytes
maximum theoretical transfer: 222 sectors
Setting default read size to 27 sectors (63504 bytes).
Verifying CDDA command set...
Expected command set reads OK.
Attempting to set cdrom to full speed...
drive returned OK.
=================== Checking drive cache/timing behavior ===================
Seek/read timing:
[39:43.53]: 19ms seek, 0.70ms/sec read [18.9x] spinning up...
[39:43.52]: 19ms seek, 1.28ms/sec read [10.4x] spinning up...
[39:43.51]: 23ms seek, 0.52ms/sec read [25.7x] spinning up...
[39:43.50]: 231ms seek, 0.46ms/sec read [29.0x] spinning up...
[39:43.49]: 18ms seek, 0.41ms/sec read [32.7x] spinning up...
[39:43.48]: 18ms seek, 1.28ms/sec read [10.4x] spinning up...
[39:43.47]: 21ms seek, 0.37ms/sec read [36.3x] spinning up...
[39:43.46]: 21ms seek, 0.37ms/sec read [36.1x] spinning up...
[39:43.45]: 15ms seek, 0.37ms/sec read [36.0x] spinning up...
[39:43.44]: 21ms seek, 0.37ms/sec read [36.0x] spinning up...

View File

@@ -0,0 +1,71 @@
Cdrdao version 1.2.2 - (C) Andreas Mueller <andreas@daneb.de>
SCSI interface library - (C) Joerg Schilling
Paranoia DAE library - (C) Monty
Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
Using libscg version 'schily-0.8'
/dev/cdrecorder: PLEXTOR DVDR PX-810SA Rev: 1.00
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)
Reading toc data...
Track Mode Flags Start Length
------------------------------------------------------------
1 AUDIO 0 00:00:00( 0) 03:04:64( 13864)
2 AUDIO 0 03:04:64( 13864) 04:00:57( 18057)
3 AUDIO 0 07:05:46( 31921) 03:38:61( 16411)
4 AUDIO 0 10:44:32( 48332) 02:58:51( 13401)
5 AUDIO 0 13:43:08( 61733) 04:16:28( 19228)
6 AUDIO 0 17:59:36( 80961) 04:16:58( 19258)
7 AUDIO 0 22:16:19(100219) 03:34:22( 16072)
8 AUDIO 0 25:50:41(116291) 04:25:22( 19897)
9 AUDIO 0 30:15:63(136188) 04:44:16( 21316)
10 AUDIO 0 35:00:04(157504) 03:56:71( 17771)
11 AUDIO 0 38:57:00(175275) 06:24:30( 28830)
Leadout AUDIO 0 45:21:30(204105)
PQ sub-channel reading (audio track) is supported, data format is BCD.
Raw P-W sub-channel reading (audio track) is supported.
Analyzing track 01 (AUDIO): start 00:00:00, length 03:04:64...
00:01:00
00:02:00
00:03:00
00:04:00
00:05:00
00:06:00
00:07:00
00:08:00
00:09:00
00:10:00
00:11:00
00:12:00
00:13:00
00:14:00
00:15:00
00:16:00
00:17:00
00:18:00
00:19:00
00:20:00
00:21:00
00:22:00
00:23:00
00:24:00
00:25:00
00:26:00
00:27:00
00:28:00
00:29:00
00:30:00
00:31:00
00:32:00
00:33:00
00:34:00
00:35:00
00:36:00
00:37:00
00:38:00
00:39:00
00:40:00

87
whipper/test/common.py Normal file
View File

@@ -0,0 +1,87 @@
# -*- Mode: Python -*-
# vi:si:et:sw=4:sts=4:ts=4
import re
import os
import sys
import whipper
# twisted's unittests have skip support, standard unittest don't
from twisted.trial import unittest
# lifted from flumotion
def _diff(old, new, desc):
import difflib
lines = difflib.unified_diff(old, new)
lines = list(lines)
if not lines:
return
output = ''
for line in lines:
output += '%s: %s\n' % (desc, line[:-1])
raise AssertionError(
("\nError while comparing strings:\n"
"%s") % (output.encode('utf-8'), ))
def diffStrings(orig, new, desc='input'):
assert type(orig) == type(new), 'type %s and %s are different' % (
type(orig), type(new))
def _tolines(s):
return [line + '\n' for line in s.split('\n')]
return _diff(_tolines(orig),
_tolines(new),
desc=desc)
class TestCase(unittest.TestCase):
# unittest.TestCase.failUnlessRaises does not return the exception,
# and we'd like to check for the actual exception under TaskException,
# so override the way twisted.trial.unittest does, without failure
def failUnlessRaises(self, exception, f, *args, **kwargs):
try:
result = f(*args, **kwargs)
except exception, inst:
return inst
except exception, e:
raise Exception('%s raised instead of %s:\n %s' %
(sys.exec_info()[0], exception.__name__, str(e))
)
else:
raise Exception('%s not raised (%r returned)' %
(exception.__name__, result)
)
assertRaises = failUnlessRaises
def readCue(self, name):
"""
Read a .cue file, and replace the version comment with the current
version so we can use it in comparisons.
"""
ret = open(os.path.join(os.path.dirname(__file__), name)).read(
).decode('utf-8')
ret = re.sub(
'REM COMMENT "whipper.*',
'REM COMMENT "whipper %s"' % (whipper.__version__),
ret, re.MULTILINE)
return ret
class UnicodeTestMixin:
# A helper mixin to skip tests if we're not in a UTF-8 locale
try:
os.stat(u'morituri.test.B\xeate Noire.empty')
except UnicodeEncodeError:
skip = 'No UTF-8 locale'
except OSError:
pass

55
whipper/test/cure.cue Normal file
View File

@@ -0,0 +1,55 @@
REM DISCID B90C650D
REM COMMENT "whipper 0.5.1"
CATALOG 0602517642256
FILE "data.wav" WAVE
TRACK 01 AUDIO
ISRC USUM70839873
INDEX 01 00:00:00
TRACK 02 AUDIO
ISRC USUM70839874
INDEX 00 06:16:45
INDEX 01 06:17:49
TRACK 03 AUDIO
ISRC USUM70839875
INDEX 00 10:13:02
INDEX 01 10:14:60
TRACK 04 AUDIO
ISRC USUM70839876
INDEX 00 14:50:07
INDEX 01 14:50:17
TRACK 05 AUDIO
ISRC USUM70839877
INDEX 00 17:18:42
INDEX 01 17:20:47
TRACK 06 AUDIO
ISRC USUM70839878
INDEX 00 19:43:06
INDEX 01 19:43:10
TRACK 07 AUDIO
ISRC USUM70839879
INDEX 00 24:25:07
INDEX 01 24:26:41
TRACK 08 AUDIO
ISRC USUM70839880
INDEX 00 28:56:00
INDEX 01 28:56:09
TRACK 09 AUDIO
ISRC USUM70839881
INDEX 00 32:38:11
INDEX 01 32:40:45
TRACK 10 AUDIO
ISRC USUM70839882
INDEX 00 36:01:58
INDEX 01 36:02:04
TRACK 11 AUDIO
ISRC USUM70839883
INDEX 00 40:08:30
INDEX 01 40:08:53
TRACK 12 AUDIO
ISRC USUM70839884
INDEX 00 43:59:51
INDEX 01 44:00:27
TRACK 13 AUDIO
ISRC USUM70839885
INDEX 00 48:35:63
INDEX 01 48:36:71

132
whipper/test/cure.toc Normal file
View File

@@ -0,0 +1,132 @@
CD_DA
CATALOG "0602517642256"
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839873"
FILE "data.wav" 0 06:16:45
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839874"
FILE "data.wav" 06:16:45 03:56:32
START 00:01:04
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839875"
FILE "data.wav" 10:13:02 04:37:05
START 00:01:58
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839876"
FILE "data.wav" 14:50:07 02:28:35
START 00:00:10
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839877"
FILE "data.wav" 17:18:42 02:24:39
START 00:02:05
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839878"
FILE "data.wav" 19:43:06 04:42:01
START 00:00:04
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839879"
FILE "data.wav" 24:25:07 04:30:68
START 00:01:34
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839880"
FILE "data.wav" 28:56:00 03:42:11
START 00:00:09
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839881"
FILE "data.wav" 32:38:11 03:23:47
START 00:02:34
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839882"
FILE "data.wav" 36:01:58 04:06:47
START 00:00:21
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839883"
FILE "data.wav" 40:08:30 03:51:21
START 00:00:23
// Track 12
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839884"
FILE "data.wav" 43:59:51 04:36:12
START 00:00:51
// Track 13
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70839885"
FILE "data.wav" 48:35:63 04:17:71
START 00:01:08

Binary file not shown.

Binary file not shown.

167
whipper/test/jose.toc Normal file
View File

@@ -0,0 +1,167 @@
CD_DA
CD_TEXT {
LANGUAGE_MAP {
0: 9
}
LANGUAGE 0 {
TITLE "In Our Nature"
PERFORMER "Jos\351 Gonz\341lez"
GENRE { 0, 0, 0}
SIZE_INFO { 1, 1, 10, 0, 12, 13, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 3, 28, 0, 0, 0,
0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0}
}
}
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700301"
CD_TEXT {
LANGUAGE 0 {
TITLE "How Low"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 0 02:40:01
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700302"
CD_TEXT {
LANGUAGE 0 {
TITLE "Down The Line"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 02:40:01 03:10:62
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700303"
CD_TEXT {
LANGUAGE 0 {
TITLE "Killing For Love"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 05:50:63 03:02:67
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700304"
CD_TEXT {
LANGUAGE 0 {
TITLE "In Our Nature"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 08:53:55 02:42:51
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700305"
CD_TEXT {
LANGUAGE 0 {
TITLE "Teardrop"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 11:36:31 03:20:64
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700306"
CD_TEXT {
LANGUAGE 0 {
TITLE "Abram"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 14:57:20 01:58:56
START 00:12:24
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700307"
CD_TEXT {
LANGUAGE 0 {
TITLE "Time To Send Someone Away"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 16:56:01 02:49:68
START 00:02:05
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700308"
CD_TEXT {
LANGUAGE 0 {
TITLE "The Nest"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 19:45:69 02:23:66
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700309"
CD_TEXT {
LANGUAGE 0 {
TITLE "Fold"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 22:09:60 02:54:58
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "SEVVX0700310"
CD_TEXT {
LANGUAGE 0 {
TITLE "Cycling Trivialities"
PERFORMER "Jos\351 Gonz\341lez"
}
}
FILE "data.wav" 25:04:43 08:09:16

88
whipper/test/kanye.cue Normal file
View File

@@ -0,0 +1,88 @@
REM GENRE "Hip Hop"
REM DATE 2008
REM DISCID A90D2E0D
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0602517931596
PERFORMER "Kanye West"
TITLE "808s & Heartbreak"
FILE "Kanye West - 808s & Heartbreak\Kanye West - Say You Will.wav" WAVE
TRACK 01 AUDIO
TITLE "Say You Will"
PERFORMER "Kanye West"
ISRC USUM70846386
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - Welcome To Heartbreak (Feat. Kid Cudi).wav" WAVE
TRACK 02 AUDIO
TITLE "Welcome To Heartbreak (Feat. Kid Cudi)"
PERFORMER "Kanye West"
ISRC USUM70846387
INDEX 01 00:00:00
TRACK 03 AUDIO
TITLE "Heartless"
PERFORMER "Kanye West"
ISRC USUM70840511
INDEX 00 04:22:70
FILE "Kanye West - 808s & Heartbreak\Kanye West - Heartless.wav" WAVE
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - Amazing (Feat. Young Jeezy).wav" WAVE
TRACK 04 AUDIO
TITLE "Amazing (Feat. Young Jeezy)"
PERFORMER "Kanye West"
ISRC USUM70846401
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - Love Lockdown.wav" WAVE
TRACK 05 AUDIO
TITLE "Love Lockdown"
PERFORMER "Kanye West"
ISRC USUM70837229
INDEX 01 00:00:00
TRACK 06 AUDIO
TITLE "Paranoid (Feat. Mr. Hudson)"
PERFORMER "Kanye West"
ISRC USUM70846402
INDEX 00 04:30:23
FILE "Kanye West - 808s & Heartbreak\Kanye West - Paranoid (Feat. Mr. Hudson).wav" WAVE
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - RoboCop.wav" WAVE
TRACK 07 AUDIO
TITLE "RoboCop"
PERFORMER "Kanye West"
ISRC USUM70846388
INDEX 01 00:00:00
TRACK 08 AUDIO
TITLE "Street Lights"
PERFORMER "Kanye West"
ISRC USUM70846403
INDEX 00 04:34:27
FILE "Kanye West - 808s & Heartbreak\Kanye West - Street Lights.wav" WAVE
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - Bad News.wav" WAVE
TRACK 09 AUDIO
TITLE "Bad News"
PERFORMER "Kanye West"
ISRC USUM70846389
INDEX 01 00:00:00
FILE "Kanye West - 808s & Heartbreak\Kanye West - See You In My Nightmares (Feat. Lil Wayne).wav" WAVE
TRACK 10 AUDIO
TITLE "See You In My Nightmares (Feat. Lil Wayne)"
PERFORMER "Kanye West"
ISRC USUM70846390
INDEX 01 00:00:00
TRACK 11 AUDIO
TITLE "Coldest Winter"
PERFORMER "Kanye West"
ISRC USUM70846400
INDEX 00 04:18:09
FILE "Kanye West - 808s & Heartbreak\Kanye West - Coldest Winter.wav" WAVE
INDEX 01 00:00:00
TRACK 12 AUDIO
TITLE "Pinocchio Story (Freestyle Live From Singapore)"
PERFORMER "Kanye West"
ISRC USUM70846838
INDEX 00 02:44:25
FILE "Kanye West - 808s & Heartbreak\Kanye West - Pinocchio Story (Freestyle Live From Singapore).wav" WAVE
INDEX 01 00:00:00
TRACK 13 MODEx/2xxx
TITLE "Data Track"
PERFORMER "Kanye West"
INDEX 00 06:01:45

View File

@@ -0,0 +1,61 @@
REM GENRE Alternative
REM DATE 2008
REM DISCID 9809FF0B
REM COMMENT "ExactAudioCopy v0.99pb4"
PERFORMER "Kings of Leon"
TITLE "Only By the Night"
FILE "Kings of Leon - Only By the Night\Kings of Leon - Closer.wav" WAVE
TRACK 01 AUDIO
TITLE "Closer"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Crawl.wav" WAVE
TRACK 02 AUDIO
TITLE "Crawl"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Sex On Fire.wav" WAVE
TRACK 03 AUDIO
TITLE "Sex On Fire"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Use Somebody.wav" WAVE
TRACK 04 AUDIO
TITLE "Use Somebody"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Manhattan.wav" WAVE
TRACK 05 AUDIO
TITLE "Manhattan"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Revelry.wav" WAVE
TRACK 06 AUDIO
TITLE "Revelry"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - 17.wav" WAVE
TRACK 07 AUDIO
TITLE "17"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Notion.wav" WAVE
TRACK 08 AUDIO
TITLE "Notion"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - I Want You.wav" WAVE
TRACK 09 AUDIO
TITLE "I Want You"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Be Somebody.wav" WAVE
TRACK 10 AUDIO
TITLE "Be Somebody"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00
FILE "Kings of Leon - Only By the Night\Kings of Leon - Cold Desert.wav" WAVE
TRACK 11 AUDIO
TITLE "Cold Desert"
PERFORMER "Kings of Leon"
INDEX 01 00:00:00

View File

@@ -0,0 +1,23 @@
FILE "dummy.wav" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 01 03:57:36
TRACK 03 AUDIO
INDEX 01 08:03:67
TRACK 04 AUDIO
INDEX 01 11:27:18
TRACK 05 AUDIO
INDEX 01 15:18:00
TRACK 06 AUDIO
INDEX 01 18:42:17
TRACK 07 AUDIO
INDEX 01 22:03:72
TRACK 08 AUDIO
INDEX 01 25:09:25
TRACK 09 AUDIO
INDEX 01 28:10:13
TRACK 10 AUDIO
INDEX 01 33:17:47
TRACK 11 AUDIO
INDEX 01 37:04:58

130
whipper/test/ladyhawke.toc Normal file
View File

@@ -0,0 +1,130 @@
CD_ROM_XA
CATALOG "0602517818866"
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70808708"
FILE "data.wav" 0 03:26:53
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810780"
FILE "data.wav" 03:26:53 03:35:46
START 00:00:34
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70808705"
FILE "data.wav" 07:02:24 04:15:03
START 00:00:17
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810804"
FILE "data.wav" 11:17:27 03:26:60
START 00:00:64
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810795"
FILE "data.wav" 14:44:12 03:17:34
START 00:02:04
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810805"
FILE "data.wav" 18:01:46 04:03:13
START 00:01:06
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "AUUM70800167"
FILE "data.wav" 22:04:59 03:40:53
START 00:00:50
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70808467"
FILE "data.wav" 25:45:37 03:47:38
START 00:00:08
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810807"
FILE "data.wav" 29:33:00 03:44:32
START 00:01:43
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70811315"
FILE "data.wav" 33:17:32 02:36:03
START 00:00:40
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810809"
FILE "data.wav" 35:53:35 03:34:50
START 00:00:50
// Track 12
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "GBUM70810814"
FILE "data.wav" 39:28:10 06:31:21
START 00:00:72
// Track 13
TRACK MODE2_FORM_MIX
NO COPY
ZERO MODE2_FORM_MIX 00:02:00
DATAFILE "data_13" 00:43:54 // length in bytes: 7659744
START 00:02:00

View File

@@ -0,0 +1 @@
{"release": {"status": "Official", "artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "text-representation": {"language": "eng", "script": "Latn"}, "title": "Everybody Here Wants You", "artist-credit-phrase": "Jeff Buckley", "quality": "normal", "id": "3451f29c-9bb8-4cc5-bfcc-bd50104b94f8", "medium-list": [{"disc-list": [{"id": "C6N7.QADBQ968Qr8OOjxfQlGtA8-", "sectors": "122983"}, {"id": "wbjbST2jUHRZaB1inCyxxsL7Eqc-", "sectors": "122833"}], "position": "1", "track-list": [{"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "286920", "artist-credit-phrase": "Jeff Buckley", "id": "8f8c284b-6818-4a66-a517-37dc8c04a881", "title": "Everybody Here Wants You"}, "position": "1"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "204746", "artist-credit-phrase": "Jeff Buckley", "id": "7d939d14-06a2-478e-b279-ebe20fae8b2f", "title": "Thousand Fold"}, "position": "2"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "288466", "artist-credit-phrase": "Jeff Buckley", "id": "54323c4c-e0f6-4a81-8b80-e1c0b822a3f7", "title": "Eternal Life (road version)"}, "position": "3"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "574026", "artist-credit-phrase": "Jeff Buckley", "id": "4dda67d1-8123-4545-9a78-7b4232089e96", "title": "Hallelujah (live)"}, "position": "4"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Buckley, Jeff", "id": "e6e879c0-3d56-4f12-b3c5-3ce459661a8e", "name": "Jeff Buckley"}}], "length": "284000", "artist-credit-phrase": "Jeff Buckley", "id": "5db42013-aa5c-4eb4-a549-46ca721990cf", "title": "Last Goodbye (live from Sydney)"}, "position": "5"}], "format": "CD"}]}}

View File

@@ -0,0 +1 @@
{"release": {"status": "Official", "asin": "B008R78K1Y", "label-info-list": [{"label": {"sort-name": "Brownswood Recordings", "id": "6483a614-d00f-42b0-af39-a602b3ce5daa", "name": "Brownswood Recordings"}, "catalog-number": "BWOOD090CD"}], "title": "Mala in Cuba", "country": "GB", "barcode": "5060180321505", "artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "medium-list": [{"disc-list": [{"id": "u0aKVpO.59JBy6eQRX2vYcoqQZ0-", "sectors": "257868"}], "position": "1", "track-list": [{"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "155000", "artist-credit-phrase": "Mala", "id": "3fa9c442-6ae7-4242-ae3b-0150a3002da4", "title": "Introduction"}, "position": "1"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "195626", "artist-credit-phrase": "Mala", "id": "983ad5e0-c52e-459d-8828-85718ceff2cc", "title": "Mulata"}, "position": "2"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "242826", "artist-credit-phrase": "Mala", "id": "6855abf0-32a3-4fe2-a3fb-858f3157d42b", "title": "Tribal"}, "position": "3"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "263760", "artist-credit-phrase": "Mala", "id": "2f938885-94ad-4b11-b251-f18c3a2a5fa9", "title": "Changuito"}, "position": "4"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "274520", "artist-credit-phrase": "Mala", "id": "a5ecfa15-06d0-44cf-a28e-c748e8270488", "title": "Revolution"}, "position": "5"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}, " feat. ", {"artist": {"sort-name": "Dreiser", "id": "ec07a209-55ff-4084-bc41-9d4d1764e075", "name": "Dreiser"}}, " & ", {"artist": {"sort-name": "Sexto Sentido", "id": "f626b92e-07b1-4a19-ad13-c09d690db66c", "name": "Sexto Sentido"}}], "length": "227800", "artist-credit-phrase": "Mala feat. Dreiser & Sexto Sentido", "id": "cfb3ddaf-584c-4c86-b58c-752c63977bb8", "title": "Como como"}, "position": "6"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "276693", "artist-credit-phrase": "Mala", "id": "90da8ada-21e2-4e7b-ab46-ff04004a3d84", "title": "Cuba Electronic"}, "position": "7"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "267973", "artist-credit-phrase": "Mala", "id": "2bf67b46-30f5-4746-ab91-4c9675221a21", "title": "The Tunnel"}, "position": "8"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "246000", "artist-credit-phrase": "Mala", "id": "0cd61fa9-a97a-41e3-b3c3-db36f633b611", "title": "Ghost"}, "position": "9"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "250000", "artist-credit-phrase": "Mala", "id": "136989e9-f24f-4872-9026-1487869cc8de", "title": "Curfew"}, "position": "10"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "174000", "artist-credit-phrase": "Mala", "id": "26b6fd89-7021-4239-b6a7-76eca8c0515a", "title": "The Tourist"}, "position": "11"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "270733", "artist-credit-phrase": "Mala", "id": "62f7a892-f63b-4a2b-866f-db2a36533f8c", "title": "Change"}, "position": "12"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}], "length": "251853", "artist-credit-phrase": "Mala", "id": "4395c91a-d5e9-4fe4-92d2-deee3e0ebb5a", "title": "Calle F"}, "position": "13"}, {"recording": {"artist-credit": [{"artist": {"sort-name": "Mala", "id": "09f221eb-c97e-4da5-ac22-d7ab7c555bbb", "name": "Mala"}}, " feat. ", {"artist": {"sort-name": "Suarez, Danay", "id": "82f04998-7da8-4259-aa7f-d623e6ea2b91", "name": "Danay Suarez"}}], "length": "338000", "artist-credit-phrase": "Mala feat. Danay Suarez", "id": "e47a4fd9-8359-4a33-add8-e8c690e59055", "title": "Noche sue\u00f1os"}, "position": "14"}], "format": "CD"}], "text-representation": {"language": "eng", "script": "Latn"}, "date": "2012-09-17", "artist-credit-phrase": "Mala", "quality": "normal", "id": "61c6fd9b-18f8-4a45-963a-ba3c5d990cae"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- gotten from http://www.musicbrainz.org/ws/1/release/08397059-86c1-463b-8ed0-cd596dbd174f?type=xml&inc=tracks+release-events+artist -->
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
<release type="Album Official" id="08397059-86c1-463b-8ed0-cd596dbd174f">
<title>Das Capital: The Songwriting Genius of Luke Haines and The Auteurs</title><text-representation script="Latn" language="ENG" />
<asin>B00009XG2O</asin>
<artist id="08bca401-88d5-4de7-b9c3-560a2e4c1abc">
<name>Luke Haines</name><sort-name>Haines, Luke</sort-name>
</artist>
<track-list>
<track id="38afa7d3-ddc4-4c19-a54b-1de33657417e">
<title>How Could I Be Wrong</title><duration>273800</duration>
</track>
<track id="811fb30e-5d6d-4a03-b2c7-989032039317">
<title>Showgirl</title><duration>256466</duration>
</track>
<track id="40a5b530-c65b-4ca0-9cfa-79f4f9075d38">
<title>Baader Meinhof</title><duration>183933</duration>
</track>
<track id="939ca81e-d633-47ad-a662-08705a4c8ff9">
<title>Lenny Valentino</title><duration>136133</duration>
</track>
<track id="fe713beb-362c-4fac-91a8-f212fd5e59a7">
<title>Starstruck</title><duration>212333</duration>
</track>
<track id="52f15292-2a52-41a7-a46d-fa84321c26a2">
<title>Satan Wants Me</title><duration>189666</duration>
</track>
<track id="9fd3460a-34c3-488c-82b4-9c95c6b8278d">
<title>Unsolved Child Murder</title><duration>146800</duration>
</track>
<track id="ab3aa8d7-309d-45b4-8533-2f779e3952c1">
<title>Junk Shop Clothes</title><duration>166800</duration>
</track>
<track id="12fed492-5e10-4959-af15-ddf5379e5850">
<title>The Mitford Sisters</title><duration>302960</duration>
</track>
<track id="8c773366-373d-432b-b287-8357d77958d5">
<title>Bugger Bognor</title><duration>230573</duration>
</track>
<track id="48c92b0a-3b99-4662-99b9-21649c33f3ef">
<title>Future Generation</title><duration>216266</duration>
</track>
</track-list>
<release-event-list>
<event country="GB" format="CD" date="2003-07-21" barcode="724359051727" catalog-number="CDHUT 81" />
</release-event-list>
</release>
</metadata>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
<release type="Album Official" id="93a6268c-ddf1-4898-bf93-fb862b1c5c5e">
<title>Ladyhawke</title><text-representation script="Latn" language="ENG" />
<artist id="2e547c75-36c1-49d0-984e-b14498c936f0">
<name>Ladyhawke</name><sort-name>Ladyhawke</sort-name>
</artist>
<track-list>
<track id="ad89d86b-f5c7-47f2-a97a-f2e91a05129a">
<title>Magic</title><duration>207000</duration>
</track>
<track id="05b6718a-eab1-424a-a403-54ff1ef2300f">
<title>Manipulating Woman</title><duration>215000</duration>
</track>
<track id="fc7c9e1e-c68f-41c7-a545-9bcd6b798e1e">
<title>My Delirium</title><duration>255000</duration>
</track>
<track id="2c64b152-63ad-4c91-af62-14a1633ae346">
<title>Better Than Sunday</title><duration>208000</duration>
</track>
<track id="2d85d4e3-8dc4-40e7-b8c7-b44c92d71c47">
<title>Another Runaway</title><duration>196000</duration>
</track>
<track id="a0f8fba5-7c49-43c8-8e52-1834aaa09604">
<title>Love Don't Live Here</title><duration>242000</duration>
</track>
<track id="7cf5b2b6-b39d-4357-8fba-210189f656c2">
<title>Back of the Van</title><duration>220000</duration>
</track>
<track id="0830bd0d-5ffe-40e4-93b3-c125eeff36a0">
<title>Paris Is Burning</title><duration>229000</duration>
</track>
<track id="b7b99255-f4ed-4602-96d0-0de712f37cc7">
<title>Professional Suicide</title><duration>223000</duration>
</track>
<track id="3b5d71ca-bd52-4204-bd82-7ae098f96e58">
<title>Dusk Till Dawn</title><duration>156000</duration>
</track>
<track id="1a2ab650-7084-4b2b-85bd-6d6a91593084">
<title>Crazy World</title><duration>215000</duration>
</track>
<track id="070a3ce4-5cdb-4a99-8b1c-675c02eaf236">
<title>Morning Dreams</title><duration>240000</duration>
</track>
</track-list>
<release-event-list>
<event country="AU" format="CD" date="2008-09-20" barcode="00602517801974" catalog-number="MODCD093" />
</release-event-list>
</release>
</metadata>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- gotten from get "http://www.musicbrainz.org/ws/1/release/c7d919f4-3ea0-4c4b-a230-b3605f069440?type=xml&inc=tracks+release-events+artist"
-->
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" >
<release type="Album Official" id="c7d919f4-3ea0-4c4b-a230-b3605f069440">
<title>Lamprey</title><text-representation script="Latn" language="ENG" />
<asin>B00000581T</asin>
<artist id="89e4aade-fc77-4a18-8d0c-3554cc9b8c54">
<name>Bettie Serveert</name><sort-name>Bettie Serveert</sort-name>
</artist>
<track-list>
<track id="a89c2320-1eae-4f2d-8b0e-6dfac4ae1451">
<title>Keepsake</title><duration>378693</duration>
</track>
<track id="730df656-f504-4866-b5d0-c59ee01524a3">
<title>Ray Ray Rain</title><duration>262106</duration>
</track>
<track id="62ff731e-3cec-4f7c-a614-72adb062fd6c">
<title>D. Feathers</title><duration>332626</duration>
</track>
<track id="e2702c6e-1dae-4a5d-ab16-aed1be105f94">
<title>Re-Feel-It</title><duration>238240</duration>
</track>
<track id="8bc5865e-6286-4cf2-83c8-94061cf4e25f">
<title>21 Days</title><duration>203826</duration>
</track>
<track id="484f7bc6-51bd-44dd-bac6-b8218602d3f0">
<title>Cybor*D</title><duration>241800</duration>
</track>
<track id="e0f2ce29-392e-499d-8ff9-f573e01fb3dc">
<title>Tell Me, Sad</title><duration>318333</duration>
</track>
<track id="a6d4d047-fef8-41f8-88c0-ed077de875a8">
<title>Crutches</title><duration>292373</duration>
</track>
<track id="8a05d376-b09f-4f92-b0d4-10cf177df0f3">
<title>Something So Wild</title><duration>171466</duration>
</track>
<track id="8b3402bd-aa83-4c01-961b-8fd01cf47228">
<title>Totally Freaked Out</title><duration>250893</duration>
</track>
<track id="b5628295-f5be-438e-ae89-6213666fd552">
<title>Silent Spring</title><duration>272533</duration>
</track>
</track-list>
<release-event-list>
<event country="US" format="CD" date="1995-04-16" barcode="075679250421" catalog-number="OLE-121-2" />
</release-event-list>
</release>
</metadata>

View File

@@ -0,0 +1,408 @@
(lp0
(iwhipper.result.result
TrackResult
p1
(dp2
S'testcrc'
p3
L133637600L
sS'peak'
p4
F0.651947021484375
sS'copycrc'
p5
L133637600L
sS'quality'
p6
F1.0
sS'number'
p7
I0
sS'filename'
p8
V/home/thomas/Bloc Party - Silent Alarm/00. Bloc Party - Hidden Track One Audio.flac
p9
sba(iwhipper.result.result
TrackResult
p10
(dp11
S'ARCRC'
p12
L1726732487L
sg3
L1476997036L
sS'ARDBConfidence'
p13
I66
sg7
I1
sS'ARDBMaxConfidence'
p14
I66
sS'ARDBCRC'
p15
I1726732487
sg4
F0.99993896484375
sg6
F1.0
sS'accurip'
p16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/01. Bloc Party - Like Eating Glass.flac
p17
sS'pregap'
p18
I15220
sg5
L1476997036L
sba(iwhipper.result.result
TrackResult
p19
(dp20
g12
L3896378645L
sg3
L2118180996L
sg13
I65
sg7
I2
sg14
I65
sg15
L3896378645L
sg4
F0.99908447265625
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/02. Bloc Party - Helicopter.flac
p21
sg18
I0
sg5
L2118180996L
sba(iwhipper.result.result
TrackResult
p22
(dp23
g12
L1246554911L
sg3
L2397618238L
sg13
I66
sg7
I3
sg14
I66
sg15
I1246554911
sg4
F0.999969482421875
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/03. Bloc Party - Positive Tension.flac
p24
sg18
I0
sg5
L2397618238L
sba(iwhipper.result.result
TrackResult
p25
(dp26
g12
L175751014L
sg3
L1340624205L
sg13
I65
sg7
I4
sg14
I65
sg15
I175751014
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/04. Bloc Party - Banquet.flac
p27
sg18
I0
sg5
L1340624205L
sba(iwhipper.result.result
TrackResult
p28
(dp29
g12
L3375033750L
sg3
L183201985L
sg13
I66
sg7
I5
sg14
I66
sg15
L3375033750L
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/05. Bloc Party - Blue Light.flac
p30
sg18
I72
sg5
L183201985L
sba(iwhipper.result.result
TrackResult
p31
(dp32
g12
L3357757503L
sg3
L221401921L
sg13
I66
sg7
I6
sg14
I66
sg15
L3357757503L
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/06. Bloc Party - She's Hearing Voices.flac
p33
sg18
I41
sg5
L221401921L
sba(iwhipper.result.result
TrackResult
p34
(dp35
g12
L3964329421L
sg3
L3133726276L
sg13
I65
sg7
I7
sg14
I65
sg15
L3964329421L
sg4
F0.999969482421875
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/07. Bloc Party - This Modern Love.flac
p36
sg18
I17
sg5
L3133726276L
sba(iwhipper.result.result
TrackResult
p37
(dp38
g12
L1808393808L
sg3
L2318646110L
sg13
I66
sg7
I8
sg14
I66
sg15
I1808393808
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/08. Bloc Party - The Pioneers.flac
p39
sg18
I4
sg5
L2318646110L
sba(iwhipper.result.result
TrackResult
p40
(dp41
g12
L4144642428L
sg3
L3145161267L
sg13
I66
sg7
I9
sg14
I66
sg15
L4144642428L
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/09. Bloc Party - Price of Gasoline.flac
p42
sg18
I11
sg5
L3145161267L
sba(iwhipper.result.result
TrackResult
p43
(dp44
g12
L4287362638L
sg3
L3022257630L
sg13
I65
sg7
I10
sg14
I65
sg15
L4287362638L
sg4
F0.9990234375
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/10. Bloc Party - So Here We Are.flac
p45
sg18
I0
sg5
L3022257630L
sba(iwhipper.result.result
TrackResult
p46
(dp47
g12
L4127263616L
sg3
L2011827324L
sg13
I65
sg7
I11
sg14
I65
sg15
L4127263616L
sg4
F0.999481201171875
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/11. Bloc Party - Luno.flac
p48
sg18
I43
sg5
L2011827324L
sba(iwhipper.result.result
TrackResult
p49
(dp50
g12
L2559991386L
sg3
L933582879L
sg13
I65
sg7
I12
sg14
I65
sg15
L2559991386L
sg4
F0.999969482421875
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/12. Bloc Party - Plans.flac
p51
sg18
I116
sg5
L933582879L
sba(iwhipper.result.result
TrackResult
p52
(dp53
g12
L2915053507L
sg3
L1187281525L
sg13
I66
sg7
I13
sg14
I66
sg15
L2915053507L
sg4
F0.999969482421875
sg6
F1.0
sg16
I01
sg8
V/home/thomas/Bloc Party - Silent Alarm/13. Bloc Party - Compliments.flac
p54
sg18
I22
sg5
L1187281525L
sba.

View File

@@ -0,0 +1,13 @@
REM GENRE "Alternative Rock"
REM DATE 2001
REM DISCID 0200BA01
REM COMMENT "ExactAudioCopy v0.99pb4"
PERFORMER "The Strokes"
TITLE "Someday"
FILE "The Strokes - Someday\01 - The Strokes - Someday.wav" WAVE
TRACK 01 AUDIO
TITLE "Someday"
PERFORMER "The Strokes"
FLAGS DCP
PREGAP 00:00:01
INDEX 01 00:00:00

View File

@@ -0,0 +1,12 @@
CD_DA
// Track 1
TRACK AUDIO
COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
SILENCE 00:00:01
FILE "data.wav" 0 03:06:59
START 00:00:01

View File

@@ -0,0 +1,136 @@
REM GENRE Alternative
REM DATE 1987
REM DISCID 350CAA15
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Pixies"
TITLE "Surfer Rosa & Come on Pilgrim"
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
TRACK 01 AUDIO
TITLE "Bone Machine"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 00:00:00
INDEX 01 00:00:32
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
TRACK 02 AUDIO
TITLE "Break My Body"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
TRACK 03 AUDIO
TITLE "Something Against You"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 00:00:00
INDEX 01 00:00:45
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
TRACK 04 AUDIO
TITLE "Broken Face"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
TRACK 05 AUDIO
TITLE "Gigantic"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
TRACK 06 AUDIO
TITLE "River Euphrates"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
TRACK 07 AUDIO
TITLE "Where Is My Mind?"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
TRACK 08 AUDIO
TITLE "Cactus"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
TRACK 09 AUDIO
TITLE "Tony's Theme"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
TRACK 10 AUDIO
TITLE "Oh My Golly!"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
TRACK 11 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
INDEX 02 00:44:70
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
TRACK 12 AUDIO
TITLE "I'm Amazed"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
TRACK 13 AUDIO
TITLE "Brick is Red"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
TRACK 14 AUDIO
TITLE "Caribou"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
TRACK 15 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
TRACK 16 AUDIO
TITLE "Isla de Encanta"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
TRACK 17 AUDIO
TITLE "Ed is Dead"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
TRACK 18 AUDIO
TITLE "The Holyday Song"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
TRACK 19 AUDIO
TITLE "Nimrod's Son"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
TRACK 20 AUDIO
TITLE "I've Been Tired"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
TRACK 21 AUDIO
TITLE "Levitate Me"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00

View File

@@ -0,0 +1,136 @@
REM GENRE Alternative
REM DATE 1987
REM DISCID 350CAA15
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Pixies"
TITLE "Surfer Rosa & Come on Pilgrim"
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
TRACK 01 AUDIO
TITLE "Bone Machine"
PERFORMER "Pixies"
ISRC 000000000000
PREGAP 00:00:32
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
TRACK 02 AUDIO
TITLE "Break My Body"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
TRACK 03 AUDIO
TITLE "Something Against You"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 02:05:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
TRACK 04 AUDIO
TITLE "Broken Face"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
TRACK 05 AUDIO
TITLE "Gigantic"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
TRACK 06 AUDIO
TITLE "River Euphrates"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
TRACK 07 AUDIO
TITLE "Where Is My Mind?"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
TRACK 08 AUDIO
TITLE "Cactus"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
TRACK 09 AUDIO
TITLE "Tony's Theme"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
TRACK 10 AUDIO
TITLE "Oh My Golly!"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
TRACK 11 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
INDEX 02 00:44:70
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
TRACK 12 AUDIO
TITLE "I'm Amazed"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
TRACK 13 AUDIO
TITLE "Brick is Red"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
TRACK 14 AUDIO
TITLE "Caribou"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
TRACK 15 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
TRACK 16 AUDIO
TITLE "Isla de Encanta"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
TRACK 17 AUDIO
TITLE "Ed is Dead"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
TRACK 18 AUDIO
TITLE "The Holyday Song"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
TRACK 19 AUDIO
TITLE "Nimrod's Son"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
TRACK 20 AUDIO
TITLE "I've Been Tired"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
TRACK 21 AUDIO
TITLE "Levitate Me"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00

View File

@@ -0,0 +1,136 @@
REM GENRE Alternative
REM DATE 1987
REM DISCID 350CAA15
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Pixies"
TITLE "Surfer Rosa & Come on Pilgrim"
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
TRACK 01 AUDIO
TITLE "Bone Machine"
PERFORMER "Pixies"
ISRC 000000000000
PREGAP 00:00:32
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
TRACK 02 AUDIO
TITLE "Break My Body"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
TRACK 03 AUDIO
TITLE "Something Against You"
PERFORMER "Pixies"
ISRC 000000000000
PREGAP 00:00:45
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
TRACK 04 AUDIO
TITLE "Broken Face"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
TRACK 05 AUDIO
TITLE "Gigantic"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
TRACK 06 AUDIO
TITLE "River Euphrates"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
TRACK 07 AUDIO
TITLE "Where Is My Mind?"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
TRACK 08 AUDIO
TITLE "Cactus"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
TRACK 09 AUDIO
TITLE "Tony's Theme"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
TRACK 10 AUDIO
TITLE "Oh My Golly!"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
TRACK 11 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
INDEX 02 00:44:70
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
TRACK 12 AUDIO
TITLE "I'm Amazed"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
TRACK 13 AUDIO
TITLE "Brick is Red"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
TRACK 14 AUDIO
TITLE "Caribou"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
TRACK 15 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
TRACK 16 AUDIO
TITLE "Isla de Encanta"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
TRACK 17 AUDIO
TITLE "Ed is Dead"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
TRACK 18 AUDIO
TITLE "The Holyday Song"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
TRACK 19 AUDIO
TITLE "Nimrod's Son"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
TRACK 20 AUDIO
TITLE "I've Been Tired"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
TRACK 21 AUDIO
TITLE "Levitate Me"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00

View File

@@ -0,0 +1,136 @@
REM GENRE Alternative
REM DATE 1987
REM DISCID 350CAA15
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Pixies"
TITLE "Surfer Rosa & Come on Pilgrim"
FILE "Pixies - Surfer Rosa & Come on Pilgrim\01 - Pixies - Bone Machine.wav" WAVE
TRACK 01 AUDIO
TITLE "Bone Machine"
PERFORMER "Pixies"
ISRC 000000000000
PREGAP 00:00:32
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\02 - Pixies - Break My Body.wav" WAVE
TRACK 02 AUDIO
TITLE "Break My Body"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
TRACK 03 AUDIO
TITLE "Something Against You"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 02:05:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\03 - Pixies - Something Against You.wav" WAVE
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\04 - Pixies - Broken Face.wav" WAVE
TRACK 04 AUDIO
TITLE "Broken Face"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\05 - Pixies - Gigantic.wav" WAVE
TRACK 05 AUDIO
TITLE "Gigantic"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\06 - Pixies - River Euphrates.wav" WAVE
TRACK 06 AUDIO
TITLE "River Euphrates"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\07 - Pixies - Where Is My Mind .wav" WAVE
TRACK 07 AUDIO
TITLE "Where Is My Mind?"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\08 - Pixies - Cactus.wav" WAVE
TRACK 08 AUDIO
TITLE "Cactus"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\09 - Pixies - Tony's Theme.wav" WAVE
TRACK 09 AUDIO
TITLE "Tony's Theme"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\10 - Pixies - Oh My Golly!.wav" WAVE
TRACK 10 AUDIO
TITLE "Oh My Golly!"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\11 - Pixies - Vamos.wav" WAVE
TRACK 11 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
INDEX 02 00:44:70
FILE "Pixies - Surfer Rosa & Come on Pilgrim\12 - Pixies - I'm Amazed.wav" WAVE
TRACK 12 AUDIO
TITLE "I'm Amazed"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\13 - Pixies - Brick is Red.wav" WAVE
TRACK 13 AUDIO
TITLE "Brick is Red"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\14 - Pixies - Caribou.wav" WAVE
TRACK 14 AUDIO
TITLE "Caribou"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\15 - Pixies - Vamos.wav" WAVE
TRACK 15 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\16 - Pixies - Isla de Encanta.wav" WAVE
TRACK 16 AUDIO
TITLE "Isla de Encanta"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\17 - Pixies - Ed is Dead.wav" WAVE
TRACK 17 AUDIO
TITLE "Ed is Dead"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\18 - Pixies - The Holyday Song.wav" WAVE
TRACK 18 AUDIO
TITLE "The Holyday Song"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\19 - Pixies - Nimrod's Son.wav" WAVE
TRACK 19 AUDIO
TITLE "Nimrod's Son"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\20 - Pixies - I've Been Tired.wav" WAVE
TRACK 20 AUDIO
TITLE "I've Been Tired"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00
FILE "Pixies - Surfer Rosa & Come on Pilgrim\21 - Pixies - Levitate Me.wav" WAVE
TRACK 21 AUDIO
TITLE "Levitate Me"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 00:00:00

View File

@@ -0,0 +1,116 @@
REM GENRE Alternative
REM DATE 1987
REM DISCID 350CAA15
REM COMMENT "ExactAudioCopy v0.99pb4"
CATALOG 0000000000000
PERFORMER "Pixies"
TITLE "Surfer Rosa & Come on Pilgrim"
FILE "Range.wav" WAVE
TRACK 01 AUDIO
TITLE "Bone Machine"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 00:00:00
INDEX 01 00:00:32
TRACK 02 AUDIO
TITLE "Break My Body"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 03:03:42
TRACK 03 AUDIO
TITLE "Something Against You"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 00 05:08:42
INDEX 01 05:09:12
TRACK 04 AUDIO
TITLE "Broken Face"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 06:56:67
TRACK 05 AUDIO
TITLE "Gigantic"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 08:27:00
TRACK 06 AUDIO
TITLE "River Euphrates"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 12:21:70
TRACK 07 AUDIO
TITLE "Where Is My Mind?"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 14:53:60
TRACK 08 AUDIO
TITLE "Cactus"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 18:47:15
TRACK 09 AUDIO
TITLE "Tony's Theme"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 21:03:70
TRACK 10 AUDIO
TITLE "Oh My Golly!"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 22:56:15
TRACK 11 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 24:43:32
INDEX 02 25:28:27
TRACK 12 AUDIO
TITLE "I'm Amazed"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 29:49:20
TRACK 13 AUDIO
TITLE "Brick is Red"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 31:31:27
TRACK 14 AUDIO
TITLE "Caribou"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 33:32:20
TRACK 15 AUDIO
TITLE "Vamos"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 36:46:45
TRACK 16 AUDIO
TITLE "Isla de Encanta"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 39:40:22
TRACK 17 AUDIO
TITLE "Ed is Dead"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 41:21:47
TRACK 18 AUDIO
TITLE "The Holyday Song"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 43:51:47
TRACK 19 AUDIO
TITLE "Nimrod's Son"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 46:06:10
TRACK 20 AUDIO
TITLE "I've Been Tired"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 48:23:25
TRACK 21 AUDIO
TITLE "Levitate Me"
PERFORMER "Pixies"
ISRC 000000000000
INDEX 01 51:24:07

196
whipper/test/surferrosa.toc Normal file
View File

@@ -0,0 +1,196 @@
CD_DA
CATALOG "0000000000000"
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
SILENCE 00:00:32
FILE "data.wav" 0 03:03:10
START 00:00:32
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 03:03:10 02:05:00
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 05:08:10 01:48:25
START 00:00:45
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 06:56:35 01:30:08
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 08:26:43 03:54:70
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 12:21:38 02:31:65
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 14:53:28 03:53:30
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 18:46:58 02:16:55
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 21:03:38 01:52:20
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 22:55:58 01:47:17
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 24:43:00 05:05:63
INDEX 00:44:70
// Track 12
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 29:48:63 01:42:07
// Track 13
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 31:30:70 02:00:68
// Track 14
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 33:31:63 03:14:25
// Track 15
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 36:46:13 02:53:52
// Track 16
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 39:39:65 01:41:25
// Track 17
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 41:21:15 02:30:00
// Track 18
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 43:51:15 02:14:38
// Track 19
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 46:05:53 02:17:15
// Track 20
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 48:22:68 03:00:57
// Track 21
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "000000000000"
FILE "data.wav" 51:23:50 02:38:38

View File

@@ -0,0 +1,32 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_accurip -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
from whipper.common import accurip
from whipper.test import common as tcommon
class AccurateRipResponseTestCase(tcommon.TestCase):
def testResponse(self):
path = os.path.join(os.path.dirname(__file__),
'dBAR-011-0010e284-009228a3-9809ff0b.bin')
data = open(path, "rb").read()
responses = accurip.getAccurateRipResponses(data)
self.assertEquals(len(responses), 3)
response = responses[0]
self.assertEquals(response.trackCount, 11)
self.assertEquals(response.discId1, "0010e284")
self.assertEquals(response.discId2, "009228a3")
self.assertEquals(response.cddbDiscId, "9809ff0b")
for i in range(11):
self.assertEquals(response.confidences[i], 35)
self.assertEquals(response.checksums[0], "beea32c8")
self.assertEquals(response.checksums[10], "acee98ca")

View File

@@ -0,0 +1,23 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_cache -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
from whipper.common import cache
from whipper.test import common as tcommon
class ResultCacheTestCase(tcommon.TestCase):
def setUp(self):
self.cache = cache.ResultCache(
os.path.join(os.path.dirname(__file__), 'cache', 'result'))
def testGetResult(self):
result = self.cache.getRipResult('fe105a11')
self.assertEquals(result.object.title, "The Writing's on the Wall")
def testGetIds(self):
ids = self.cache.getIds()
self.assertEquals(ids, ['fe105a11'])

View File

@@ -0,0 +1,67 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_common -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import tempfile
from whipper.common import common
from whipper.test import common as tcommon
class ShrinkTestCase(tcommon.TestCase):
def testSufjan(self):
path = (u'morituri/Sufjan Stevens - Illinois/02. Sufjan Stevens - '
'The Black Hawk War, or, How to Demolish an Entire '
'Civilization and Still Feel Good About Yourself in the '
'Morning, or, We Apologize for the Inconvenience but '
'You\'re Going to Have to Leave Now, or, "I Have Fought '
'the Big Knives and Will Continue to Fight Them Until They '
'Are Off Our Lands!".flac')
shorter = common.shrinkPath(path)
self.failUnless(os.path.splitext(path)[0].startswith(
os.path.splitext(shorter)[0]))
self.failIfEquals(path, shorter)
class FramesTestCase(tcommon.TestCase):
def testFrames(self):
self.assertEquals(common.framesToHMSF(123456), '00:27:26.06')
class FormatTimeTestCase(tcommon.TestCase):
def testFormatTime(self):
self.assertEquals(common.formatTime(7202), '02:00:02.000')
class GetRelativePathTestCase(tcommon.TestCase):
def testRelativeOutputDirectory(self):
directory = '.Placebo - Black Market Music (2000)'
cue = './' + directory + '/Placebo - Black Market Music (2000)'
track = './' + directory + '/01. Placebo - Taste in Men.flac'
self.assertEquals(common.getRelativePath(track, cue),
'01. Placebo - Taste in Men.flac')
class GetRealPathTestCase(tcommon.TestCase):
def testRealWithBackslash(self):
fd, path = tempfile.mkstemp(suffix=u'back\\slash.flac')
refPath = os.path.join(os.path.dirname(path), 'fake.cue')
self.assertEquals(common.getRealPath(refPath, path),
path)
# same path, but with wav extension, will point to flac file
wavPath = path[:-4] + 'wav'
self.assertEquals(common.getRealPath(refPath, wavPath),
path)
os.close(fd)
os.unlink(path)

View File

@@ -0,0 +1,68 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_config -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import tempfile
from whipper.common import config
from whipper.test import common as tcommon
class ConfigTestCase(tcommon.TestCase):
def setUp(self):
fd, self._path = tempfile.mkstemp(suffix=u'.morituri.test.config')
os.close(fd)
self._config = config.Config(self._path)
def tearDown(self):
os.unlink(self._path)
def testAddReadOffset(self):
self.assertRaises(KeyError,
self._config.getReadOffset, 'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
self._config.setReadOffset('PLEXTOR ', 'DVDR PX-L890SA', '1.05', 6)
# getting it from memory should work
offset = self._config.getReadOffset('PLEXTOR ', 'DVDR PX-L890SA',
'1.05')
self.assertEquals(offset, 6)
# and so should getting it after reading it again
self._config.open()
offset = self._config.getReadOffset('PLEXTOR ', 'DVDR PX-L890SA',
'1.05')
self.assertEquals(offset, 6)
def testAddReadOffsetSpaced(self):
self.assertRaises(KeyError,
self._config.getReadOffset, 'Slimtype', 'eSAU208 2 ', 'ML03')
self._config.setReadOffset('Slimtype', 'eSAU208 2 ', 'ML03', 6)
# getting it from memory should work
offset = self._config.getReadOffset(
'Slimtype', 'eSAU208 2 ', 'ML03')
self.assertEquals(offset, 6)
# and so should getting it after reading it again
self._config.open()
offset = self._config.getReadOffset(
'Slimtype', 'eSAU208 2 ', 'ML03')
self.assertEquals(offset, 6)
def testDefeatsCache(self):
self.assertRaises(KeyError, self._config.getDefeatsCache,
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
self._config.setDefeatsCache(
'PLEXTOR ', 'DVDR PX-L890SA', '1.05', False)
defeats = self._config.getDefeatsCache(
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
self.assertEquals(defeats, False)
self._config.setDefeatsCache(
'PLEXTOR ', 'DVDR PX-L890SA', '1.05', True)
defeats = self._config.getDefeatsCache(
'PLEXTOR ', 'DVDR PX-L890SA', '1.05')
self.assertEquals(defeats, True)

View File

@@ -0,0 +1,16 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_directory -*-
# vi:si:et:sw=4:sts=4:ts=4
from whipper.common import directory
from whipper.test import common
class DirectoryTestCase(common.TestCase):
def testAll(self):
path = directory.config_path()
self.failUnless(path.startswith('/home'))
path = directory.cache_path()
self.failUnless(path.startswith('/home'))

View File

@@ -0,0 +1,16 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_drive -*-
# vi:si:et:sw=4:sts=4:ts=4
from whipper.test import common
from whipper.common import drive
class ListifyTestCase(common.TestCase):
def testString(self):
string = '/dev/sr0'
self.assertEquals(drive._listify(string), [string, ])
def testList(self):
lst = ['/dev/scd0', '/dev/sr0']
self.assertEquals(drive._listify(lst), lst)

View File

@@ -0,0 +1,118 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_mbngs -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import json
import unittest
from whipper.common import mbngs
class MetadataTestCase(unittest.TestCase):
# Generated with rip -R cd info
def testJeffEverybodySingle(self):
path = os.path.join(os.path.dirname(__file__),
'morituri.release.3451f29c-9bb8-4cc5-bfcc-bd50104b94f8.json')
handle = open(path, "rb")
response = json.loads(handle.read())
handle.close()
discid = "wbjbST2jUHRZaB1inCyxxsL7Eqc-"
metadata = mbngs._getMetadata({}, response['release'], discid)
self.failIf(metadata.release)
def test2MeterSessies10(self):
# various artists, multiple artists per track
path = os.path.join(os.path.dirname(__file__),
'morituri.release.a76714e0-32b1-4ed4-b28e-f86d99642193.json')
handle = open(path, "rb")
response = json.loads(handle.read())
handle.close()
discid = "f7XO36a7n1LCCskkCiulReWbwZA-"
metadata = mbngs._getMetadata({}, response['release'], discid)
self.assertEquals(metadata.artist, u'Various Artists')
self.assertEquals(metadata.release, u'2001-10-15')
self.assertEquals(metadata.mbidArtist,
u'89ad4ac3-39f7-470e-963a-56509c546377')
self.assertEquals(len(metadata.tracks), 18)
track16 = metadata.tracks[15]
self.assertEquals(track16.artist, 'Tom Jones & Stereophonics')
self.assertEquals(track16.mbidArtist,
u'57c6f649-6cde-48a7-8114-2a200247601a'
';0bfba3d3-6a04-4779-bb0a-df07df5b0558'
)
self.assertEquals(track16.sortName,
u'Jones, Tom & Stereophonics')
def testBalladOfTheBrokenSeas(self):
# various artists disc
path = os.path.join(os.path.dirname(__file__),
'morituri.release.e32ae79a-336e-4d33-945c-8c5e8206dbd3.json')
handle = open(path, "rb")
response = json.loads(handle.read())
handle.close()
discid = "xAq8L4ELMW14.6wI6tt7QAcxiDI-"
metadata = mbngs._getMetadata({}, response['release'], discid)
self.assertEquals(metadata.artist, u'Isobel Campbell & Mark Lanegan')
self.assertEquals(metadata.sortName,
u'Campbell, Isobel & Lanegan, Mark')
self.assertEquals(metadata.release, u'2006-01-30')
self.assertEquals(metadata.mbidArtist,
u'd51f3a15-12a2-41a0-acfa-33b5eae71164;'
'a9126556-f555-4920-9617-6e013f8228a7')
self.assertEquals(len(metadata.tracks), 12)
track12 = metadata.tracks[11]
self.assertEquals(track12.artist, u'Isobel Campbell & Mark Lanegan')
self.assertEquals(track12.sortName,
u'Campbell, Isobel'
' & Lanegan, Mark'
)
self.assertEquals(track12.mbidArtist,
u'd51f3a15-12a2-41a0-acfa-33b5eae71164;'
'a9126556-f555-4920-9617-6e013f8228a7')
def testMalaInCuba(self):
# single artist disc, but with multiple artists tracks
# see https://github.com/thomasvs/morituri/issues/19
path = os.path.join(os.path.dirname(__file__),
'morituri.release.61c6fd9b-18f8-4a45-963a-ba3c5d990cae.json')
handle = open(path, "rb")
response = json.loads(handle.read())
handle.close()
discid = "u0aKVpO.59JBy6eQRX2vYcoqQZ0-"
metadata = mbngs._getMetadata({}, response['release'], discid)
self.assertEquals(metadata.artist, u'Mala')
self.assertEquals(metadata.sortName, u'Mala')
self.assertEquals(metadata.release, u'2012-09-17')
self.assertEquals(metadata.mbidArtist,
u'09f221eb-c97e-4da5-ac22-d7ab7c555bbb')
self.assertEquals(len(metadata.tracks), 14)
track6 = metadata.tracks[5]
self.assertEquals(track6.artist, u'Mala feat. Dreiser & Sexto Sentido')
self.assertEquals(track6.sortName,
u'Mala feat. Dreiser & Sexto Sentido')
self.assertEquals(track6.mbidArtist,
u'09f221eb-c97e-4da5-ac22-d7ab7c555bbb'
';ec07a209-55ff-4084-bc41-9d4d1764e075'
';f626b92e-07b1-4a19-ad13-c09d690db66c'
)

View File

@@ -0,0 +1,30 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_path -*-
# vi:si:et:sw=4:sts=4:ts=4
from whipper.common import path
from whipper.test import common
class FilterTestCase(common.TestCase):
def setUp(self):
self._filter = path.PathFilter(special=True)
def testSlash(self):
part = u'A Charm/A Blade'
self.assertEquals(self._filter.filter(part), u'A Charm-A Blade')
def testFat(self):
part = u'A Word: F**k you?'
self.assertEquals(self._filter.filter(part), u'A Word - F__k you_')
def testSpecial(self):
part = u'<<< $&*!\' "()`{}[]spaceship>>>'
self.assertEquals(self._filter.filter(part),
u'___ _____ ________spaceship___')
def testGreatest(self):
part = u'Greatest Ever! Soul: The Definitive Collection'
self.assertEquals(self._filter.filter(part),
u'Greatest Ever_ Soul - The Definitive Collection')

View File

@@ -0,0 +1,118 @@
# -*- Mode: Python; test-case-name: whipper.test.test_common_program -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import pickle
import unittest
from whipper.result import result
from whipper.common import program, accurip, mbngs, config
from whipper.command.cd import DEFAULT_DISC_TEMPLATE
class TrackImageVerifyTestCase(unittest.TestCase):
# example taken from a rip of Luke Haines Is Dead, disc 1
# AccurateRip database has 0 confidence for 1st track
# Rip had a wrong result for track 9
def testVerify(self):
path = os.path.join(os.path.dirname(__file__),
'dBAR-020-002e5023-029d8e49-040eaa14.bin')
data = open(path, "rb").read()
responses = accurip.getAccurateRipResponses(data)
# these crc's were calculated from an actual rip
checksums = [1644890007, 2945205445, 3983436658, 1528082495,
1203704270, 1163423644, 3649097244, 100524219, 1583356174, 373652058,
1842579359, 2850056507, 1329730252, 2526965856, 2525886806, 209743350,
3184062337, 2099956663, 2943874164, 2321637196]
prog = program.Program(config.Config())
prog.result = result.RipResult()
# fill it with empty trackresults
for i, c in enumerate(checksums):
r = result.TrackResult()
r.number = i + 1
prog.result.tracks.append(r)
prog._verifyImageWithChecksums(responses, checksums)
# now check if the results were filled in properly
tr = prog.result.getTrackResult(1)
self.assertEquals(tr.accurip, False)
self.assertEquals(tr.ARDBMaxConfidence, 0)
self.assertEquals(tr.ARDBCRC, 0)
self.assertEquals(tr.ARDBCRC, 0)
tr = prog.result.getTrackResult(2)
self.assertEquals(tr.accurip, True)
self.assertEquals(tr.ARDBMaxConfidence, 2)
self.assertEquals(tr.ARDBCRC, checksums[2 - 1])
tr = prog.result.getTrackResult(10)
self.assertEquals(tr.accurip, False)
self.assertEquals(tr.ARDBMaxConfidence, 2)
# we know track 10 was ripped wrong
self.assertNotEquals(tr.ARDBCRC, checksums[10 - 1])
res = prog.getAccurateRipResults()
self.assertEquals(res[1 - 1],
"Track 1: rip NOT accurate (not found) "
"[620b0797], DB [notfound]")
self.assertEquals(res[2 - 1],
"Track 2: rip accurate (max confidence 2) "
"[af8c44c5], DB [af8c44c5]")
self.assertEquals(res[10 - 1],
"Track 10: rip NOT accurate (max confidence 2) "
"[16457a5a], DB [eb6e55b4]")
class HTOATestCase(unittest.TestCase):
def setUp(self):
path = os.path.join(os.path.dirname(__file__),
'silentalarm.result.pickle')
self._tracks = pickle.load(open(path, 'rb'))
def testGetAccurateRipResults(self):
prog = program.Program(config.Config())
prog.result = result.RipResult()
prog.result.tracks = self._tracks
prog.getAccurateRipResults()
class PathTestCase(unittest.TestCase):
def testStandardTemplateEmpty(self):
prog = program.Program(config.Config())
path = prog.getPath(u'/tmp', DEFAULT_DISC_TEMPLATE,
'mbdiscid', 0)
self.assertEquals(path,
u'/tmp/unknown/Unknown Artist - mbdiscid/Unknown Artist - mbdiscid')
def testStandardTemplateFilled(self):
prog = program.Program(config.Config())
md = mbngs.DiscMetadata()
md.artist = md.sortName = 'Jeff Buckley'
md.title = 'Grace'
prog.metadata = md
path = prog.getPath(u'/tmp', DEFAULT_DISC_TEMPLATE,
'mbdiscid', 0)
self.assertEquals(path,
u'/tmp/unknown/Jeff Buckley - Grace/Jeff Buckley - Grace')
def testIssue66TemplateFilled(self):
prog = program.Program(config.Config())
md = mbngs.DiscMetadata()
md.artist = md.sortName = 'Jeff Buckley'
md.title = 'Grace'
prog.metadata = md
path = prog.getPath(u'/tmp', u'%A/%d', 'mbdiscid', 0)
self.assertEquals(path,
u'/tmp/Jeff Buckley/Grace')

View File

@@ -0,0 +1,154 @@
# -*- Mode: Python; test-case-name: whipper.test.test_image_cue -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import tempfile
import unittest
from whipper.common import renamer
class RenameInFileTestcase(unittest.TestCase):
def setUp(self):
(fd, self._path) = tempfile.mkstemp(suffix='.morituri.renamer.infile')
os.write(fd, 'This is a test\nThis is another\n')
os.close(fd)
def testVerify(self):
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
self.assertEquals(o.verify(), None)
os.unlink(self._path)
self.assertRaises(AssertionError, o.verify)
def testDo(self):
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
o.do()
output = open(self._path).read()
self.assertEquals(output, 'That was some test\nThat was somenother\n')
os.unlink(self._path)
def testSerialize(self):
o = renamer.RenameInFile(self._path, 'is is a', 'at was some')
data = o.serialize()
o2 = renamer.RenameInFile.deserialize(data)
o2.do()
output = open(self._path).read()
self.assertEquals(output, 'That was some test\nThat was somenother\n')
os.unlink(self._path)
class RenameFileTestcase(unittest.TestCase):
def setUp(self):
(fd, self._source) = tempfile.mkstemp(suffix='.morituri.renamer.file')
os.write(fd, 'This is a test\nThis is another\n')
os.close(fd)
(fd, self._destination) = tempfile.mkstemp(
suffix='.morituri.renamer.file')
os.close(fd)
os.unlink(self._destination)
self._operation = renamer.RenameFile(self._source, self._destination)
def testVerify(self):
self.assertEquals(self._operation.verify(), None)
handle = open(self._destination, 'w')
handle.close()
self.assertRaises(AssertionError, self._operation.verify)
os.unlink(self._destination)
self.assertEquals(self._operation.verify(), None)
os.unlink(self._source)
self.assertRaises(AssertionError, self._operation.verify)
def testDo(self):
self._operation.do()
output = open(self._destination).read()
self.assertEquals(output, 'This is a test\nThis is another\n')
os.unlink(self._destination)
def testSerialize(self):
data = self._operation.serialize()
o = renamer.RenameFile.deserialize(data)
o.do()
output = open(self._destination).read()
self.assertEquals(output, 'This is a test\nThis is another\n')
os.unlink(self._destination)
class OperatorTestCase(unittest.TestCase):
def setUp(self):
self._statePath = tempfile.mkdtemp(suffix='.morituri.renamer.operator')
self._operator = renamer.Operator(self._statePath, 'test')
(fd, self._source) = tempfile.mkstemp(
suffix='.morituri.renamer.operator')
os.write(fd, 'This is a test\nThis is another\n')
os.close(fd)
(fd, self._destination) = tempfile.mkstemp(
suffix='.morituri.renamer.operator')
os.close(fd)
os.unlink(self._destination)
self._operator.addOperation(
renamer.RenameInFile(self._source, 'is is a', 'at was some'))
self._operator.addOperation(
renamer.RenameFile(self._source, self._destination))
def tearDown(self):
os.system('rm -rf %s' % self._statePath)
def testLoadNoneDone(self):
self._operator.save()
o = renamer.Operator(self._statePath, 'test')
o.load()
self.assertEquals(o._todo, self._operator._todo)
self.assertEquals(o._done, [])
os.unlink(self._source)
def testLoadOneDone(self):
self.assertEquals(len(self._operator._done), 0)
self._operator.save()
self._operator.next()
self.assertEquals(len(self._operator._done), 1)
o = renamer.Operator(self._statePath, 'test')
o.load()
self.assertEquals(len(o._done), 1)
self.assertEquals(o._todo, self._operator._todo)
self.assertEquals(o._done, self._operator._done)
# now continue
o.next()
self.assertEquals(len(o._done), 2)
os.unlink(self._destination)
def testLoadOneInterrupted(self):
self.assertEquals(len(self._operator._done), 0)
self._operator.save()
# cheat by doing a task without saving
self._operator._todo[0].do()
self.assertEquals(len(self._operator._done), 0)
o = renamer.Operator(self._statePath, 'test')
o.load()
self.assertEquals(len(o._done), 0)
self.assertEquals(o._todo, self._operator._todo)
self.assertEquals(o._done, self._operator._done)
# now continue, resuming
o.next()
self.assertEquals(len(o._done), 1)
o.next()
self.assertEquals(len(o._done), 2)
os.unlink(self._destination)

View File

@@ -0,0 +1,89 @@
# -*- Mode: Python; test-case-name: whipper.test.test_image_cue -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import tempfile
import unittest
import whipper
from whipper.image import table, cue
from whipper.test import common
class KingsSingleTestCase(unittest.TestCase):
def setUp(self):
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
u'kings-single.cue'))
self.cue.parse()
self.assertEquals(len(self.cue.table.tracks), 11)
def testGetTrackLength(self):
t = self.cue.table.tracks[0]
self.assertEquals(self.cue.getTrackLength(t), 17811)
# last track has unknown length
t = self.cue.table.tracks[-1]
self.assertEquals(self.cue.getTrackLength(t), -1)
class KingsSeparateTestCase(unittest.TestCase):
def setUp(self):
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
u'kings-separate.cue'))
self.cue.parse()
self.assertEquals(len(self.cue.table.tracks), 11)
def testGetTrackLength(self):
# all tracks have unknown length
t = self.cue.table.tracks[0]
self.assertEquals(self.cue.getTrackLength(t), -1)
t = self.cue.table.tracks[-1]
self.assertEquals(self.cue.getTrackLength(t), -1)
class KanyeMixedTestCase(unittest.TestCase):
def setUp(self):
self.cue = cue.CueFile(os.path.join(os.path.dirname(__file__),
u'kanye.cue'))
self.cue.parse()
self.assertEquals(len(self.cue.table.tracks), 13)
def testGetTrackLength(self):
t = self.cue.table.tracks[0]
self.assertEquals(self.cue.getTrackLength(t), -1)
class WriteCueFileTestCase(unittest.TestCase):
def testWrite(self):
fd, path = tempfile.mkstemp(suffix=u'.morituri.test.cue')
os.close(fd)
it = table.Table()
t = table.Track(1)
t.index(1, absolute=0, path=u'track01.wav', relative=0, counter=1)
it.tracks.append(t)
t = table.Track(2)
t.index(0, absolute=1000, path=u'track01.wav',
relative=1000, counter=1)
t.index(1, absolute=2000, path=u'track02.wav', relative=0, counter=2)
it.tracks.append(t)
it.absolutize()
it.leadout = 3000
common.diffStrings(u"""REM DISCID 0C002802
REM COMMENT "whipper %s"
FILE "track01.wav" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 00 00:13:25
FILE "track02.wav" WAVE
INDEX 01 00:00:00
""" % whipper.__version__, it.cue())
os.unlink(path)

View File

@@ -0,0 +1,117 @@
# -*- Mode: Python; test-case-name: whipper.test.test_image_table -*-
# vi:si:et:sw=4:sts=4:ts=4
from whipper.image import table
from whipper.test import common as tcommon
def h(i):
return "0x%08x" % i
class TrackTestCase(tcommon.TestCase):
def testRepr(self):
track = table.Track(1)
self.assertEquals(repr(track), "<Track 01>")
track.index(1, 100)
self.failUnless(repr(track.indexes[1]).startswith('<Index 01 '))
class LadyhawkeTestCase(tcommon.TestCase):
# Ladyhawke - Ladyhawke - 0602517818866
# contains 12 audio tracks and one data track
# CDDB has been verified against freedb:
# http://www.freedb.org/freedb/misc/c60af50d
# http://www.freedb.org/freedb/jazz/c60af50d
# AccurateRip URL has been verified against EAC's, using wireshark
def setUp(self):
self.table = table.Table()
for i in range(12):
self.table.tracks.append(table.Track(i + 1, audio=True))
self.table.tracks.append(table.Track(13, audio=False))
offsets = [0, 15537, 31691, 50866, 66466, 81202, 99409,
115920, 133093, 149847, 161560, 177682, 207106]
t = self.table.tracks
for i, offset in enumerate(offsets):
t[i].index(1, absolute=offset)
self.failIf(self.table.hasTOC())
self.table.leadout = 210385
self.failUnless(self.table.hasTOC())
self.assertEquals(self.table.tracks[0].getPregap(), 0)
def testCDDB(self):
self.assertEquals(self.table.getCDDBDiscId(), "c60af50d")
def testMusicBrainz(self):
# output from mb-submit-disc:
# https://musicbrainz.org/cdtoc/attach?toc=1+12+195856+150+
# 15687+31841+51016+66616+81352+99559+116070+133243+149997+161710+
# 177832&tracks=12&id=KnpGsLhvH.lPrNc1PBL21lb9Bg4-
# however, not (yet) in musicbrainz database
self.assertEquals(self.table.getMusicBrainzDiscId(),
"KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
def testAccurateRip(self):
self.assertEquals(self.table.getAccurateRipIds(), (
"0013bd5a", "00b8d489"))
self.assertEquals(self.table.getAccurateRipURL(),
"http://www.accuraterip.com/accuraterip/a/5/d/"
"dBAR-012-0013bd5a-00b8d489-c60af50d.bin")
def testDuration(self):
self.assertEquals(self.table.duration(), 2761413)
class MusicBrainzTestCase(tcommon.TestCase):
# example taken from https://musicbrainz.org/doc/Disc_ID_Calculation
# disc is Ettella Diamant
def setUp(self):
self.table = table.Table()
for i in range(6):
self.table.tracks.append(table.Track(i + 1, audio=True))
offsets = [0, 15213, 32164, 46442, 63264, 80339]
t = self.table.tracks
for i, offset in enumerate(offsets):
t[i].index(1, absolute=offset)
self.failIf(self.table.hasTOC())
self.table.leadout = 95312
self.failUnless(self.table.hasTOC())
def testMusicBrainz(self):
self.assertEquals(self.table.getMusicBrainzDiscId(),
'49HHV7Eb8UKF3aQiNmu1GR8vKTY-')
class PregapTestCase(tcommon.TestCase):
def setUp(self):
self.table = table.Table()
for i in range(2):
self.table.tracks.append(table.Track(i + 1, audio=True))
offsets = [0, 15537]
t = self.table.tracks
for i, offset in enumerate(offsets):
t[i].index(1, absolute=offset)
t[1].index(0, offsets[1] - 200)
def testPreGap(self):
self.assertEquals(self.table.tracks[0].getPregap(), 0)
self.assertEquals(self.table.tracks[1].getPregap(), 200)

View File

@@ -0,0 +1,445 @@
# -*- Mode: Python; test-case-name: whipper.test.test_image_toc -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
import copy
import shutil
import tempfile
from whipper.image import toc
from whipper.test import common
class CureTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'cure.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 13)
def testGetTrackLength(self):
t = self.toc.table.tracks[0]
# first track has known length because the .toc is a single file
# its length is all of track 1 from .toc, plus the INDEX 00 length
# of track 2
self.assertEquals(self.toc.getTrackLength(t),
(((6 * 60) + 16) * 75 + 45) + ((1 * 75) + 4))
# last track has unknown length
t = self.toc.table.tracks[-1]
self.assertEquals(self.toc.getTrackLength(t), -1)
def testIndexes(self):
# track 2, index 0 is at 06:16:45 or 28245
# track 2, index 1 is at 06:17:49 or 28324
# FIXME: cdrdao seems to get length of FILE 1 frame too many,
# and START value one frame less
t = self.toc.table.tracks[1]
self.assertEquals(t.getIndex(0).relative, 28245)
self.assertEquals(t.getIndex(1).relative, 28324)
def _getIndex(self, t, i):
track = self.toc.table.tracks[t - 1]
return track.getIndex(i)
def _assertAbsolute(self, t, i, value):
index = self._getIndex(t, i)
self.assertEquals(index.absolute, value)
def _assertPath(self, t, i, value):
index = self._getIndex(t, i)
self.assertEquals(index.path, value)
def _assertRelative(self, t, i, value):
index = self._getIndex(t, i)
self.assertEquals(index.relative, value)
def testSetFile(self):
self._assertAbsolute(1, 1, 0)
self._assertAbsolute(2, 0, 28245)
self._assertAbsolute(2, 1, 28324)
self._assertPath(1, 1, "data.wav")
# self.toc.table.absolutize()
self.toc.table.clearFiles()
self._assertAbsolute(1, 1, 0)
self._assertAbsolute(2, 0, 28245)
self._assertAbsolute(2, 1, 28324)
self._assertAbsolute(3, 1, 46110)
self._assertAbsolute(4, 1, 66767)
self._assertPath(1, 1, None)
self._assertRelative(1, 1, None)
# adding the first track file with length 28324 to the table should
# relativize from absolute 0 to absolute 28323, right before track 2,
# index 1
self.toc.table.setFile(1, 1, 'track01.wav', 28324)
self._assertPath(1, 1, 'track01.wav')
self._assertRelative(1, 1, 0)
self._assertPath(2, 0, 'track01.wav')
self._assertRelative(2, 0, 28245)
self._assertPath(2, 1, None)
self._assertRelative(2, 1, None)
def testConvertCue(self):
# self.toc.table.absolutize()
cue = self.toc.table.cue()
ref = self.readCue('cure.cue')
common.diffStrings(ref, cue)
# we verify it because it has failed in readdisc in the past
self.assertEquals(self.toc.table.getAccurateRipURL(),
'http://www.accuraterip.com/accuraterip/'
'3/c/4/dBAR-013-0019d4c3-00fe8924-b90c650d.bin')
def testGetRealPath(self):
self.assertRaises(KeyError, self.toc.getRealPath, u'track01.wav')
(fd, path) = tempfile.mkstemp(suffix=u'.morituri.test.wav')
self.assertEquals(self.toc.getRealPath(path), path)
winpath = path.replace('/', '\\')
self.assertEquals(self.toc.getRealPath(winpath), path)
os.close(fd)
os.unlink(path)
# Bloc Party - Silent Alarm has a Hidden Track One Audio
class BlocTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'bloc.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 13)
def testGetTrackLength(self):
t = self.toc.table.tracks[0]
# first track has known length because the .toc is a single file
# the length is from Track 1, Index 1 to Track 2, Index 1, so
# does not include the htoa
self.assertEquals(self.toc.getTrackLength(t), 19649)
# last track has unknown length
t = self.toc.table.tracks[-1]
self.assertEquals(self.toc.getTrackLength(t), -1)
def testIndexes(self):
track01 = self.toc.table.tracks[0]
index00 = track01.getIndex(0)
self.assertEquals(index00.absolute, 0)
self.assertEquals(index00.relative, 0)
self.assertEquals(index00.counter, 0)
index01 = track01.getIndex(1)
self.assertEquals(index01.absolute, 15220)
self.assertEquals(index01.relative, 0)
self.assertEquals(index01.counter, 1)
track05 = self.toc.table.tracks[4]
index00 = track05.getIndex(0)
self.assertEquals(index00.absolute, 84070)
self.assertEquals(index00.relative, 68850)
self.assertEquals(index00.counter, 1)
index01 = track05.getIndex(1)
self.assertEquals(index01.absolute, 84142)
self.assertEquals(index01.relative, 68922)
self.assertEquals(index01.counter, 1)
# This disc has a pre-gap, so is a good test for .CUE writing
def testConvertCue(self):
#self.toc.table.absolutize()
self.failUnless(self.toc.table.hasTOC())
cue = self.toc.table.cue()
ref = self.readCue('bloc.cue')
common.diffStrings(ref, cue)
def testCDDBId(self):
# self.toc.table.absolutize()
# cd-discid output:
# ad0be00d 13 15370 35019 51532 69190 84292 96826 112527 132448
# 148595 168072 185539 203331 222103 3244
self.assertEquals(self.toc.table.getCDDBDiscId(), 'ad0be00d')
def testAccurateRip(self):
# we verify it because it has failed in readdisc in the past
# self.toc.table.absolutize()
self.assertEquals(self.toc.table.getAccurateRipURL(),
'http://www.accuraterip.com/accuraterip/'
'e/d/2/dBAR-013-001af2de-0105994e-ad0be00d.bin')
# The Breeders - Mountain Battles has CDText
class BreedersTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'breeders.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 13)
def testCDText(self):
cdt = self.toc.table.cdtext
self.assertEquals(cdt['PERFORMER'], 'THE BREEDERS')
self.assertEquals(cdt['TITLE'], 'MOUNTAIN BATTLES')
t = self.toc.table.tracks[0]
cdt = t.cdtext
self.assertRaises(AttributeError, getattr, cdt, 'PERFORMER')
self.assertEquals(cdt['TITLE'], 'OVERGLAZED')
def testConvertCue(self):
# self.toc.table.absolutize()
self.failUnless(self.toc.table.hasTOC())
cue = self.toc.table.cue()
ref = self.readCue('breeders.cue')
self.assertEquals(cue, ref)
# Ladyhawke has a data track
class LadyhawkeTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'ladyhawke.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 13)
#import code; code.interact(local=locals())
self.failIf(self.toc.table.tracks[-1].audio)
def testCDDBId(self):
#self.toc.table.absolutize()
self.assertEquals(self.toc.table.getCDDBDiscId(), 'c60af50d')
# output from cd-discid:
# c60af50d 13 150 15687 31841 51016 66616 81352 99559 116070 133243
# 149997 161710 177832 207256 2807
def testMusicBrainz(self):
self.assertEquals(self.toc.table.getMusicBrainzDiscId(),
"KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
self.assertEquals(self.toc.table.getMusicBrainzSubmitURL(),
"https://musicbrainz.org/cdtoc/attach?toc="
"1+12+195856+150+15687+31841+51016+66616+81352+99559+"
"116070+133243+149997+161710+177832&"
"tracks=12&id=KnpGsLhvH.lPrNc1PBL21lb9Bg4-")
# FIXME: I don't trust this toc, but I can't find the CD anymore
def testDuration(self):
self.assertEquals(self.toc.table.duration(), 2761413)
def testGetFrameLength(self):
self.assertEquals(self.toc.table.getFrameLength(data=True), 210385)
def testCue(self):
self.failUnless(self.toc.table.canCue())
data = self.toc.table.cue()
lines = data.split("\n")
self.assertEquals(lines[0], "REM DISCID C60AF50D")
class CapitalMergeTestCase(common.TestCase):
def setUp(self):
self.toc1 = toc.TocFile(os.path.join(os.path.dirname(__file__),
u'capital.1.toc'))
self.toc1.parse()
self.assertEquals(len(self.toc1.table.tracks), 11)
self.failUnless(self.toc1.table.tracks[-1].audio)
self.toc2 = toc.TocFile(os.path.join(os.path.dirname(__file__),
u'capital.2.toc'))
self.toc2.parse()
self.assertEquals(len(self.toc2.table.tracks), 1)
self.failIf(self.toc2.table.tracks[-1].audio)
self.table = copy.deepcopy(self.toc1.table)
self.table.merge(self.toc2.table)
def testCDDBId(self):
#self.table.absolutize()
self.assertEquals(self.table.getCDDBDiscId(), 'b910140c')
# output from cd-discid:
# b910140c 12 24320 44855 64090 77885 88095 104020 118245 129255 141765
# 164487 181780 209250 4440
def testMusicBrainz(self):
# URL to submit: https://musicbrainz.org/cdtoc/attach?toc=1+11+
# 197850+24320+44855+64090+77885+88095+104020+118245+129255+141765+
# 164487+181780&tracks=11&id=MAj3xXf6QMy7G.BIFOyHyq4MySE-
self.assertEquals(self.table.getMusicBrainzDiscId(),
"MAj3xXf6QMy7G.BIFOyHyq4MySE-")
def testDuration(self):
# this matches track 11 end sector - track 1 start sector on
# musicbrainz
# compare to 3rd and 4th value in URL above
self.assertEquals(self.table.getFrameLength(), 173530)
self.assertEquals(self.table.duration(), 2313733)
class UnicodeTestCase(common.TestCase, common.UnicodeTestMixin):
def setUp(self):
# we copy the normal non-utf8 filename to a utf-8 filename
# in this test because builds with LANG=C fail if we include
# utf-8 filenames in the dist
path = u'Jos\xe9Gonz\xe1lez.toc'
self._performer = u'Jos\xe9 Gonz\xe1lez'
source = os.path.join(os.path.dirname(__file__), 'jose.toc')
(fd, self.dest) = tempfile.mkstemp(suffix=path)
os.close(fd)
shutil.copy(source, self.dest)
self.toc = toc.TocFile(self.dest)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 10)
def tearDown(self):
os.unlink(self.dest)
def testGetTrackLength(self):
t = self.toc.table.tracks[0]
# first track has known length because the .toc is a single file
self.assertEquals(self.toc.getTrackLength(t), 12001)
# last track has unknown length
t = self.toc.table.tracks[-1]
self.assertEquals(self.toc.getTrackLength(t), -1)
def testGetTrackPerformer(self):
t = self.toc.table.tracks[0]
self.assertEquals(t.cdtext['PERFORMER'], self._performer)
# Interpol - Turn of the Bright Lights has same cddb disc id as
# Afghan Whigs - Gentlemen
class TOTBLTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'totbl.fast.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 11)
def testCDDBId(self):
#self.toc.table.absolutize()
self.assertEquals(self.toc.table.getCDDBDiscId(), '810b7b0b')
# The Strokes - Someday has a 1 frame SILENCE marked as such in toc
class StrokesTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'strokes-someday.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 1)
def testIndexes(self):
t = self.toc.table.tracks[0]
i0 = t.getIndex(0)
self.assertEquals(i0.relative, 0)
self.assertEquals(i0.absolute, 0)
self.assertEquals(i0.counter, 0)
self.assertEquals(i0.path, None)
i1 = t.getIndex(1)
self.assertEquals(i1.relative, 0)
self.assertEquals(i1.absolute, 1)
self.assertEquals(i1.counter, 1)
self.assertEquals(i1.path, u'data.wav')
cue = self._filterCue(self.toc.table.cue())
ref = self._filterCue(open(os.path.join(os.path.dirname(__file__),
'strokes-someday.eac.cue')).read()).decode('utf-8')
common.diffStrings(ref, cue)
def _filterCue(self, output):
# helper to be able to compare our generated .cue with the
# EAC-extracted one
discard = [ 'TITLE', 'PERFORMER', 'FLAGS', 'REM' ]
lines = output.split('\n')
res = []
for line in lines:
found = False
for needle in discard:
if line.find(needle) > -1:
found = True
if line.find('FILE') > -1:
line = 'FILE "data.wav" WAVE'
if not found:
res.append(line)
return '\n'.join(res)
# Surfer Rosa has
# track 00 consisting of 32 frames of SILENCE
# track 11 Vamos with an INDEX 02
# compared to an EAC single .cue file, all our offsets are 32 frames off
# because the toc uses silence for track 01 index 00 while EAC puts it in
# Range.wav
class SurferRosaTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__),
u'surferrosa.toc')
self.toc = toc.TocFile(self.path)
self.toc.parse()
self.assertEquals(len(self.toc.table.tracks), 21)
def testIndexes(self):
# HTOA
t = self.toc.table.tracks[0]
self.assertEquals(len(t.indexes), 2)
i0 = t.getIndex(0)
self.assertEquals(i0.relative, 0)
self.assertEquals(i0.absolute, 0)
self.assertEquals(i0.path, None)
self.assertEquals(i0.counter, 0)
i1 = t.getIndex(1)
self.assertEquals(i1.relative, 0)
self.assertEquals(i1.absolute, 32)
self.assertEquals(i1.path, 'data.wav')
self.assertEquals(i1.counter, 1)
# track 11, Vamos
t = self.toc.table.tracks[10]
self.assertEquals(len(t.indexes), 2)
# 32 frames of silence, and 1483 seconds of data.wav
self.assertEquals(t.getIndex(1).relative, 111225)
self.assertEquals(t.getIndex(1).absolute, 111257)
self.assertEquals(t.getIndex(2).relative, 111225 + 3370)
self.assertEquals(t.getIndex(2).absolute, 111257 + 3370)
# print self.toc.table.cue()

View File

@@ -0,0 +1,94 @@
# -*- Mode: Python; test-case-name: whipper.test.test_program_cdparanoia -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
from whipper.extern.task import task
from whipper.program import cdparanoia
from whipper.test import common
class ParseTestCase(common.TestCase):
def setUp(self):
# report from Afghan Whigs - Sweet Son Of A Bitch
path = os.path.join(os.path.dirname(__file__),
'cdparanoia.progress')
self._parser = cdparanoia.ProgressParser(start=45990, stop=47719)
self._handle = open(path)
def testParse(self):
for line in self._handle.readlines():
self._parser.parse(line)
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
self.assertEquals(q, '99.6 %')
class Parse1FrameTestCase(common.TestCase):
def setUp(self):
path = os.path.join(os.path.dirname(__file__),
'cdparanoia.progress.strokes')
self._parser = cdparanoia.ProgressParser(start=0, stop=0)
self._handle = open(path)
def testParse(self):
for line in self._handle.readlines():
self._parser.parse(line)
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
self.assertEquals(q, '100.0 %')
class ErrorTestCase(common.TestCase):
def setUp(self):
# report from a rip with offset -1164 causing scsi errors
path = os.path.join(os.path.dirname(__file__),
'cdparanoia.progress.error')
self._parser = cdparanoia.ProgressParser(start=0, stop=10800)
self._handle = open(path)
def testParse(self):
for line in self._handle.readlines():
self._parser.parse(line)
q = '%.01f %%' % (self._parser.getTrackQuality() * 100.0, )
self.assertEquals(q, '79.6 %')
class VersionTestCase(common.TestCase):
def testGetVersion(self):
v = cdparanoia.getCdParanoiaVersion()
self.failUnless(v)
# of the form III 10.2
# make sure it ends with a digit
self.failUnless(int(v[-1]), v)
class AnalyzeFileTask(cdparanoia.AnalyzeTask):
def __init__(self, path):
self.command = ['cat', path]
def readbytesout(self, bytes):
self.readbyteserr(bytes)
class CacheTestCase(common.TestCase):
def testDefeatsCache(self):
self.runner = task.SyncRunner(verbose=False)
path = os.path.join(os.path.dirname(__file__),
'cdparanoia', 'PX-L890SA.cdparanoia-A.stderr')
t = AnalyzeFileTask(path)
self.runner.run(t)
self.failUnless(t.defeatsCache)

View File

@@ -0,0 +1,17 @@
# -*- Mode: Python; test-case-name: whipper.test.test_program_cdparanoia -*-
# vi:si:et:sw=4:sts=4:ts=4
import os
from whipper.program import cdrdao
from whipper.test import common
# TODO: Current test architecture makes testing cdrdao difficult. Revisit.
class VersionTestCase(common.TestCase):
def testGetVersion(self):
v = cdrdao.getCDRDAOVersion()
self.failUnless(v)
# make sure it starts with a digit
self.failUnless(int(v[0]))

View File

@@ -0,0 +1,13 @@
# -*- Mode: Python; test-case-name: whipper.test.test_program_sox -*-
import os
from whipper.program import sox
from whipper.test import common
class PeakLevelTestCase(common.TestCase):
def setUp(self):
self.path = os.path.join(os.path.dirname(__file__), 'track.flac')
def testParse(self):
self.assertEquals(0.800018, sox.peak_level(self.path))

View File

@@ -0,0 +1,65 @@
# -*- Mode: Python; test-case-name: whipper.test.test_program_sox -*-
import os
import tempfile
from whipper.common import common
from whipper.extern.task import task
from whipper.program.soxi import AudioLengthTask
from whipper.test import common as tcommon
base_track_file = os.path.join(os.path.dirname(__file__), u'track.flac')
base_track_length = 10 * common.SAMPLES_PER_FRAME
class AudioLengthTestCase(tcommon.TestCase):
def testLength(self):
path = base_track_file
t = AudioLengthTask(path)
runner = task.SyncRunner()
runner.run(t, verbose=False)
self.assertEquals(t.length, base_track_length)
class AudioLengthPathTestCase(tcommon.TestCase):
def _testSuffix(self, suffix):
fd, path = tempfile.mkstemp(suffix=suffix)
with os.fdopen(fd, "wb") as temptrack:
temptrack.write(open(base_track_file, "rb").read())
t = AudioLengthTask(path)
runner = task.SyncRunner()
runner.run(t, verbose=False)
self.assertEquals(t.length, base_track_length)
os.unlink(path)
class NormalAudioLengthPathTestCase(AudioLengthPathTestCase):
def testSingleQuote(self):
self._testSuffix(u"morituri.test.Guns 'N Roses.flac")
def testDoubleQuote(self):
# This test makes sure we can checksum files with double quote in
# their name
self._testSuffix(u'morituri.test.12" edit.flac')
class UnicodeAudioLengthPathTestCase(AudioLengthPathTestCase,
tcommon.UnicodeTestMixin):
def testUnicodePath(self):
# this test makes sure we can checksum a unicode path
self._testSuffix(u'morituri.test.B\xeate Noire.empty.flac')
class AbsentFileAudioLengthPathTestCase(AudioLengthPathTestCase):
def testAbsentFile(self):
tempdir = tempfile.mkdtemp()
path = os.path.join(tempdir, u"nonexistent.flac")
t = AudioLengthTask(path)
runner = task.SyncRunner()
self.assertRaises(task.TaskException, runner.run,
t, verbose=False)
os.rmdir(tempdir)

View File

@@ -0,0 +1,90 @@
CD_DA
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 0 03:56:50
// Track 2
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 03:56:50 04:11:41
// Track 3
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 08:08:16 04:19:28
// Track 4
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 12:27:44 05:00:04
// Track 5
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 17:27:48 04:28:34
// Track 6
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 21:56:07 03:05:47
// Track 7
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 25:01:54 03:47:06
// Track 8
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 28:48:60 06:28:05
// Track 9
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 35:16:65 03:35:39
// Track 10
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 38:52:29 06:07:27
// Track 11
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
FILE "data.wav" 44:59:56 04:00:00

View File

@@ -0,0 +1,12 @@
FILE "track.flac" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
FILE "track.flac" WAVE
TRACK 02 AUDIO
INDEX 01 00:00:00
FILE "track.flac" WAVE
TRACK 03 AUDIO
INDEX 01 00:00:00
FILE "track.flac" WAVE
TRACK 04 AUDIO
INDEX 01 00:00:00

View File

@@ -0,0 +1,9 @@
FILE "track.flac" WAVE
TRACK 01 AUDIO
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 01 00:00:02
TRACK 03 AUDIO
INDEX 01 00:00:04
TRACK 04 AUDIO
INDEX 01 00:00:06

BIN
whipper/test/track.flac Normal file

Binary file not shown.