mirror of
https://github.com/unclshura/splitter.git
synced 2026-06-22 00:22:01 +00:00
34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
using NcnnDotNet.Layers;
|
|
using OpenCvSharp;
|
|
using splitter.tui;
|
|
|
|
namespace Splitter_UI.Services;
|
|
|
|
public sealed class AutoDecisionService(IThumbnailService _thumbnails, IFileProbeService _fileProbe, ILogger _log) : IAutoDecisionService
|
|
{
|
|
public void ApplyAutoDecisions(JobViewModel job)
|
|
{
|
|
Task.Run(() => Detect(job));
|
|
}
|
|
|
|
private async Task Detect(JobViewModel job)
|
|
{
|
|
try
|
|
{
|
|
job.Probe = await _fileProbe.ProbeAsync(job.InputFile);
|
|
job.Thumbnail = await _thumbnails.CreateThumbnailAsync(job.InputFile, job.Probe, rotateDegree: job.Rotate);
|
|
|
|
var sampler = new VideoRotationSampler(null);
|
|
job.Rotate = await sampler.DetectRotationAsync(job.InputFile, job.Probe.Duration);
|
|
job.SuggestedAction = job.Rotate == 0 ? "crop" : "rotate";
|
|
|
|
if (job.SuggestedAction == "crop")
|
|
job.Detect = "body";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_log.LogError($"Error creating thumbnail for {Path.GetFileName(job.InputFile)}: {ex.Message}");
|
|
}
|
|
}
|
|
}
|