using Presets;\r
using AudioTrack = Model.AudioTrack;\r
\r
+ /// <summary>\r
+ /// The AudioPanel Control\r
+ /// </summary>\r
public partial class AudioPanel : UserControl\r
{\r
/// <summary>\r
- /// The audio list has changed\r
- /// </summary>\r
- public event EventHandler AudioListChanged;\r
-\r
- /// <summary>\r
/// Initializes a new instance of the <see cref="AudioPanel"/> class. \r
/// Create a new instance of the Audio Panel\r
/// </summary>\r
}\r
\r
/// <summary>\r
+ /// The audio list has changed\r
+ /// </summary>\r
+ public event EventHandler AudioListChanged;\r
+\r
+ /// <summary>\r
/// Get the audio panel\r
/// </summary>\r
/// <returns>A listview containing the audio tracks</returns>\r
/// <summary>\r
/// Set the File Container. This funciton is used to limit the available options for each file container.\r
/// </summary>\r
- /// <param name="path"></param>\r
+ /// <param name="path">\r
+ /// the file path\r
+ /// </param>\r
public void SetContainer(string path)\r
{\r
string oldval = drp_audioEncoder.Text;\r
/// <summary>\r
/// Checks if the settings used required the .m4v (rather than .mp4) extension\r
/// </summary>\r
- /// <returns></returns>\r
+ /// <returns>True if m4v is required</returns>\r
public bool RequiresM4V()\r
{\r
return lv_audioList.Items.Cast<ListViewItem>().Any(item => item.SubItems[2].Text.Contains("AC3"));\r
/// <summary>\r
/// Load an arraylist of AudioTrack items into the list.\r
/// </summary>\r
- /// <param name="audioTracks"></param>\r
+ /// <param name="audioTracks">List of audio tracks</param>\r
public void LoadTracks(ArrayList audioTracks)\r
{\r
ClearAudioList();\r
/// <summary>\r
/// Set the Track list dropdown from the parsed title captured during the scan\r
/// </summary>\r
- /// <param name="selectedTitle"></param>\r
+ /// <param name="selectedTitle">The selected title</param>\r
+ /// <param name="preset">A preset</param>\r
public void SetTrackList(Title selectedTitle, Preset preset)\r
{\r
if (selectedTitle.AudioTracks.Count == 0)\r
drp_audioTrack.SelectedIndex = 0;\r
return;\r
}\r
- else\r
- {\r
- drp_audioTrack.Items.Clear();\r
- drp_audioTrack.Items.Add("Automatic");\r
- drp_audioTrack.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
\r
- if (lv_audioList.Items.Count == 0 && preset != null)\r
+ drp_audioTrack.Items.Clear();\r
+ drp_audioTrack.Items.Add("Automatic");\r
+ drp_audioTrack.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
+\r
+ if (lv_audioList.Items.Count == 0 && preset != null)\r
+ {\r
+ QueryParser parsed = QueryParser.Parse(preset.Query);\r
+ foreach (AudioTrack audioTrack in parsed.AudioInformation)\r
{\r
- QueryParser parsed = QueryParser.Parse(preset.Query);\r
- foreach (AudioTrack audioTrack in parsed.AudioInformation)\r
- {\r
- ListViewItem newTrack = new ListViewItem(GetNewID().ToString());\r
- newTrack.SubItems.Add(audioTrack.Track);\r
- newTrack.SubItems.Add(audioTrack.Encoder);\r
- newTrack.SubItems.Add(audioTrack.MixDown);\r
- newTrack.SubItems.Add(audioTrack.SampleRate);\r
- newTrack.SubItems.Add(audioTrack.Bitrate);\r
- newTrack.SubItems.Add(audioTrack.DRC.ToString());\r
- lv_audioList.Items.Add(newTrack);\r
- }\r
+ ListViewItem newTrack = new ListViewItem(GetNewID().ToString());\r
+ newTrack.SubItems.Add(audioTrack.Track);\r
+ newTrack.SubItems.Add(audioTrack.Encoder);\r
+ newTrack.SubItems.Add(audioTrack.MixDown);\r
+ newTrack.SubItems.Add(audioTrack.SampleRate);\r
+ newTrack.SubItems.Add(audioTrack.Bitrate);\r
+ newTrack.SubItems.Add(audioTrack.DRC);\r
+ lv_audioList.Items.Add(newTrack);\r
}\r
-\r
}\r
\r
// Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
}\r
\r
// Control and ListView\r
+\r
+ /// <summary>\r
+ /// one of the controls has changed. Event handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void controlChanged(object sender, EventArgs e)\r
{\r
Control ctl = (Control)sender;\r
lv_audioList.Select();\r
}\r
\r
+ /// <summary>\r
+ /// The Audio List selected index changed event handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void lv_audioList_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
// Set the dropdown controls based on the selected item in the Audio List.\r
}\r
\r
// Track Controls\r
+\r
+ /// <summary>\r
+ /// The Add Audio Track button event handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void btn_addAudioTrack_Click(object sender, EventArgs e)\r
{\r
if (drp_audioTrack.Text == "None Found")\r
{\r
- MessageBox.Show("Your source appears to have no audio tracks that HandBrake supports.", "Warning",\r
- MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ MessageBox.Show(\r
+ "Your source appears to have no audio tracks that HandBrake supports.",\r
+ "Warning",\r
+ MessageBoxButtons.OK,\r
+ MessageBoxIcon.Warning);\r
return;\r
}\r
\r
lv_audioList.Select();\r
}\r
\r
+ /// <summary>\r
+ /// The Remove Track button event handler\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void btn_RemoveAudioTrack_Click(object sender, EventArgs e)\r
{\r
RemoveTrack();\r
}\r
\r
// Audio List Menu\r
+\r
+ /// <summary>\r
+ /// The Audio List Move Up menu item\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void audioList_moveup_Click(object sender, EventArgs e)\r
{\r
MoveTrack(true);\r
}\r
\r
+ /// <summary>\r
+ /// The audio list move down menu item\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void audioList_movedown_Click(object sender, EventArgs e)\r
{\r
MoveTrack(false);\r
}\r
\r
+ /// <summary>\r
+ /// The audio list remove menu item\r
+ /// </summary>\r
+ /// <param name="sender">\r
+ /// The sender.\r
+ /// </param>\r
+ /// <param name="e">\r
+ /// The e.\r
+ /// </param>\r
private void audioList_remove_Click(object sender, EventArgs e)\r
{\r
RemoveTrack();\r
}\r
\r
// Public Functions\r
+\r
+ /// <summary>\r
+ /// Add track for preset\r
+ /// </summary>\r
+ /// <param name="item">\r
+ /// The item.\r
+ /// </param>\r
private void AddTrackForPreset(ListViewItem item)\r
{\r
lv_audioList.Items.Add(item);\r
this.AudioListChanged(this, new EventArgs());\r
}\r
\r
+ /// <summary>\r
+ /// Clear the audio list\r
+ /// </summary>\r
private void ClearAudioList()\r
{\r
lv_audioList.Items.Clear();\r
this.AudioListChanged(this, new EventArgs());\r
}\r
\r
+ /// <summary>\r
+ /// Get a new ID for the next audio track\r
+ /// </summary>\r
+ /// <returns>\r
+ /// an int\r
+ /// </returns>\r
private int GetNewID()\r
{\r
return lv_audioList.Items.Count + 1;\r
}\r
\r
+ /// <summary>\r
+ /// Remove an audio track from the list\r
+ /// </summary>\r
private void RemoveTrack()\r
{\r
// Remove the Item and reselect the control if the following conditions are met.\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Move an audio track up or down the audio list\r
+ /// </summary>\r
+ /// <param name="up">\r
+ /// The up.\r
+ /// </param>\r
private void MoveTrack(bool up)\r
{\r
if (lv_audioList.SelectedIndices.Count == 0) return;\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Regenerate all the audio track id's on the audio list\r
+ /// </summary>\r
private void ReGenerateListIDs()\r
{\r
int i = 1;\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Set the bitrate dropdown\r
+ /// </summary>\r
private void SetBitrate()\r
{\r
int max = 0;\r
drp_audioBitrate.Items.Add("768");\r
}\r
\r
- if (drp_audioBitrate.SelectedItem == null)\r
+ if (drp_audioBitrate.SelectedItem == null)\r
drp_audioBitrate.SelectedIndex = drp_audioBitrate.Items.Count - 1;\r
}\r
\r
+ /// <summary>\r
+ /// Set the mixdown dropdown\r
+ /// </summary>\r
private void SetMixDown()\r
{\r
drp_audioMix.Items.Clear();\r
/* Subtitles.cs $\r
- \r
This file is part of the HandBrake source code.\r
Homepage: <http://handbrake.fr>.\r
It may be used under the terms of the GNU General Public License. */\r
/* x264Panel.cs $\r
- \r
- This file is part of the HandBrake source code.\r
- Homepage: <http://handbrake.fr>.\r
- It may be used under the terms of the GNU General Public License. */\r
+ This file is part of the HandBrake source code.\r
+ Homepage: <http://handbrake.fr>.\r
+ It may be used under the terms of the GNU General Public License. */\r
\r
namespace Handbrake.Controls\r
{\r
int val, val2;\r
\r
// default psy-rd = 1 (10 for the slider)\r
- psyrd = double.TryParse(x[0], out psyrd) ? psyrd*10 : 10.0;\r
+ psyrd = double.TryParse(x[0], out psyrd) ? psyrd * 10 : 10.0;\r
// default psy-trellis = 0\r
- psytrellis = double.TryParse(x[1], out psytrellis) ? psytrellis*10 : 0.0;\r
+ psytrellis = double.TryParse(x[1], out psytrellis) ? psytrellis * 10 : 0.0;\r
\r
int.TryParse(psyrd.ToString(), out val);\r
int.TryParse(psytrellis.ToString(), out val2);\r
/// </summary>\r
public enum ConsoleCtrlEvent\r
{\r
+ /// <summary>\r
+ /// Ctrl - C\r
+ /// </summary>\r
CTRL_C = 0,\r
+\r
+ /// <summary>\r
+ /// Ctrl - Break\r
+ /// </summary>\r
CTRL_BREAK = 1,\r
+\r
+ /// <summary>\r
+ /// Ctrl - Close\r
+ /// </summary>\r
CTRL_CLOSE = 2,\r
}\r
}\r
</XML>\r
<FileHeader><![CDATA[/* file.cs$\r
This file is part of the HandBrake source code.\r
- Homepage: <http://handbrake.fr/>.\r
+ Homepage: <http://handbrake.fr/>\r
It may be used under the terms of the GNU General Public License. */]]></FileHeader>\r
<GenerateMemberBody />\r
<Naming2>\r
Homepage: <http://handbrake.fr/>.\r
It may be used under the terms of the GNU General Public License. */\r
\r
-\r
namespace Handbrake.Services\r
{\r
using System;\r
/// </param>\r
public void CreatePreviewSample(string query)\r
{\r
- Job job = new Job {Query = query};\r
- this.Run(job);\r
+ this.Run(new Job {Query = query});\r
}\r
\r
/// <summary>\r
if (this.EncodeStarted != null)\r
this.EncodeStarted(this, new EventArgs());\r
\r
-\r
if (this.HbProcess != null)\r
this.ProcessHandle = this.HbProcess.MainWindowHandle; // Set the process Handle\r
\r
Homepage: <http://handbrake.fr/>.\r
It may be used under the terms of the GNU General Public License. */\r
\r
-\r
namespace Handbrake.Services\r
{\r
using System;\r
public class Queue : Encode\r
{\r
/// <summary>\r
- /// An XML Serializer\r
+ /// The Queue Job List\r
/// </summary>\r
- private static XmlSerializer serializer;\r
+ private readonly List<Job> queue = new List<Job>();\r
\r
/// <summary>\r
- /// The Queue Job List\r
+ /// An XML Serializer\r
/// </summary>\r
- private readonly List<Job> queue = new List<Job>();\r
+ private static XmlSerializer serializer;\r
\r
/// <summary>\r
/// The Next Job ID\r
/// <param name="query">\r
/// The query that will be passed to the HandBrake CLI.\r
/// </param>\r
+ /// <param name="title">\r
+ /// The title.\r
+ /// </param>\r
/// <param name="source">\r
/// The location of the source video.\r
/// </param>\r
<BooleanProperty Name="Enabled">False</BooleanProperty>\r
</RuleSettings>\r
</Rule>\r
+ <Rule Name="ElementsMustBeSeparatedByBlankLine">\r
+ <RuleSettings>\r
+ <BooleanProperty Name="Enabled">False</BooleanProperty>\r
+ </RuleSettings>\r
+ </Rule>\r
</Rules>\r
<AnalyzerSettings />\r
</Analyzer>\r
<BooleanProperty Name="Enabled">False</BooleanProperty>\r
</RuleSettings>\r
</Rule>\r
+ <Rule Name="ParametersMustBeOnSameLineOrSeparateLines">\r
+ <RuleSettings>\r
+ <BooleanProperty Name="Enabled">False</BooleanProperty>\r
+ </RuleSettings>\r
+ </Rule>\r
+ <Rule Name="ParameterMustFollowComma">\r
+ <RuleSettings>\r
+ <BooleanProperty Name="Enabled">False</BooleanProperty>\r
+ </RuleSettings>\r
+ </Rule>\r
+ <Rule Name="SplitParametersMustStartOnLineAfterDeclaration">\r
+ <RuleSettings>\r
+ <BooleanProperty Name="Enabled">False</BooleanProperty>\r
+ </RuleSettings>\r
+ </Rule>\r
+ <Rule Name="UseBuiltInTypeAlias">\r
+ <RuleSettings>\r
+ <BooleanProperty Name="Enabled">False</BooleanProperty>\r
+ </RuleSettings>\r
+ </Rule>\r
</Rules>\r
<AnalyzerSettings />\r
</Analyzer>\r
this.check_turbo.Enabled = false;\r
this.check_turbo.Location = new System.Drawing.Point(146, 123);\r
this.check_turbo.Name = "check_turbo";\r
- this.check_turbo.Size = new System.Drawing.Size(99, 17);\r
+ this.check_turbo.Size = new System.Drawing.Size(101, 17);\r
this.check_turbo.TabIndex = 7;\r
this.check_turbo.Text = "Turbo first Pass";\r
this.ToolTip.SetToolTip(this.check_turbo, "Makes the first pass of a 2 pass encode faster.");\r
this.slider_videoQuality.Size = new System.Drawing.Size(322, 45);\r
this.slider_videoQuality.TabIndex = 14;\r
this.slider_videoQuality.TickFrequency = 17;\r
- this.ToolTip.SetToolTip(this.slider_videoQuality, "Set the quality level of the video. Typical sane values are between 59~63%. \r\n>70" +\r
- "% will likely result in the output file being larger than the input file.");\r
+ this.ToolTip.SetToolTip(this.slider_videoQuality, "Set the quality level of the video. ");\r
this.slider_videoQuality.ValueChanged += new System.EventHandler(this.slider_videoQuality_Scroll);\r
// \r
// text_filesize\r
this.radio_cq.BackColor = System.Drawing.Color.Transparent;\r
this.radio_cq.Location = new System.Drawing.Point(336, 97);\r
this.radio_cq.Name = "radio_cq";\r
- this.radio_cq.Size = new System.Drawing.Size(105, 17);\r
+ this.radio_cq.Size = new System.Drawing.Size(110, 17);\r
this.radio_cq.TabIndex = 18;\r
this.radio_cq.Text = "Constant Quality:";\r
this.radio_cq.UseVisualStyleBackColor = false;\r
this.radio_avgBitrate.Checked = true;\r
this.radio_avgBitrate.Location = new System.Drawing.Point(336, 64);\r
this.radio_avgBitrate.Name = "radio_avgBitrate";\r
- this.radio_avgBitrate.Size = new System.Drawing.Size(112, 17);\r
+ this.radio_avgBitrate.Size = new System.Drawing.Size(116, 17);\r
this.radio_avgBitrate.TabIndex = 17;\r
this.radio_avgBitrate.TabStop = true;\r
this.radio_avgBitrate.Text = "Avg Bitrate (kbps):";\r
this.radio_targetFilesize.BackColor = System.Drawing.Color.Transparent;\r
this.radio_targetFilesize.Location = new System.Drawing.Point(336, 37);\r
this.radio_targetFilesize.Name = "radio_targetFilesize";\r
- this.radio_targetFilesize.Size = new System.Drawing.Size(107, 17);\r
+ this.radio_targetFilesize.Size = new System.Drawing.Size(108, 17);\r
this.radio_targetFilesize.TabIndex = 16;\r
this.radio_targetFilesize.Text = "Target Size (MB):";\r
this.radio_targetFilesize.UseVisualStyleBackColor = false;\r
this.check_2PassEncode.BackColor = System.Drawing.Color.Transparent;\r
this.check_2PassEncode.Location = new System.Drawing.Point(125, 100);\r
this.check_2PassEncode.Name = "check_2PassEncode";\r
- this.check_2PassEncode.Size = new System.Drawing.Size(106, 17);\r
+ this.check_2PassEncode.Size = new System.Drawing.Size(104, 17);\r
this.check_2PassEncode.TabIndex = 6;\r
this.check_2PassEncode.Text = "2-Pass Encoding";\r
this.check_2PassEncode.UseVisualStyleBackColor = false;\r
this.Check_ChapterMarkers.BackColor = System.Drawing.Color.Transparent;\r
this.Check_ChapterMarkers.Location = new System.Drawing.Point(16, 32);\r
this.Check_ChapterMarkers.Name = "Check_ChapterMarkers";\r
- this.Check_ChapterMarkers.Size = new System.Drawing.Size(136, 17);\r
+ this.Check_ChapterMarkers.Size = new System.Drawing.Size(140, 17);\r
this.Check_ChapterMarkers.TabIndex = 1;\r
this.Check_ChapterMarkers.Text = "Create chapter markers";\r
this.Check_ChapterMarkers.UseVisualStyleBackColor = false;\r
{\r
// Setup the GUI components for the scan.\r
sourcePath = filename;\r
- foreach (Control ctrl in Controls)\r
- if (!(ctrl is StatusStrip || ctrl is MenuStrip || ctrl is ToolStrip))\r
- ctrl.Enabled = false;\r
\r
- lbl_encode.Visible = true;\r
- lbl_encode.Text = "Scanning ...";\r
- btn_source.Enabled = false;\r
- btn_start.Enabled = false;\r
- btn_showQueue.Enabled = false;\r
- btn_add2Queue.Enabled = false;\r
- tb_preview.Enabled = false;\r
- mnu_killCLI.Visible = true;\r
+ this.DisableGUI();\r
\r
if (ActivityWindow != null)\r
ActivityWindow.SetMode(ActivityLogMode.Scan);\r
}\r
}\r
\r
+ private void DisableGUI()\r
+ {\r
+ foreach (Control ctrl in Controls)\r
+ if (!(ctrl is StatusStrip || ctrl is MenuStrip || ctrl is ToolStrip))\r
+ ctrl.Enabled = false;\r
+\r
+ lbl_encode.Visible = true;\r
+ lbl_encode.Text = "Scanning ...";\r
+ btn_source.Enabled = false;\r
+ btn_start.Enabled = false;\r
+ btn_showQueue.Enabled = false;\r
+ btn_add2Queue.Enabled = false;\r
+ tb_preview.Enabled = false;\r
+ mnu_killCLI.Visible = true;\r
+ }\r
+\r
private void KillScan()\r
{\r
try\r
/// <param name="CurrentFps"></param>\r
/// <param name="AverageFps"></param>\r
/// <param name="TimeRemaining"></param>\r
- private void EncodeOnEncodeProgress(object Sender, int CurrentTask, int TaskCount, float PercentComplete,\r
- float CurrentFps, float AverageFps, TimeSpan TimeRemaining)\r
+ private void EncodeOnEncodeProgress(object Sender, int CurrentTask, int TaskCount, float PercentComplete, float CurrentFps, float AverageFps, TimeSpan TimeRemaining)\r
{\r
if (this.InvokeRequired)\r
{\r
- this.BeginInvoke(new EncodeProgressEventHandler(EncodeOnEncodeProgress),\r
- new[]\r
- {\r
- Sender, CurrentTask, TaskCount, PercentComplete, CurrentFps, AverageFps, \r
- TimeRemaining\r
- });\r
+ this.BeginInvoke(\r
+ new EncodeProgressEventHandler(EncodeOnEncodeProgress),\r
+ new[] { Sender, CurrentTask, TaskCount, PercentComplete, CurrentFps, AverageFps, TimeRemaining });\r
return;\r
}\r
lbl_encode.Text =\r
- string.Format("Encode Progress: {0}%, FPS: {1}, Avg FPS: {2}, Time Remaining: {3} ",\r
- PercentComplete, CurrentFps, AverageFps, TimeRemaining);\r
+ string.Format("Encode Progress: {0}%, FPS: {1}, Avg FPS: {2}, Time Remaining: {3} ", PercentComplete, CurrentFps, AverageFps, TimeRemaining);\r
}\r
\r
#endregion\r