public async Task EncodeFileAsync(MediaEncoderSettings settings) {
settings.JobIndex = ++JobIndex;
// Files must be prepared before adding to queue so that user can replace preview files.
DeleteJobFiles(settings);
File.Delete(PreviewScriptFile);
File.Delete(PreviewSettingsFile);
if (settings.ConvertToAvi)
SafeMove(PreviewSourceFile, settings.InputFile);
SaveSettingsFile(settings, settings.SettingsFile);
AviSynthScriptBuilder Script = new AviSynthScriptBuilder(settings.CustomScript);
if (Script.IsEmpty)
Script = GenerateVideoScript(settings, settings.InputFile, false, true);
else
Script.Replace(Script.GetAsciiPath(PreviewSourceFile), Script.GetAsciiPath(settings.InputFile));
//Script.DitherOut(true);
Script.WriteToFile(settings.ScriptFile);
await StartEncodeFileAsync(settings);
}