diff options
| -rw-r--r-- | src/subtitle_asset_internal.cc | 14 | ||||
| -rw-r--r-- | test/subtitle_optimisation_test.cc | 45 | ||||
| -rw-r--r-- | test/wscript | 1 |
3 files changed, 54 insertions, 6 deletions
diff --git a/src/subtitle_asset_internal.cc b/src/subtitle_asset_internal.cc index 99d8411b..f88a051a 100644 --- a/src/subtitle_asset_internal.cc +++ b/src/subtitle_asset_internal.cc @@ -246,12 +246,14 @@ order::Subtitle::as_xml (xmlpp::Element* parent, Context& context) const e->set_attribute ("SpotNumber", raw_convert<string> (context.spot_number++)); e->set_attribute ("TimeIn", _in.rebase(context.time_code_rate).as_string(context.standard)); e->set_attribute ("TimeOut", _out.rebase(context.time_code_rate).as_string(context.standard)); - if (context.standard == Standard::SMPTE) { - e->set_attribute ("FadeUpTime", _fade_up.rebase(context.time_code_rate).as_string(context.standard)); - e->set_attribute ("FadeDownTime", _fade_down.rebase(context.time_code_rate).as_string(context.standard)); - } else { - e->set_attribute ("FadeUpTime", raw_convert<string> (_fade_up.as_editable_units_ceil(context.time_code_rate))); - e->set_attribute ("FadeDownTime", raw_convert<string> (_fade_down.as_editable_units_ceil(context.time_code_rate))); + if (context.optimisation != SubtitleOptimisation::FOR_CCAP) { + if (context.standard == Standard::SMPTE) { + e->set_attribute("FadeUpTime", _fade_up.rebase(context.time_code_rate).as_string(context.standard)); + e->set_attribute("FadeDownTime", _fade_down.rebase(context.time_code_rate).as_string(context.standard)); + } else { + e->set_attribute("FadeUpTime", raw_convert<string> (_fade_up.as_editable_units_ceil(context.time_code_rate))); + e->set_attribute("FadeDownTime", raw_convert<string> (_fade_down.as_editable_units_ceil(context.time_code_rate))); + } } return e; } diff --git a/test/subtitle_optimisation_test.cc b/test/subtitle_optimisation_test.cc new file mode 100644 index 00000000..6ef77fe2 --- /dev/null +++ b/test/subtitle_optimisation_test.cc @@ -0,0 +1,45 @@ +/* + Copyright (C) 2023 Carl Hetherington <cth@carlh.net> + + 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 <http://www.gnu.org/licenses/>. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + + +#include "interop_subtitle_asset.h" +#include <boost/test/unit_test.hpp> + + +BOOST_AUTO_TEST_CASE(fade_attributes_optimised_out_correctly) +{ + dcp::InteropSubtitleAsset subs("test/data/subs1.xml"); + BOOST_CHECK(subs.xml_as_string(dcp::SubtitleOptimisation::FOR_CCAP).find("FadeUpTime") == std::string::npos); + BOOST_CHECK(subs.xml_as_string(dcp::SubtitleOptimisation::FOR_CCAP).find("FadeDownTime") == std::string::npos); +} + diff --git a/test/wscript b/test/wscript index 4d9278eb..bc00f7c3 100644 --- a/test/wscript +++ b/test/wscript @@ -110,6 +110,7 @@ def build(bld): sound_asset_writer_test.cc sound_frame_test.cc stream_operators.cc + subtitle_optimisation_test.cc sync_test.cc test.cc util_test.cc |
