diff --git a/IFME.FFmpeg/MediaInfo.cs b/IFME.FFmpeg/MediaInfo.cs index c2ac718..0c94f6b 100644 --- a/IFME.FFmpeg/MediaInfo.cs +++ b/IFME.FFmpeg/MediaInfo.cs @@ -58,6 +58,7 @@ public MediaInfo(string path) string lang = "und"; try { lang = stream.tags.language; } catch (Exception ex) { Console.WriteLine(ex.Message); } + if (string.IsNullOrEmpty(lang)) lang = "und"; string codec = "unknown"; try { codec = stream.codec_name; } @@ -142,6 +143,11 @@ public MediaInfo(string path) try { id = stream.index; } catch (Exception ex) { Console.WriteLine(ex.Message); } + string lang = "und"; + try { lang = stream.tags.language; } + catch (Exception ex) { Console.WriteLine(ex.Message); } + if (string.IsNullOrEmpty(lang)) lang = "und"; + string codec = "unknown"; try { codec = stream.codec_name; } catch (Exception ex) { Console.WriteLine(ex.Message); } @@ -158,10 +164,6 @@ public MediaInfo(string path) try { channel = stream.channels; } catch(Exception ex) { Console.WriteLine(ex.Message); } - string lang = "und"; - try { lang = stream.tags.language; } - catch (Exception ex) { Console.WriteLine(ex.Message); } - if (bitdepth == 0) bitdepth = 16; else if (bitdepth >= 32) bitdepth = 24; @@ -183,13 +185,14 @@ public MediaInfo(string path) try { id = stream.index; } catch (Exception ex) { Console.WriteLine(ex.Message); } - string codec = "unknown"; - try { codec = stream.codec_name; } - catch (Exception ex) { Console.WriteLine(ex.Message); } - string lang = "und"; try { lang = stream.tags.language; } catch (Exception ex) { Console.WriteLine(ex.Message); } + if (string.IsNullOrEmpty(lang)) lang = "und"; + + string codec = "unknown"; + try { codec = stream.codec_name; } + catch (Exception ex) { Console.WriteLine(ex.Message); } Subtitle.Add(new StreamSubtitle { @@ -232,10 +235,12 @@ public static string Print(MediaInfo value) $"Duration : {value.Duration} seconds{Environment.NewLine}" + $"Overall bit rate : {value.BitRate} bps{Environment.NewLine}"; - var video = $"{Environment.NewLine}Video{Environment.NewLine}"; + var v = 0; + var video = string.Empty; foreach (var item in value.Video) { - video += $"ID : {item.Id}{Environment.NewLine}" + + video += $"{Environment.NewLine}Video #{v++}{Environment.NewLine}" + + $"ID : {item.Id}{Environment.NewLine}" + $"Format : {item.Codec}{Environment.NewLine}" + $"Width : {item.Width}{Environment.NewLine}" + $"Height : {item.Height}{Environment.NewLine}" + @@ -246,10 +251,12 @@ public static string Print(MediaInfo value) $"Language : {item.Language}{Environment.NewLine}"; } - var audio = $"{Environment.NewLine}Audio{Environment.NewLine}"; + var a = 0; + var audio = string.Empty; foreach (var item in value.Audio) { - audio += $"ID : {item.Id}{Environment.NewLine}" + + audio += $"{Environment.NewLine}Audio #{a++}{Environment.NewLine}" + + $"ID : {item.Id}{Environment.NewLine}" + $"Format : {item.Codec}{Environment.NewLine}" + $"Channel(s) : {item.Channel}{Environment.NewLine}" + $"Sampling rate : {item.SampleRate} Hz{Environment.NewLine}" + @@ -257,18 +264,22 @@ public static string Print(MediaInfo value) $"Language : {item.Language}{Environment.NewLine}"; } - var subtitle = $"{Environment.NewLine}Subtitles{Environment.NewLine}"; + var s = 0; + var subtitle = string.Empty; foreach (var item in value.Subtitle) { - subtitle += $"ID : {item.Id}{Environment.NewLine}" + + subtitle += $"{Environment.NewLine}Subtitles #{s++}{Environment.NewLine}" + + $"ID : {item.Id}{Environment.NewLine}" + $"Format : {item.Codec}{Environment.NewLine}" + $"Language : {item.Language}{Environment.NewLine}"; } - var attach = $"{Environment.NewLine}Attachments{Environment.NewLine}"; + var t = 0; + var attach = string.Empty; foreach (var item in value.Attachment) { - attach += $"ID : {item.Id}{Environment.NewLine}" + + attach += $"{Environment.NewLine}Attachments #{t++}{Environment.NewLine}" + + $"ID : {item.Id}{Environment.NewLine}" + $"Name : {item.FileName}{Environment.NewLine}" + $"MIME : {item.MimeType}{Environment.NewLine}"; } diff --git a/IFME/IFME.csproj b/IFME/IFME.csproj index 9237a1a..096acb5 100644 --- a/IFME/IFME.csproj +++ b/IFME/IFME.csproj @@ -135,6 +135,9 @@ PreserveNewest + + PreserveNewest + SettingsSingleFileGenerator Settings.Designer.cs @@ -179,5 +182,10 @@ + + + PreserveNewest + + \ No newline at end of file diff --git a/IFME/MediaEncoding.cs b/IFME/MediaEncoding.cs index 07eaf56..6be6132 100644 --- a/IFME/MediaEncoding.cs +++ b/IFME/MediaEncoding.cs @@ -106,8 +106,6 @@ internal static void Audio(MediaQueue queue, string tempDir) internal static void Video(MediaQueue queue, string tempDir) { - var original_data = new FFmpeg.MediaInfo(queue.FilePath); - for (int i = 0; i < queue.Video.Count; i++) { var item = queue.Video[i]; @@ -152,15 +150,6 @@ internal static void Video(MediaQueue queue, string tempDir) fps = $"-r {item.Quality.FrameRate}"; } - if (item.Quality.Width >= 128 && item.Quality.Height >= 128) - { - res = $"-s {item.Quality.Width}x{item.Quality.Height}"; - } - else - { - res = $"-s {original_data.Video[i].Width}x{original_data.Video[i].Height}"; - } - if (!vc.Args.Preset.IsDisable() && !item.Encoder.Preset.IsDisable()) { preset = $"{vc.Args.Preset} {item.Encoder.Preset}"; @@ -188,12 +177,24 @@ internal static void Video(MediaQueue queue, string tempDir) } // FFmpeg Video Filter + if (item.Quality.Width >= 128 && item.Quality.Height >= 128) + { + res = $"scale={item.Quality.Width}:{item.Quality.Height}"; + + if (item.Quality.OriginalWidth > item.Quality.Width) + res += ":flags=lanczos"; + } + else + { + res = $"scale={item.Quality.OriginalWidth}:{item.Quality.OriginalHeight}"; + } + if (item.DeInterlace.Enable) { fi.Add($"yadif={item.DeInterlace.Mode}:{item.DeInterlace.Field}:0"); } - if (item.Quality.CommandFilter.IsDisable()) + if (!item.Quality.CommandFilter.IsDisable()) { fi.Add(item.Quality.CommandFilter); } @@ -218,8 +219,15 @@ internal static void Video(MediaQueue queue, string tempDir) } } + // Resolution filter + fi.Add(res); + + // Concat multiple filter if (fi.Count > 0) - vf = $"-vf \"{string.Join(", ", fi)}\""; + vf = $"-vf \"{string.Join(",", fi)}\""; + + // Tell You + Console2.WriteLine($"[INFO] Video filter command is: {vf}"); // begin encoding Console2.WriteLine($"[INFO] Encoding video file..."); @@ -244,9 +252,9 @@ internal static void Video(MediaQueue queue, string tempDir) Console2.WriteLine($"[INFO] Multi-pass encoding: {p} of {item.Encoder.MultiPass}"); if (vc.Args.Pipe) - ProcessManager.Start(tempDir, $"\"{FFmpeg}\" -hide_banner -v error -i \"{item.File}\" -strict -1 {trim} -map 0:{item.Id} -f yuv4mpegpipe -pix_fmt {yuv} {res} {fps} {vf} {item.Quality.Command} - | \"{en}\" {vc.Args.Input} {vc.Args.Y4M} {preset} {quality} {tune} {bitdepth} {pass} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); + ProcessManager.Start(tempDir, $"\"{FFmpeg}\" -hide_banner -v error -i \"{item.File}\" -strict -1 {trim} -map 0:{item.Id} -f yuv4mpegpipe -pix_fmt {yuv} {fps} {vf} {item.Quality.Command} - | \"{en}\" {vc.Args.Input} {vc.Args.Y4M} {preset} {quality} {tune} {bitdepth} {pass} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); else - ProcessManager.Start(tempDir, $"\"{en}\" {vc.Args.Input} \"{item.File}\" {trim} -map 0:{item.Id} -pix_fmt {yuv} {res} {fps} {vf} {vc.Args.UnPipe} {preset} {quality} {tune} {pass} {item.Encoder.Command} {vc.Args.Command} {vc.Args.Output} {outrawfile}"); + ProcessManager.Start(tempDir, $"\"{en}\" {vc.Args.Input} \"{item.File}\" {trim} -map 0:{item.Id} -pix_fmt {yuv} {fps} {vf} {vc.Args.UnPipe} {preset} {quality} {tune} {pass} {item.Encoder.Command} {vc.Args.Command} {vc.Args.Output} {outrawfile}"); ++p; @@ -255,9 +263,9 @@ internal static void Video(MediaQueue queue, string tempDir) else { if (vc.Args.Pipe) - ProcessManager.Start(tempDir, $"\"{FFmpeg}\" -hide_banner -v error -i \"{item.File}\" -strict -1 {trim} -map 0:{item.Id} -f yuv4mpegpipe -pix_fmt {yuv} {res} {fps} {vf} {item.Quality.Command} - | \"{en}\" {vc.Args.Input} {vc.Args.Y4M} {preset} {quality} {tune} {bitdepth} {framecount} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); + ProcessManager.Start(tempDir, $"\"{FFmpeg}\" -hide_banner -v error -i \"{item.File}\" -strict -1 {trim} -map 0:{item.Id} -f yuv4mpegpipe -pix_fmt {yuv} {fps} {vf} {item.Quality.Command} - | \"{en}\" {vc.Args.Input} {vc.Args.Y4M} {preset} {quality} {tune} {bitdepth} {framecount} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); else - ProcessManager.Start(tempDir, $"\"{en}\" {vc.Args.Input} \"{item.File}\" {trim} -map 0:{item.Id} -pix_fmt {yuv} {res} {fps} {vf} {vc.Args.UnPipe} {preset} {quality} {tune} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); + ProcessManager.Start(tempDir, $"\"{en}\" {vc.Args.Input} \"{item.File}\" {trim} -map 0:{item.Id} -pix_fmt {yuv} {fps} {vf} {vc.Args.UnPipe} {preset} {quality} {tune} {item.Encoder.Command} {vc.Args.Output} {outrawfile}"); } // Raw file dont have pts (time), need to remux diff --git a/IFME/MediaQueue/MediaQueueParse.cs b/IFME/MediaQueue/MediaQueueParse.cs index 268ba8b..51257ce 100644 --- a/IFME/MediaQueue/MediaQueueParse.cs +++ b/IFME/MediaQueue/MediaQueueParse.cs @@ -33,6 +33,8 @@ public static MediaQueueVideo Video(string path, FFmpeg.StreamVideo data) { Width = data.Width, Height = data.Height, + OriginalWidth = data.Width, + OriginalHeight = data.Height, FrameRate = (float)Math.Round(data.FrameRateAvg, 3), FrameRateAvg = data.FrameRateAvg, FrameCount = (int)Math.Ceiling(data.Duration * data.FrameRate), diff --git a/IFME/MediaQueue/MediaQueueVideo.cs b/IFME/MediaQueue/MediaQueueVideo.cs index 80e4cb6..6470066 100644 --- a/IFME/MediaQueue/MediaQueueVideo.cs +++ b/IFME/MediaQueue/MediaQueueVideo.cs @@ -28,6 +28,8 @@ public class MediaQueueVideoQuality { public int Width { get; set; } public int Height { get; set; } + public int OriginalWidth { get; set; } + public int OriginalHeight { get; set; } public bool IsVFR { get; set; } public float FrameRate { get; set; } public float FrameRateAvg { get; set; } diff --git a/IFME/Profiles/Profile_0000-00-00_00-00-00_0003.json b/IFME/Profiles/Profile_0000-00-00_00-00-00_0003.json index 940d88d..3be15d5 100644 --- a/IFME/Profiles/Profile_0000-00-00_00-00-00_0003.json +++ b/IFME/Profiles/Profile_0000-00-00_00-00-00_0003.json @@ -1,5 +1,5 @@ { - "ProfileName": "HDR to SDR YUV420 (x265 AAC)", + "ProfileName": "HDR to SDR YUV420 8bit (x265 AAC)", "ProfileAuthor": "Anime4000", "Container": "mkv", "Video": { diff --git a/IFME/Profiles/Profile_0000-00-00_00-00-00_0004.json b/IFME/Profiles/Profile_0000-00-00_00-00-00_0004.json index 86e3a2a..ef4fbda 100644 --- a/IFME/Profiles/Profile_0000-00-00_00-00-00_0004.json +++ b/IFME/Profiles/Profile_0000-00-00_00-00-00_0004.json @@ -1,5 +1,5 @@ { - "ProfileName": "HDR to SDR YUV444 (x265 AAC)", + "ProfileName": "HDR to SDR YUV444 8bit (x265 AAC)", "ProfileAuthor": "Anime4000", "Container": "mkv", "Video": { diff --git a/IFME/Profiles/Profile_0000-00-00_00-00-00_0005.json b/IFME/Profiles/Profile_0000-00-00_00-00-00_0005.json new file mode 100644 index 0000000..9fd50a3 --- /dev/null +++ b/IFME/Profiles/Profile_0000-00-00_00-00-00_0005.json @@ -0,0 +1,43 @@ +{ + "ProfileName": "HDR to SDR YUV420 10bit (x265 AAC)", + "ProfileAuthor": "Anime4000", + "Container": "mkv", + "Video": { + "Encoder": { + "Id": "deadbeef-0265-0265-0265-026502650265", + "Preset": "veryslow", + "Tune": "psnr", + "Mode": 0, + "Value": 23, + "MultiPass": 2, + "Command": "--pme --pmode" + }, + "Quality": { + "Width": 0, + "Height": 0, + "FrameRate": 0, + "BitDepth": 10, + "PixelFormat": 420, + "Command": "", + "CommandFilter": "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p10le" + }, + "DeInterlace": { + "Enable": false, + "Field": 0, + "Mode": 1 + } + }, + "Audio": { + "Encoder": { + "Id": "deadbeef-0aac-0aac-0aac-0aac0aac0aac", + "Mode": 0, + "Quality": 128, + "SampleRate": 44100, + "Channel": 2, + "Command": "" + }, + "Copy": false, + "Command": "", + "CommandFilter": "" + } +} \ No newline at end of file diff --git a/IFME/Profiles/Profile_0000-00-00_00-00-00_0006.json b/IFME/Profiles/Profile_0000-00-00_00-00-00_0006.json new file mode 100644 index 0000000..b6748b5 --- /dev/null +++ b/IFME/Profiles/Profile_0000-00-00_00-00-00_0006.json @@ -0,0 +1,43 @@ +{ + "ProfileName": "HDR to SDR YUV444 10bit (x265 AAC)", + "ProfileAuthor": "Anime4000", + "Container": "mkv", + "Video": { + "Encoder": { + "Id": "deadbeef-0265-0265-0265-026502650265", + "Preset": "veryslow", + "Tune": "psnr", + "Mode": 0, + "Value": 23, + "MultiPass": 2, + "Command": "--pme --pmode" + }, + "Quality": { + "Width": 0, + "Height": 0, + "FrameRate": 0, + "BitDepth": 10, + "PixelFormat": 444, + "Command": "", + "CommandFilter": "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv444p10le" + }, + "DeInterlace": { + "Enable": false, + "Field": 0, + "Mode": 1 + } + }, + "Audio": { + "Encoder": { + "Id": "deadbeef-0aac-0aac-0aac-0aac0aac0aac", + "Mode": 0, + "Quality": 128, + "SampleRate": 44100, + "Channel": 2, + "Command": "" + }, + "Copy": false, + "Command": "", + "CommandFilter": "" + } +} \ No newline at end of file diff --git a/IFME/frmMain.Designer.cs b/IFME/frmMain.Designer.cs index b4db75c..20140d6 100644 --- a/IFME/frmMain.Designer.cs +++ b/IFME/frmMain.Designer.cs @@ -144,6 +144,8 @@ private void InitializeComponent() this.Seperator3 = new System.Windows.Forms.Label(); this.btnVideoDel = new System.Windows.Forms.Button(); this.tabConfig = new System.Windows.Forms.TabControl(); + this.tabConfigMediaInfo = new System.Windows.Forms.TabPage(); + this.txtMediaInfo = new System.Windows.Forms.TextBox(); this.lstFile = new System.Windows.Forms.ListView(); this.colFileName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.colFileType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); @@ -172,8 +174,6 @@ private void InitializeComponent() this.tsmiProfilesDelete = new System.Windows.Forms.ToolStripMenuItem(); this.cmsPower = new System.Windows.Forms.ContextMenuStrip(this.components); this.tsmiPowerOff = new System.Windows.Forms.ToolStripMenuItem(); - this.tabConfigMediaInfo = new System.Windows.Forms.TabPage(); - this.txtMediaInfo = new System.Windows.Forms.TextBox(); this.tabConfigSubtitle.SuspendLayout(); this.grpAudioCodec.SuspendLayout(); this.tabConfigAudio.SuspendLayout(); @@ -189,10 +189,10 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudVideoMultiPass)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudVideoRateFactor)).BeginInit(); this.tabConfig.SuspendLayout(); + this.tabConfigMediaInfo.SuspendLayout(); this.cmsFileAdd.SuspendLayout(); this.cmsProfiles.SuspendLayout(); this.cmsPower.SuspendLayout(); - this.tabConfigMediaInfo.SuspendLayout(); this.SuspendLayout(); // // cboSubLang @@ -1525,6 +1525,28 @@ private void InitializeComponent() this.tabConfig.Size = new System.Drawing.Size(776, 292); this.tabConfig.TabIndex = 11; // + // tabConfigMediaInfo + // + this.tabConfigMediaInfo.Controls.Add(this.txtMediaInfo); + this.tabConfigMediaInfo.Location = new System.Drawing.Point(4, 24); + this.tabConfigMediaInfo.Name = "tabConfigMediaInfo"; + this.tabConfigMediaInfo.Size = new System.Drawing.Size(768, 264); + this.tabConfigMediaInfo.TabIndex = 6; + this.tabConfigMediaInfo.Text = "Media Info"; + this.tabConfigMediaInfo.UseVisualStyleBackColor = true; + // + // txtMediaInfo + // + this.txtMediaInfo.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtMediaInfo.Location = new System.Drawing.Point(0, 0); + this.txtMediaInfo.Multiline = true; + this.txtMediaInfo.Name = "txtMediaInfo"; + this.txtMediaInfo.ReadOnly = true; + this.txtMediaInfo.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtMediaInfo.Size = new System.Drawing.Size(768, 264); + this.txtMediaInfo.TabIndex = 0; + this.txtMediaInfo.WordWrap = false; + // // lstFile // this.lstFile.AllowDrop = true; @@ -1768,27 +1790,6 @@ private void InitializeComponent() this.tsmiPowerOff.Text = "Shutdown when complete"; this.tsmiPowerOff.Click += new System.EventHandler(this.tsmiPowerOff_Click); // - // tabConfigMediaInfo - // - this.tabConfigMediaInfo.Controls.Add(this.txtMediaInfo); - this.tabConfigMediaInfo.Location = new System.Drawing.Point(4, 24); - this.tabConfigMediaInfo.Name = "tabConfigMediaInfo"; - this.tabConfigMediaInfo.Size = new System.Drawing.Size(768, 264); - this.tabConfigMediaInfo.TabIndex = 6; - this.tabConfigMediaInfo.Text = "Media Info"; - this.tabConfigMediaInfo.UseVisualStyleBackColor = true; - // - // txtMediaInfo - // - this.txtMediaInfo.Dock = System.Windows.Forms.DockStyle.Fill; - this.txtMediaInfo.Location = new System.Drawing.Point(0, 0); - this.txtMediaInfo.Multiline = true; - this.txtMediaInfo.Name = "txtMediaInfo"; - this.txtMediaInfo.ReadOnly = true; - this.txtMediaInfo.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.txtMediaInfo.Size = new System.Drawing.Size(768, 264); - this.txtMediaInfo.TabIndex = 0; - // // frmMain // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1839,11 +1840,11 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudVideoMultiPass)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudVideoRateFactor)).EndInit(); this.tabConfig.ResumeLayout(false); + this.tabConfigMediaInfo.ResumeLayout(false); + this.tabConfigMediaInfo.PerformLayout(); this.cmsFileAdd.ResumeLayout(false); this.cmsProfiles.ResumeLayout(false); this.cmsPower.ResumeLayout(false); - this.tabConfigMediaInfo.ResumeLayout(false); - this.tabConfigMediaInfo.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/IFME/frmMain.Function.cs b/IFME/frmMain.Function.cs index 5aae50f..5c024d9 100644 --- a/IFME/frmMain.Function.cs +++ b/IFME/frmMain.Function.cs @@ -482,15 +482,17 @@ private void SetProfileData(Profiles value) item.Quality.BitDepth = value.Video.Quality.BitDepth; item.Quality.PixelFormat = value.Video.Quality.PixelFormat; item.Quality.Command = value.Video.Quality.Command; + item.Quality.CommandFilter = value.Video.Quality.CommandFilter; item.DeInterlace = value.Video.DeInterlace; } foreach (var item in (queue.Tag as MediaQueue).Audio) { + item.Copy = value.Audio.Copy; item.Encoder = value.Audio.Encoder; item.Command = value.Audio.Command; - item.Copy = value.Audio.Copy; + item.CommandFilter = value.Audio.CommandFilter; } } diff --git a/IFME/frmMain.cs b/IFME/frmMain.cs index f2b7688..f206644 100644 --- a/IFME/frmMain.cs +++ b/IFME/frmMain.cs @@ -1181,6 +1181,9 @@ private void btnAudioMoveDown_Click(object sender, EventArgs e) private void lstAudio_SelectedIndexChanged(object sender, EventArgs e) { + if (btnAudioDel.Focused) + return; + if (lstAudio.SelectedItems.Count > 0) { var data = (lstFile.SelectedItems[0].Tag as MediaQueue).Audio[lstAudio.SelectedItems[0].Index]; diff --git a/IFME/frmMain.resx b/IFME/frmMain.resx index fc2259a..f1a586d 100644 --- a/IFME/frmMain.resx +++ b/IFME/frmMain.resx @@ -147,9 +147,6 @@ True - - True - True @@ -222,57 +219,12 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True True - - True - True @@ -294,21 +246,6 @@ True - - True - - - True - - - True - - - True - - - True - True @@ -336,9 +273,6 @@ True - - True - True @@ -357,24 +291,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - True @@ -420,12 +336,6 @@ True - - True - - - True - True @@ -453,69 +363,6 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - True diff --git a/IFME/frmSplashScreen.cs b/IFME/frmSplashScreen.cs index c9ee01f..cb57aac 100644 --- a/IFME/frmSplashScreen.cs +++ b/IFME/frmSplashScreen.cs @@ -4,6 +4,7 @@ using System.Data; using System.Drawing; using System.Linq; +using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -18,6 +19,8 @@ public partial class frmSplashScreen : Form public frmSplashScreen() { InitializeComponent(); + Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location); + bgThread.DoWork += BgThread_DoWork; bgThread.RunWorkerCompleted += BgThread_RunWorkerCompleted; }