/// <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
this.PassId = passId;\r
this.Pass = pass;\r
this.PassCount = passCount;\r
+ this.IsMuxing = isMuxing;\r
+ this.IsSearching = isSearching;\r
}\r
\r
/// <summary>\r
/// 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
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
\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
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
}\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
}\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
}\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
<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
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>
/// 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;
+ }
+ }
}
}
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);
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; }
}
}
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
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
{\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