]> granicus.if.org Git - handbrake/commitdiff
WinGui: Handle HB_STATE_MUXING and HB_STATE_SEARCHING for better progress indication...
authorsr55 <sr55.hb@outlook.com>
Sat, 15 Apr 2017 11:26:59 +0000 (12:26 +0100)
committersr55 <sr55.hb@outlook.com>
Sat, 15 Apr 2017 11:27:19 +0000 (12:27 +0100)
win/CS/HandBrake.ApplicationServices/Interop/EventArgs/EncodeProgressEventArgs.cs
win/CS/HandBrake.ApplicationServices/Interop/HandBrakeInstance.cs
win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs
win/CS/HandBrakeWPF/Properties/ResourcesUI.Designer.cs
win/CS/HandBrakeWPF/Properties/ResourcesUI.resx
win/CS/HandBrakeWPF/Services/Encode/EventArgs/EncodeProgressEventArgs.cs
win/CS/HandBrakeWPF/Services/Encode/LibEncode.cs
win/CS/HandBrakeWPF/Services/Scan/EventArgs/ScanProgressEventArgs.cs
win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs
win/CS/HandBrakeWPF/ViewModels/QueueViewModel.cs

index 5fad3248cf3be8be4a4f433b393a8aff6fb21bda..0da2fd178df2b88b5cffb96acc3cb33bdb67cf34 100644 (file)
@@ -40,7 +40,13 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
         /// <param name="passCount">\r
         /// The pass count.\r
         /// </param>\r
-        public EncodeProgressEventArgs(double fractionComplete, double currentFrameRate, double averageFrameRate, TimeSpan estimatedTimeLeft, int passId, int pass, int passCount)\r
+        /// <param name="isMuxing">\r
+        /// A flag to indicate we are muxing.\r
+        /// </param>\r
+        /// <param name="isSearching">\r
+        /// Gets a value indicating that we are in the searching process.\r
+        /// </param>\r
+        public EncodeProgressEventArgs(double fractionComplete, double currentFrameRate, double averageFrameRate, TimeSpan estimatedTimeLeft, int passId, int pass, int passCount, bool isMuxing, bool isSearching)\r
         {\r
             this.FractionComplete = fractionComplete;\r
             this.CurrentFrameRate = currentFrameRate;\r
@@ -49,6 +55,8 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
             this.PassId = passId;\r
             this.Pass = pass;\r
             this.PassCount = passCount;\r
+            this.IsMuxing = isMuxing;\r
+            this.IsSearching = isSearching;\r
         }\r
 \r
         /// <summary>\r
@@ -91,5 +99,31 @@ namespace HandBrake.ApplicationServices.Interop.EventArgs
         /// Gets the pass count.\r
         /// </summary>\r
         public int PassCount { get; private set; }\r
+\r
+        /// <summary>\r
+        /// Gets a value indicating that we are in the muxing process.\r
+        /// </summary>\r
+        public bool IsMuxing { get; private set; }\r
+\r
+        /// <summary>\r
+        /// Gets a value indicating that we are in the searching process.\r
+        /// </summary>\r
+        public bool IsSearching { get; }\r
+\r
+        /// <summary>\r
+        /// Gets a value indicating that we are doing a subtitle scan pass.\r
+        /// </summary>\r
+        public bool IsSubtitleScan\r
+        {\r
+            get\r
+            {\r
+                if (this.PassId == -1)\r
+                {\r
+                    return true;\r
+                }\r
+\r
+                return false;\r
+            }\r
+        }\r
     }\r
 }\r
index de0f0b2bc6cbc05eaaec1bed5fd033e6c1b8cef9..861a5edafcce855e47922a8e0c28611266d083ed 100644 (file)
@@ -492,7 +492,7 @@ namespace HandBrake.ApplicationServices.Interop
             this.log.LogMessage(statusJson, LogMessageType.Progress, LogLevel.Trace);\r
             JsonState state = JsonConvert.DeserializeObject<JsonState>(statusJson);\r
 \r
-            if (state != null && state.State == NativeConstants.HB_STATE_SCANNING)\r
+            if (state != null && (state.State == NativeConstants.HB_STATE_SCANNING || state.State == NativeConstants.HB_STATE_SEARCHING))\r
             {\r
                 if (this.ScanProgress != null)\r
                 {\r
@@ -529,12 +529,12 @@ namespace HandBrake.ApplicationServices.Interop
 \r
             JsonState state = JsonConvert.DeserializeObject<JsonState>(statusJson);\r
 \r
-            if (state != null && state.State == NativeConstants.HB_STATE_WORKING)\r
+            if (state != null && (state.State == NativeConstants.HB_STATE_WORKING || state.State == NativeConstants.HB_STATE_MUXING || state.State == NativeConstants.HB_STATE_SEARCHING))\r
             {\r
                 if (this.EncodeProgress != null)\r
                 {\r
                     var progressEventArgs = new EncodeProgressEventArgs(state.Working.Progress, state.Working.Rate, state.Working.RateAvg, new TimeSpan(state.Working.Hours, state.Working.Minutes, state.Working.Seconds),\r
-                        state.Working.PassID, state.Working.Pass, state.Working.PassCount);\r
+                        state.Working.PassID, state.Working.Pass, state.Working.PassCount, state.State == NativeConstants.HB_STATE_MUXING, state.State == NativeConstants.HB_STATE_SEARCHING);\r
 \r
                     this.EncodeProgress(this, progressEventArgs);\r
                 }\r
index bc593539f471bcb4cb4c9a633d32306a30094405..9f4615bbf5e706a062627308836c697601cf4624 100644 (file)
@@ -59,6 +59,7 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
         public const int HB_STATE_PAUSED = 16;\r
         public const int HB_STATE_WORKDONE = 32;\r
         public const int HB_STATE_MUXING = 64;\r
+        public const int HB_STATE_SEARCHING = 128;\r
 \r
         // Keep aspect ratio values\r
         public const int HB_KEEP_WIDTH = 0x01;\r
index 0fee65fc9be5c9aa5d96bf22673cf75c10b4a01f..c04e4e97e01a7a13e4f6c49beaffae1a7bf9e0f6 100644 (file)
@@ -753,6 +753,15 @@ namespace HandBrakeWPF.Properties {
             }\r
         }\r
         \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Muxing: This may take a while....\r
+        /// </summary>\r
+        public static string MainView_Muxing {\r
+            get {\r
+                return ResourceManager.GetString("MainView_Muxing", resourceCulture);\r
+            }\r
+        }\r
+        \r
         /// <summary>\r
         ///   Looks up a localized string similar to Options.\r
         /// </summary>\r
@@ -816,6 +825,15 @@ namespace HandBrakeWPF.Properties {
             }\r
         }\r
         \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Encoding: {0}, {1:00.00}%, Time Remaining: {2}, {3}.\r
+        /// </summary>\r
+        public static string MainView_ProgressStatusWithTask {\r
+            get {\r
+                return ResourceManager.GetString("MainView_ProgressStatusWithTask", resourceCulture);\r
+            }\r
+        }\r
+        \r
         /// <summary>\r
         ///   Looks up a localized string similar to Remove.\r
         /// </summary>\r
@@ -834,6 +852,15 @@ namespace HandBrakeWPF.Properties {
             }\r
         }\r
         \r
+        /// <summary>\r
+        ///   Looks up a localized string similar to Searching for start time.\r
+        /// </summary>\r
+        public static string MainView_Searching {\r
+            get {\r
+                return ResourceManager.GetString("MainView_Searching", resourceCulture);\r
+            }\r
+        }\r
+        \r
         /// <summary>\r
         ///   Looks up a localized string similar to Set Default.\r
         /// </summary>\r
index f6c92ea61dcf4ca67e09e696e2a0199b091e76d8..50a0c4bbd07d6795e9d26b3ab93711af1e941e1d 100644 (file)
@@ -899,4 +899,13 @@ This will not affect your current settings in the Subtitle tab.</value>
   <data name="OptionsView_PlaySoundWhenDone" xml:space="preserve">\r
     <value>Play a sound when the queue or single encode completes:</value>\r
   </data>\r
+  <data name="MainView_Muxing" xml:space="preserve">\r
+    <value>Muxing: This may take a while...</value>\r
+  </data>\r
+  <data name="MainView_ProgressStatusWithTask" xml:space="preserve">\r
+    <value>Encoding: {0}, {1:00.00}%, Time Remaining: {2}, {3}</value>\r
+  </data>\r
+  <data name="MainView_Searching" xml:space="preserve">\r
+    <value>Searching for start time</value>\r
+  </data>\r
 </root>
\ No newline at end of file
index 940be6568daa52f30de089482c0bac6535ac0134..784245af65bac2d977d87da0bf1c0f068bb3d526 100644 (file)
 namespace HandBrakeWPF.Services.Encode.EventArgs
 {
     using System;
-    using System.Runtime.Serialization;
 
     /// <summary>
     /// Encode Progress Event Args
     /// </summary>
-    [DataContract]
     public class EncodeProgressEventArgs : EventArgs
     {
         /// <summary>
         /// Gets or sets PercentComplete.
         /// </summary>
-        [DataMember]
         public double PercentComplete { get; set; }
 
         /// <summary>
         /// Gets or sets CurrentFrameRate.
         /// </summary>
-        [DataMember]
         public double CurrentFrameRate { get; set; }
 
         /// <summary>
         /// Gets or sets AverageFrameRate.
         /// </summary>
-        [DataMember]
         public double AverageFrameRate { get; set; }
 
         /// <summary>
         /// Gets or sets EstimatedTimeLeft.
         /// </summary>
-        [DataMember]
         public TimeSpan EstimatedTimeLeft { get; set; }
 
         /// <summary>
         /// Gets or sets Task.
         /// </summary>
-        [DataMember]
         public int Task { get; set; }
 
         /// <summary>
         /// Gets or sets TaskCount.
         /// </summary>
-        [DataMember]
         public int TaskCount { get; set; }
 
         /// <summary>
         /// Gets or sets ElapsedTime.
         /// </summary>
-        [DataMember]
         public TimeSpan ElapsedTime { get; set; }
 
         /// <summary>
@@ -70,5 +61,31 @@ namespace HandBrakeWPF.Services.Encode.EventArgs
         ///  2: Encode second pass
         /// </remarks>
         public int PassId { get; set; }
+
+        /// <summary>
+        /// Gets a value indicating that we are in the muxing process.
+        /// </summary>
+        public bool IsMuxing { get; set; }
+
+        /// <summary>
+        /// Gets a value indicating that we are in the searching process.
+        /// </summary>
+        public bool IsSearching { get; set; }
+
+        /// <summary>
+        /// Gets a value indicating that we are doing a subtitle scan pass.
+        /// </summary>
+        public bool IsSubtitleScan
+        {
+            get
+            {
+                if (this.PassId == -1)
+                {
+                    return true;
+                }
+
+                return false;
+            }
+        }
     }
 }
index 03763d448388e93d74f74839aad40c08562ae90b..2ad5f0688d07d99f2035093493bc2c03258989eb 100644 (file)
@@ -180,7 +180,9 @@ namespace HandBrakeWPF.Services.Encode
                 Task = e.Pass, 
                 TaskCount = e.PassCount,
                 ElapsedTime = DateTime.Now - this.startTime, 
-                PassId = e.PassId
+                PassId = e.PassId,
+                IsMuxing = e.IsMuxing,
+                IsSearching = e.IsSearching
             };
 
             this.InvokeEncodeStatusChanged(args);
index 8d815b746bddefbd98a9fdac7294024e9c8e7ae0..113f7a923e3812bd3cfef47f5787850cddc0dabf 100644 (file)
 namespace HandBrakeWPF.Services.Scan.EventArgs
 {
     using System;
-    using System.Runtime.Serialization;
 
     /// <summary>
     /// Scan Progress Event Args
     /// </summary>
-    [DataContract]
     public class ScanProgressEventArgs : EventArgs
     {
         /// <summary>
         /// Gets or sets the title currently being scanned.
         /// </summary>
-        [DataMember]
         public int CurrentTitle { get; set; }
 
         /// <summary>
         /// Gets or sets the total number of Titles.
         /// </summary>
-        [DataMember]
         public int Titles { get; set; }
 
         /// <summary>
         /// Gets or sets the percentage.
         /// </summary>
-        [DataMember]
         public decimal Percentage { get; set; }
     }
 }
index 283111b1167c86b72276f5671312fac0ce057f57..9bb991efc2a86655522515abcd2d3f43e9119aab 100644 (file)
@@ -2420,7 +2420,7 @@ namespace HandBrakeWPF.ViewModels
                     if (this.queueProcessor.EncodeService.IsEncoding)\r
                     {\r
                         string jobsPending = string.Format(Resources.Main_JobsPending_addon, this.queueProcessor.Count);\r
-                        if (e.PassId == -1)\r
+                        if (e.IsSubtitleScan)\r
                         {\r
                             this.ProgramStatusLabel = string.Format(Resources.MainViewModel_EncodeStatusChanged_SubScan_StatusLabel,\r
                                 e.Task,\r
@@ -2430,6 +2430,14 @@ namespace HandBrakeWPF.ViewModels
                                 e.ElapsedTime,\r
                                 jobsPending);\r
                         }\r
+                        else if (e.IsMuxing)\r
+                        {\r
+                            this.ProgramStatusLabel = ResourcesUI.MainView_Muxing;\r
+                        }\r
+                        else if (e.IsSearching)\r
+                        {\r
+                            this.ProgramStatusLabel = string.Format(ResourcesUI.MainView_ProgressStatusWithTask, ResourcesUI.MainView_Searching, e.PercentComplete, e.EstimatedTimeLeft, jobsPending);\r
+                        }\r
                         else\r
                         {\r
                             this.ProgramStatusLabel =\r
index c5351d7299a04a91bbbde8c5702795616460d160..2267c1a447992d5a4c93a125ff8f5a541b021b71 100644 (file)
@@ -519,16 +519,38 @@ namespace HandBrakeWPF.ViewModels
         {\r
             Execute.OnUIThread(() =>\r
             {\r
-                this.JobStatus =\r
-                    string.Format(\r
-                        Resources.QueueViewModel_QueueStatusDisplay, \r
-                        e.Task, \r
-                        e.TaskCount, \r
-                        e.PercentComplete, \r
-                        e.CurrentFrameRate, \r
-                        e.AverageFrameRate, \r
-                        e.EstimatedTimeLeft, \r
-                        e.ElapsedTime);\r
+                string jobsPending = string.Format(Resources.Main_JobsPending_addon, this.queueProcessor.Count);\r
+                if (e.IsSubtitleScan)\r
+                {\r
+                    this.JobStatus = string.Format(Resources.MainViewModel_EncodeStatusChanged_SubScan_StatusLabel,\r
+                        e.Task,\r
+                        e.TaskCount,\r
+                        e.PercentComplete,\r
+                        e.EstimatedTimeLeft,\r
+                        e.ElapsedTime,\r
+                        jobsPending);\r
+                }\r
+                else if (e.IsMuxing)\r
+                {\r
+                    this.JobStatus = ResourcesUI.MainView_Muxing;\r
+                }\r
+                else if (e.IsSearching)\r
+                {\r
+                    this.JobStatus = string.Format(ResourcesUI.MainView_ProgressStatusWithTask, ResourcesUI.MainView_Searching, e.PercentComplete, e.EstimatedTimeLeft, jobsPending);\r
+                }\r
+                else\r
+                {\r
+                    this.JobStatus =\r
+                        string.Format(Resources.MainViewModel_EncodeStatusChanged_StatusLabel,\r
+                            e.Task,\r
+                            e.TaskCount,\r
+                            e.PercentComplete,\r
+                            e.CurrentFrameRate,\r
+                            e.AverageFrameRate,\r
+                            e.EstimatedTimeLeft,\r
+                            e.ElapsedTime,\r
+                            jobsPending);\r
+                }\r
             });\r
         }\r
 \r