85 lines
No EOL
3.2 KiB
C#
85 lines
No EOL
3.2 KiB
C#
using System;
|
|
using Paca.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Core;
|
|
|
|
public class VideoTonemapEnhancerGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate413_VideoTonemapEnhancer_BuildsHdrToSdrFilter_WithSelectedAlgorithm()
|
|
{
|
|
var filterMobius = VideoTonemapEnhancer.BuildHdrToSdrFilter(TonemapAlgorithm.Mobius);
|
|
Assert.Contains("tonemap=mobius", filterMobius);
|
|
Assert.Contains("zscale=transfer=bt709", filterMobius);
|
|
|
|
var filterHable = VideoTonemapEnhancer.BuildHdrToSdrFilter(TonemapAlgorithm.Hable);
|
|
Assert.Contains("tonemap=hable", filterHable);
|
|
|
|
var filterReinhard = VideoTonemapEnhancer.BuildHdrToSdrFilter(TonemapAlgorithm.Reinhard);
|
|
Assert.Contains("tonemap=reinhard", filterReinhard);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate414_VideoTonemapEnhancer_BuildsColorGradeFilter_WithCustomPreset()
|
|
{
|
|
var cinematic = VideoTonemapEnhancer.BuildColorGradeFilter(ColorGradePreset.CinematicWarm);
|
|
Assert.Contains("eq=contrast=1.10", cinematic);
|
|
Assert.Contains("saturation=1.15", cinematic);
|
|
Assert.Contains("colorbalance=rs=0.05", cinematic);
|
|
|
|
var oled = VideoTonemapEnhancer.BuildColorGradeFilter(ColorGradePreset.OledDeepBlack);
|
|
Assert.Contains("contrast=1.05", oled);
|
|
Assert.Contains("gamma=0.95", oled);
|
|
|
|
var none = VideoTonemapEnhancer.BuildColorGradeFilter(ColorGradePreset.None);
|
|
Assert.Empty(none);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate415_VideoTonemapEnhancer_CombinesTonemapAndColorGrade_Properly()
|
|
{
|
|
var combined = VideoTonemapEnhancer.BuildCombinedFilter(TonemapAlgorithm.Hable, ColorGradePreset.CinematicWarm);
|
|
Assert.Contains("tonemap=hable", combined);
|
|
Assert.Contains("colorbalance=rs=0.05", combined);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate416_VideoTonemapEnhancer_BuildsFfmpegCliArgs_WithPixelFormat()
|
|
{
|
|
var args = VideoTonemapEnhancer.BuildFfmpegArgs("hdr.mp4", "sdr.mp4", TonemapAlgorithm.Mobius, ColorGradePreset.OledDeepBlack, crf: 20);
|
|
|
|
Assert.Contains("-i \"hdr.mp4\"", args);
|
|
Assert.Contains("-vf \"", args);
|
|
Assert.Contains("tonemap=mobius", args);
|
|
Assert.Contains("-c:v libx264 -crf 20", args);
|
|
Assert.Contains("-pix_fmt yuv420p", args);
|
|
Assert.Contains("-c:a copy", args);
|
|
Assert.Contains("\"sdr.mp4\"", args);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate417_VideoTonemapEnhancer_SupportsHardwareAcceleratedGpuEncoding()
|
|
{
|
|
var nvencArgs = VideoTonemapEnhancer.BuildFfmpegArgs(
|
|
"hdr.mp4", "sdr.mp4",
|
|
TonemapAlgorithm.Hable, ColorGradePreset.CinematicWarm,
|
|
crf: 22,
|
|
videoEncoder: "hevc_nvenc",
|
|
presetSpeed: "p4");
|
|
|
|
Assert.Contains("-c:v hevc_nvenc", nvencArgs);
|
|
Assert.Contains("-cq 22", nvencArgs);
|
|
Assert.Contains("-preset p4", nvencArgs);
|
|
Assert.DoesNotContain("libx264", nvencArgs);
|
|
|
|
var qsvArgs = VideoTonemapEnhancer.BuildFfmpegArgs(
|
|
"hdr.mp4", "sdr.mp4",
|
|
TonemapAlgorithm.Mobius, ColorGradePreset.Vibrant,
|
|
crf: 24,
|
|
videoEncoder: "av1_qsv");
|
|
|
|
Assert.Contains("-c:v av1_qsv", qsvArgs);
|
|
Assert.Contains("-global_quality 24", qsvArgs);
|
|
}
|
|
} |