public override void Allocate()
		{
			FNeedsConversion = ImageUtils.NeedsConversion(FInput.ImageAttributes.ColorFormat, out FConvertedFormat);
			if (FNeedsConversion)
			{
				FBufferConverted = new CVImageDoubleBuffer();
				FBufferConverted.Initialise(new CVImageAttributes(FInput.ImageAttributes.Size, FConvertedFormat));
			}

			FNeedsTexture = true;
		}
        public override void Allocate()
        {
			//allocate w.r.t. incoming image
			lock (FLockImageAllocation)
			{
				FInputOk = false;
				FNeedsConversion = ImageUtils.NeedsConversion(FInput.ImageAttributes.ColorFormat, out FConvertedFormat);
				FBuffer = new CVImageDoubleBuffer();
				if (FNeedsConversion)
				{
					FBuffer.Initialise(new CVImageAttributes(FInput.ImageAttributes.Size, FConvertedFormat));
				}
				else
				{
					FBuffer.Initialise(FInput.ImageAttributes);
				}

				this.Width = FInput.ImageAttributes.Width;
				this.Height = FInput.ImageAttributes.Height;
				FInputOk = true;
			}
        }