public ImageSharpRenderer(int frameWidth, int frameHeight, VideoTrack videoTrack) { VideoTrack = videoTrack; using (var background = Image.Load <PixelColor>("background-small.jpg")) { background.Mutate(ctx => ctx.Resize(frameWidth, frameHeight)); // Pre-created bouncing ball frames. // ImageSharp is not that fast yet, and our goal is to benchmark webrtc and NvEnc, not ImageSharp. var ballRadius = background.Width / 20f; var ballPath = new EllipsePolygon(0, 0, ballRadius); var ballColor = new PixelColor(255, 255, 128); for (int i = 0; i < FrameCount; ++i) { // ReSharper disable once AccessToDisposedClosure var image = background.Clone(); var a = Math.PI * i / FrameCount; var h = image.Height - ballRadius; var y = image.Height - (float)(Math.Abs(Math.Sin(a) * h)); image.Mutate(ctx => ctx .Fill(GraphicsOptions.Default, ballColor, ballPath.Translate(image.Width / 2f, y))); _videoFrames.Add(image); } } }
public void FromBgra32(Bgra32 source) => this.FromScaledVector4(source.ToScaledVector4());
public void PackFromBgra32(Bgra32 source) { this.PackFromVector4(source.ToVector4()); }
public void FromBgra32(Bgra32 source) { this.R = ImageMaths.UpscaleFrom8BitTo16Bit(source.R); this.G = ImageMaths.UpscaleFrom8BitTo16Bit(source.G); this.B = ImageMaths.UpscaleFrom8BitTo16Bit(source.B); }
public void FromBgra32(Bgra32 source) { this.R = ColorNumerics.UpscaleFrom8BitTo16Bit(source.R); this.G = ColorNumerics.UpscaleFrom8BitTo16Bit(source.G); this.B = ColorNumerics.UpscaleFrom8BitTo16Bit(source.B); }
public void FromBgra32(Bgra32 source) => this.FromVector4(source.ToVector4());
public void PackFromBgra32(Bgra32 source) { this.PackedValue = source.A; }
public void FromBgra32(Bgra32 source) { this.R = source.R; this.G = source.G; this.B = source.B; }
public void PackFromBgra32(Bgra32 source) { this.backingVector = source.ToVector4(); }