1*103e46e4SHarish Mahendrakar // Copyright (c) 2012 The WebM project authors. All Rights Reserved.
2*103e46e4SHarish Mahendrakar //
3*103e46e4SHarish Mahendrakar // Use of this source code is governed by a BSD-style license
4*103e46e4SHarish Mahendrakar // that can be found in the LICENSE file in the root of the source
5*103e46e4SHarish Mahendrakar // tree. An additional intellectual property rights grant can be found
6*103e46e4SHarish Mahendrakar // in the file PATENTS. All contributing project authors may
7*103e46e4SHarish Mahendrakar // be found in the AUTHORS file in the root of the source tree.
8*103e46e4SHarish Mahendrakar
9*103e46e4SHarish Mahendrakar #include <cstdio>
10*103e46e4SHarish Mahendrakar #include <cstdlib>
11*103e46e4SHarish Mahendrakar #include "webvtt/vttreader.h"
12*103e46e4SHarish Mahendrakar #include "webvtt/webvttparser.h"
13*103e46e4SHarish Mahendrakar
main(int argc,const char * argv[])14*103e46e4SHarish Mahendrakar int main(int argc, const char* argv[]) {
15*103e46e4SHarish Mahendrakar if (argc != 2) {
16*103e46e4SHarish Mahendrakar fprintf(stdout, "usage: dumpvtt <vtt file>\n");
17*103e46e4SHarish Mahendrakar return EXIT_SUCCESS;
18*103e46e4SHarish Mahendrakar }
19*103e46e4SHarish Mahendrakar
20*103e46e4SHarish Mahendrakar libwebvtt::VttReader reader;
21*103e46e4SHarish Mahendrakar const char* const filename = argv[1];
22*103e46e4SHarish Mahendrakar
23*103e46e4SHarish Mahendrakar if (int e = reader.Open(filename)) {
24*103e46e4SHarish Mahendrakar (void)e;
25*103e46e4SHarish Mahendrakar fprintf(stderr, "open failed\n");
26*103e46e4SHarish Mahendrakar return EXIT_FAILURE;
27*103e46e4SHarish Mahendrakar }
28*103e46e4SHarish Mahendrakar
29*103e46e4SHarish Mahendrakar libwebvtt::Parser parser(&reader);
30*103e46e4SHarish Mahendrakar
31*103e46e4SHarish Mahendrakar if (int e = parser.Init()) {
32*103e46e4SHarish Mahendrakar (void)e;
33*103e46e4SHarish Mahendrakar fprintf(stderr, "parser init failed\n");
34*103e46e4SHarish Mahendrakar return EXIT_FAILURE;
35*103e46e4SHarish Mahendrakar }
36*103e46e4SHarish Mahendrakar
37*103e46e4SHarish Mahendrakar for (libwebvtt::Cue cue;;) {
38*103e46e4SHarish Mahendrakar const int e = parser.Parse(&cue);
39*103e46e4SHarish Mahendrakar
40*103e46e4SHarish Mahendrakar if (e < 0) { // error
41*103e46e4SHarish Mahendrakar fprintf(stderr, "error parsing cue\n");
42*103e46e4SHarish Mahendrakar return EXIT_FAILURE;
43*103e46e4SHarish Mahendrakar }
44*103e46e4SHarish Mahendrakar
45*103e46e4SHarish Mahendrakar if (e > 0) // EOF
46*103e46e4SHarish Mahendrakar return EXIT_SUCCESS;
47*103e46e4SHarish Mahendrakar
48*103e46e4SHarish Mahendrakar fprintf(stdout, "cue identifier: \"%s\"\n", cue.identifier.c_str());
49*103e46e4SHarish Mahendrakar
50*103e46e4SHarish Mahendrakar const libwebvtt::Time& st = cue.start_time;
51*103e46e4SHarish Mahendrakar fprintf(stdout, "cue start time: \"HH=%i MM=%i SS=%i SSS=%i\"\n", st.hours,
52*103e46e4SHarish Mahendrakar st.minutes, st.seconds, st.milliseconds);
53*103e46e4SHarish Mahendrakar
54*103e46e4SHarish Mahendrakar const libwebvtt::Time& sp = cue.stop_time;
55*103e46e4SHarish Mahendrakar fprintf(stdout, "cue stop time: \"HH=%i MM=%i SS=%i SSS=%i\"\n", sp.hours,
56*103e46e4SHarish Mahendrakar sp.minutes, sp.seconds, sp.milliseconds);
57*103e46e4SHarish Mahendrakar
58*103e46e4SHarish Mahendrakar {
59*103e46e4SHarish Mahendrakar typedef libwebvtt::Cue::settings_t::const_iterator iter_t;
60*103e46e4SHarish Mahendrakar iter_t i = cue.settings.begin();
61*103e46e4SHarish Mahendrakar const iter_t j = cue.settings.end();
62*103e46e4SHarish Mahendrakar
63*103e46e4SHarish Mahendrakar if (i == j) {
64*103e46e4SHarish Mahendrakar fprintf(stdout, "cue setting: <no settings present>\n");
65*103e46e4SHarish Mahendrakar } else {
66*103e46e4SHarish Mahendrakar while (i != j) {
67*103e46e4SHarish Mahendrakar const libwebvtt::Setting& setting = *i++;
68*103e46e4SHarish Mahendrakar fprintf(stdout, "cue setting: name=%s value=%s\n",
69*103e46e4SHarish Mahendrakar setting.name.c_str(), setting.value.c_str());
70*103e46e4SHarish Mahendrakar }
71*103e46e4SHarish Mahendrakar }
72*103e46e4SHarish Mahendrakar }
73*103e46e4SHarish Mahendrakar
74*103e46e4SHarish Mahendrakar {
75*103e46e4SHarish Mahendrakar typedef libwebvtt::Cue::payload_t::const_iterator iter_t;
76*103e46e4SHarish Mahendrakar iter_t i = cue.payload.begin();
77*103e46e4SHarish Mahendrakar const iter_t j = cue.payload.end();
78*103e46e4SHarish Mahendrakar
79*103e46e4SHarish Mahendrakar int idx = 1;
80*103e46e4SHarish Mahendrakar while (i != j) {
81*103e46e4SHarish Mahendrakar const std::string& payload = *i++;
82*103e46e4SHarish Mahendrakar const char* const payload_str = payload.c_str();
83*103e46e4SHarish Mahendrakar fprintf(stdout, "cue payload[%i]: \"%s\"\n", idx, payload_str);
84*103e46e4SHarish Mahendrakar ++idx;
85*103e46e4SHarish Mahendrakar }
86*103e46e4SHarish Mahendrakar }
87*103e46e4SHarish Mahendrakar
88*103e46e4SHarish Mahendrakar fprintf(stdout, "\n");
89*103e46e4SHarish Mahendrakar fflush(stdout);
90*103e46e4SHarish Mahendrakar }
91*103e46e4SHarish Mahendrakar }
92