diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-12-05 00:53:34 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-12-09 01:40:48 +0100 |
| commit | 08aa3861e526cbf45ac332294a835358f3903207 (patch) | |
| tree | 8a6948d9c27828ef22b32f192e5d4f12b70a3b0c /test | |
| parent | 5a980207377e67b6aa3595d0cde441ae7659f5a6 (diff) | |
Fix decoding of SSA subs in files decoded by FFmpeg (#2904).
Suddenly we have 8 commas, not 9, perhaps because of
29412821241050c846dbceaad4b9752857659977
in ffmpeg (although that's strange, because it was a long time ago).
Diffstat (limited to 'test')
| -rw-r--r-- | test/ffmpeg_subtitles_test.cc | 60 | ||||
| -rw-r--r-- | test/wscript | 1 |
2 files changed, 61 insertions, 0 deletions
diff --git a/test/ffmpeg_subtitles_test.cc b/test/ffmpeg_subtitles_test.cc new file mode 100644 index 000000000..da63063cb --- /dev/null +++ b/test/ffmpeg_subtitles_test.cc @@ -0,0 +1,60 @@ +/* + Copyright (C) 2024 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/content_factory.h" +#include "lib/film.h" +#include "lib/player.h" +#include "lib/text_content.h" +#include "test.h" +#include <boost/optional.hpp> +#include <boost/test/unit_test.hpp> + + +using std::make_shared; +using std::shared_ptr; +using std::string; +using std::vector; +using boost::optional; + + +BOOST_AUTO_TEST_CASE(decoding_ssa_subs_from_mkv) +{ + auto subs = content_factory(TestPaths::private_data() / "ssa_subs.mkv")[0]; + auto film = new_test_film("decoding_ssa_subs_from_mkv", { subs }); + subs->text[0]->set_use(true); + + vector<string> lines; + + auto player = make_shared<Player>(film, film->playlist()); + player->Text.connect([&lines](PlayerText text, TextType, optional<DCPTextTrack>, dcpomatic::DCPTimePeriod) { + for (auto i: text.string) { + lines.push_back(i.text()); + } + }); + + while (lines.size() <= 2 && !player->pass()) {} + + BOOST_REQUIRE_EQUAL(lines.size(), 3U); + BOOST_CHECK_EQUAL(lines[0], "-You're hungry."); + BOOST_CHECK_EQUAL(lines[1], "-Unit 14, nothing's happening"); + BOOST_CHECK_EQUAL(lines[2], "here, we're gonna go to the beach."); +} + diff --git a/test/wscript b/test/wscript index e9f24f0fe..e32ec9acb 100644 --- a/test/wscript +++ b/test/wscript @@ -94,6 +94,7 @@ def build(bld): ffmpeg_examiner_test.cc ffmpeg_properties_test.cc ffmpeg_pts_offset_test.cc + ffmpeg_subtitles_test.cc file_group_test.cc file_log_test.cc file_naming_test.cc |
