summaryrefslogtreecommitdiffstats
path: root/win/C#/Parsing
diff options
context:
space:
mode:
authorsr55 <[email protected]>2007-08-22 18:48:40 +0000
committersr55 <[email protected]>2007-08-22 18:48:40 +0000
commit5b79c836c803fe8b7706bf06485656f889478f7f (patch)
tree9da98d6aae57ef1d3f9281a1c7b51352030e3606 /win/C#/Parsing
parent784d350cf62da4ee14042e573d42765db84ddf1f (diff)
WinGui:
- Added some more exception handling. - Added workaround for issue with scanning on French systems causing a crash. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@850 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/C#/Parsing')
-rw-r--r--win/C#/Parsing/DVD.cs15
-rw-r--r--win/C#/Parsing/Title.cs101
2 files changed, 50 insertions, 66 deletions
diff --git a/win/C#/Parsing/DVD.cs b/win/C#/Parsing/DVD.cs
index 3ba212022..3249a23aa 100644
--- a/win/C#/Parsing/DVD.cs
+++ b/win/C#/Parsing/DVD.cs
@@ -1,17 +1,23 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
using System.Text;
-using System.IO;
-using System.Text.RegularExpressions;
using System.Windows.Forms;
+using System.IO;
+using System.Threading;
+using System.Diagnostics;
namespace Handbrake.Parsing
{
+
/// <summary>
/// An object representing a scanned DVD
/// </summary>
public class DVD
{
+
private List<Title> m_titles;
/// <summary>
/// Collection of Titles associated with this DVD
@@ -39,11 +45,12 @@ namespace Handbrake.Parsing
{
if ((char)output.Peek() == '+')
{
- thisDVD.m_titles.AddRange(Title.ParseList(output.ReadToEnd()));
+ string testb = output.ReadToEnd();
+ thisDVD.m_titles.AddRange(Title.ParseList(testb));
}
else
{
- output.ReadLine();
+ string test = output.ReadLine();
}
}
return thisDVD;
diff --git a/win/C#/Parsing/Title.cs b/win/C#/Parsing/Title.cs
index 933be6d2d..a78fef78a 100644
--- a/win/C#/Parsing/Title.cs
+++ b/win/C#/Parsing/Title.cs
@@ -85,11 +85,11 @@ namespace Handbrake.Parsing
}
}
- private float m_aspectRatio;
+ private string m_aspectRatio;
/// <summary>
/// The aspect ratio of this Title
/// </summary>
- public float AspectRatio
+ public string AspectRatio
{
get
{
@@ -139,71 +139,48 @@ namespace Handbrake.Parsing
Title thisTitle = new Title();
// Match track number for this title
- Match m = Regex.Match(output.ReadLine(), @"^\+ title ([0-9]*):");
- if (m.Success)
+ try
{
- thisTitle.m_titleNumber = int.Parse(m.Groups[1].Value);
- }
-
- output.ReadLine();
- /*
- // Match vts, ttn, cell range and block count
- m = Regex.Match(output.ReadLine(), @"^ \+ vts ([0-9]*), ttn ([0-9]*), cells ([0-9]*)->([0-9]*) \(([0-9]*) blocks\)");
- if (m.Success)
- {
- // We don't need any of those values right now, so we'll just ignore them
- // and read a line from the buffer to get it out of the way.
- }
- */
- // Get duration for this title
- m = Regex.Match(output.ReadLine(), @"^ \+ duration: ([0-9]{2}:[0-9]{2}:[0-9]{2})");
- if (m.Success)
- {
- thisTitle.m_duration = TimeSpan.Parse(m.Groups[1].Value);
+ Match m = Regex.Match(output.ReadLine(), @"^\+ title ([0-9]*):");
+ if (m.Success)
+ {
+ thisTitle.m_titleNumber = int.Parse(m.Groups[1].Value);
+ }
+ output.ReadLine();
+
+ // Get duration for this title
+ m = Regex.Match(output.ReadLine(), @"^ \+ duration: ([0-9]{2}:[0-9]{2}:[0-9]{2})");
+ if (m.Success)
+ {
+ thisTitle.m_duration = TimeSpan.Parse(m.Groups[1].Value);
+ }
+
+ // Get resolution, aspect ratio and FPS for this title
+ m = Regex.Match(output.ReadLine(), @"^ \+ size: ([0-9]*)x([0-9]*), aspect: ([0-9]*\.[0-9]*), ([0-9]*\.[0-9]*) fps");
+ if (m.Success)
+ {
+ thisTitle.m_resolution = new Size(int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value));
+ thisTitle.m_aspectRatio = m.Groups[3].ToString(); // Converted to a String for French Lanuage based systems. Some weird exception thrown
+ // when trying to parse it as a float
+ // we don't need FPS right now
+ }
+
+ // Get autocrop region for this title
+ m = Regex.Match(output.ReadLine(), @"^ \+ autocrop: ([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)");
+ if (m.Success)
+ {
+ thisTitle.m_autoCrop = new int[4] { int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value), int.Parse(m.Groups[3].Value), int.Parse(m.Groups[4].Value) };
+ }
+
+ thisTitle.m_chapters.AddRange(Chapter.ParseList(output));
+ thisTitle.m_audioTracks.AddRange(AudioTrack.ParseList(output));
+ thisTitle.m_subtitles.AddRange(Subtitle.ParseList(output));
}
-
- // Get resolution, aspect ratio and FPS for this title
- m = Regex.Match(output.ReadLine(), @"^ \+ size: ([0-9]*)x([0-9]*), aspect: ([0-9]*\.[0-9]*), ([0-9]*\.[0-9]*) fps");
- if (m.Success)
+ catch (Exception exc)
{
- thisTitle.m_resolution = new Size(int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value));
- thisTitle.m_aspectRatio = float.Parse(m.Groups[3].Value);
- // we don't need FPS right now
+ MessageBox.Show(exc.ToString());
}
-
- // Get autocrop region for this title
- m = Regex.Match(output.ReadLine(), @"^ \+ autocrop: ([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)");
- if (m.Success)
- {
- thisTitle.m_autoCrop = new int[4] { int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value), int.Parse(m.Groups[3].Value), int.Parse(m.Groups[4].Value) };
- }
-
- /*
- *
- * A Few Bugs that need fixed.
- *
- *
- * Problem 1
- * There is a small problem here... What happens if the DVD has no Subtitles? or Handbrake misses the Audio or Chapter track
- * data due to an error.
- *
- * hbcli will sit in a suspended state until it is forcefully closed.
- *
- * Problem 2
- * See AudioTrack.cs Line 80 for details
- *
- * Problem 3
- * Doesn't seem to support DVD's where the first track is 0 instead of 1, and only includes 1 title (TS/MPG files)
- * Simply Doesn't list any titles.
- *
- *
- */
-
- thisTitle.m_chapters.AddRange(Chapter.ParseList(output));
- thisTitle.m_audioTracks.AddRange(AudioTrack.ParseList(output));
- thisTitle.m_subtitles.AddRange(Subtitle.ParseList(output));
-
return thisTitle;
}