diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-11-13 00:30:48 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-11-15 13:44:42 +0100 |
| commit | b5abb07ea62e5f4708c57b6f888101d3d3434aa8 (patch) | |
| tree | 81ffe1e038c575e386b627f558d1e93c24d83454 /src/lib/map_cli.cc | |
| parent | 98a861ec8744137b0f641f9bc13bc1a9a7fa2fc6 (diff) | |
Copy Interop PNG subtitle files correctly (#2640).
Diffstat (limited to 'src/lib/map_cli.cc')
| -rw-r--r-- | src/lib/map_cli.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/map_cli.cc b/src/lib/map_cli.cc index cf07bac83..e38af69cf 100644 --- a/src/lib/map_cli.cc +++ b/src/lib/map_cli.cc @@ -277,7 +277,7 @@ map_cli(int argc, char* argv[], std::function<void (string)> out) } }; - auto maybe_copy_font = [&maybe_copy](shared_ptr<const dcp::SubtitleAsset> asset, bool rename, bool hard_link, bool soft_link) { + auto maybe_copy_font_and_images = [&maybe_copy, output_dir, copy](shared_ptr<const dcp::SubtitleAsset> asset, bool rename, bool hard_link, bool soft_link) { auto interop = dynamic_pointer_cast<const dcp::InteropSubtitleAsset>(asset); boost::optional<boost::filesystem::path> extra; if (interop) { @@ -285,6 +285,12 @@ map_cli(int argc, char* argv[], std::function<void (string)> out) for (auto font_asset: interop->font_assets()) { maybe_copy(font_asset->id(), rename, hard_link, soft_link, extra); } + for (auto subtitle: interop->subtitles()) { + if (auto image = dynamic_pointer_cast<const dcp::SubtitleImage>(subtitle)) { + auto const output_path = *output_dir / asset->id() / image->file()->filename(); + copy(*image->file(), output_path, hard_link, soft_link); + } + } } return extra; }; @@ -296,11 +302,11 @@ map_cli(int argc, char* argv[], std::function<void (string)> out) maybe_copy_from_reel(reel->main_picture(), rename, hard_link, soft_link); maybe_copy_from_reel(reel->main_sound(), rename, hard_link, soft_link); if (reel->main_subtitle()) { - auto extra = maybe_copy_font(reel->main_subtitle()->asset(), rename, hard_link, soft_link); + auto extra = maybe_copy_font_and_images(reel->main_subtitle()->asset(), rename, hard_link, soft_link); maybe_copy_from_reel(reel->main_subtitle(), rename, hard_link, soft_link, extra); } for (auto ccap: reel->closed_captions()) { - auto extra = maybe_copy_font(ccap->asset(), rename, hard_link, soft_link); + auto extra = maybe_copy_font_and_images(ccap->asset(), rename, hard_link, soft_link); maybe_copy_from_reel(ccap, rename, hard_link, soft_link, extra); } maybe_copy_from_reel(reel->atmos(), rename, hard_link, soft_link); |
