X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Frewrite_subs.cc;h=2f3cea545edcb7ad5355617ecd1a0f5647e69332;hb=5ec4e162688117a7a41d649984a507def30dc689;hp=8c055d9eab7dcc3d179f3415830918835a896522;hpb=938f413bb4ebecd51c805027e331cb7eb0ca9502;p=libdcp.git diff --git a/test/rewrite_subs.cc b/test/rewrite_subs.cc index 8c055d9e..2f3cea54 100644 --- a/test/rewrite_subs.cc +++ b/test/rewrite_subs.cc @@ -1,44 +1,73 @@ +/* + Copyright (C) 2012-2014 Carl Hetherington + + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + libdcp is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libdcp. If not, see . +*/ + #include #include "dcp.h" #include "cpl.h" #include "reel.h" #include "subtitle_asset.h" +#include "reel_subtitle_asset.h" #include "exceptions.h" using std::cout; using std::cerr; using std::list; +using std::string; using boost::shared_ptr; -using namespace libdcp; +using namespace dcp; +/** Load a DCP then re-write its subtitle XML or MXF in-place */ int main (int argc, char* argv[]) -try { - if (argc < 2) { - cerr << "Syntax: " << argv[0] << " \n"; - exit (EXIT_FAILURE); - } + try { + if (argc < 2) { + cerr << "Syntax: " << argv[0] << " \n"; + exit (EXIT_FAILURE); + } - DCP* dcp = new DCP (argv[1]); - dcp->read (false); - - list > cpls = dcp->cpls (); - for (list >::iterator i = cpls.begin(); i != cpls.end(); ++i) { + DCP* dcp = new DCP (argv[1]); + dcp->read (true); - list > reels = (*i)->reels (); - for (list >::iterator j = reels.begin(); j != reels.end(); ++j) { + list > cpls = dcp->cpls (); + for (list >::iterator i = cpls.begin(); i != cpls.end(); ++i) { - if ((*j)->main_subtitle()) { - (*j)->main_subtitle()->write_xml (); + list > reels = (*i)->reels (); + for (list >::iterator j = reels.begin(); j != reels.end(); ++j) { + + if ((*j)->main_subtitle()) { + (*j)->main_subtitle()->asset()->write ((*j)->main_subtitle()->asset()->file().get()); + } } } } + catch (FileError& e) + { + cerr << e.what() << " (" << e.filename() << ") when reading " << argv[1] << "\n"; + exit (EXIT_FAILURE); + } + catch (DCPReadError& e) + { + cerr << e.what() << " when reading " << argv[1] << "\n"; + exit (EXIT_FAILURE); + } + return 0; } -catch (FileError& e) -{ - cerr << e.what() << " (" << e.filename() << ")\n"; - exit (EXIT_FAILURE); -}