diff --git a/Kyoo/Controllers/Transcoder/Transcoder.cs b/Kyoo/Controllers/Transcoder/Transcoder.cs index 46c540c6..43807b0d 100644 --- a/Kyoo/Controllers/Transcoder/Transcoder.cs +++ b/Kyoo/Controllers/Transcoder/Transcoder.cs @@ -1,12 +1,10 @@ using System; using Kyoo.Models; using Microsoft.Extensions.Configuration; -using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; using Kyoo.Controllers.TranscoderLink; - #pragma warning disable 4014 namespace Kyoo.Controllers @@ -27,24 +25,28 @@ namespace Kyoo.Controllers throw new BadTranscoderException(); } - public async Task GetTrackInfo(string path) + public Task GetTrackInfo(string path) { - return await Task.Run(() => + return Task.Factory.StartNew(() => { TranscoderAPI.GetTrackInfo(path, out Track[] tracks); return tracks; - }); + }, TaskCreationOptions.LongRunning); } - public async Task ExtractSubtitles(string path) + public Task ExtractSubtitles(string path) { - string output = Path.Combine(Path.GetDirectoryName(path), "Subtitles"); + string dir = Path.GetDirectoryName(path); + if (dir == null) + throw new ArgumentException("Invalid path."); + + string output = Path.Combine(dir, "Subtitles"); Directory.CreateDirectory(output); - return await Task.Run(() => + return Task.Factory.StartNew(() => { TranscoderAPI.ExtractSubtitles(path, output, out Track[] tracks); return tracks; - }); + }, TaskCreationOptions.LongRunning); } public async Task Transmux(Episode episode) @@ -65,11 +67,12 @@ namespace Kyoo.Controllers await Console.Error.WriteLineAsync($"Access to the path {manifest} is denied. Please change your transmux path in the config."); return null; } - Task.Run(() => + + Task.Factory.StartNew(() => { transmuxFailed = TranscoderAPI.transmux(episode.Path, manifest.Replace('\\', '/'), out playableDuration) != 0; - }); - while (playableDuration < 10 || (!File.Exists(manifest) && !transmuxFailed)) + }, TaskCreationOptions.LongRunning); + while (playableDuration < 10 || !File.Exists(manifest) && !transmuxFailed) await Task.Delay(10); return transmuxFailed ? null : manifest; } diff --git a/Kyoo/Controllers/Transcoder/TranscoderAPI.cs b/Kyoo/Controllers/Transcoder/TranscoderAPI.cs index 57140b6c..f55b4e6f 100644 --- a/Kyoo/Controllers/Transcoder/TranscoderAPI.cs +++ b/Kyoo/Controllers/Transcoder/TranscoderAPI.cs @@ -1,6 +1,4 @@ using System; -using System.Diagnostics; -using System.Linq; using System.Runtime.InteropServices; using Kyoo.Models; using Kyoo.Models.Watch; @@ -27,8 +25,8 @@ namespace Kyoo.Controllers.TranscoderLink [DllImport(TranscoderPath, CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr extract_subtitles(string path, string out_path, out int array_length, out int track_count); - [DllImport(TranscoderPath, CallingConvention = CallingConvention.Cdecl)] - private static extern void free_streams(IntPtr stream_ptr); + // [DllImport(TranscoderPath, CallingConvention = CallingConvention.Cdecl)] + // private static extern void free_streams(IntPtr stream_ptr); [DllImport(TranscoderPath, CallingConvention = CallingConvention.Cdecl)] private static extern void free(IntPtr ptr); @@ -48,7 +46,7 @@ namespace Kyoo.Controllers.TranscoderLink for (int i = 0; i < arrayLength; i++) { Stream stream = Marshal.PtrToStructure(streamsPtr); - if (stream.Type != StreamType.Unknow) + if (stream!.Type != StreamType.Unknow) { tracks[j] = new Track(stream); j++; @@ -76,7 +74,7 @@ namespace Kyoo.Controllers.TranscoderLink for (int i = 0; i < arrayLength; i++) { Stream stream = Marshal.PtrToStructure(streamsPtr); - if (stream.Type != StreamType.Unknow) + if (stream!.Type != StreamType.Unknow) { tracks[j] = new Track(stream); j++; diff --git a/Kyoo/Program.cs b/Kyoo/Program.cs index dfda8f1e..f04f5f57 100644 --- a/Kyoo/Program.cs +++ b/Kyoo/Program.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; diff --git a/Kyoo/Views/WebClient b/Kyoo/Views/WebClient index 7c117aae..32168468 160000 --- a/Kyoo/Views/WebClient +++ b/Kyoo/Views/WebClient @@ -1 +1 @@ -Subproject commit 7c117aaed04d693b12baf6b0061f77de084d56be +Subproject commit 3216846879e75fdc1b9ec4efc1da7599ee6e9e2c