summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrake.ApplicationServices/Parsing
diff options
context:
space:
mode:
authorsr55 <[email protected]>2013-08-22 17:02:19 +0000
committersr55 <[email protected]>2013-08-22 17:02:19 +0000
commitc0ad015d6ef51b4edf229d98803d35c781e8b67f (patch)
tree5e40c8b802fbbfe03c3a6b27be80dcfe44d56a72 /win/CS/HandBrake.ApplicationServices/Parsing
parent88cfc4524c3bb09c1316219c1f83517b35697736 (diff)
WinGui: Strip out legacy CLI scan code.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5732 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS/HandBrake.ApplicationServices/Parsing')
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs5
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs95
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs63
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs134
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Source.cs30
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs90
-rw-r--r--win/CS/HandBrake.ApplicationServices/Parsing/Title.cs135
7 files changed, 10 insertions, 542 deletions
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs
index b78ca5ad8..d925d2d3a 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Audio.cs
@@ -128,10 +128,12 @@ namespace HandBrake.ApplicationServices.Parsing
{
return false;
}
+
if (ReferenceEquals(this, other))
{
return true;
}
+
return other.TrackNumber == this.TrackNumber && object.Equals(other.Language, this.Language) && object.Equals(other.LanguageCode, this.LanguageCode) && object.Equals(other.Format, this.Format);
}
@@ -148,14 +150,17 @@ namespace HandBrake.ApplicationServices.Parsing
{
return false;
}
+
if (ReferenceEquals(this, obj))
{
return true;
}
+
if (obj.GetType() != typeof(Audio))
{
return false;
}
+
return Equals((Audio)obj);
}
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs b/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs
deleted file mode 100644
index 43c331337..000000000
--- a/win/CS/HandBrake.ApplicationServices/Parsing/AudioHelper.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-// --------------------------------------------------------------------------------------------------------------------
-// <copyright file="AudioHelper.cs" company="HandBrake Project (http://handbrake.fr)">
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
-// </copyright>
-// <summary>
-// An Audio Helper Class
-// </summary>
-// --------------------------------------------------------------------------------------------------------------------
-
-namespace HandBrake.ApplicationServices.Parsing
-{
- using System.Collections.Generic;
- using System.IO;
- using System.Text.RegularExpressions;
-
- /// <summary>
- /// An Audio Helper Class
- /// </summary>
- public class AudioHelper
- {
- /// <summary>
- /// Gets A Dummy Not Found Track
- /// </summary>
- public static Audio NoneFound
- {
- get
- {
- return new Audio { Description = "None Found" };
- }
- }
-
- /// <summary>
- /// Parse the CLI input to an Audio Track object
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// An Audio Track obkect
- /// </returns>
- public static Audio Parse(StringReader output)
- {
- string audioTrack = output.ReadLine();
- Match m = Regex.Match(audioTrack, @"^ \+ ([0-9]*), ([A-Za-z0-9,\s]*) \((.*)\) \((.*)\)");
- Match track = Regex.Match(audioTrack, @"^ \+ ([0-9]*), ([A-Za-z0-9,\s]*) \((.*)\)"); // ID and Language
- Match iso639_2 = Regex.Match(audioTrack, @"iso639-2: ([a-zA-Z]*)\)");
- Match samplerate = Regex.Match(audioTrack, @"([0-9]*)Hz");
- Match bitrate = Regex.Match(audioTrack, @"([0-9]*)bps");
-
- string subformat = m.Groups[4].Value.Trim().Contains("iso639") ? null : m.Groups[4].Value;
- string samplerateVal = samplerate.Success ? samplerate.Groups[0].Value.Replace("Hz", string.Empty).Trim() : "0";
- string bitrateVal = bitrate.Success ? bitrate.Groups[0].Value.Replace("bps", string.Empty).Trim() : "0";
-
- if (track.Success)
- {
- Audio thisTrack = new Audio
- {
- TrackNumber = int.Parse(track.Groups[1].Value.Trim()),
- Language = track.Groups[2].Value,
- Format = m.Groups[3].Value,
- Description = subformat,
- SampleRate = int.Parse(samplerateVal),
- Bitrate = int.Parse(bitrateVal),
- LanguageCode = iso639_2.Value.Replace("iso639-2: ", string.Empty).Replace(")", string.Empty)
- };
- return thisTrack;
- }
-
- return null;
- }
-
- /// <summary>
- /// Pase a list of audio tracks
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// An array of audio tracks
- /// </returns>
- public static Audio[] ParseList(StringReader output)
- {
- var tracks = new List<Audio>();
- while (true)
- {
- Audio thisTrack = Parse(output);
- if (thisTrack != null)
- tracks.Add(thisTrack);
- else
- break;
- }
- return tracks.ToArray();
- }
- }
-}
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs
index 00870552f..0b0a741a0 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Chapter.cs
@@ -10,9 +10,7 @@
namespace HandBrake.ApplicationServices.Parsing
{
using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text.RegularExpressions;
+ using System.Globalization;
/// <summary>
/// An object representing a Chapter aosciated with a Title, in a DVD
@@ -61,69 +59,12 @@ namespace HandBrake.ApplicationServices.Parsing
public TimeSpan Duration { get; set; }
/// <summary>
- /// Parse a CLI string to a Chapter object
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// A chapter Object
- /// </returns>
- public static Chapter Parse(StringReader output)
- {
- // TODO add support for reading chapter names to the regex.
- string line = output.ReadLine();
- Match m = Regex.Match(line, @"^ \+ ([0-9]*): cells ([0-9]*)->([0-9]*), ([0-9]*) blocks, duration ([0-9]{2}:[0-9]{2}:[0-9]{2})");
- if (m.Success)
- {
- var thisChapter = new Chapter
- {
- ChapterNumber = int.Parse(m.Groups[1].Value.Trim()),
- ChapterName = string.Empty,
- Duration = TimeSpan.Parse(m.Groups[5].Value)
- };
- return thisChapter;
- }
- return null;
- }
-
- /// <summary>
- /// Prase a list of strings / chatpers
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// An array of chapter objects
- /// </returns>
- public static Chapter[] ParseList(StringReader output)
- {
- var chapters = new List<Chapter>();
-
- // this is to read the " + chapters:" line from the buffer
- // so we can start reading the chapters themselvs
- output.ReadLine();
-
- while (true)
- {
- // Start of the chapter list for this Title
- Chapter thisChapter = Parse(output);
-
- if (thisChapter != null)
- chapters.Add(thisChapter);
- else
- break;
- }
- return chapters.ToArray();
- }
-
- /// <summary>
/// Override of the ToString method to make this object easier to use in the UI
/// </summary>
/// <returns>A string formatted as: {chapter #}</returns>
public override string ToString()
{
- return ChapterNumber.ToString();
+ return ChapterNumber.ToString(CultureInfo.InvariantCulture);
}
}
} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs
deleted file mode 100644
index 7cb7100fc..000000000
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Parser.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-// --------------------------------------------------------------------------------------------------------------------
-// <copyright file="Parser.cs" company="HandBrake Project (http://handbrake.fr)">
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
-// </copyright>
-// <summary>
-// A delegate to handle custom events regarding data being parsed from the buffer
-// </summary>
-// --------------------------------------------------------------------------------------------------------------------
-
-namespace HandBrake.ApplicationServices.Parsing
-{
- using System;
- using System.Globalization;
- using System.IO;
- using System.Text;
- using System.Text.RegularExpressions;
-
- /// <summary>
- /// A delegate to handle custom events regarding data being parsed from the buffer
- /// </summary>
- /// <param name="sender">The object which raised this delegate</param>
- /// <param name="data">The data parsed from the stream</param>
- public delegate void DataReadEventHandler(object sender, string data);
-
- /// <summary>
- /// A delegate to handle events regarding progress during DVD scanning
- /// </summary>
- /// <param name="sender">The object who's raising the event</param>
- /// <param name="currentTitle">The title number currently being processed</param>
- /// <param name="titleCount">The total number of titiles to be processed</param>
- /// <param name="percentage">Percentage complete.</param>
- public delegate void ScanProgressEventHandler(object sender, int currentTitle, int titleCount, decimal percentage);
-
- /// <summary>
- /// A delegate to handle encode progress updates // EXPERIMENTAL
- /// </summary>
- /// <param name="sender">The object which raised the event</param>
- /// <param name="currentTask">The current task being processed from the queue</param>
- /// <param name="taskCount">The total number of tasks in queue</param>
- /// <param name="percentComplete">The percentage this task is complete</param>
- /// <param name="currentFps">The current encoding fps</param>
- /// <param name="averageFps">The average encoding fps for this task</param>
- /// <param name="timeRemaining">The estimated time remaining for this task to complete</param>
- public delegate void EncodeProgressEventHandler(object sender, int currentTask, int taskCount, float percentComplete, float currentFps, float averageFps, string timeRemaining);
-
- /// <summary>
- /// A simple wrapper around a StreamReader to keep track of the entire output from a cli process
- /// </summary>
- public class Parser : StreamReader
- {
- /// <summary>
- /// The Buffer StringBuilder
- /// </summary>
- private readonly StringBuilder buffer = new StringBuilder(string.Empty);
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Parser"/> class.
- /// Default constructor for this object
- /// </summary>
- /// <param name="baseStream">
- /// The stream to parse from
- /// </param>
- public Parser(Stream baseStream) : base(baseStream, Encoding.Default)
- {
- }
-
- /// <summary>
- /// Raised upon a new line being read from stdout/stderr
- /// </summary>
- public event DataReadEventHandler OnReadLine;
-
- /// <summary>
- /// Raised upon the entire stdout/stderr stream being read in a single call
- /// </summary>
- public event DataReadEventHandler OnReadToEnd;
-
- /// <summary>
- /// Raised upon the catching of a "Scanning title # of #..." in the stream
- /// </summary>
- public event ScanProgressEventHandler OnScanProgress;
-
-
- /// <summary>
- /// Gets the buffer of data that came from the CLI standard input/error
- /// </summary>
- public StringBuilder Buffer
- {
- get { return buffer; }
- }
-
- /// <summary>
- /// Read a line from standard in/err
- /// </summary>
- /// <returns>
- /// The read line
- /// </returns>
- public override string ReadLine()
- {
- string tmp = base.ReadLine();
-
- Match m = null;
- if (tmp != null && tmp.Contains("Scanning title"))
- m = Regex.Match(tmp, "^Scanning title ([0-9]*) of ([0-9]*)([a-z0-9 ,]*), ([0-9.]*)");
- else if (!string.IsNullOrEmpty(tmp))
- buffer.Append(tmp + Environment.NewLine);
-
- if (OnReadLine != null)
- OnReadLine(this, tmp);
-
- if (m != null)
- if (m.Success && OnScanProgress != null)
- OnScanProgress(this, int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value), decimal.Parse(m.Groups[4].Value, CultureInfo.InvariantCulture));
-
- return tmp;
- }
-
- /// <summary>
- /// Read to the end of the input stream
- /// </summary>
- /// <returns>
- /// A string of the input data
- /// </returns>
- public override string ReadToEnd()
- {
- string tmp = base.ReadToEnd();
-
- buffer.Append(tmp + Environment.NewLine);
- if (OnReadToEnd != null)
- OnReadToEnd(this, tmp);
-
- return tmp;
- }
- }
-} \ No newline at end of file
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Source.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Source.cs
index 93aa13a0c..5f721e3a6 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Source.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Source.cs
@@ -10,11 +10,8 @@
namespace HandBrake.ApplicationServices.Parsing
{
using System.Collections.Generic;
- using System.IO;
using System.Runtime.Serialization;
- using HandBrake.ApplicationServices.Services.Interfaces;
-
/// <summary>
/// An object representing a scanned DVD
/// </summary>
@@ -44,33 +41,6 @@ namespace HandBrake.ApplicationServices.Parsing
public List<Title> Titles { get; set; }
/// <summary>
- /// Parse the StreamReader output into a List of Titles
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <param name="isDvdNavDisabled">
- /// The is Dvd Nav Disabled.
- /// </param>
- /// <returns>
- /// A DVD object which contains a list of title inforamtion
- /// </returns>
- public static Source Parse(StreamReader output, bool isDvdNavDisabled)
- {
- var thisDVD = new Source();
-
- while (!output.EndOfStream)
- {
- if ((char) output.Peek() == '+')
- thisDVD.Titles.AddRange(Title.ParseList(output.ReadToEnd(), isDvdNavDisabled));
- else
- output.ReadLine();
- }
-
- return thisDVD;
- }
-
- /// <summary>
/// Copy this Source to another Source Model
/// </summary>
/// <param name="source">
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs
index 0a68476f4..e40734b55 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs
@@ -10,9 +10,6 @@
namespace HandBrake.ApplicationServices.Parsing
{
using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text.RegularExpressions;
using HandBrake.ApplicationServices.Model.Encoding;
using HandBrake.ApplicationServices.Utilities;
@@ -52,7 +49,6 @@ namespace HandBrake.ApplicationServices.Parsing
this.SubtitleType = subtitleType;
}
-
/// <summary>
/// Gets or sets the track number of this Subtitle
/// </summary>
@@ -101,89 +97,6 @@ namespace HandBrake.ApplicationServices.Parsing
}
/// <summary>
- /// Parse the input strings related to subtitles
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// A Subitle object
- /// </returns>
- public static Subtitle Parse(StringReader output)
- {
- string curLine = output.ReadLine();
-
- // + 1, English (iso639-2: eng) (Text)(SSA)
- // + 1, English (iso639-2: eng) (Text)(UTF-8)
- Match m = Regex.Match(curLine, @"^ \+ ([0-9]*), ([A-Za-z, ]*) \((.*)\) \(([a-zA-Z]*)\)\(([a-zA-Z0-9\-]*)\)");
-
- if (m.Success && !curLine.Contains("HandBrake has exited."))
- {
- var thisSubtitle = new Subtitle
- {
- TrackNumber = int.Parse(m.Groups[1].Value.Trim()),
- Language = m.Groups[2].Value,
- LanguageCode = m.Groups[3].Value,
- };
-
- switch (m.Groups[5].Value)
- {
- case "VOBSUB":
- thisSubtitle.SubtitleType = SubtitleType.VobSub;
- break;
- case "SRT":
- thisSubtitle.SubtitleType = SubtitleType.SRT;
- break;
- case "CC":
- thisSubtitle.SubtitleType = SubtitleType.CC;
- break;
- case "UTF-8":
- thisSubtitle.SubtitleType = SubtitleType.UTF8Sub;
- break;
- case "TX3G":
- thisSubtitle.SubtitleType = SubtitleType.TX3G;
- break;
- case "SSA":
- thisSubtitle.SubtitleType = SubtitleType.SSA;
- break;
- case "PGS":
- thisSubtitle.SubtitleType = SubtitleType.PGS;
- break;
- default:
- thisSubtitle.SubtitleType = SubtitleType.Unknown;
- break;
- }
-
- return thisSubtitle;
- }
- return null;
- }
-
- /// <summary>
- /// Parse a list of Subtitle tracks from an input string.
- /// </summary>
- /// <param name="output">
- /// The output.
- /// </param>
- /// <returns>
- /// An array of Subtitle objects
- /// </returns>
- public static IEnumerable<Subtitle> ParseList(StringReader output)
- {
- var subtitles = new List<Subtitle>();
- while ((char)output.Peek() != '+')
- {
- Subtitle thisSubtitle = Parse(output);
-
- if (thisSubtitle != null)
- subtitles.Add(thisSubtitle);
- else
- break;
- }
- return subtitles.ToArray();
- }
-
- /// <summary>
/// Override of the ToString method to make this object easier to use in the UI
/// </summary>
/// <returns>A string formatted as: {track #} {language}</returns>
@@ -227,14 +140,17 @@ namespace HandBrake.ApplicationServices.Parsing
{
return false;
}
+
if (ReferenceEquals(this, obj))
{
return true;
}
+
if (obj.GetType() != typeof(Subtitle))
{
return false;
}
+
return Equals((Subtitle)obj);
}
diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
index af5788f41..969640b20 100644
--- a/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
+++ b/win/CS/HandBrake.ApplicationServices/Parsing/Title.cs
@@ -11,10 +11,7 @@ namespace HandBrake.ApplicationServices.Parsing
{
using System;
using System.Collections.Generic;
- using System.Globalization;
- using System.IO;
using System.Linq;
- using System.Text.RegularExpressions;
using HandBrake.Interop.Model;
@@ -115,138 +112,6 @@ namespace HandBrake.ApplicationServices.Parsing
#endregion
/// <summary>
- /// Parse the Title Information
- /// </summary>
- /// <param name="output">
- /// A StringReader of output data
- /// </param>
- /// <param name="isDvdNavDisabled">
- /// The is Dvd Nav Disabled.
- /// </param>
- /// <returns>
- /// A Title Object
- /// </returns>
- public static Title Parse(StringReader output, bool isDvdNavDisabled)
- {
- var thisTitle = new Title();
- string nextLine = output.ReadLine();
-
- // Get the Title Number
- Match m = Regex.Match(nextLine, @"^\+ title ([0-9]*):");
- if (m.Success)
- thisTitle.TitleNumber = int.Parse(m.Groups[1].Value.Trim());
- nextLine = output.ReadLine();
-
- // Detect if this is the main feature
- m = Regex.Match(nextLine, @" \+ Main Feature");
- if (m.Success)
- {
- thisTitle.MainTitle = true;
- nextLine = output.ReadLine();
- }
-
- // Get the stream name for file import
- m = Regex.Match(nextLine, @"^ \+ stream:");
- if (m.Success)
- {
- thisTitle.SourceName = nextLine.Replace("+ stream:", string.Empty).Trim();
- nextLine = output.ReadLine();
- }
-
- // Playlist
- m = Regex.Match(nextLine, @"^ \+ playlist:");
- if (m.Success)
- {
- thisTitle.Playlist = nextLine.Replace("+ playlist:", string.Empty).Trim();
- nextLine = output.ReadLine();
- }
-
- // Jump over the VTS and blocks line
- m = Regex.Match(nextLine, @"^ \+ vts:");
- if (nextLine.Contains("blocks") || nextLine.Contains("+ vts "))
- {
- nextLine = output.ReadLine();
- }
-
- // Multi-Angle Support if LibDvdNav is enabled
- m = Regex.Match(nextLine, @" \+ angle\(s\) ([0-9]*)");
- if (m.Success)
- {
- string angleList = m.Value.Replace("+ angle(s) ", string.Empty).Trim();
- int angleCount;
- int.TryParse(angleList, out angleCount);
-
- thisTitle.AngleCount = angleCount;
- nextLine = output.ReadLine();
- }
-
- // Get duration for this title
- m = Regex.Match(nextLine, @"^ \+ duration: ([0-9]{2}:[0-9]{2}:[0-9]{2})");
- if (m.Success)
- thisTitle.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]*), pixel aspect: ([0-9]*)/([0-9]*), display aspect: ([0-9]*\.[0-9]*), ([0-9]*\.[0-9]*) fps");
- if (m.Success)
- {
- thisTitle.Resolution = new Size(int.Parse(m.Groups[1].Value), int.Parse(m.Groups[2].Value));
- thisTitle.ParVal = new Size(int.Parse(m.Groups[3].Value), int.Parse(m.Groups[4].Value));
- thisTitle.AspectRatio = Math.Round(float.Parse(m.Groups[5].Value, CultureInfo.InvariantCulture), 2);
- thisTitle.Fps = float.Parse(m.Groups[6].Value, CultureInfo.InvariantCulture);
- }
-
- // Get autocrop region for this title
- m = Regex.Match(output.ReadLine(), @"^ \+ autocrop: ([0-9]*)/([0-9]*)/([0-9]*)/([0-9]*)");
- if (m.Success)
- {
- thisTitle.AutoCropDimensions = new Cropping
- {
- Top = int.Parse(m.Groups[1].Value),
- Bottom = int.Parse(m.Groups[2].Value),
- Left = int.Parse(m.Groups[3].Value),
- Right = int.Parse(m.Groups[4].Value)
- };
- }
-
- thisTitle.Chapters.AddRange(Chapter.ParseList(output));
-
- thisTitle.AudioTracks.AddRange(AudioHelper.ParseList(output));
-
- thisTitle.Subtitles.AddRange(Subtitle.ParseList(output));
-
- return thisTitle;
- }
-
- /// <summary>
- /// Return a list of parsed titles
- /// </summary>
- /// <param name="output">
- /// The Output
- /// </param>
- /// <param name="isDvdNavDisabled">
- /// The is Dvd Nav Disabled.
- /// </param>
- /// <returns>
- /// A List of titles
- /// </returns>
- public static Title[] ParseList(string output, bool isDvdNavDisabled)
- {
- var titles = new List<Title>();
- var sr = new StringReader(output);
-
- while (sr.Peek() == '+' || sr.Peek() == ' ')
- {
- // If the the character is a space, then chances are the line
- if (sr.Peek() == ' ') // If the character is a space, then chances are it's the combing detected line.
- sr.ReadLine(); // Skip over it
- else
- titles.Add(Parse(sr, isDvdNavDisabled));
- }
-
- return titles.ToArray();
- }
-
- /// <summary>
/// Calcuate the Duration
/// </summary>
/// <param name="startPoint">The Start Point (Chapters)</param>