| // Copyright (c) 2012 The WebM project authors. All Rights Reserved. |
| // |
| // Use of this source code is governed by a BSD-style license |
| // that can be found in the LICENSE file in the root of the source |
| // tree. An additional intellectual property rights grant can be found |
| // in the file PATENTS. All contributing project authors may |
| // be found in the AUTHORS file in the root of the source tree. |
| |
| #include <cstdio> |
| #include <cstdlib> |
| #include "./vttreader.h" |
| #include "./webvttparser.h" |
| |
| int main(int argc, const char* argv[]) { |
| if (argc != 2) { |
| fprintf(stdout, "usage: dumpvtt <vtt file>\n"); |
| return EXIT_SUCCESS; |
| } |
| |
| libwebvtt::VttReader reader; |
| const char* const filename = argv[1]; |
| |
| if (int e = reader.Open(filename)) { |
| (void)e; |
| fprintf(stderr, "open failed\n"); |
| return EXIT_FAILURE; |
| } |
| |
| libwebvtt::Parser parser(&reader); |
| |
| if (int e = parser.Init()) { |
| (void)e; |
| fprintf(stderr, "parser init failed\n"); |
| return EXIT_FAILURE; |
| } |
| |
| for (libwebvtt::Cue cue;;) { |
| const int e = parser.Parse(&cue); |
| |
| if (e < 0) { // error |
| fprintf(stderr, "error parsing cue\n"); |
| return EXIT_FAILURE; |
| } |
| |
| if (e > 0) // EOF |
| return EXIT_SUCCESS; |
| |
| fprintf(stdout, "cue identifier: \"%s\"\n", cue.identifier.c_str()); |
| |
| const libwebvtt::Time& st = cue.start_time; |
| fprintf(stdout, "cue start time: \"HH=%i MM=%i SS=%i SSS=%i\"\n", st.hours, |
| st.minutes, st.seconds, st.milliseconds); |
| |
| const libwebvtt::Time& sp = cue.stop_time; |
| fprintf(stdout, "cue stop time: \"HH=%i MM=%i SS=%i SSS=%i\"\n", sp.hours, |
| sp.minutes, sp.seconds, sp.milliseconds); |
| |
| { |
| typedef libwebvtt::Cue::settings_t::const_iterator iter_t; |
| iter_t i = cue.settings.begin(); |
| const iter_t j = cue.settings.end(); |
| |
| if (i == j) { |
| fprintf(stdout, "cue setting: <no settings present>\n"); |
| } else { |
| while (i != j) { |
| const libwebvtt::Setting& setting = *i++; |
| fprintf(stdout, "cue setting: name=%s value=%s\n", |
| setting.name.c_str(), setting.value.c_str()); |
| } |
| } |
| } |
| |
| { |
| typedef libwebvtt::Cue::payload_t::const_iterator iter_t; |
| iter_t i = cue.payload.begin(); |
| const iter_t j = cue.payload.end(); |
| |
| int idx = 1; |
| while (i != j) { |
| const std::string& payload = *i++; |
| const char* const payload_str = payload.c_str(); |
| fprintf(stdout, "cue payload[%i]: \"%s\"\n", idx, payload_str); |
| ++idx; |
| } |
| } |
| |
| fprintf(stdout, "\n"); |
| fflush(stdout); |
| } |
| } |