mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
CTDB 2.0
This commit is contained in:
@@ -15,7 +15,7 @@ namespace CUETools.TestHelpers
|
||||
private int tempOffs;
|
||||
private int nextError;
|
||||
|
||||
public NoiseAndErrorsGenerator(AudioPCMConfig pcm, long sampleCount, int seed, int offset, int errors)
|
||||
public NoiseAndErrorsGenerator(AudioPCMConfig pcm, long sampleCount, int seed, int offset, int errors, int maxStrideErrors = 0)
|
||||
{
|
||||
if (offset < 0)
|
||||
throw new ArgumentOutOfRangeException("offset", "offset cannot be negative");
|
||||
@@ -35,8 +35,15 @@ namespace CUETools.TestHelpers
|
||||
rnd.NextBytes(new byte[byteOff % temp.Length]);
|
||||
this.errors = new int[errors];
|
||||
this.rnd2 = new Random(seed);
|
||||
for (int i = 0; i < errors; i++)
|
||||
this.errors[i] = this.rnd2.Next(0, (int)sampleCount);
|
||||
var strideErrors = new int[10 * 588];
|
||||
for (int i = 0; i < errors; i++)
|
||||
{
|
||||
do
|
||||
{
|
||||
this.errors[i] = this.rnd2.Next(0, (int)sampleCount);
|
||||
} while (maxStrideErrors > 0 && strideErrors[this.errors[i] % (10 * 588)] >= maxStrideErrors);
|
||||
strideErrors[this.errors[i] % (10 * 588)]++;
|
||||
}
|
||||
this.rnd2 = new Random(seed);
|
||||
Array.Sort(this.errors);
|
||||
this.nextError = 0;
|
||||
|
||||
@@ -10,9 +10,9 @@ namespace CUETools.TestHelpers
|
||||
public class TestImageGenerator
|
||||
{
|
||||
public CDImageLayout toc;
|
||||
public int seed, offset, start, end, errors;
|
||||
public int seed, offset, start, end, errors, maxStrideErrors;
|
||||
|
||||
public TestImageGenerator(CDImageLayout toc, int seed, int offset, int errors, int start, int end)
|
||||
public TestImageGenerator(CDImageLayout toc, int seed, int offset, int errors, int maxStrideErrors, int start, int end)
|
||||
{
|
||||
this.toc = toc;
|
||||
this.seed = seed;
|
||||
@@ -20,20 +20,21 @@ namespace CUETools.TestHelpers
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
this.errors = errors;
|
||||
this.maxStrideErrors = maxStrideErrors;
|
||||
}
|
||||
|
||||
public TestImageGenerator(string trackoffsets, int seed, int offset, int errors, int start, int end)
|
||||
: this (new CDImageLayout(trackoffsets), seed, offset, errors, start, end)
|
||||
public TestImageGenerator(string trackoffsets, int seed, int offset, int errors, int maxStrideErrors, int start, int end)
|
||||
: this(new CDImageLayout(trackoffsets), seed, offset, errors, maxStrideErrors, start, end)
|
||||
{
|
||||
}
|
||||
|
||||
public TestImageGenerator(CDImageLayout toc, int seed, int offset, int errors)
|
||||
: this(toc, seed, offset, errors, 0, (int)toc.AudioLength * 588)
|
||||
public TestImageGenerator(CDImageLayout toc, int seed, int offset, int errors = 0, int maxStrideErrors = 0)
|
||||
: this(toc, seed, offset, errors, maxStrideErrors, 0, (int)toc.AudioLength * 588)
|
||||
{
|
||||
}
|
||||
|
||||
public TestImageGenerator(string trackoffsets, int seed, int offset, int errors)
|
||||
: this(new CDImageLayout(trackoffsets), seed, offset, errors)
|
||||
public TestImageGenerator(string trackoffsets, int seed, int offset = 0, int errors = 0, int maxStrideErrors = 0)
|
||||
: this(new CDImageLayout(trackoffsets), seed, offset, errors, maxStrideErrors)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -45,13 +46,14 @@ namespace CUETools.TestHelpers
|
||||
this.start = copy.start;
|
||||
this.end = copy.end;
|
||||
this.errors = copy.errors;
|
||||
this.maxStrideErrors = copy.maxStrideErrors;
|
||||
}
|
||||
|
||||
public void Write(IAudioDest dest)
|
||||
{
|
||||
if (start < 0 || start > end || end > toc.AudioLength * 588)
|
||||
throw new ArgumentOutOfRangeException();
|
||||
var src = new NoiseAndErrorsGenerator(AudioPCMConfig.RedBook, end - start, seed, offset + start, errors);
|
||||
var src = new NoiseAndErrorsGenerator(AudioPCMConfig.RedBook, end - start, seed, offset + start, errors, maxStrideErrors);
|
||||
var buff = new AudioBuffer(src, 588 * 10);
|
||||
var rnd = new Random(seed);
|
||||
//dest.Position = start;
|
||||
@@ -82,13 +84,13 @@ namespace CUETools.TestHelpers
|
||||
|
||||
public static AccurateRipVerify CreateAccurateRipVerify(string trackoffsets, int seed, int offset, int start, int end)
|
||||
{
|
||||
var generator = new TestImageGenerator(trackoffsets, seed, offset, 0, start, end);
|
||||
var generator = new TestImageGenerator(trackoffsets, seed, offset, 0, 0, start, end);
|
||||
return generator.CreateAccurateRipVerify();
|
||||
}
|
||||
|
||||
public static AccurateRipVerify CreateAccurateRipVerify(string trackoffsets, int seed, int offset)
|
||||
{
|
||||
var generator = new TestImageGenerator(trackoffsets, seed, offset, 0);
|
||||
var generator = new TestImageGenerator(trackoffsets, seed, offset, 0, 0);
|
||||
return generator.CreateAccurateRipVerify();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user