public async Task PreparePreviewFile(MediaEncoderSettings settings, bool overwrite) {
if (string.IsNullOrEmpty(settings.FileName))
return;
if (overwrite) {
File.Delete(PreviewSourceFile);
// Select default open method.
if (settings.FileName.ToLower().EndsWith(".avi"))
settings.ConvertToAvi = false;
else {
using (MediaInfoReader InfoReader = new MediaInfoReader()) {
InfoReader.LoadInfo(Settings.NaturalGroundingFolder + settings.FileName);
if (settings.ConvertToAvi && InfoReader.Height.HasValue && InfoReader.Height >= 720)
settings.ConvertToAvi = false;
}
}
}
bool AviFileReady = File.Exists(PreviewSourceFile);
if (!AviFileReady && settings.ConvertToAvi)
AviFileReady = await Task.Run(() => FfmpegBusiness.ConvertToAVI(Settings.NaturalGroundingFolder + settings.FileName, PreviewSourceFile, false));
if (AviFileReady && settings.ConvertToAvi)
await GetMediaInfo(PreviewSourceFile, settings);
else {
settings.ConvertToAvi = false;
await GetMediaInfo(Settings.NaturalGroundingFolder + settings.FileName, settings);
}
// Auto-calculate crop settings.
if (settings.CropLeft == 0 && settings.CropTop == 0 && settings.CropRight == 0 && settings.CropBottom == 0) {
Rect AutoCrop = await Task.Run(() => FfmpegBusiness.GetAutoCropRect(settings, true));
if (settings.CropLeft == 0)
settings.CropLeft = AutoCrop.Left;
if (settings.CropTop == 0)
settings.CropTop = AutoCrop.Top;
if (settings.CropRight == 0)
settings.CropRight = AutoCrop.Right;
if (settings.CropBottom == 0)
settings.CropBottom = AutoCrop.Bottom;
}
}