OSDN Git Service

added new parsing code to parse cli output into objects
[handbrake-jp/handbrake-jp-git.git] / win / C# / Parsing / AudioTrack.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.IO;\r
5 \r
6 namespace Handbrake.Parsing\r
7 {\r
8     public class AudioTrack\r
9     {\r
10         private int m_trackNumber;\r
11         public int TrackNumber\r
12         {\r
13             get\r
14             {\r
15                 return this.m_trackNumber;\r
16             }\r
17         }\r
18 \r
19         private string m_language;\r
20         public string Language\r
21         {\r
22             get\r
23             {\r
24                 return this.m_language;\r
25             }\r
26         }\r
27 \r
28         private string m_format;\r
29         public string Format\r
30         {\r
31             get\r
32             {\r
33                 return this.m_format;\r
34             }\r
35         }\r
36 \r
37         private string m_subFormat;\r
38         public string SubFormat\r
39         {\r
40             get\r
41             {\r
42                 return this.m_subFormat;\r
43             }\r
44         }\r
45 \r
46         private int m_frequency;\r
47         public int Frequency\r
48         {\r
49             get\r
50             {\r
51                 return this.m_frequency;\r
52             }\r
53         }\r
54 \r
55         private int m_bitrate;\r
56         public int Bitrate\r
57         {\r
58             get\r
59             {\r
60                 return this.m_bitrate;\r
61             }\r
62         }\r
63 \r
64         public static AudioTrack Parse(StreamReader output)\r
65         {\r
66             string curLine = output.ReadLine();\r
67             if (!curLine.Contains("  + subtitle tracks:"))\r
68             {\r
69                 AudioTrack thisTrack = new AudioTrack();\r
70                 string[] splitter = curLine.Split(new string[] { "    + ", ", ", " (", ") (", " ch", "), ", "Hz, ", "bps" }, StringSplitOptions.RemoveEmptyEntries);\r
71                 thisTrack.m_trackNumber = int.Parse(splitter[0]);\r
72                 thisTrack.m_language = splitter[1];\r
73                 thisTrack.m_format = splitter[2];\r
74                 thisTrack.m_subFormat = splitter[3];\r
75                 thisTrack.m_frequency = int.Parse(splitter[4]);\r
76                 thisTrack.m_bitrate = int.Parse(splitter[5]);\r
77                 return thisTrack;\r
78             }\r
79             else\r
80             {\r
81                 return null;\r
82             }\r
83         }\r
84 \r
85         public static AudioTrack[] ParseList(StreamReader output)\r
86         {\r
87             List<AudioTrack> tracks = new List<AudioTrack>();\r
88             while (true) // oh glorious hack, serve me well\r
89             {\r
90                 AudioTrack thisTrack = AudioTrack.Parse(output);\r
91                 if (thisTrack != null)\r
92                 {\r
93                     tracks.Add(thisTrack);\r
94                 }\r
95                 else\r
96                 {\r
97                     break;\r
98                 }\r
99             }\r
100             return tracks.ToArray();\r
101         }\r
102     }\r
103 }\r