diff --git a/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs b/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
index 72ba79f9b..8ed703e03 100644
--- a/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/AlphaProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// An to change the Alpha of an .
///
- public class AlphaProcessor : ParallelImageProcessor
+ public class AlphaProcessor : ImageProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
index ef451a89d..e78987d23 100644
--- a/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BackgroundColorProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageProcessorCore.Processors
///
/// Sets the background color of the image.
///
- public class BackgroundColorProcessor : ParallelImageProcessor
+ public class BackgroundColorProcessor : ImageProcessor
{
///
/// The epsilon for comparing floating point numbers.
diff --git a/src/ImageProcessorCore/Filters/Processors/Binarization/ThresholdProcessor.cs b/src/ImageProcessorCore/Filters/Processors/Binarization/ThresholdProcessor.cs
index dc3816a03..60b49d0ee 100644
--- a/src/ImageProcessorCore/Filters/Processors/Binarization/ThresholdProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Binarization/ThresholdProcessor.cs
@@ -13,7 +13,7 @@ namespace ImageProcessorCore.Processors
/// . The image will be converted to greyscale before thresholding
/// occurs.
///
- public class ThresholdProcessor : ParallelImageProcessor
+ public class ThresholdProcessor : ImageProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
index cbf966a7c..5de0741fa 100644
--- a/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BlendProcessor.cs
@@ -10,7 +10,7 @@ namespace ImageProcessorCore.Processors
///
/// Combines two images together by blending the pixels.
///
- public class BlendProcessor : ParallelImageProcessor
+ public class BlendProcessor : ImageProcessor
{
///
/// The image to blend.
diff --git a/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs b/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
index a100e5717..6710ff593 100644
--- a/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/BrightnessProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// An to change the brightness of an .
///
- public class BrightnessProcessor : ParallelImageProcessor
+ public class BrightnessProcessor : ImageProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
index eb01c3c22..d27ea5c6d 100644
--- a/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ColorMatrix/ColorMatrixFilter.cs
@@ -11,7 +11,7 @@ namespace ImageProcessorCore.Processors
///
/// The color matrix filter.
///
- public abstract class ColorMatrixFilter : ParallelImageProcessor, IColorMatrixFilter
+ public abstract class ColorMatrixFilter : ImageProcessor, IColorMatrixFilter
{
///
public abstract Matrix4x4 Matrix { get; }
@@ -22,8 +22,6 @@ namespace ImageProcessorCore.Processors
///
protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
{
- int sourceY = sourceRectangle.Y;
- int sourceBottom = sourceRectangle.Bottom;
int startX = sourceRectangle.X;
int endX = sourceRectangle.Right;
Matrix4x4 matrix = this.Matrix;
@@ -36,15 +34,12 @@ namespace ImageProcessorCore.Processors
endY,
y =>
{
- if (y >= sourceY && y < sourceBottom)
+ for (int x = startX; x < endX; x++)
{
- for (int x = startX; x < endX; x++)
- {
- targetPixels[x, y] = this.ApplyMatrix(sourcePixels[x, y], matrix);
- }
-
- this.OnRowProcessed();
+ targetPixels[x, y] = this.ApplyMatrix(sourcePixels[x, y], matrix);
}
+
+ this.OnRowProcessed();
});
}
}
diff --git a/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs b/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
index 920a6fb01..19f564be4 100644
--- a/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/ContrastProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// An to change the contrast of an .
///
- public class ContrastProcessor : ParallelImageProcessor
+ public class ContrastProcessor : ImageProcessor
{
///
/// Initializes a new instance of the class.
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/BoxBlurProcessor.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/BoxBlurProcessor.cs
index 4ad60d65b..042288ffd 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/BoxBlurProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/BoxBlurProcessor.cs
@@ -42,9 +42,6 @@ namespace ImageProcessorCore.Processors
///
public override float[,] KernelY => this.kernelY;
- ///
- public override int Parallelism => 1;
-
///
protected override void OnApply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle)
{
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2DFilter.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2DFilter.cs
index 0dad68485..b16a528db 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2DFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2DFilter.cs
@@ -11,7 +11,7 @@ namespace ImageProcessorCore.Processors
///
/// Defines a filter that uses two one-dimensional matrices to perform convolution against an image.
///
- public abstract class Convolution2DFilter : ParallelImageProcessor
+ public abstract class Convolution2DFilter : ImageProcessor
{
///
/// Gets the horizontal gradient operator.
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2PassFilter.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2PassFilter.cs
index 66e8cac98..c9031dfd7 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2PassFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/Convolution2PassFilter.cs
@@ -10,7 +10,7 @@ namespace ImageProcessorCore.Processors
///
/// Defines a filter that uses two one-dimensional matrices to perform two-pass convolution against an image.
///
- public abstract class Convolution2PassFilter : ParallelImageProcessor
+ public abstract class Convolution2PassFilter : ImageProcessor
{
///
/// Gets the horizontal gradient operator.
@@ -64,7 +64,6 @@ namespace ImageProcessorCore.Processors
int radiusY = kernelHeight >> 1;
int radiusX = kernelWidth >> 1;
- int sourceY = sourceRectangle.Y;
int sourceBottom = sourceRectangle.Bottom;
int startX = sourceRectangle.X;
int endX = sourceRectangle.Right;
@@ -79,36 +78,34 @@ namespace ImageProcessorCore.Processors
endY,
y =>
{
- if (y >= sourceY && y < sourceBottom)
+ for (int x = startX; x < endX; x++)
{
- for (int x = startX; x < endX; x++)
- {
- Color destination = new Color();
+ Color destination = new Color();
- // Apply each matrix multiplier to the color components for each pixel.
- for (int fy = 0; fy < kernelHeight; fy++)
- {
- int fyr = fy - radiusY;
- int offsetY = y + fyr;
+ // Apply each matrix multiplier to the color components for each pixel.
+ for (int fy = 0; fy < kernelHeight; fy++)
+ {
+ int fyr = fy - radiusY;
+ int offsetY = y + fyr;
- offsetY = offsetY.Clamp(0, maxY);
+ offsetY = offsetY.Clamp(0, maxY);
- for (int fx = 0; fx < kernelWidth; fx++)
- {
- int fxr = fx - radiusX;
- int offsetX = x + fxr;
+ for (int fx = 0; fx < kernelWidth; fx++)
+ {
+ int fxr = fx - radiusX;
+ int offsetX = x + fxr;
- offsetX = offsetX.Clamp(0, maxX);
+ offsetX = offsetX.Clamp(0, maxX);
- Color currentColor = sourcePixels[offsetX, offsetY];
- destination += kernel[fy, fx] * currentColor;
- }
+ Color currentColor = sourcePixels[offsetX, offsetY];
+ destination += kernel[fy, fx] * currentColor;
}
-
- targetPixels[x, y] = destination;
}
- this.OnRowProcessed();
+
+ targetPixels[x, y] = destination;
}
+
+ this.OnRowProcessed();
});
}
}
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/ConvolutionFilter.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/ConvolutionFilter.cs
index 84884ff83..8ddcab4a5 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/ConvolutionFilter.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/ConvolutionFilter.cs
@@ -10,7 +10,7 @@ namespace ImageProcessorCore.Processors
///
/// Defines a filter that uses a 2 dimensional matrix to perform convolution against an image.
///
- public abstract class ConvolutionFilter : ParallelImageProcessor
+ public abstract class ConvolutionFilter : ImageProcessor
{
///
/// Gets the 2d gradient operator.
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianBlurProcessor.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianBlurProcessor.cs
index 904de5994..6288ea963 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianBlurProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianBlurProcessor.cs
@@ -76,9 +76,6 @@ namespace ImageProcessorCore.Processors
///
public override float[,] KernelY => this.kernelY;
- ///
- public override int Parallelism => 1;
-
///
protected override void OnApply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle)
{
diff --git a/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianSharpenProcessor.cs b/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianSharpenProcessor.cs
index 8d95eaf82..9d70732d2 100644
--- a/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianSharpenProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/Convolution/GuassianSharpenProcessor.cs
@@ -78,9 +78,6 @@ namespace ImageProcessorCore.Processors
///
public override float[,] KernelY => this.kernelY;
- ///
- public override int Parallelism => 1;
-
///
protected override void OnApply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle)
{
diff --git a/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs b/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
index 63c18e9eb..e046be6a9 100644
--- a/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/GlowProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// Creates a glow effect on the image
///
- public class GlowProcessor : ParallelImageProcessor
+ public class GlowProcessor : ImageProcessor
{
///
/// Gets or sets the glow color to apply.
diff --git a/src/ImageProcessorCore/Filters/Processors/InvertProcessor.cs b/src/ImageProcessorCore/Filters/Processors/InvertProcessor.cs
index 31ef3ceb8..1f319b92b 100644
--- a/src/ImageProcessorCore/Filters/Processors/InvertProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/InvertProcessor.cs
@@ -11,7 +11,7 @@ namespace ImageProcessorCore.Processors
///
/// An to invert the colors of an .
///
- public class InvertProcessor : ParallelImageProcessor
+ public class InvertProcessor : ImageProcessor
{
///
protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
diff --git a/src/ImageProcessorCore/Filters/Processors/PixelateProcessor.cs b/src/ImageProcessorCore/Filters/Processors/PixelateProcessor.cs
index 6c129bbee..4769799b5 100644
--- a/src/ImageProcessorCore/Filters/Processors/PixelateProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/PixelateProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// An to invert the colors of an .
///
- public class PixelateProcessor : ParallelImageProcessor
+ public class PixelateProcessor : ImageProcessor
{
///
/// Initializes a new instance of the class.
@@ -27,9 +27,6 @@ namespace ImageProcessorCore.Processors
this.Value = size;
}
- ///
- public override int Parallelism { get; set; } = 1;
-
///
/// Gets or the pixel size.
///
@@ -59,7 +56,6 @@ namespace ImageProcessorCore.Processors
{
for (int x = startX; x < endX; x += size)
{
-
int offsetX = offset;
int offsetY = offset;
@@ -88,6 +84,7 @@ namespace ImageProcessorCore.Processors
}
}
}
+
this.OnRowProcessed();
}
});
diff --git a/src/ImageProcessorCore/Filters/Processors/VignetteProcessor.cs b/src/ImageProcessorCore/Filters/Processors/VignetteProcessor.cs
index 6a1bbc684..1fd4630ed 100644
--- a/src/ImageProcessorCore/Filters/Processors/VignetteProcessor.cs
+++ b/src/ImageProcessorCore/Filters/Processors/VignetteProcessor.cs
@@ -12,7 +12,7 @@ namespace ImageProcessorCore.Processors
///
/// Creates a vignette effect on the image
///
- public class VignetteProcessor : ParallelImageProcessor
+ public class VignetteProcessor : ImageProcessor
{
///
/// Gets or sets the vignette color to apply.
diff --git a/src/ImageProcessorCore/ParallelImageProcessor.cs b/src/ImageProcessorCore/ImageProcessor.cs
similarity index 69%
rename from src/ImageProcessorCore/ParallelImageProcessor.cs
rename to src/ImageProcessorCore/ImageProcessor.cs
index a6b9fc354..ea76ebbf8 100644
--- a/src/ImageProcessorCore/ParallelImageProcessor.cs
+++ b/src/ImageProcessorCore/ImageProcessor.cs
@@ -1,4 +1,4 @@
-//
+//
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
//
@@ -7,21 +7,15 @@ namespace ImageProcessorCore.Processors
{
using System;
using System.Threading;
- using System.Threading.Tasks;
///
- /// Allows the application of processors using parallel processing.
+ /// Allows the application of processors to images.
///
- public abstract class ParallelImageProcessor : IImageProcessor
+ public abstract class ImageProcessor : IImageProcessor
{
///
public event ProgressEventHandler OnProgress;
- ///
- /// Gets or sets the count of workers to run the process in parallel.
- ///
- public virtual int Parallelism { get; set; } = Environment.ProcessorCount * 2;
-
///
/// The number of rows processed by a derived class.
///
@@ -42,34 +36,7 @@ namespace ImageProcessorCore.Processors
this.numRowsProcessed = 0;
this.totalRows = sourceRectangle.Height;
- if (this.Parallelism > 1)
- {
- int partitionCount = this.Parallelism;
-
- Task[] tasks = new Task[partitionCount];
-
- for (int p = 0; p < partitionCount; p++)
- {
- int current = p;
- tasks[p] = Task.Run(
- () =>
- {
- int batchSize = sourceRectangle.Height / partitionCount;
- int yStart = sourceRectangle.Y + (current * batchSize);
- int yEnd = current == partitionCount - 1
- ? sourceRectangle.Bottom
- : yStart + batchSize;
-
- this.Apply(target, source, target.Bounds, sourceRectangle, yStart, yEnd);
- });
- }
-
- Task.WaitAll(tasks);
- }
- else
- {
- this.Apply(target, source, target.Bounds, sourceRectangle, sourceRectangle.Y, sourceRectangle.Bottom);
- }
+ this.Apply(target, source, target.Bounds, sourceRectangle, sourceRectangle.Y, sourceRectangle.Bottom);
this.AfterApply(target, source, target.Bounds, sourceRectangle);
}
@@ -88,6 +55,7 @@ namespace ImageProcessorCore.Processors
float[] pixels = new float[width * height * 4];
target.SetPixels(width, height, pixels);
+ // Ensure we always have bounds.
if (sourceRectangle == Rectangle.Empty)
{
sourceRectangle = source.Bounds;
@@ -101,33 +69,9 @@ namespace ImageProcessorCore.Processors
this.OnApply(target, source, targetRectangle, sourceRectangle);
this.numRowsProcessed = 0;
- this.totalRows = targetRectangle.Bottom;
+ this.totalRows = targetRectangle.Height;
- if (this.Parallelism > 1)
- {
- int partitionCount = this.Parallelism;
-
- Task[] tasks = new Task[partitionCount];
-
- for (int p = 0; p < partitionCount; p++)
- {
- int current = p;
- tasks[p] = Task.Run(() =>
- {
- int batchSize = targetRectangle.Bottom / partitionCount;
- int yStart = current * batchSize;
- int yEnd = current == partitionCount - 1 ? targetRectangle.Bottom : yStart + batchSize;
-
- this.Apply(target, source, targetRectangle, sourceRectangle, yStart, yEnd);
- });
- }
-
- Task.WaitAll(tasks);
- }
- else
- {
- this.Apply(target, source, targetRectangle, sourceRectangle, targetRectangle.Y, targetRectangle.Bottom);
- }
+ this.Apply(target, source, targetRectangle, sourceRectangle, targetRectangle.Y, targetRectangle.Bottom);
this.AfterApply(target, source, target.Bounds, sourceRectangle);
}
diff --git a/src/ImageProcessorCore/Samplers/Processors/CropProcessor.cs b/src/ImageProcessorCore/Samplers/Processors/CropProcessor.cs
index e6707afa0..adcd3c180 100644
--- a/src/ImageProcessorCore/Samplers/Processors/CropProcessor.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/CropProcessor.cs
@@ -15,8 +15,6 @@ namespace ImageProcessorCore.Processors
///
protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
{
- int targetY = targetRectangle.Y;
- int targetBottom = targetRectangle.Bottom;
int startX = targetRectangle.X;
int endX = targetRectangle.Right;
int sourceX = sourceRectangle.X;
@@ -30,15 +28,12 @@ namespace ImageProcessorCore.Processors
endY,
y =>
{
- if (y >= targetY && y < targetBottom)
+ for (int x = startX; x < endX; x++)
{
- for (int x = startX; x < endX; x++)
- {
- targetPixels[x, y] = sourcePixels[x + sourceX, y + sourceY];
- }
-
- this.OnRowProcessed();
+ targetPixels[x, y] = sourcePixels[x + sourceX, y + sourceY];
}
+
+ this.OnRowProcessed();
});
}
}
diff --git a/src/ImageProcessorCore/Samplers/Processors/ImageSampler.cs b/src/ImageProcessorCore/Samplers/Processors/ImageSampler.cs
index cc8bfe4cc..adfe77432 100644
--- a/src/ImageProcessorCore/Samplers/Processors/ImageSampler.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/ImageSampler.cs
@@ -9,7 +9,7 @@ namespace ImageProcessorCore.Processors
/// Applies sampling methods to an image.
/// All processors requiring resampling or resizing should inherit from this.
///
- public abstract class ImageSampler : ParallelImageProcessor, IImageSampler
+ public abstract class ImageSampler : ImageProcessor, IImageSampler
{
///
public virtual bool Compand { get; set; } = false;
diff --git a/src/ImageProcessorCore/Samplers/Processors/ResizeProcessor.cs b/src/ImageProcessorCore/Samplers/Processors/ResizeProcessor.cs
index 82b07d40b..0431dc95e 100644
--- a/src/ImageProcessorCore/Samplers/Processors/ResizeProcessor.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/ResizeProcessor.cs
@@ -31,9 +31,6 @@ namespace ImageProcessorCore.Processors
this.Sampler = sampler;
}
- ///
- public override int Parallelism { get; set; } = 1;
-
///
/// Gets the sampler to perform the resize operation.
///
@@ -62,13 +59,7 @@ namespace ImageProcessorCore.Processors
}
///
- protected override void Apply(
- ImageBase target,
- ImageBase source,
- Rectangle targetRectangle,
- Rectangle sourceRectangle,
- int startY,
- int endY)
+ protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
{
// Jump out, we'll deal with that later.
if (source.Bounds == target.Bounds && sourceRectangle == targetRectangle)
diff --git a/src/ImageProcessorCore/Samplers/Processors/RotateFlipProcessor.cs b/src/ImageProcessorCore/Samplers/Processors/RotateFlipProcessor.cs
index 263242fc1..6ef8866ba 100644
--- a/src/ImageProcessorCore/Samplers/Processors/RotateFlipProcessor.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/RotateFlipProcessor.cs
@@ -34,9 +34,6 @@ namespace ImageProcessorCore.Processors
///
public RotateType RotateType { get; }
- ///
- public override int Parallelism { get; set; } = 1;
-
///
protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY)
{
diff --git a/src/ImageProcessorCore/Samplers/Processors/RotateProcessor.cs b/src/ImageProcessorCore/Samplers/Processors/RotateProcessor.cs
index d12bd3ec2..7aafe0e08 100644
--- a/src/ImageProcessorCore/Samplers/Processors/RotateProcessor.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/RotateProcessor.cs
@@ -18,9 +18,6 @@ namespace ImageProcessorCore.Processors
///
private Matrix3x2 processMatrix;
- ///
- public override int Parallelism { get; set; } = 1;
-
///
/// Gets or sets the angle of processMatrix in degrees.
///
diff --git a/src/ImageProcessorCore/Samplers/Processors/SkewProcessor.cs b/src/ImageProcessorCore/Samplers/Processors/SkewProcessor.cs
index 43e54a1c7..02d5dd9e4 100644
--- a/src/ImageProcessorCore/Samplers/Processors/SkewProcessor.cs
+++ b/src/ImageProcessorCore/Samplers/Processors/SkewProcessor.cs
@@ -18,9 +18,6 @@ namespace ImageProcessorCore.Processors
///
private Matrix3x2 processMatrix;
- ///
- public override int Parallelism { get; set; } = 1;
-
///
/// Gets or sets the angle of rotation along the x-axis in degrees.
///