diff options
Diffstat (limited to 'win/C#/Parsing/Title.cs')
-rw-r--r-- | win/C#/Parsing/Title.cs | 101 |
1 files changed, 39 insertions, 62 deletions
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;
}
|