EAC secure mode test proposal, Testing its real accuracy
EAC secure mode test proposal, Testing its real accuracy
May 3 2003, 14:41
Joined: 26-November 02
Member No.: 3890
Edit : this discussion is splitted from this thread : http://www.hydrogenaudio.org/forums/index....=ST&f=20&t=8849
QUOTE (spoon @ May 3 2003 - 02:23 AM)
Well, actually errors 'always' (99.99...%) return different data for every new read.
How do you know that? it might be 60%, or 10%, because it cannot detect when the data is the same you cannot put a % on it. When AccurateRip makes its way onto EAC then you could put a percentage on it.
A. I haven't read anything about a "validated" percentage like this anywhere (wrong_samples_noticed_by_EAC_due_to_non-matching_results_on_re-read / total_number_of_wrong_samples).
B. This could be tested (volunteers appreciated) like this:
1. You need a (set of) reference .wav file(s). For this either rip a CD in perfect condition, EAC secure mode, ideally compare the CRC to a identical disk's ripped by someone else (cheers to AccurateRip ) or choose some .wav files, burn them to CD-R and make sure you keep them unchanged on your HDD.
2. Take the CD(-R), damage it (e.g. different kind of scratches, caused by screwdrivers, sandig paper, ...; dirty fingerprints; draw lines with a thin marker on the data side; ...). Start carefully and try what happens in the next steps. If the disk turns unreadable and causes timing problems/sync errors in burst mode this won't work ...
3. Extract the damaged disk two times in burst mode resulting in a.wav and b.wav.
4. Do wave substractions (Cool Edit: mix paste - overlap - invert checked) r-a.wav=reference.wav - a.wav and r-b.wav = reference.wav - b.wav and a-b.wav = a.wav - b.wav using Cool Edit or another wave editor capable of that - make sure that dither is disabled in this and the next steps.
5. We want to know how many samples have been turned "wrong" by damaging the disk, so we create a Cool Edit boolean operation™ like this: if a sample has been read correctly in a.wav, the corresponding sample in r-a.wav will be 0, otherwise something =|= 0. To find samples that are wrong in a OR b, we add r-a.wav and r-b.wav. To prevent errors here we multiply both files with themselves (Cool Edit: mix paste -> modulate), so all values are 0 (correct) or >0 (wrong). To prevent errors here (Cool Edit devides by 32768 after multiplying, so values -182<y<182 will turn 0 due to rounding) we amplify both .wavs by 100dB before. This will lead to 0 values = correct and 32767 values = incorrect (-> amplification by 100 dB makes all samples =|= 0 clip in 16 bit resolution). So the steps are:
5.1. Amplifying: r-a_100.wav = r-a + 100dB; r-b_100.wav = r-a + 100dB
5.2. Copy r-a_100.wav to clipboard and mix paste - modulate r-a_100.wav with data from clipboard, result: r-a_100m.wav; do the same with r-b_100.wav => r-b_100m.wav
5.3. Add (= Cool Edit mix paste - overlap) r-a_100m.wav + r-b_100m.wav = wrong_samples.wav
In the file wrong_samples.wav. we have now all 0 samples stand for correctly extracted samples in both EAC burst mode runs while =|= 0 samples (32767) stand for extraction errors.
6. Now first interesting thing to do IMO would be to have a look at the error postitions. Are there isolated wrong samples or do they occur as blocks / "bursts"?
7. Now we want to know how many of the wrong samples have gotten different values in the two burst mode runs so EAC secure mode would have detected them. For this we
7.1. apply steps 5.1 and 5.2 to a-b.wav resulting in a-b_100m.wav
7.2.1. Take a-b_100m.wav and apply Channel Mixer -> Full mix (L = L+R; R = L+R). -> detected_errors.wav
7.2.2.: multiply wrong_samples.wav with detected_errors.wav (Mix Paste Modulate) and substract the result from detected_errors.wav, resulting in the corrected undetected_errors.wav.
The result will contain 0 samples for correct samples and detected errors and 32767 samples for undetected errors.
8. Counting the Number of 32767 samples in wrong_samples.wav (W) and in undetected_errors.wav (O) will enable you to calculate a percentage of correctly detected errors: P=(W-O)/W
Additionally we could rip 3 or 4 times in burst mode instead of 2 times to find out if and how often Test & Copy in secure mode without C2 detects addtional errors.
And we could rip in secure mode, C2 enabled (if drive capable) to find out the "P" value for the drive's C2 detection.
edit2: changed some "?" to "=|=" which means "un-eaqual"
I missed one thing: If in the 1st 2 reads an error occurs, the sample is re-read in both channels, no matter if the error was detected in one or both channels. So "undetected" errors in one channel are in fact detected if there's a detected error at the same postion on the other channel.
To take this into account in the test, step 7 is modified (see above).
This post has been edited by tigre: May 6 2003, 10:28
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello
May 6 2003, 15:49
Group: Super Moderator
Joined: 29-September 01
Member No.: 73
An error is given by the difference between the reference file and the ripped file, however it was ripped or got. The drive's ability to detect or correct them can only interfere if the drive detects the error, interpolates it, and the interpolation gives, by chance, the original value. Is this test, it will appear as an error reported by the drive, but that doesn't exists in reality
Errors unreported by the drive appears as wrong samples in the reference - rip substraction, as well as uncorrected errors, since most of the time, the interpolation doesn't restore the exact original value.
|Lo-Fi Version||Time is now: 7th May 2015 - 07:17|