xref: /aosp_15_r20/external/libwebm/dumpvtt.cc (revision 103e46e4cd4b6efcf6001f23fa8665fb110abf8d)
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