mirror of
https://github.com/rosenbjerg/FFMpegCore.git
synced 2024-11-10 08:34:12 +01:00
Updated tests for SkiaSharp
This commit is contained in:
parent
f464be430b
commit
7f17d68a52
2 changed files with 30 additions and 30 deletions
|
@ -4,13 +4,14 @@
|
||||||
using System.Runtime.Versioning;
|
using System.Runtime.Versioning;
|
||||||
using FFMpegCore.Extensions.System.Drawing.Common;
|
using FFMpegCore.Extensions.System.Drawing.Common;
|
||||||
using FFMpegCore.Pipes;
|
using FFMpegCore.Pipes;
|
||||||
|
using SkiaSharp;
|
||||||
|
|
||||||
namespace FFMpegCore.Test.Utilities
|
namespace FFMpegCore.Test.Utilities
|
||||||
{
|
{
|
||||||
[SupportedOSPlatform("windows")]
|
[SupportedOSPlatform("windows")]
|
||||||
internal static class BitmapSource
|
internal static class BitmapSource
|
||||||
{
|
{
|
||||||
public static IEnumerable<IVideoFrame> CreateBitmaps(int count, PixelFormat fmt, int w, int h)
|
public static IEnumerable<IVideoFrame> CreateBitmaps(int count, SKColorType fmt, int w, int h)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < count; i++)
|
for (var i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
|
@ -21,9 +22,9 @@ public static IEnumerable<IVideoFrame> CreateBitmaps(int count, PixelFormat fmt,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BitmapVideoFrameWrapper CreateVideoFrame(int index, PixelFormat fmt, int w, int h, float scaleNoise, float offset)
|
public static BitmapVideoFrameWrapper CreateVideoFrame(int index, SKColorType fmt, int w, int h, float scaleNoise, float offset)
|
||||||
{
|
{
|
||||||
var bitmap = new Bitmap(w, h, fmt);
|
var bitmap = new SKBitmap(w, h, fmt, SKAlphaType.Opaque);
|
||||||
|
|
||||||
offset = offset * index;
|
offset = offset * index;
|
||||||
|
|
||||||
|
@ -36,9 +37,9 @@ public static BitmapVideoFrameWrapper CreateVideoFrame(int index, PixelFormat fm
|
||||||
var nx = x * scaleNoise + offset;
|
var nx = x * scaleNoise + offset;
|
||||||
var ny = y * scaleNoise + offset;
|
var ny = y * scaleNoise + offset;
|
||||||
|
|
||||||
var value = (int)((Perlin.Noise(nx, ny) + 1.0f) / 2.0f * 255);
|
var value = (byte)((Perlin.Noise(nx, ny) + 1.0f) / 2.0f * 255);
|
||||||
|
|
||||||
var color = Color.FromArgb((int)(value * xf), (int)(value * yf), value);
|
var color = new SKColor((byte)(value * xf), (byte)(value * yf), value);
|
||||||
|
|
||||||
bitmap.SetPixel(x, y, color);
|
bitmap.SetPixel(x, y, color);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System.Drawing.Imaging;
|
using System.Runtime.Versioning;
|
||||||
using System.Runtime.Versioning;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using FFMpegCore.Arguments;
|
using FFMpegCore.Arguments;
|
||||||
using FFMpegCore.Enums;
|
using FFMpegCore.Enums;
|
||||||
|
@ -9,6 +8,7 @@
|
||||||
using FFMpegCore.Test.Resources;
|
using FFMpegCore.Test.Resources;
|
||||||
using FFMpegCore.Test.Utilities;
|
using FFMpegCore.Test.Utilities;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using SkiaSharp;
|
||||||
|
|
||||||
namespace FFMpegCore.Test
|
namespace FFMpegCore.Test
|
||||||
{
|
{
|
||||||
|
@ -83,9 +83,9 @@ public void Video_ToH265_MKV_Args()
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
[SupportedOSPlatform("windows")]
|
||||||
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format24bppRgb)]
|
[DataRow(SKColorType.Rgb565)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format32bppArgb)]
|
[DataRow(SKColorType.Bgra8888)]
|
||||||
public void Video_ToMP4_Args_Pipe(System.Drawing.Imaging.PixelFormat pixelFormat)
|
public void Video_ToMP4_Args_Pipe(SKColorType pixelFormat)
|
||||||
{
|
{
|
||||||
using var outputFile = new TemporaryFile($"out{VideoType.Mp4.Extension}");
|
using var outputFile = new TemporaryFile($"out{VideoType.Mp4.Extension}");
|
||||||
|
|
||||||
|
@ -106,8 +106,8 @@ public void Video_ToMP4_Args_Pipe_DifferentImageSizes()
|
||||||
|
|
||||||
var frames = new List<IVideoFrame>
|
var frames = new List<IVideoFrame>
|
||||||
{
|
{
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 255, 255, 1, 0),
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 255, 255, 1, 0),
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 256, 256, 1, 0)
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 256, 256, 1, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
var videoFramesSource = new RawVideoPipeSource(frames);
|
var videoFramesSource = new RawVideoPipeSource(frames);
|
||||||
|
@ -126,8 +126,8 @@ public async Task Video_ToMP4_Args_Pipe_DifferentImageSizes_Async()
|
||||||
|
|
||||||
var frames = new List<IVideoFrame>
|
var frames = new List<IVideoFrame>
|
||||||
{
|
{
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 255, 255, 1, 0),
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 255, 255, 1, 0),
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 256, 256, 1, 0)
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 256, 256, 1, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
var videoFramesSource = new RawVideoPipeSource(frames);
|
var videoFramesSource = new RawVideoPipeSource(frames);
|
||||||
|
@ -146,8 +146,8 @@ public void Video_ToMP4_Args_Pipe_DifferentPixelFormats()
|
||||||
|
|
||||||
var frames = new List<IVideoFrame>
|
var frames = new List<IVideoFrame>
|
||||||
{
|
{
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 255, 255, 1, 0),
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 255, 255, 1, 0),
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format32bppRgb, 255, 255, 1, 0)
|
BitmapSource.CreateVideoFrame(0, SKColorType.Bgra8888, 255, 255, 1, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
var videoFramesSource = new RawVideoPipeSource(frames);
|
var videoFramesSource = new RawVideoPipeSource(frames);
|
||||||
|
@ -166,8 +166,8 @@ public async Task Video_ToMP4_Args_Pipe_DifferentPixelFormats_Async()
|
||||||
|
|
||||||
var frames = new List<IVideoFrame>
|
var frames = new List<IVideoFrame>
|
||||||
{
|
{
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 255, 255, 1, 0),
|
BitmapSource.CreateVideoFrame(0, SKColorType.Rgb565, 255, 255, 1, 0),
|
||||||
BitmapSource.CreateVideoFrame(0, System.Drawing.Imaging.PixelFormat.Format32bppRgb, 255, 255, 1, 0)
|
BitmapSource.CreateVideoFrame(0, SKColorType.Bgra8888, 255, 255, 1, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
var videoFramesSource = new RawVideoPipeSource(frames);
|
var videoFramesSource = new RawVideoPipeSource(frames);
|
||||||
|
@ -313,9 +313,9 @@ public void Video_ToTS_Args()
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
[SupportedOSPlatform("windows")]
|
||||||
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format24bppRgb)]
|
[DataRow(SKColorType.Rgb565)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format32bppArgb)]
|
[DataRow(SKColorType.Bgra8888)]
|
||||||
public async Task Video_ToTS_Args_Pipe(System.Drawing.Imaging.PixelFormat pixelFormat)
|
public async Task Video_ToTS_Args_Pipe(SKColorType pixelFormat)
|
||||||
{
|
{
|
||||||
using var output = new TemporaryFile($"out{VideoType.Ts.Extension}");
|
using var output = new TemporaryFile($"out{VideoType.Ts.Extension}");
|
||||||
var input = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
var input = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
||||||
|
@ -346,10 +346,9 @@ public async Task Video_ToOGV_Resize()
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
[SupportedOSPlatform("windows")]
|
||||||
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format24bppRgb)]
|
[DataRow(SKColorType.Rgb565)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format32bppArgb)]
|
[DataRow(SKColorType.Bgra8888)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format48bppRgb)]
|
public void RawVideoPipeSource_Ogv_Scale(SKColorType pixelFormat)
|
||||||
public void RawVideoPipeSource_Ogv_Scale(System.Drawing.Imaging.PixelFormat pixelFormat)
|
|
||||||
{
|
{
|
||||||
using var outputFile = new TemporaryFile($"out{VideoType.Ogv.Extension}");
|
using var outputFile = new TemporaryFile($"out{VideoType.Ogv.Extension}");
|
||||||
var videoFramesSource = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
var videoFramesSource = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
||||||
|
@ -382,10 +381,10 @@ public void Scale_Mp4_Multithreaded()
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
[SupportedOSPlatform("windows")]
|
||||||
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
[WindowsOnlyDataTestMethod, Timeout(10000)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format24bppRgb)]
|
[DataRow(SKColorType.Rgb565)]
|
||||||
[DataRow(System.Drawing.Imaging.PixelFormat.Format32bppArgb)]
|
[DataRow(SKColorType.Bgra8888)]
|
||||||
// [DataRow(PixelFormat.Format48bppRgb)]
|
// [DataRow(PixelFormat.Format48bppRgb)]
|
||||||
public void Video_ToMP4_Resize_Args_Pipe(System.Drawing.Imaging.PixelFormat pixelFormat)
|
public void Video_ToMP4_Resize_Args_Pipe(SKColorType pixelFormat)
|
||||||
{
|
{
|
||||||
using var outputFile = new TemporaryFile($"out{VideoType.Mp4.Extension}");
|
using var outputFile = new TemporaryFile($"out{VideoType.Mp4.Extension}");
|
||||||
var videoFramesSource = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
var videoFramesSource = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, pixelFormat, 256, 256));
|
||||||
|
@ -407,7 +406,7 @@ public void Video_Snapshot_InMemory()
|
||||||
var input = FFProbe.Analyse(TestResources.Mp4Video);
|
var input = FFProbe.Analyse(TestResources.Mp4Video);
|
||||||
Assert.AreEqual(input.PrimaryVideoStream!.Width, bitmap.Width);
|
Assert.AreEqual(input.PrimaryVideoStream!.Width, bitmap.Width);
|
||||||
Assert.AreEqual(input.PrimaryVideoStream.Height, bitmap.Height);
|
Assert.AreEqual(input.PrimaryVideoStream.Height, bitmap.Height);
|
||||||
Assert.AreEqual(bitmap.RawFormat, ImageFormat.Png);
|
Assert.AreEqual(bitmap.ColorType, SKColorType.Bgra8888);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod, Timeout(10000)]
|
[TestMethod, Timeout(10000)]
|
||||||
|
@ -568,7 +567,7 @@ public void Video_TranscodeInMemory()
|
||||||
{
|
{
|
||||||
using var resStream = new MemoryStream();
|
using var resStream = new MemoryStream();
|
||||||
var reader = new StreamPipeSink(resStream);
|
var reader = new StreamPipeSink(resStream);
|
||||||
var writer = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, System.Drawing.Imaging.PixelFormat.Format24bppRgb, 128, 128));
|
var writer = new RawVideoPipeSource(BitmapSource.CreateBitmaps(128, SKColorType.Rgb565, 128, 128));
|
||||||
|
|
||||||
FFMpegArguments
|
FFMpegArguments
|
||||||
.FromPipeInput(writer)
|
.FromPipeInput(writer)
|
||||||
|
|
Loading…
Reference in a new issue