57 lines
No EOL
1.8 KiB
C#
57 lines
No EOL
1.8 KiB
C#
using System;
|
|
using Paca.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Core;
|
|
|
|
public class AudioDynamicRangeCompressorGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate429_AudioDynamicRangeCompressor_BuildsPresetFilter_Accurately()
|
|
{
|
|
var filter = AudioDynamicRangeCompressor.BuildFilter(CompressorPreset.NightListening);
|
|
|
|
Assert.Contains("threshold=-24dB", filter);
|
|
Assert.Contains("ratio=6", filter);
|
|
Assert.Contains("alimiter=limit=-1dB", filter);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate430_AudioDynamicRangeCompressor_BuildsCustomCompressorFilter()
|
|
{
|
|
var filter = AudioDynamicRangeCompressor.BuildCustomFilter(
|
|
thresholdDb: -22.0,
|
|
ratio: 5.0,
|
|
attackMs: 8.0,
|
|
releaseMs: 120.0,
|
|
makeupDb: 5.0,
|
|
limitPeakDb: -0.5
|
|
);
|
|
|
|
Assert.Contains("threshold=-22dB", filter);
|
|
Assert.Contains("ratio=5", filter);
|
|
Assert.Contains("attack=8", filter);
|
|
Assert.Contains("release=120", filter);
|
|
Assert.Contains("makeup=5dB", filter);
|
|
Assert.Contains("alimiter=limit=-0.5dB", filter);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate431_AudioDynamicRangeCompressor_HandlesPassthrough()
|
|
{
|
|
var filter = AudioDynamicRangeCompressor.BuildFilter(CompressorPreset.None);
|
|
Assert.Equal("anull", filter);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate432_AudioDynamicRangeCompressor_BuildsFfmpegArgs_Properly()
|
|
{
|
|
var args = AudioDynamicRangeCompressor.BuildFfmpegArgs("in.mp4", "out.mp4", CompressorPreset.NightListening, copyVideo: true);
|
|
|
|
Assert.Contains("-i \"in.mp4\"", args);
|
|
Assert.Contains("-c:v copy", args);
|
|
Assert.Contains("-af \"acompressor=", args);
|
|
Assert.Contains("-c:a aac -b:a 192k", args);
|
|
Assert.Contains("\"out.mp4\"", args);
|
|
}
|
|
} |