OSDN Git Service

268007c3bff7591a98de77e7b92a2f8419cae7b9
[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 override string ToString()\r
65         {\r
66             return string.Format("{0} {1} ({2}) ({3})", this.m_trackNumber, this.m_language, this.m_format, this.m_subFormat);\r
67         }\r
68 \r
69         public static AudioTrack Parse(StreamReader output)\r
70         {\r
71             string curLine = output.ReadLine();\r
72             if (!curLine.Contains("  + subtitle tracks:"))\r
73             {\r
74                 AudioTrack thisTrack = new AudioTrack();\r
75                 string[] splitter = curLine.Split(new string[] { "    + ", ", ", " (", ") (", " ch", "), ", "Hz, ", "bps" }, StringSplitOptions.RemoveEmptyEntries);\r
76                 thisTrack.m_trackNumber = int.Parse(splitter[0]);\r
77                 thisTrack.m_language = splitter[1];\r
78                 thisTrack.m_format = splitter[2];\r
79                 thisTrack.m_subFormat = splitter[3];\r
80                 thisTrack.m_frequency = int.Parse(splitter[4]);\r
81                 thisTrack.m_bitrate = int.Parse(splitter[5]);\r
82                 return thisTrack;\r
83             }\r
84             else\r
85             {\r
86                 return null;\r
87             }\r
88         }\r
89 \r
90         public static AudioTrack[] ParseList(StreamReader output)\r
91         {\r
92             List<AudioTrack> tracks = new List<AudioTrack>();\r
93             while (true) // oh glorious hack, serve me well\r
94             {\r
95                 AudioTrack thisTrack = AudioTrack.Parse(output);\r
96                 if (thisTrack != null)\r
97                 {\r
98                     tracks.Add(thisTrack);\r
99                 }\r
100                 else\r
101                 {\r
102                     break;\r
103                 }\r
104             }\r
105             return tracks.ToArray();\r
106         }\r
107     }\r
108 }\r